Original ODD 泛函的范
本篇將介紹ChatGPT的訓(xùn)練流程,及其背后的關(guān)鍵技術(shù)之一:RLHF(Reinforcement Learning from Human Feedback)。
傳統(tǒng) RL 通過 Agent 與環(huán)境的交互來實現(xiàn)某個任務(wù)上的策略最優(yōu)化,往往需要從數(shù)百萬次的試錯中尋求最優(yōu)策略,既耗時又耗費資源。為了解決這個問題,研究人員探索如何利用人類知識和反饋來加速RL過程。
【資料圖】
RLHF 核心思想是結(jié)合強化學(xué)習(xí)和人類反饋,使智能體能夠在更短的時間內(nèi)學(xué)到最優(yōu)策略。通過利用人類知識和經(jīng)驗,智能體可以避免掉進陷阱,縮小搜索空間,從而更快地找到最優(yōu)策略。同時,人類反饋也可以幫助智能體更好地理解任務(wù)的目標(biāo)和約束條件。
此外,隨著 ChatGPT 的大火,在各行各業(yè)掀起了 AI 熱潮,使人工智能技術(shù)應(yīng)用進入了一個新階段。各大網(wǎng)友將ChatGPT應(yīng)用到自己的生活、工作中,如利用ChatGPT幫忙問診、做數(shù)據(jù)分析、寫周報、寫代碼,甚至還有寫論文的。
從實際體驗中可以感受到,ChatGPT 可以對各種問題給出比較流暢且質(zhì)量較高的回答。其背后核心技術(shù)就是LLM+RLHF:利用RLHF技術(shù),以RL方式結(jié)合人類反饋來優(yōu)化LLM,使LLM的結(jié)果更契合人類認(rèn)知。
作為ML從業(yè)者,除了體驗ChatGPT給我們工作、生活帶來的便利和樂趣外,更要了解其背后的技術(shù)原理,本文就帶大家一起了解下ChatGPT背后的技術(shù)細(xì)節(jié)。
在具體介紹RLHF之前,先來看下LLM的總體訓(xùn)練流程:
可以將整個訓(xùn)練流程分為3個階段:
在未標(biāo)注的大量文本數(shù)據(jù)上,采用SSL(Self-Supervised Learning)方式(如預(yù)測下一個詞)來訓(xùn)練LLM,得到預(yù)訓(xùn)練好的LLM。
關(guān)于SSL的更多內(nèi)容可以參考之前的文章《A Cookbook of Self-Supervised Learning》,這里就不贅述了。
有了預(yù)訓(xùn)練好的LLM之后,我們在高質(zhì)量的有標(biāo)注數(shù)據(jù)上采用Supervised Learning方式對LLM進行微調(diào),即Supervised Fine-Tuning(STF)。 SFT 的目標(biāo)是優(yōu)化預(yù)訓(xùn)練LLM,使其能生成用戶真正想要的結(jié)果。
這一點是如何做到的呢?其實,訓(xùn)練過程就是使模型擬合訓(xùn)練數(shù)據(jù)過程。在SFT中,將訓(xùn)練數(shù)據(jù)整理成 (promot, response) 格式,向LLM展示如何適當(dāng)?shù)鼗貞?yīng)不同Prompts,使模型能擬合在不同Prompts(例如:問答、摘要、翻譯)下的Response。STF流程如下圖所示:
訓(xùn)練數(shù)據(jù)是如何標(biāo)注的呢?在給定一個Prompt之后,由專業(yè)的標(biāo)注人員(通常稱為Labeler)來給出相應(yīng)的Response。這些Labeler通常都是具有一定專業(yè)知識的人員,能給出高質(zhì)量的Response。但反過來,這個標(biāo)注成本非常昂貴,所以一般只有10K量級的標(biāo)注量。
OpenAI訓(xùn)練InstructGPT時請了40位Labeler標(biāo)注了13k的 (prompt, response) 樣本對。如下圖展示了 (prompt, response) 樣本對示例:
有了 (prompt, response) 樣本對之后,就可以利用它們來fine-tune預(yù)訓(xùn)練好得LLM模型。
從流程圖可以看到,RLHF(即圖中虛線框部分)包含三大部分:
預(yù)訓(xùn)練好的LLM 收集數(shù)據(jù),訓(xùn)練獎勵模型 (Reward Model,RM) 用RL來微調(diào) LLM關(guān)于預(yù)訓(xùn)練LLM的內(nèi)容在前文已經(jīng)介紹了,下面主要介紹后面兩部分是如何實現(xiàn)的。
通過收集了大量人類對模型在不同Prompts的Response的偏好數(shù)據(jù)(如喜歡、打分等)之后,我們可以利用這些數(shù)據(jù)來訓(xùn)練一個RM來擬合人類偏好。從而實現(xiàn)在給定Prompt下,對模型所給出的Response進行打分,來預(yù)估人類對這個Response的滿意程度。人類反饋數(shù)據(jù)收集流程如下所示:
使用輸入文本數(shù)據(jù)(最好是生產(chǎn)環(huán)境的用戶真實數(shù)據(jù)),由模型生成對應(yīng)的Response,然后由人類對其進行評估,并給出Reward分(通常是0~5分,也可以是喜歡/不喜歡等)。
有了人類反饋數(shù)據(jù)后,我們就可以基于這些數(shù)據(jù)來訓(xùn)練RM。如下圖所示:
根據(jù)人工對LLM的Response的打分,構(gòu)造用于訓(xùn)練RM的數(shù)據(jù) (sample,reward) 樣本對,其中 sample=(prompt, response) 。RM輸出的Reward在數(shù)值上就代表了人類對改Response的偏好。
引入RM的主要目標(biāo)是借助RM來模仿人類的獎勵標(biāo)注,從而能在沒有人類參與的情況下進行RLHF的離線訓(xùn)練。
需要說明的是:RM可以是一個經(jīng)過微調(diào)的LLM,也可以是僅用人類偏好數(shù)據(jù)從頭訓(xùn)練的LLM。
經(jīng)過前文的操作,我們已經(jīng)有了一個經(jīng)過SFT之后的LLM,和能夠評估模型輸出好壞(迎合人類偏好)的RM。接下來就是如何使用RL來基于RM優(yōu)化LLM。其思路是采用RM的輸出值作為一個Reward,基于RL的思路進行優(yōu)化,對問題建模如下:
Agent :一個以Prompt為輸入,并輸出文本 (或文本的概率分布) 的LLM; Action Space :詞表對應(yīng)的所有Token; Observation Space :輸入詞元序列(); Reward Function :RM和策略轉(zhuǎn)變約束 (Policy Shift Constraint) 的結(jié)合。 Policy Shift Constraint 是一種用于強化學(xué)習(xí)中的優(yōu)化技術(shù),旨在減少在訓(xùn)練過程中策略發(fā)生顯著變化的可能性。在強化學(xué)習(xí)中,智能體通過不斷地與環(huán)境交互來學(xué)習(xí)最優(yōu)策略。在訓(xùn)練過程中,策略的變化可能會導(dǎo)致學(xué)習(xí)不穩(wěn)定,甚至失效。因此,策略轉(zhuǎn)移約束的目的是限制策略的變化幅度,從而提高強化學(xué)習(xí)算法的穩(wěn)定性。如下圖所示:
在開始前,復(fù)制一份模型并將其權(quán)重固定,得到Fronze LM。Fronze LM有助于防止在訓(xùn)練過程中將LM的權(quán)重改變過大,避免輸出無意義的文本。
在訓(xùn)練過程中,除了RM給出的reward外,還引入了Frozen LM和Trained LM生成文本的差異懲罰項(即Policy shift constraint),來懲罰 RL 策略在每個訓(xùn)練批次中生成大幅偏離初始模型,以確保模型輸出合理連貫的文本。如果去掉這一懲罰項可能導(dǎo)致模型在優(yōu)化中為了得到更高獎勵而生成亂碼文本來愚弄RM。
在OpenAI、Anthropic和DeepMind的多篇論文中,都采用了Fronze LM和Trained LM出詞分布序列之間的 KL散度來作為Policy shift constraint。因此,RL的整體reward為:
其中,和分別表示RM的輸出和Fronze LM和Trained LM出詞分布序列之間的 KL散度。
最后,使用PPO算法,在RM的輔助下對LM的部分參數(shù)迭代更新。如下圖所示:
其中:
近端策略優(yōu)化(Proximal Policy Optimization,PPO) 是一種常見的強化學(xué)習(xí)算法,用于優(yōu)化策略函數(shù)以最大化累積獎勵。在PPO中,策略函數(shù)通常表示為神經(jīng)網(wǎng)絡(luò),它將狀態(tài)作為輸入并輸出動作的概率分布。PPO的主要優(yōu)點之一是其穩(wěn)定性,在強化學(xué)習(xí)中很受歡迎。它使用兩個策略函數(shù)來進行訓(xùn)練,一個當(dāng)前策略和一個舊策略,并使用一個剪切參數(shù)來確保新策略不會太遠(yuǎn)離舊策略。這種剪切機制有助于防止策略跳躍,并使PPO在處理連續(xù)動作空間時表現(xiàn)出色。通常使用Adam優(yōu)化器來更新神經(jīng)網(wǎng)絡(luò)參數(shù)。
至此,我們已經(jīng)了解了ChatGPT訓(xùn)練的整體過程,以及RLHF在其所扮演的角色。下圖是在訓(xùn)練過程中不同策略所帶來的效果提升:
從圖中可以看出:
采用SFT能有效提升預(yù)訓(xùn)練模型效果; 采用預(yù)訓(xùn)練+SFT+RLHF的InstructGPT效果要明顯優(yōu)于其他策略。下面是幾個比較常用的RLHF Repo,感興趣的可以去動手嘗試下:
本文介紹了ChatGPT的總體訓(xùn)練流程,并展開介紹了RLHF的訓(xùn)練過程。RLHF不只適用于LLM的訓(xùn)練,它還對如下兩種場景有奇效:
無法構(gòu)建好的loss function 。如,如何設(shè)計一個metrics來衡量模型的輸出是否有趣味性? 想要用生產(chǎn)數(shù)據(jù)進行訓(xùn)練,但又很難為生產(chǎn)數(shù)據(jù)打標(biāo)簽 。如,如何從ChatGPT中獲取帶標(biāo)簽的生產(chǎn)數(shù)據(jù)?必須有人編寫正確答案,告訴ChatGPT應(yīng)該如何回答。在面對上面兩種場景時,我們可以嘗試使用RLHF,沒準(zhǔn)會有意想不到的效果。
泛函的范 日常搬磚,周末更新。關(guān)鍵詞:推薦系統(tǒng)、機器學(xué)習(xí)、經(jīng)驗總結(jié)、面試技巧69篇原創(chuàng)內(nèi)容
公眾號
[1] Nathan Lambert, Louis Castricato, Leandro von Werra, Alex Havrilla. Illustrating Reinforcement Learning from Human Feedback (RLHF) Hugging Face. 2022.
[2] Joao Lages. Reinforcement Learning from Human Feedback (RLHF) - a simplified explanation. NebulyAI. 2023.
[3] Chip Huyen. RLHF: Reinforcement Learning from Human Feedback. 2023.
[4] Ben Dickson. What is reinforcement learning from human feedback (RLHF)?. TechTalks. 2023.
[5] Ayush Thakur. Understanding Reinforcement Learning from Human Feedback. Weights & Biases. 2023.
[6] Trlx: /CarperAI/
[7] DeepspeedChat: /microsoft/
[8] ColossalAI-Chat: /hpcaitech/
[9] PaLM-rlhf-pytorch: /lucidrains/