原創 | 一文讀懂ChatGPT中的強化學習

數據派thu 發佈 2023-10-25T06:39:04.787945+00:00

作者:陳之炎本文約2400字,建議閱讀8分鐘本文介紹了ChatGPT中的強化學習。ChatGPT基於OpenAI的GPT-3.5創造,是InstructGPT的衍生產品,它引入了一種新的方法,將人類反饋納入訓練過程中,使模型的輸出與用戶的意圖更好地結合。

作者:陳之炎

本文約2400字,建議閱讀8分鐘

本文介紹了ChatGPT中的強化學習。


ChatGPT基於OpenAI的GPT-3.5創造,是InstructGPT的衍生產品,它引入了一種新的方法,將人類反饋納入訓練過程中,使模型的輸出與用戶的意圖更好地結合。在OpenAI的2022年論文《通過人類反饋訓練語言模型以遵循指令》中對來自人類反饋的強化學習(RLHF)進行了深入描述。

創建者將監督學習和強化學習相結合來微調ChatGPT,強化學習組件是ChatGPT的獨到之處。研究人員使用了「根據人類反饋強化學習(Reinforcement Learning from Human Feedback ,RLHF)」的特殊技術,在訓練環路中使用人類反饋來儘量減少有害的、不真實的和/或有偏差的輸出。

該方法包括以下三個步驟:

第一步:帶監督的微調,預訓練語言模型對由標註人員管理的相對較少的演示數據進行微調,以學習監督策略(SFT模型),根據選定的提示列表生成輸出,這表示基線模型;

第二步:「模仿人類偏好」 :要求標註人員對相對較多的SFT模型輸出進行投票,創建一個由對比數據組成的新數據集。在該數據集上訓練一個新的獎勵模型(RM);

第三步:近端策略優化(PPO):對獎勵模型進一步微調以改進SFT模型。這一步的結果就是所謂的策略模型。

步驟1隻進行一次,而步驟2和步驟3可以連續疊代:在當前的最佳策略模型上收集更多的比較數據,訓練出一個新的獎勵模型,然後在此基礎上再訓練出一個新的策略。

帶監督的微調(SFT)模型

首先是收集演示數據,以訓練一個帶監督的策略模型,稱之為SFT模型。

數據收集:選擇一份提示列表,要求一組人工標註人員寫下預期的輸出響應。ChatGPT使用了兩種不同的提示來源:一些是直接從標註人員或開發人員那裡獲取到的的,一些是從OpenAI的API請求中取樣的(即來自GPT-3客戶)。整個過程速度緩慢並且代價昂貴,輸出結果是一個相對較小的、高質量的管理數據集(大概大約有12-15k個數據點),將利用該數據集微調預先訓練的語言模型。

模型選取:開發人員選擇了在GPT-3.5系列中選擇一個預訓練模型,而不是對原來的GPT-3模型進行微調。可使用最新的基線模型——text-davinci-003,這也是一個GPT-3模型,對主要的編程代碼進行微調。

由於這一步的數據量有限,在此過程之後獲得的SFT模型很可能輸出用戶不太關注的文本,而且往往會出現錯位的問題。這裡的問題是,監督學習這一步存在很高的可擴展性成本。

為了克服上述問題,利用人工標記創建一個更大的數據集,這個速度緩慢而代價昂貴的過程,採用一個新的策略,為人工標記的SFT模型輸出創建一個獎勵模型——在下面的內容中進行更詳細的解釋。

獎勵模型

在步驟1 中訓練 SFT 模型後,該模型會對用戶提示生成更一致的響應。接下來是訓練獎勵模型,其中模型輸入是一系列提示和響應,輸出是一個縮放值,稱為獎勵。需要獎勵模型以利用強化學習,在強化學習中模型學習產生輸出以最大化其獎勵。

直接從數據中學習出一個目標函數(獎勵模型)。這個函數的目的是給SFT模型的輸出給出一個分值,這一分值與人類對輸出的可取程度成比例。在實踐中,這將反映出選定的標記人員群體的具體偏好和他們同意遵循的準則。最後,這一過程將從數據中提取出一個模仿人類偏好的自動回答系統。其工作原理如下:

  • 選擇一個提示列表,SFT模型為每個提示生成多個SFT 模型輸出(在4個到9個之間);
  • 標註人員將輸出從好到壞進行排序,結果是生成一個新的標記數據集,其中的排名是標記。這個數據集的大小大約是SFT模型數據集的10倍;
  • 利用這些新數據訓練一個獎勵模型(RM)。該模型將某些SFT模型輸出作為輸入,並根據人類偏好對它們進行排序。

對於標註者來說,對輸出進行排序比從頭開始生成它們要容易得多,因此這個過程的縮放效率會更高。在實踐中,從30-40k個提示符(prompts)中生成一個數據集,要求將這些輸出從最好到最差進行排名,創建輸出排名組合。在排名階段,將不同標註的輸出呈現給不同的提示符。

利用近端策略優化(PPO)算法微調SFT模型

接下來,利用強化學習微調SFT策略,讓它優化獎勵模型。模型會收到隨機提示並返迴響應。響應是使用模型在步驟2 中學習的「策略」生成的。策略表示機器已經學會使用以實現其目標的策略;在這種情況下,最大化其獎勵。基於在步驟 2 中開發的獎勵模型,然後為提示和響應對確定縮放器獎勵值。然後獎勵反饋到模型中以改進策略。所使用的算法為近端策略優化(PPO)算法,而微調後的模型稱為PPO模型。

2017年,舒爾曼等人。引入了近端策略優化 (PPO),該方法用於在生成每個響應時更新模型的策略。PPO 包含來自 SFT 模型的每個代幣 Kullback–Leibler (KL) 懲罰。KL 散度衡量兩個分布函數的相似性並對極端距離進行懲罰。在這種情況下,使用 KL 懲罰會減少響應與步驟 1 中訓練的 SFT 模型輸出之間的距離,以避免過度優化獎勵模型和與人類意圖數據集的偏差太大。PPO算法的具體實現已經在前文4.4 節中進行了描述,這種方法的要點:

  • PPO是一種用於訓練強化學習中智能體的算法,為策略算法,正如DQN(深度q網絡)等算法一樣,它直接從當前策略中學習和更新策略,而非從過去的經驗中學習算法。PPO根據智能體所採取的行動和它所獲得的獎勵,不斷地調整當前的政策;
  • PPO使用置信區間優化方法對策略進行訓練,它將策略的變化限制在與先前策略的一定距離內,以確保穩定性。這與其他策略梯度方法相反,其他策略梯度方法有時會對策略進行大量更新,從而使學習不穩定;
  • PPO使用價值函數來估計給定狀態或動作的預期回報。利用價值函數計算優勢函數,它表示期望回報和當前回報之間的差值,使用優勢函數通過比較當前策略所採取的動作與先前策略的本應採取的動作來更新策略,PPO能夠根據動作的估計值對策略進行更明智的更新。

在該步驟中,由SFT模型初始化PPO模型,由獎勵模型初始化價值函數。該環境是一個強盜環境(bandit environment),它顯示一個隨機的提示符,並期望對該提示符作出響應。給出提示和反響應之後,會生成獎勵(由獎勵模型決定)。在每個標註的SFT模型中添加各個標記的KL懲罰,以優化獎勵模型。

結論

ChatGPT引入了強化學習近端策略優化(PPO)算法微調SFT模型,將人類反饋納入模型訓練過程中,從而大幅度提高了模型訓練的準確度。

關鍵字: