回顧ChatGPT回答不是你要的怎麼辦?這篇文章,Chat GPT回答的結果常常不如人意,因此有個Facebook提出的技術,叫做RAG,它是提升Chat GPT回答品質的方式之一,詳細實作步驟可以參照自己做免錢Chat GPT吧。
這次我們來換個方法,今天要介紹Reinforcement Learning from Human Feedback (RLHF)
大型語言模型 (LLM)訓練過程中,受到網路提供的資料品質而有影響,此外LLM訓練過程中用到的監控指標BLEU、ROUGE也無法闡述人類對於語言的偏好,這些種種都又發了一種想法:「直接利用人類的喜好、價值觀等等因素來對一段話評分」,這樣的評分資料將有助於LLM的學習。
圖片出處:https://openai.com/index/chatgpt
步驟一:訓練Supervised Policy
- 網路上蒐集各種對話紀錄,因此這裡有非常多的Input Pair與Output Pair
- 標註者挑選期望的Output Pair,因此有Input Pair與期望的Output Pair
- 有Input Pair與其對應的期望Output Pair,即可用監督式學習進行訓練
步驟二:訓練Reward Model
- Input Pair匯入其它語言模型,產生諸多Output Pair
- 標註者對每一個Input Pair所對應的諸多Output Pair進行評分
- Input Pair & Output Pair當作輸入而評分作為輸出,即可訓練Reward Model
步驟三:透過Reward Model精進Supervised Policy
- 網路上蒐集各種對話紀錄,因此這裡有非常多的Input Pair與Output Pair
- 以步驟一的結果 - Supervised Policy當作步驟三的起始,並以Input Pair當作輸入 (計為I),匯入Supervised Policy得到輸出語言 (計為O)
- 輸出語言(計為O)連同I一起匯入Reward Model得到語言的評分 (計為R)
- 至次我們已經收集Reinforcement Learning的關鍵要素,分別為I、O、R,因此就能以PPO演算法進行Supervised Policy的品質提升
對於Reinforcement Learning中的Objection Function有必要於這裡特別說明,首先參照圖示:
注意事項:
- 我現在專注要調整的模型為Tuned Language Model,而原先的模型為Initial Language Model,但我又希望兩者之間不要差異太多,於是我用KL Divergence來做約束,而且將PPO Policy置於前位,而Base Policy置於後位,亦即將PPO Policy當作目前真實的機率分佈,而Base Policy作為近似的機率分佈,這部分需要了解Information Theory才可以
- 上圖是以Gradient Ascent為例子,所以一部分的元素是Reward,另一部分是象徵距離的KL Divergence,那因為我希望距離最小化,所以可以看到在KL Divergence那邊會多加一個負號