ChatGPT的背后原理:大模型、注意力機制、強化學習
本文主要介紹為ChatGPT提供動力的機器學習模型,將從大型語言模型的介紹開始,深入探討使GPT-3得到訓練的革命性的自注意機制,然后深入到從人類反饋強化學習,這是使ChatGPT出類拔萃的新技術。
大型語言模型
ChatGPT是一類機器學習自然語言處理進行推斷的模型,稱為大型語言模型(LLM)。LLM消化了大量的文本數據,并推斷出文本中單詞之間的關系。在過去的幾年里,隨著計算能力的進步,這些模型也在不斷發展。隨著輸入數據集和參數空間大小的增加,LLM的能力也在增加。
語言模型的最基本的訓練涉及到預測一連串詞語中的一個詞。最常見的是,這被觀察為下一個標記預測和屏蔽語言模型。
生成的下一個標記預測和屏蔽語言模型的任意示例
在這種基本的排序技術中,通常是通過長短記憶(LSTM)模型來部署的,模型是在給定環境和上下文的情況下,用統計上最有可能的詞來填補空白。這種順序建模結構有兩個主要限制。
- 該模型無法對周圍的一些詞比其他詞更重視。在上面的例子中,雖然“閱讀”可能最常與“討厭”聯系在一起,但在數據庫中,“雅各布”可能是一個狂熱的讀者,模型應該更重視“雅各布”而不是“閱讀”,并選擇“愛”而不是“討厭”。
- 輸入的數據是單獨和按順序處理的,而不是作為一個整體語料庫。這意味著當訓練LSTM時,上下文的窗口是固定的,只在序列中的幾個步驟的單個輸入之外延伸。這限制了詞與詞之間關系的復雜性以及可以得出的含義。
為了應對這個問題,2017年,Google Brain的一個團隊引入了轉化器。與LSTM不同,轉化器可以同時處理所有輸入數據。利用自我注意機制,該模型可以相對于語言序列的任何位置為輸入數據的不同部分賦予不同的權重。這一特點使得在向LLM注入意義方面有了大規模的改進,并且能夠處理更大的數據集。
GPT和Self-Attention
生成式預訓練轉化器(GPT)模型于2018年首次由OpenAI推出,名為GPT-1。這些模型在2019年的GPT-2、2020年的GPT-3以及最近的2022年的InstructGPT和ChatGPT中繼續發展。在將人類反饋整合到系統中之前,GPT模型進化的最大進步是由計算效率方面的成就推動的,這使得GPT-3能夠在比GPT-2多得多的數據上進行訓練,使其擁有更多樣化的知識基礎和執行更廣泛任務的能力。
GPT-2(左)和GPT-3(右)的比較。
所有的GPT模型都利用了轉換器結構,這意味著它們有一個編碼器來處理輸入序列,一個解碼器來生成輸出序列。編碼器和解碼器都具有多頭的自我注意機制,允許模型對序列的各個部分進行不同的加權,以推斷出意義和背景。此外,編碼器利用屏蔽語言模型來理解單詞之間的關系,并產生更易于理解的反應。
驅動GPT的自注意機制的工作原理,是通過將標記(文本片段,可以是一個詞、一個句子或其他文本分組)轉換為代表該標記在輸入序列中的重要性的向量。為了做到這一點,該模型:
- 1.為輸入序列中的每個標記創建一個
query
,key
,和value
向量。 - 2.通過取兩個向量的點積,計算步驟1中的
query
向量與其他每個標記的key
向量之間的相似性。 - 3.通過將第2步的輸出輸入一個
softmax
函數中來生成歸一化的權重。 - 4.通過將步驟3中產生的權重與每個標記的
value
向量相乘,產生一個最終向量,代表該序列中標記的重要性。
GPT使用的“multi-head
”注意機制是自我注意的一種進化。該模型不是一次性執行第1-4步,而是并行地多次迭代這一機制,每次都會生成一個新的query
,key
,和value
向量的線性投影。通過以這種方式擴展自我注意,該模型能夠掌握輸入數據中的子含義和更復雜的關系。
從ChatGPT生成的屏幕截圖。
盡管GPT-3在自然語言處理方面引入了顯著的進步,但它在與用戶意圖保持一致的能力方面是有限的。例如,GPT-3可能會產生以下輸出結果:
- 缺乏幫助性,意味著它們不遵循用戶的明確指示。
- 含有反映不存在的或不正確的事實的幻覺。
- 缺乏可解釋性,使人類難以理解模型是如何得出一個特定的決定或預測的。
- 包含有害或有冒犯性的內容以及傳播錯誤信息的有害或偏見內容。
在ChatGPT中引入了創新的訓練方法,以抵消標準LLM的一些固有問題。
ChatGPT
ChatGPT是InstructGPT的衍生產品,它引入了一種新穎的方法,將人類反饋納入訓練過程,使模型的輸出與用戶的意圖更好地結合。來自人類反饋的強化學習(RLHF)在openAI的2022年論文《Training language models to follow instructions with human feedback》中得到了深入的描述,并在下面進行了簡單講解。
第1步:監督微調(SFT)模型
第一次開發涉及微調GPT-3模型,雇用40個承包商來創建一個有監督的訓練數據集,其中輸入有一個已知的輸出供模型學習。輸入或提示是從開放API的實際用戶輸入中收集的。然后,標簽人員對提示編寫適當的響應,從而為每個輸入創建一個已知的輸出。然后,GPT-3模型使用這個新的、有監督的數據集進行微調,以創建GPT-3.5,也稱為SFT模型。
為了最大限度地提高提示信息數據集的多樣性,只有200條提示信息可以來自任何給定的用戶ID,并且刪除了共享長通用前綴的任何提示信息。最后,刪除了包含個人身份信息(PII)的所有提示。
在匯總了OpenAI API的提示信息后,還要求標簽人員創建提示信息樣本,以填補那些只有極少真實樣本數據的類別。所關注的類別包括:
- 普通提示:任何任意的詢問。
- 少量的提示:包含多個查詢/回答對的指令。
- 基于用戶的提示:對應于為OpenAI API請求的特定用例。
在生成響應時,要求標簽人員盡力推斷出用戶的指令是什么。該文件描述了提示請求信息的三種主要方式。
- 直接:“告訴我關于......”
- 寥寥數語:給出這兩個故事的例子,再寫一個關于同一主題的故事。
- 續寫:給出一個故事的開頭,完成它。
對來自OpenAI API的提示和標簽人員手寫的提示進行匯編,產生了13,000個輸入/輸出樣本,用于監督模型的使用。
圖片(左)插入自“Training language models to follow instructions with human feedback” OpenAI等,2022 https://arxiv.org/pdf/2203.02155.pdf。(右)用紅色添加的其他上下文。
第2步:獎勵模型
在步驟1中訓練了SFT模型后,該模型對用戶的提示產生了更好的、一致的反應。下一個改進是以訓練獎勵模型的形式出現的,其中模型的輸入是一系列的提示和響應,而輸出是一個標度值,稱為獎勵。為了利用強化學習(Reinforcement Learning),獎勵模型是必需的,在強化學習中,模型會學習產生輸出以最大化其獎勵(見步驟3)。
為了訓練獎勵模型,標簽人員對一個單一的輸入提示提供4到9個SFT模型輸出。他們被要求將這些輸出從最好的到最差的進行排序,創建輸出排序的組合,如下所示:
響應排序組合的示例。
將每個組合作為一個單獨的數據點納入模型,會導致過度擬合(無法推斷出所見數據之外的內容)。為了解決這個問題,模型是利用每組排名作為一個單獨的批處理數據點來建立的。
圖片(左)插入自“Training language models to follow instructions with human feedback” OpenAI等,2022 https://arxiv.org/pdf/2203.02155.pdf。(右)用紅色添加的其他上下文。
第3步:強化學習模型
在最后階段,向模型提出一個隨機提示并返回一個響應。響應是使用模型在第2步學到的“策略” 產生的。該策略代表機器已經學會用于實現其目標的策略;在這種情況下,就是將其獎勵最大化。基于步驟2中開發的獎勵模型,然后為提示和響應對確定一個標度獎勵值。然后,獎勵會反饋到模型中以發展策略。
2017年,Schulman等人引入了近端策略優化(PPO),該方法用于在生成每個響應時更新模型的策略。PPO納入了SFT模型中的Kullback-Leibler(KL)懲罰。KL散度測量兩個分布函數的相似性,并對極遠距離進行懲罰。在這種情況下,使用KL懲罰可以減少響應與步驟1中訓練的SFT模型輸出的距離,以避免過度優化獎勵模型并與人類意圖數據集發生太大偏差。
圖片(左)插入自“Training language models to follow instructions with human feedback” OpenAI等,2022 https://arxiv.org/pdf/2203.02155.pdf。(右)用紅色添加的其他上下文。
該過程的第2和第3步可以反復迭代,盡管在實踐中還沒有廣泛地進行。
從ChatGPT生成的屏幕截圖。
模型的評估
對模型的評估是通過在訓練期間預留一個模型未見過的測試集來進行的。在測試集上,進行一系列的評估,以確定該模型是否比其前身GPT-3表現更好。
有用性:模型推斷和遵循用戶指令的能力。標簽人員在85±3%的時間里更喜歡InstructGPT的輸出,而不是GPT-3。
真實性:模型出現幻覺的傾向。在使用TruthfulQA
數據集進行評估時,PPO模型產生的輸出在真實性和信息量方面都有小幅增加。
無害性:模型避免不適當的、貶低的和詆毀的內容的能力。無害性是使用RealToxicityPrompts
數據集來測試的。該測試在三種條件下進行。
- 指示提供尊重的反應:導致有害反應的明顯減少。
- 指示提供反應,沒有任何關于尊重的設置:有害性沒有明顯變化。
- 指導提供有害的反應:反應實際上比GPT-3模型的有害性明顯增加。
關于創建ChatGPT和InstructGPT所使用方法的更多信息,請閱讀OpenAI發表的原始論文 “Training language models to follow instructions with human feedback”,2022 https://arxiv.org/pdf/2203.02155.pdf。
從ChatGPT生成的屏幕截圖。