ChatGPT 是 OpenAI 釋出的最新語言模型,比其前身 GPT-3 有顯著提升。與許多大型語言模型類似,ChatGPT 能以不同樣式、不同目的生成文字,並且在準確度、敘述細節和上下文連貫性上具有更優的表現。它代表了 OpenAI 最新一代的大型語言模型,並且在設計上非常注重互動性。
OpenAI 使用監督學習和強化學習的組合來調優 ChatGPT,其中的強化學習元件使 ChatGPT 獨一無二。OpenAI 使用了「人類反饋強化學習」(RLHF)的訓練方法,該方法在訓練中使用人類反饋,以最小化無益、失真或偏見的輸出。
本文將剖析 GPT-3 的侷限性及其從訓練過程中產生的原因,同時將解釋 RLHF 的原理和理解 ChatGPT 如何使用 RLHF 來克服 GPT-3 存在的問題,最後將探討這種方法的侷限性。
大型語言模型中的能力與一致性
「一致性 vs 能力」可以被認為是「準確性 vs 精確性」的更抽象的類比。
在機器學習中,模型的能力是指模型執行特定任務或一組任務的能力。模型的能力通常通過它能夠優化其目標函式的程度來評估。例如,用來預測股票市場價格的模型可能有一個衡量模型預測準確性的目標函式。如果該模型能夠準確預測股票價格隨時間的變化,則認為該模型具有很高的執行能力。
一致性關注的是實際希望模型做什麼,而不是它被訓練做什麼。它提出的問題是「目標函式是否符合預期」,根據的是模型目標和行為在多大程度上符合人類的期望。假設要訓練一個鳥類分類器,將鳥分類為「麻雀」或「知更鳥」,使用對數損失作為訓練目標,而最終目標是很高的分類精度。該模型可能具有較低的對數損失,即該模型的能力較強,但在測試集上的精度較差,這就是一個不一致的例子,模型能夠優化訓練目標,但與最終目標不一致。
原始的 GPT-3 就是非一致模型。類似 GPT-3 的大型語言模型都是基於來自網際網路的大量文字資料進行訓練,能夠生成類似人類的文字,但它們可能並不總是產生符合人類期望的輸出。事實上,它們的目標函式是詞序列上的概率分佈,用來預測序列中的下一個單詞是什麼。
但在實際應用中,這些模型的目的是執行某種形式的有價值的認知工作,並且這些模型的訓練方式與期望使用它們的方式之間存在明顯的差異。儘管從數學上講,機器計算詞序列的統計分佈可能是建模語言的高效選擇,但人類其實是通過選擇最適合給定情境的文字序列來生成語言,並使用已知的背景知識和常識來輔助這一過程。當語言模型用於需要高度信任或可靠性的應用程式(如對話系統或智慧個人助理)時,這可能是一個問題。
儘管這些基於大量資料訓練的大模型在過去幾年中變得極為強大,但當用於實際以幫助人們生活更輕鬆時,它們往往無法發揮潛力。大型語言模型中的一致性問題通常表現爲:
提供無效幫助:沒有遵循使用者的明確指示。
內容胡編亂造:虛構不存在或錯誤事實的模型。
缺乏可解釋性:人們很難理解模型是如何得出特定決策或預測的。
內容偏見有害:一個基於有偏見、有害資料訓練的語言模型可能會在其輸出中出現這種情況,即使它沒有明確指示這樣做。
但具體來說,一致性問題源自何處?語言模型的訓練方式本身就容易產生不一致嗎?
語言模型訓練策略如何產生不一致?
Next-token-prediction 和 masked-language-modeling 是用於訓練語言模型的核心技術。在第一種方法中,模型被給定一個詞序列作為輸入,並被要求預測序列中的下一個詞。如果為模型提供輸入句子:
「The cat sat on the」
它可能會將下一個單詞預測為「mat」、「chair」或「floor」,因為在前面的上下文中,這些單詞出現的概率很高;語言模型實際上能夠評估給定先前序列的每個可能詞的可能性。
masked-language-modeling 方法是 Next-token-prediction 的變體,其中輸入句子中的一些詞被替換為特殊 token,例如 [MASK]。然後,模型被要求預測應該插入到 mask 位置的正確的詞。如果給模型一個句子:
「The [MASK] sat on the 」
它可能會預測 MASK 位置應該填的詞是「cat」、「dog」。
這些目標函式的優點之一是,它允許模型學習語言的統計結構,例如常見的詞序列和詞使用模式。這通常有助於模型生成更自然、更流暢的文字,並且是每個語言模型預訓練階段的重要步驟。
然而這些目標函式也可能導致問題,這主要是因為模型無法區分重要錯誤和不重要錯誤。一個非常簡單的例子是,如果給模型輸入句子:
"The Roman Empire [MASK] with the reign of Augustus."
它可能會預測 MASK 位置應該填入「began」或「ended」,因為這兩個詞的出現概率都很高。
一般來說,這些訓練策略可能會導致語言模型在一些更復雜的任務中出現不一致,因為一個僅被訓練來預測文字序列中的下一個詞的模型可能不一定會學習其含義的某些更高階表徵。因此,該模型很難推廣到需要對語言更深入理解的任務。
研究人員正研究各種方法來解決大型語言模型中的一致性問題。ChatGPT 基於最初的 GPT-3 模型,但爲了解決模型的不一致問題,使用了人類反饋來指導學習過程,對其進行了進一步訓練。所使用的具體技術就是前面提到的 RLHF。ChatGPT 是第一個將此技術用於實際場景的模型。
那 ChatGPT 是如何利用人類反饋來解決一致性問題的呢?
從人類反饋中進行強化學習
方法總體上包括三個不同步驟:
-
有監督的調優:預訓練的語言模型在少量已標註的資料上進行調優,以學習從給定的 prompt 列表生成輸出的有監督的策略(即 SFT 模型); -
模擬人類偏好:標註者們對相對大量的 SFT 模型輸出進行投票,這就建立了一個由比較資料組成的新資料集。在此資料集上訓練新模型,被稱為訓練回報模型(Reward Model,RM); -
近端策略優化(PPO):RM 模型用於進一步調優和改進 SFT 模型,PPO 輸出結果是的策略模式。
步驟 1 只進行一次,而步驟 2 和步驟 3 可以持續重複進行:在當前最佳策略模型上收集更多的比較資料,用於訓練新的 RM 模型,然後訓練新的策略。接下來,將對每一步的細節進行詳述。
步驟 1:監督調優模型
第一步是收集資料,以訓練有監督的策略模型。
資料收集:選擇一個提示列表,標註人員按要求寫下預期的輸出。對於 ChatGPT,使用了兩種不同的 prompt 來源:一些是直接使用標註人員或研究人員準備的,另一些是從 OpenAI 的 API 請求(即從 GPT-3 使用者那裏)獲取的。雖然整個過程緩慢且昂貴,但最終得到的結果是一個相對較小、高質量的資料集(大概有 12-15k 個數據點),可用於調優預訓練的語言模型。
模型選擇:ChatGPT 的開發人員選擇了 GPT-3.5 系列中的預訓練模型,而不是對原始 GPT-3 模型進行調優。使用的基線模型是最新版的 text-davinci-003(通過對程式程式碼調優的 GPT-3 模型)。
爲了建立像 ChatGPT 這樣的通用聊天機器人,開發人員是在「程式碼模型」而不是純文字模型之上進行調優。
由於此步驟的資料量有限,該過程獲得的 SFT 模型可能會輸出仍然並非使用者關注的文字,並且通常會出現不一致問題。這裏的問題是監督學習步驟具有高可擴充套件性成本。
爲了克服這個問題,使用的策略是讓人工標註者對 SFT 模型的不同輸出進行排序以建立 RM 模型,而不是讓人工標註者建立一個更大的精選資料集。
第二步:訓練回報模型
這一步的目標是直接從資料中學習目標函式。該函式的目的是為 SFT 模型輸出進行打分,這代表這些輸出對於人類來說可取程度有多大。這強有力地反映了選定的人類標註者的具體偏好以及他們同意遵循的共同準則。最後,這個過程將從資料中得到模仿人類偏好的系統。
它的工作原理是:
選擇 prompt 列表,SFT 模型為每個 prompt 生成多個輸出(4 到 9 之間的任意值);
標註者將輸出從最佳到最差排序。結果是一個新的標籤資料集,該資料集的大小大約是用於 SFT 模型的精確資料集的 10 倍;
此新資料用於訓練 RM 模型 。該模型將 SFT 模型輸出作為輸入,並按優先順序對它們進行排序。
對於標註者來說,對輸出進行排序比從頭開始打標要容易得多,這一過程可以更有效地擴充套件。在實踐中,所選擇的 prompt 的數量大約為 30-40k,並且包括排序輸出的不同組合。
步驟 3:使用 PPO 模型微調 SFT 模型
這一步裡強化學習被應用於通過優化 RM 模型來調優 SFT 模型。所使用的特定演算法稱為近端策略優化(PPO),而調優模型稱為近段策略優化模型。
什麼是 PPO?該演算法的主要特點如下:
PPO 是一種用於在強化學習中訓練 agent 的演算法。它被稱為「on-policy」演算法,因為它直接學習和更新當前策略,而不是像 DQN 的「off-policy」演算法那樣從過去的經驗中學習。PPO 根據 agent 所採取的行動和所獲得的回報不斷調整策略;
PPO 使用「信任區域優化」方法來訓練策略,它將策略的更改範圍限制在與先前策略的一定程度內以保證穩定性。這與其它策略使用梯度方法形成鮮明對比,梯度方法有時會對策略進行大規模更新,從而破壞策略的穩定性;
PPO 使用價值函式來估計給定狀態或動作的預期回報。價值函式用於計算優勢函式,它代表預期收益和當前收益之間的差異。然後使用優勢函式通過比較當前策略採取的操作與先前策略將採取的操作來更新策略。這使 PPO 可以根據所採取行動的估計價值對策略進行更明智的更新。
在這一步中,PPO 模型由 SFT 模型初始化,價值函式由 RM 模型初始化。該環境是一個「bandit environment」,它會產生隨機 prompt 並期望對 prompt 做出響應。對於給定的 prompt 和響應,它會產生相應的回報(由 RM 模型決定)。SFT 模型會對每個 token 新增 KL 懲罰因子,以儘量避免 RM 模型的過度優化。
效能評估
因為模型是根據人工標註的輸入進行訓練的,所以評估的核心部分也基於人工輸入,即通過讓標註者對模型輸出的質量評分來進行。為避免訓練階段涉及的標註者的判斷過擬合,測試集使用了來自其它 OpenAI 客戶的 prompt,這些 prompt 未出現在訓練資料中。
該模型基於三個標準進行評估:
幫助性:判斷模型遵循使用者指示以及推斷指示的能力。
真實性:判斷模型在封閉領域任務中有產生虛構事實的傾向。
無害性:標註者評估模型的輸出是否適當、是否包含歧視性內容。
該模型還針對傳統 NLP 任務(如解答問題、閱讀理解和摘要)的零樣本學習的效能進行了評估,開發人員發現在其中一些任務上模型的表現比 GPT-3 要差一些,這是一個「一致性稅」( alignment tax) 的例子,其中基於 人類反饋強化學習的一致性程式是以降低某些任務的效能為代價的。
這些資料集的效能迴歸可以通過稱為預訓練混合的技巧大大減少:在通過梯度下降訓練 PPO 模型期間,通過混合 SFT 模型和 PPO 模型的梯度來計算梯度更新。
方法的缺點
該方法的一個非常明顯的侷限性是,在將語言模型與人類意圖保持一致的過程中,用於 fine-tuning 模型的資料會受到各種錯綜複雜的主觀因素的影響,主要包括:
生成 demo 資料的人工標註者的偏好;
設計研究和編寫標籤說明的研究人員;
選擇由開發人員製作或由 OpenAI 客戶提供的 prompt;
標註者偏差既包含在 RM 模型訓練中,也包含在模型評估中。
ChatGPT 的作者也承認一個明顯的事實,即參與訓練過程的標註人員和研究人員可能並不能完全代表語言模型的所有潛在終端使用者。
除了這一明顯的「內生」限制之外,該方法還有的一些其它缺點和需要解決的問題:
缺乏對照研究:報告的結果以 SFT 模型為基準衡量最終 PPO 模型的效能。這可能會產生誤導:如何知道這些改進是由於 RLHF?因此對照研究非常有必要,包括投入與用於訓練 RM 模型的標註工時數完全相同的時間,以建立具有高質量資料的更大的精選有監督調優的資料集。這樣就可以客觀地衡量 RLHF 方法與監督方法相比的效能改進。簡單來說,缺乏這樣的對照研究讓一個基本問題完全懸而未決:RLHF 在一致性語言模型方面真的做得很好嗎?
比較資料缺乏基本事實:標註者通常會對模型輸出的排名持不同意見。技術上講,產生的風險是在沒有任何基本事實的情況下,向比較資料新增了很大的方差。
人類的偏好並非同質:RLHF 方法將人類的偏好視為同質和靜態的。假設所有人都有相同的價值觀,這明顯是不準確的,雖然有大量的公共價值觀,但在很多事務上人類還是存在許多不同的認知。
RM 模型 prompt 穩定性測試:沒有實驗表明 RM 模型在輸入 prompt 變化方面的敏感性。如果兩個 prompt 在句法上不同但在語義上是等價的,RM 模型能否在模型輸出的排名中顯示出顯著差異?即 prompt 的質量對 RM 有多重要?
其它問題:在 RL 方法中,模型有時可以學會控制自己的 RM 模型以實現期望的結果,從而導致「過度優化的策略」。這可能會導致模型重新建立一些模式,因為某些未知的原因,這些模式使 RM 模型得分較高。ChatGPT 通過使用 RM 函式中的 KL 懲罰項對此進行了修補。
相關閱讀:
關於用於 ChatGPT 的 RLHF 方法的相關的論文:Training language models to follow instructions with human feedback(https://arxiv.org/pdf/2203.02155.pdf),它實際上詳細描述了一個名為 InstructionGPT 的模型,OpenAI 稱之為 ChatGPT 的「兄弟模型」。
Learning to summarize from Human Feedback (https://arxiv.org/pdf/2009.01325.pdf)描述了文字摘要上下文中的 RLHF。
PPO(https://arxiv.org/pdf/1707.06347.pdf):PPO 演算法論文。
Deep reinforcement learning from human preferences (https://arxiv.org/abs/1706.03741)
DeepMind 在 Sparrow 中提出了 OpenAI RLHF 的替代方案 (https://arxiv.org/pdf/2209.14375.pdf) 和 GopherCite (https://arxiv.org/abs/2203.11147)檔案。
參考內容:
https://www.assemblyai.com/blog/how-chatgpt-actually-works/?continueFlag=1bafdcd5c034def869fecb4f3bdaed70