今天小編分享的科技經驗:此「錯」并非真的錯:從四篇經典論文入手,理解Transformer架構圖「錯」在何處,歡迎閱讀。
選自 Ahead of AI
作者:Sebastian Raschka
機器之心編譯
編輯:馬梓文
從四篇論文入手,Sebastian 再談 Transformer 架構圖。
前段時間,一條指出谷歌大腦團隊論文《Attention Is All You Need》中 Transformer 構架圖與代碼不一致的推文引發了大量的讨論。
對于 Sebastian 的這一發現,有人認為屬于無心之過,但同時也會令人感到奇怪。畢竟,考慮到 Transformer 論文的流行程度,這個不一致問題早就應該被提及 1000 次。
Sebastian Raschka 在回答網友評論時說,「最最原始」的代碼确實與架構圖一致,但 2017 年提交的代碼版本進行了修改,但同時沒有更新架構圖。這也是造成「不一致」讨論的根本原因。
随後,Sebastian 在 Ahead of AI 發布文章專門講述了為什麼最初的 Transformer 構架圖與代碼不一致,并引用了多篇論文簡要說明了 Transformer 的發展變化。
以下為文章原文,讓我們一起看看文章到底講述了什麼:
幾個月前,我分享了《Understanding Large Language Models: A Cross-Section of the Most Relevant Literature To Get Up to Speed》,積極的反饋非常鼓舞人心!因此,我添加了一些論文,以保持列表的新鮮感和相關性。
同時,保持列表簡明扼要是至關重要的,這樣大家就可以用合理的時間就跟上進度。還有一些論文,信息量很大,想來也應該包括在内。
我想分享四篇有用的論文,從歷史的角度來理解 Transformer。雖然我只是直接将它們添加到理解大型語言模型的文章中,但我也在這篇文章中單獨來分享它們,以便那些之前已經閱讀過理解大型語言模型的人更容易找到它們。
On Layer Normalization in the Transformer Architecture ( 2020 )
雖然下圖(左)的 Transformer 原始圖(https://arxiv.org/abs/1706.03762)是對原始編碼器 - 解碼器架構的有用總結,但該圖有一個小小的差異。例如,它在殘差塊之間進行了層歸一化,這與原始 Transformer 論文附帶的官方 ( 更新後的) 代碼實現不匹配。下圖(中)所示的變體被稱為 Post-LN Transformer。
Transformer 架構論文中的層歸一化表明,Pre-LN 工作得更好,可以解決梯度問題,如下所示。許多體系架構在實踐中采用了這種方法,但它可能導致表征的崩潰。
因此,雖然仍然有關于使用 Post-LN 或前 Pre-LN 的讨論,也有一篇新論文提出了将兩個一起應用:《 ResiDual: Transformer with Dual Residual Connections》(https://arxiv.org/abs/2304.14802),但它在實踐中是否有用還有待觀察。
圖注:圖源 https://arxiv.org/abs/1706.03762 ( 左 & 中 ) and https://arxiv.org/abs/2002.04745 ( 右)
Learning to Control Fast-Weight Memories: An Alternative to Dynamic Recurrent Neural Networks ( 1991 )
這篇文章推薦給那些對歷史花絮和早期方法感興趣的人,這些方法基本上類似于現代 Transformer。
例如,在比 Transformer 論文早 25 年的 1991 年,Juergen Schmidhuber 提出了一種遞歸神經網絡的替代方案(https://www.semanticscholar.org/paper/Learning-to-Control-Fast-Weight-Memories%3A-An-to-Schmidhuber/bc22e87a26d020215afe91c751e5bdaddd8e4922),稱為 Fast Weight Programmers ( FWP ) 。FWP 方法涉及一個前饋神經網絡,它通過梯度下降緩慢學習,來編程另一個神經網絡的快速權值的變化。
這篇博客 ( https://people.idsia.ch//~juergen/fast-weight-programmer-1991-transformer.html#sec2 ) 将其與現代 Transformer 進行類比,如下所示 :
在今天的 Transformer 術語中,FROM 和 TO 分别稱為鍵 ( key ) 和值 ( value ) 。應用快速網絡的輸入稱為查詢。本質上,查詢由快速權重矩陣 ( fast weight matrix ) 處理,它是鍵和值的外積之和 ( 忽略歸一化和投影 ) 。由于兩個網絡的所有操作都是可微的,我們通過加法外積或二階張量積獲得了端到端可微主動控制的權值快速變化。因此,慢速網絡可以通過梯度下降學習,在序列處理期間快速修改快速網絡。這在數學上等同于 ( 除了歸一化之外 ) 後來被稱為具有線性化自注意的 Transformer ( 或線性 Transformer ) 。
正如上文摘錄所提到的,這種方法現在被稱為線性 Transformer 或具有線性化自注意的 Transformer。它們來自于 2020 年出現在 arXiv 上的論文《Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention 》(https://arxiv.org/abs/2006.16236)以及《Rethinking Attention with Performers》(https://arxiv.org/abs/2009.14794)。
2021 年,論文《Linear Transformers Are Secretly Fast Weight Programmers》(https://arxiv.org/abs/2102.11174)明确表明了線性化自注意力和 20 世紀 90 年代的快速權重編程器之間的等價性。
圖源:https://people.idsia.ch//~juergen/fast-weight-programmer-1991-transformer.html#sec2
Universal Language Model Fine-tuning for Text Classification ( 2018 )
這是另一篇從歷史角度來看非常有趣的論文。它是在原版《Attention Is All You Need》發布一年後寫的,并沒有涉及 transformer,而是專注于循環神經網絡,但它仍然值得關注。因為它有效地提出了預訓練語言模型和遷移學習的下遊任務。雖然遷移學習已經在計算機視覺中确立,但在自然語言處理 ( NLP ) 領網域還沒有普及。ULMFit(https://arxiv.org/abs/1801.06146)是首批表明預訓練語言模型在特定任務上對其進行微調後,可以在許多 NLP 任務中產生 SOTA 結果的論文之一。
ULMFit 建議的語言模型微調過程分為三個階段 :
1. 在大量的文本語料庫上訓練語言模型;
2. 根據任務特定的數據對預訓練的語言模型進行微調,使其能夠适應文本的特定風格和詞匯;
3. 微調特定任務數據上的分類器,通過逐步解凍各層來避免災難性遺忘。
在大型語料庫上訓練語言模型,然後在下遊任務上對其進行微調的這種方法,是基于 Transformer 的模型和基礎模型 ( 如 BERT、GPT-2/3/4、RoBERTa 等 ) 使用的核心方法。
然而,作為 ULMFiT 的關鍵部分,逐步解凍通常在實踐中不進行,因為 Transformer 架構通常一次性對所有層進行微調。
Gopher 是一篇特别好的論文(https://arxiv.org/abs/2112.11446),包括大量的分析來理解 LLM 訓練。研究人員在 3000 億個 token 上訓練了一個 80 層的 2800 億參數模型。其中包括一些有趣的架構修改,比如使用 RMSNorm ( 均方根歸一化 ) 而不是 LayerNorm ( 層歸一化 ) 。LayerNorm 和 RMSNorm 都優于 BatchNorm,因為它們不局限于批處理大小,也不需要同步,這在批大小較小的分布式設定中是一個優勢。RMSNorm 通常被認為在更深的體系架構中會穩定訓練。
除了上面這些有趣的花絮之外,本文的主要重點是分析不同規模下的任務性能分析。對 152 個不同任務的評估顯示,增加模型大小對理解、事實核查和識别有毒語言等任務最有利,而架構擴展對與邏輯和數學推理相關的任務從益處不大。
圖注:圖源 https://arxiv.org/abs/2112.11446
原文鏈接:https://magazine.sebastianraschka.com/p/why-the-original-transformer-figure
© THE END
轉載請聯系本公眾号獲得授權
投稿或尋求報道:[email protected]