20+篇里程碑式論文,帶你從「Transformer的前世」速通到ChatGPT
短短五年,Transformer就幾乎顛覆了整個自然語言處理領域的研究范式,是劃時代產品ChatGPT的基礎技術,也促進了計算機視覺、計算生物學等領域的研究進展。
在發展的過程中,研究人員發表了大量論文、模型以及訓練技巧,對于新入行的研究者來說,面對成山的論文根本不知從何入手。
不久前指出Transformer原始論文中插圖存在漏洞的Sebastian Raschka發布了一份全面且簡短的論文列表,包含Transformer的機制來源、預訓練范式、人類反饋強化學習等諸多里程碑式論文,小白看完輕松變理論高手。
Transformer底層架構
1. Neural Machine Translation by Jointly Learning to Align and Translate(2014)
這篇論文為循環神經網絡(RNN)引入了注意力機制,以提升長距離序列建模的能力,使得RNN可以更準確地翻譯更長的句子,也是原始Transformer模型的開發動機。
論文鏈接:https://arxiv.org/abs/1409.0473
2. Attention is All you need (2017)
這篇論文提出了由編碼器和解碼器部分組成的原始Transformer架構,并且文中提出的概念,如縮放點積(scale dot product)注意力機制,多頭注意塊、位置輸入編碼等,到今天為止仍然是Transformer模型的基礎。
論文鏈接:https://arxiv.org/pdf/1706.03762.pdf
3. On Layer Normalization in the Transformer Architecture (2020)
雖然原始Transformer論文中的圖很好地展現了編碼器-解碼器架構,但與具體代碼實現存在細微差異,比如層歸一化(LayerNorms)在殘差塊之間等,文中顯示的變體也被稱為Post-LN Transformer。
論文鏈接:https://arxiv.org/pdf/2002.04745.pdf
Transformer架構論文中的層歸一化表明Pre-LN也很有效,解決了梯度問題,許多模型也在實踐中采用Pre-LN,缺點在于可能會導致表示秩崩潰。
雖然業界關于使用Post-LN還是Pre-LN仍然存在爭論,但最近有一篇新論文提出同時利用這兩種方法,不過在實踐中是否有用仍然需要進一步觀察。
論文鏈接:https://arxiv.org/abs/2304.14802
4. Learning to Control Fast-Weight Memories: An Alternative to Dynamic Recurrent Neural Networks (1991)
在1991年,也就是原始Transformer論文發布之前大約25年,Juergen Schmidhuber提出了一種替代循環神經網絡的方法,叫做快速權重編程器(FWP, Fast Weight Programmers)
論文鏈接:https://ieeexplore.ieee.org/document/6796337
FWP方法用到了一個前饋神經網絡,通過梯度下降來緩慢學習以對另一神經網絡的快速權重變化進行編程。
而發展到今天的Transformer術語中,FROM和TO分別被稱為鍵(key)和值(value),應用快速網絡的INPUT叫做查詢(query)。
從本質上講,查詢是由快速權重矩陣處理的,是鍵和值的外積之和(不考慮歸一化和投影的話)。
由于兩個網絡的所有操作都是可微的,通過加性外積或二階張量積獲得快速權重變化的端到端可微主動控制。
因此,慢速網絡可以通過梯度下降來學習,以在序列處理期間快速修改快速網絡,在數學上等同于不包括歸一化的,后來也叫做具有線性化自注意力的Transformer,即線性Transformer
2021年,一篇論文明確證明了線性化自注意力與20世紀90年代的快速權重編程器之間的等價性。
論文鏈接:https://arxiv.org/pdf/2102.11174.pdf
5. Universal Language Model Fine-tuning for Text Classification (2018)
這篇論文雖然發表于2018年,但并沒有研究Transformer,而主要關注循環神經網絡,但提出了有效的預訓練語言模型和對下游任務的遷移學習。
論文鏈接:https://arxiv.org/abs/1801.06146
雖然遷移學習最早是在計算機視覺中提出的,但當時在自然語言處理(NLP)領域中還沒有普及。
ULMFit是最早證明預訓練語言模型并在特定任務上對其進行微調可以在許多NLP任務中實現最先進性能的論文之一。
ULMFit提出的微調語言模型的三階段過程如下:
1. 在大型文本語料庫上訓練語言模型
2. 在特定任務的數據上微調預訓練的語言模型,使其適應文本的特定風格和詞匯
3. 通過逐層解凍來微調特定任務數據的分類器,以避免災難性遺忘
該方法,即在大型語料庫上訓練語言模型,然后在下游任務上對其進行微調,是基于Transformer的基礎模型(如BERT、GPT-2/3/4、RoBERTa等)中使用的核心方法。
不過ULMFiT的關鍵組件是逐層解凍,通常無法在Transformer架構中實現,其中所有層通常只經過一次微調。
6. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (2018)
在Transformer架構提出之后,大型語言模型研究開始分為兩個方向:用于預測建模任務(如文本分類)的編碼器Transformer;以及用于生成建模任務(如翻譯、摘要和其他形式的文本創建)的解碼器Transformer
論文鏈接:https://arxiv.org/abs/1810.04805
BERT論文提出了遮罩語言建模的概念,并且下一句預測(next-sentence prediction)仍然是一種有影響力的解碼器架構,不過后續的RoberTa刪除了下一句預測任務,簡化了預訓練目標。
7. Improving Language Understanding by Generative Pre-Training (2018)
第一版GPT論文提出了解碼器架構,以及使用下一個單詞預測進行預訓練。
論文鏈接:https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf
BERT使用的遮罩語言模型預訓練目標,所以是雙向Transformer模型;而GPT是單向自回歸模型,但其學到的嵌入也可以用于分類。
GPT方法是當下最有影響力的大型語言模型(如chatGPT)的核心技術。
后續發布的GPT-2和GPT-3論文說明了LLM能夠進行零樣本和少樣本學習,指出了大型語言模型的涌現能力。
GPT-3仍然是訓練當下語言模型(如ChatGPT)的常用基線和基礎模型。
8. BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension (2019)
如前所述,BERT類語言模型主要關注編碼器,通常是預測建模任務的首選,而GPT類型的解碼器風格的語言模型在文本生成方面更好。
論文鏈接:https://arxiv.org/abs/1910.13461
為了同時利用二者的優勢,BART論文結合了編碼器和解碼器部分。
9. Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond (2023)
這篇并不是研究論文,但可能是當下最好的綜述報告,說明了不同的架構是如何演變的。
論文鏈接:https://arxiv.org/abs/2304.13712
除了討論BERT風格的遮罩語言模型(編碼器)和GPT風格的自回歸語言模型(解碼器)之外,還提供了關于預訓練和微調數據的討論和指導。
縮放定律與效率提升
除了下面列出的論文外,如果想了解更多關于提高Transformer效率的各種技術,還可以閱讀兩篇綜述。
論文鏈接:https://arxiv.org/abs/2009.06732
論文鏈接:https://arxiv.org/pdf/2302.01107.pdf
10. FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness (2022)
論文鏈接:https://arxiv.org/pdf/2205.14135.pdf
雖然大多數transformer論文都沒有替換原始的縮放點積機制來改進自注意力,但FlashAttention是其中最常引用的一種機制。
11. Cramming: Training a Language Model on a Single GPU in One Day (2022)
在這篇論文中,研究人員使用單個GPU用了24個小時訓練了一個遮罩語言模型/編碼器風格的語言模型,在單個GPU上進行24小時,相比之下,2018年BERT剛提出來的時候,在16個TPU上訓練了四天。
論文鏈接:https://arxiv.org/abs/2212.14034
一個有趣的結論是,雖然較小的模型具有更高的吞吐量,但小模型的學習效率也比較低,所以較大的模型不需要更多的訓練時間來達到特定的預測性能閾值。
12. LoRA: Low-Rank Adaptation of Large Language Models (2021)
在大型數據集上預訓練的現代大型語言模型展現出了涌現能力,并在各種任務上都實現了非常強大的性能,包括多語言翻譯、摘要、編碼和問答。
論文鏈接:https://arxiv.org/abs/2106.09685
不過如果想提高Transformer在特定領域數據和特定任務上的性能,那么就需要對Transformer進行微調。
低秩自適應(LoRA)是一種參數高效(parameter-efficient)的方式來微調大型語言模型,相比其他方法,LoRA既優雅又非常通用,可以應用于其他類型的模型。
雖然預訓練模型的權重在預訓練任務上具有滿秩,但LoRA作者指出,預訓練的大型語言模型在適應新任務時具有較低的「內在維度」。
因此,LoRA背后的主要思想是將權重變化ΔW分解為更低秩的表示,即更高效的參數。
13. Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning (2022)
這篇綜述回顧了40多篇關于參數高效微調方法,包括prefix調整、adapter和LoRA等。
論文鏈接:https://arxiv.org/abs/2303.15647
14. Scaling Language Models: Methods, Analysis & Insights from Training Gopher (2022)
論文鏈接:https://arxiv.org/abs/2112.11446
Gopher論文中有大量的分析來理解大型語言模型的訓練過程。
研究人員在3000億個token上訓練了一個80層、2800億參數的模型,還提出了一些架構上的修改,如使用RMSNorm(均方根歸一化)而非LayerNorm(層歸一化)。
LayerNorm和RMSNorm都優于BatchNorm,因為它們并不依賴于batch size,也不需要同步,對于在batch size較小的分布式設置中是一個優勢,而且RMSNorm通常被認為可以穩定更深層次架構中的訓練。
這篇論文的主要重點是不同尺度(sacle)模型在任務性能上的分析。
對152個不同任務的評估表明,增加模型尺寸對理解、事實核查和有毒語言識別等任務的益處最大,而與邏輯和數學推理相關的任務從架構擴展中受益較少。
15. Training Compute-Optimal Large Language Models (2022)
這篇論文提出了700億參數Chinchilla模型,在生成建模任務上優于常用的1750億參數GPT-3模型,不過這篇文章的主要貢獻是發現目前大型語言模型存在「嚴重訓練不足」的問題。
論文鏈接:https://arxiv.org/abs/2203.15556
論文中定義了大型語言模型訓練的線性縮放律(linear scaling low),例如雖然Chinchilla的大小只有GPT-3的一半,但它的表現優于GPT-3,因為它是在1.4萬億(而不是3000億)個token上訓練的。
換句話說,訓練語料中token的數量與模型大小一樣重要。
16. Pythia: A Suite for Analyzing Large Language Models Across Training and Scaling (2023)
Pythia是一組開源的大型語言模型,參數量從7千萬到120億不等,以用于研究大型語言模型在訓練過程中的演變。
論文鏈接:https://arxiv.org/abs/2304.01373
模型架構類似于GPT-3,但包括一些組件改進,例如用Flash Attention和Rotary Positional Embeddings。
Pythia在Pile數據集(825 Gb)上訓練了3000億個token,在regular PILE上訓練約1個epoch,deduplicated PILE上訓練約1.5個epoch
Pythia研究的主要結論如下:
1. 在重復數據上進行訓練(超過1個epoch)不會提升或降低性能。
2. 訓練順序不會影響記憶。這個結論讓我們無法通過重新排序訓練數據來緩解不希望的逐字記憶問題。
3. 預訓練詞頻影響任務性能。例如,對于更頻繁的術語,少樣本學習往往準確度更高。
4. 將batch size加倍可以將訓練時間減半,但不會影響收斂。
對齊:讓大型語言模型符合預期目標
近年來,我們看到了許多相對強大的大型語言模型,可以生成類人的文本(例如GPT-3和Chinchilla等),但常用的預訓練范式似乎已經達到了上限。
為了使語言模型對人類更有幫助并減少錯誤信息和有害語言,研究人員設計了額外的訓練范式來微調預訓練的基礎模型。
17. Training Language Models to Follow Instructions with Human Feedback (2022)
在這篇提出InstructGPT模型論文中,研究人員使用了一種強化學習機制,其中包括人類參與反饋的循環機制(RLHF)。
論文鏈接:https://arxiv.org/abs/2203.02155
研究人員從預訓練的GPT-3基礎模型開始,使用監督學習對人類生成的提示與模型回復進行進一步微調;然后要求人類對模型輸出進行排名,以訓練獎勵模型;最后使用獎勵模型通過近端策略優化(PPO, proximal policy optimization)使用強化學習來更新預訓練和微調的GPT-3模型。
這篇論文也被稱為描述ChatGPT背后想法的論文,也有傳言說ChatGPT是InstructGPT的放大版本,在更大的數據集上進行了微調。
18. Constitutional AI: Harmlessness from AI Feedback (2022)
這篇論文中,研究人員將對齊思想更進一步,提出了一種創建無害AI系統的訓練機制。
論文鏈接:https://arxiv.org/abs/2212.08073
文中提出了一種基于規則列表(由人類提供)的自訓練機制,而非人類監督。
與上面提到的InstructGPT論文類似,這種機制也使用強化學習方法。
19. Self-Instruct: Aligning Language Model with Self Generated Instruction (2022)
指令微調是從GPT-3之類的預訓練基礎模型發展到ChatGPT類更強大語言模型的關鍵技術。
論文鏈接:https://arxiv.org/abs/2212.10560
開源的人工生成指令數據集,如databricks-dolly-15 k,可以幫助調優,但想要進一步擴大指令數據集的規模,可以從語言模型中自舉得到。
Self-Instruct是一種幾乎無需標注,即可將預訓練的LLM與指令對齊的方法,總共包括4個步驟:
1. 用一組人工編寫的指令和樣本指令作為種子任務池。
2. 使用預訓練的語言模型(如GPT-3)來確定任務類別。
3. 給定新指令,讓預訓練的語言模型生成回復。
4. 在將回復添加到任務池之前,收集、修剪和篩選這些響應。
在實踐中,整個過程可以基于ROUGE來評分,可以認為Self-Instruct-finetuned LLM的性能優于GPT-3基礎LLM,并且可以與在大型人類編寫的指令集上預訓練的LLM競爭,self-instruct也可以使已經根據人類指令進行微調的LLM受益。
當然,評估語言模型的黃金標準是詢問人類評分員。
基于人類評估,Self-Instruct優于基本LLM和以監督方式在人類指令數據集上訓練的LLM(SuperNI,T0 Trainer),但有趣的是,Self-Instruct并沒有優于通過人工反饋強化學習(RLHF)訓練的方法。
強化學習與人類反饋(RLHF)
雖然RLHF(基于人類反饋的強化學習)可能無法完全解決LLM當前的問題,但它目前被認為是可用的最佳選擇,特別是與上一代LLM相比。
未來很可能會看到更多創造性的方法將RLHF應用于LLM其他領域。
上面提到的兩篇論文InstructGPT和Consitutinal AI利用了RLHF,但從技術上來說,Consitutinal AI使用的是AI反饋而非人類反饋。
20. Asynchronous Methods for Deep Reinforcement Learning (2016)
論文鏈接:https://arxiv.org/pdf/1602.01783.pdf
這篇論文引入了策略梯度方法作為基于深度學習的RL中Q學習的替代方案。
21. Proximal Policy Optimization Algorithms (2017)
論文鏈接:https://arxiv.org/abs/1909.08593
這篇論文提出了一種改進的基于近似策略的強化學習過程,比上面的策略優化算法更具數據效率和可擴展性。
22. Fine-Tuning Language Models from Human Preferences (2020)
論文鏈接:https://arxiv.org/abs/1909.08593
這篇論文說明了PPO的概念和對預訓練語言模型的獎勵學習,包括KL正則化,以防止策略與自然語言偏離太遠。
23. Learning to Summarize from Human Feedback (2022)
論文鏈接:https://arxiv.org/abs/2009.01325
這篇論文提出了常用的RLHF三步程序:
1. 預訓練GPT-3
2. 以有監督的方式進行微調
3. 同樣以有監督的方式訓練獎勵模型,然后使用具有鄰近策略優化的獎勵模型來訓練微調模型。
論文還表明,與常規有監督學習相比,具有近似策略優化的強化學習可以產生更好的模型。
24. Training Language Models to Follow Instructions with Human Feedback (2022)
這篇論文提出InstructGPT使用與上述RLHF類似的三步過程,但不是總結文本,而是專注于基于人類指令生成文本。
論文鏈接:https://arxiv.org/pdf/2203.02155.pdf
除此之外,還使用一個標簽器來從最好到最差對輸出進行排名,而不僅僅是人類和AI生成的文本之間的二元比較。
總結
讀完上面列出的論文,就可以了解到當前大型語言模型背后的設計、約束和演變過程,下面是一些可用的資源。
GPT的開源平替:
BLOOM: A 176B-Parameter Open-Access Multilingual Language Model (2022), https://arxiv.org/abs/2211.05100
OPT: Open Pre-trained Transformer Language Models (2022), https://arxiv.org/abs/2205.01068
UL2: Unifying Language Learning Paradigms (2022), https://arxiv.org/abs/2205.05131
ChatGPT的替代方案:
LaMDA: Language Models for Dialog Applications (2022), https://arxiv.org/abs/2201.08239
(Bloomz) Crosslingual Generalization through Multitask Finetuning (2022), https://arxiv.org/abs/2211.01786
(Sparrow) Improving Alignment of Dialogue Agents via Targeted Human Judgements (2022), https://arxiv.org/abs/2209.14375
BlenderBot 3: A Deployed Conversational Agent that Continually Learns to Responsibly Engage, https://arxiv.org/abs/2208.03188
計算生物學領域的大型語言模型
ProtTrans:Towards Cracking the Language of Life’s Code Through Self-Supervised Deep Learning and High Performance Computing(2021), https://arxiv.org/abs/2007.06225
Highly Accurate Protein Structure Prediction with AlphaFold (2021), https://www.nature.com/articles/s41586-021-03819-2
Large Language Models Generate Functional Protein Sequences Across Diverse Families (2023), https://www.nature.com/articles/s41587-022-01618-2