圖解人類反饋強化學習 (RLHF)
本文已翻譯成中文簡體中文和越南語đọc tiếng việt.
在過去幾年中,語言模型透過從人類輸入提示生成多樣且引人入勝的文字,展示了令人印象深刻的能力。然而,如何定義“好”的文字本身就很難,因為它具有主觀性且依賴於上下文。在許多應用中,例如編寫故事時,您需要創造力;在資訊性文字中,您需要真實性;在程式碼片段中,您希望它們是可執行的。
編寫一個損失函式來捕捉這些屬性似乎難以實現,並且大多數語言模型仍然使用簡單的下一個token預測損失(例如交叉熵)進行訓練。為了彌補損失本身的缺點,人們定義了旨在更好地捕捉人類偏好的指標,例如BLEU或ROUGE。雖然這些指標比損失函式本身更適合衡量效能,但它們只是透過簡單的規則將生成的文字與參考文字進行比較,因此也受到限制。如果我們能將生成的文字的人類反饋作為效能衡量標準,甚至更進一步,將這些反饋作為最佳化模型的損失,那不是很好嗎?這就是人類反饋強化學習 (RLHF) 的理念:使用強化學習的方法,透過人類反饋直接最佳化語言模型。RLHF 使語言模型開始將經過通用文字資料語料庫訓練的模型與複雜的人類價值觀對齊。
RLHF 最近的成功是其在 ChatGPT 中的應用。鑑於 ChatGPT 令人印象深刻的能力,我們請它為我們解釋 RLHF
它表現得非常好,但並沒有完全涵蓋所有內容。我們會填補這些空白!
RLHF:讓我們一步一步來
來自人類反饋的強化學習(也稱為來自人類偏好的強化學習)是一個具有挑戰性的概念,因為它涉及多模型訓練過程和不同的部署階段。在本篇部落格文章中,我們將訓練過程分解為三個核心步驟
- 預訓練語言模型 (LM),
- 收集資料並訓練獎勵模型,以及
- 使用強化學習微調 LM。
首先,我們將瞭解語言模型是如何預訓練的。
預訓練語言模型
作為起點,RLHF 使用了一個已經透過經典預訓練目標進行預訓練的語言模型(更多細節請參閱這篇部落格文章)。OpenAI 將 GPT-3 的一個較小版本用於其第一個流行的 RLHF 模型,即 InstructGPT。Anthropic 在其共享的論文中使用了從1000萬到520億引數的 Transformer 模型進行此任務的訓練。DeepMind 已記錄使用其多達2800億引數的模型 Gopher。這些公司很可能在其基於 RLHF 的產品中使用更大的模型。
這個初始模型*也可以*在額外的文字或條件下進行微調,但並非必需。例如,OpenAI 對“更受歡迎”的人工生成文字進行微調,而 Anthropic 透過將原始 LM 在其“有益、誠實和無害”標準上的上下文線索進行蒸餾,為 RLHF 生成了初始 LM。這些都是我們所說的昂貴、*增強*資料來源,但這不是理解 RLHF 所需的技術。RLHF 過程的核心是擁有一個*能很好地響應各種指令的模型*。
總的來說,關於“哪個模型”最適合作為 RLHF 的起點,目前還沒有明確的答案。這將在本部落格中成為一個常見主題——RLHF 訓練中的選項設計空間尚未被徹底探索。
接下來,有了語言模型後,需要生成資料來訓練一個**獎勵模型**,這是將人類偏好整合到系統中的方式。
獎勵模型訓練
生成一個與人類偏好校準的獎勵模型(RM,也稱為偏好模型)是 RLHF 相對較新的研究開始的地方。其根本目標是獲得一個模型或系統,該模型或系統接收文字序列,並返回一個標量獎勵,該獎勵應以數字形式表示人類偏好。該系統可以是端到端 LM,也可以是輸出獎勵的模組化系統(例如,模型對輸出進行排名,然後將排名轉換為獎勵)。輸出是**標量獎勵**對於現有 RL 演算法在 RLHF 過程後期無縫整合至關重要。
用於獎勵建模的這些 LM 既可以是另一個微調過的 LM,也可以是完全從偏好資料訓練的 LM。例如,Anthropic 在預訓練(偏好模型預訓練,PMP)之後使用了一種特殊的微調方法來初始化這些模型,因為他們發現它比微調的樣本效率更高,但沒有哪個基礎模型被認為是獎勵模型的最佳選擇。
用於獎勵模型(RM)的提示-生成對訓練資料集是透過從預定義資料集中取樣一組提示生成的(Anthropic 主要使用 Amazon Mechanical Turk 上的聊天工具生成的資料在 Hub 上可用,OpenAI 使用使用者提交給 GPT API 的提示)。這些提示透過初始語言模型生成新文字。
人工標註員用於對 LM 生成的文字輸出進行排名。最初可能會認為人類應該直接對每段文字應用一個標量分數以生成獎勵模型,但這在實踐中很難做到。人類的不同價值觀導致這些分數未校準且噪音大。相反,排名用於比較多個模型的輸出並建立一個更好的正則化資料集。
文字排序有多種方法。一種成功的方法是讓使用者比較兩個語言模型在相同提示條件下生成的文字。透過在面對面的比賽中比較模型輸出,可以使用 Elo 系統生成模型和輸出相互之間的排名。這些不同的排序方法被歸一化為用於訓練的標量獎勵訊號。
這個過程的一個有趣現象是,迄今為止成功的 RLHF 系統使用的獎勵語言模型相對於文字生成(例如 OpenAI 175B LM,6B 獎勵模型,Anthropic 使用 10B 到 52B 的 LM 和獎勵模型,DeepMind 使用 70B Chinchilla 模型作為 LM 和獎勵)大小不同。直覺上會認為這些偏好模型需要具有與生成文字的模型相似的容量才能理解給定它們的文字。
在 RLHF 系統的這個階段,我們有一個可以生成文字的初始語言模型,以及一個接收任何文字併為其分配人類感知評分的偏好模型。接下來,我們使用**強化學習 (RL)** 來最佳化原始語言模型,使其符合獎勵模型。
使用 RL 進行微調
長期以來,由於工程和演算法原因,人們一直認為用強化學習訓練語言模型是不可能的。現在多個組織似乎已經成功地利用策略梯度強化學習演算法——近端策略最佳化 (PPO)——來微調**初始 LM 的副本**的部分或全部引數。LM 的一些引數被凍結,因為微調整個 10B 或 100B+ 引數模型成本過高(更多資訊請參閱用於 LM 的低秩適應 (LoRA) 或 DeepMind 的 Sparrow LM)——具體取決於所使用的模型規模和基礎設施。關於凍結多少引數或是否凍結引數的確切動態被認為是一個開放的研究問題。PPO 已經存在了相當長的時間——有大量關於其工作原理的指南。這種方法的相對成熟使其成為擴充套件到 RLHF 分散式訓練新應用的有利選擇。事實證明,RLHF 的許多核心 RL 進步都集中在如何使用熟悉的演算法更新如此龐大的模型(稍後會詳細介紹)。
讓我們首先將這個微調任務表述為一個 RL 問題。首先,**策略**是一個語言模型,它接收一個提示並返回一個文字序列(或僅是文字的機率分佈)。這個策略的**動作空間**是與語言模型詞彙表對應的所有 token(通常是 5 萬個 token 左右),而**觀察空間**是可能的輸入 token 序列的分佈,這在之前的 RL 應用中也相當大(維度大約是詞彙表大小的^輸入 token 序列的長度)。**獎勵函式**是偏好模型和策略轉移約束的組合。
獎勵函式是系統將我們討論過的所有模型組合成一個 RLHF 過程的地方。給定資料集中的一個提示 *x*,由當前迭代的微調策略生成文字 *y*。該文字與原始提示連線起來,傳遞給偏好模型,該模型返回一個標量值“偏好度”,。此外,將 RL 策略的每個 token 機率分佈與初始模型的機率分佈進行比較,以計算它們之間差異的懲罰。在 OpenAI、Anthropic 和 DeepMind 的多篇論文中,這種懲罰被設計為這些 token 序列分佈之間的 Kullback-Leibler (KL) 散度的縮放版本,。KL 散度項懲罰 RL 策略在每個訓練批次中大幅偏離初始預訓練模型,這有助於確保模型輸出的文字片段合理連貫。如果沒有這種懲罰,最佳化可能會開始生成亂碼但能欺騙獎勵模型給出高獎勵的文字。在實踐中,KL 散度透過從兩個分佈中取樣來近似(John Schulman 此處解釋)。傳送給 RL 更新規則的最終獎勵是 。
一些 RLHF 系統在獎勵函式中添加了額外的項。例如,OpenAI 成功地在 InstructGPT 上進行了實驗,透過將額外的預訓練梯度(來自人工標註集)混合到 PPO 的更新規則中。隨著 RLHF 的進一步研究,這種獎勵函式的表述可能會繼續發展。
最後,**更新規則**是 PPO 的引數更新,它最大限度地提高了當前批次資料中的獎勵指標(PPO 是線上策略,這意味著引數只用當前批次的提示-生成對進行更新)。PPO 是一種信任區域最佳化演算法,它對梯度施加約束,以確保更新步驟不會破壞學習過程的穩定性。DeepMind 對 Gopher 使用了類似的獎勵設定,但使用了同步優勢演員-評論家 (A2C) 來最佳化梯度,這明顯不同但尚未在外部復現。
技術細節提示:上圖看起來兩個模型對同一提示生成了不同的響應,但實際發生的是 RL 策略生成文字,然後將該文字輸入到初始模型中,以生成其用於 KL 懲罰的相對機率。在訓練過程中,初始模型不受梯度更新的影響.
此外,RLHF 可以從這個階段繼續,透過迭代更新獎勵模型和策略。隨著 RL 策略的更新,使用者可以繼續對這些輸出與模型早期版本進行排名。大多數論文尚未討論如何實現此操作,因為收集此類資料所需的部署模式僅適用於擁有活躍使用者群的對話代理。Anthropic 將此選項稱為*迭代線上 RLHF*(參見原始論文),其中策略的迭代包含在模型之間的 ELO 排名系統中。這引入了策略和獎勵模型演變的複雜動態,這是一個複雜且開放的研究問題。
RLHF 的開源工具
OpenAI 於 2019 年釋出了第一個在 TensorFlow 中執行 RLHF on LMs 的程式碼。
如今,PyTorch 中已經有一些活躍的 RLHF 儲存庫,它們是從此發展而來的。主要的儲存庫是 Transformers Reinforcement Learning (TRL)、起源於 TRL 分支的 TRLX 以及 Reinforcement Learning for Language models (RL4LMs)。
TRL 旨在用 PPO 微調 Hugging Face 生態系統中的預訓練 LM。TRLX 是 CarperAI 構建的 TRL 的擴充套件分支,用於處理更大的模型進行線上和離線訓練。目前,TRLX 擁有能夠以 LLM 部署所需規模(例如 330 億引數)進行生產就緒的 RLHF,並支援 PPO 和隱式語言 Q-學習 (ILQL)。TRLX 的未來版本將支援高達 2000 億引數的語言模型。因此,TRLX 的介面針對具有此規模經驗的機器學習工程師進行了最佳化。
RL4LMs 提供了使用各種 RL 演算法(PPO、NLPO、A2C 和 TRPO)、獎勵函式和指標來微調和評估 LLM 的構建塊。此外,該庫易於定製,允許在任何使用者指定的任意獎勵函式上訓練任何編碼器-解碼器或編碼器 transformer 基礎 LM。值得注意的是,它在最近的工作中經過了廣泛測試和基準測試,實驗數量高達 2000 個,突出了資料預算比較(專家演示與獎勵建模)、處理獎勵作弊和訓練不穩定性等方面的幾個實用見解。RL4LMs 當前的計劃包括更大模型的分散式訓練和新的 RL 演算法。
TRLX 和 RL4LMs 都在積極開發中,因此預計很快會有更多新功能。
Anthropic 在 Hub 上提供了一個大型資料集。
RLHF 的下一步是什麼?
儘管這些技術極具前景和影響力,並引起了人工智慧領域最大研究實驗室的關注,但仍然存在明顯的侷限性。這些模型雖然有所改進,但在沒有任何不確定性的情況下,仍然可能輸出有害或事實不準確的文字。這種不完善性代表了 RLHF 的長期挑戰和動力——在固有人類問題領域中運作意味著模型永遠不會有一個明確的最終界限來被標記為*完成*。
當部署一個使用 RLHF 的系統時,由於訓練迴圈之外的人工參與者的直接整合,收集人類偏好資料非常昂貴。RLHF 的效能只取決於其人工標註的質量,這包括兩種型別:人工生成的文字,例如在 InstructGPT 中微調初始 LM;以及模型輸出之間人類偏好的標籤。
生成回答特定提示的優質人工文字非常昂貴,因為它通常需要僱傭兼職人員(而不是依賴產品使用者或眾包)。值得慶幸的是,大多數 RLHF 應用中用於訓練獎勵模型的資料規模(約 5 萬個標註偏好樣本)並不那麼昂貴。然而,它仍然比學術實驗室可能承受的成本要高。目前,只有一個大型通用語言模型 RLHF 資料集(來自 Anthropic),以及幾個較小的特定任務資料集(例如來自 OpenAI 的摘要資料)。RLHF 資料的第二個挑戰是人工標註員經常意見不一,這在沒有真實值的情況下給訓練資料帶來了巨大的潛在方差。
儘管存在這些限制,但仍有大量未探索的設計選項可以使 RLHF 取得實質性進展。其中許多屬於改進 RL 最佳化器的領域。PPO 是一種相對較舊的演算法,但沒有結構性原因表明其他演算法無法為現有 RLHF 工作流程提供優勢和變體。微調 LM 策略的反饋部分的一個巨大成本是策略生成的每個文字片段都需要在獎勵模型上進行評估(因為它在標準 RL 框架中充當環境的一部分)。為了避免大型模型這些昂貴的前向傳播,可以使用離線 RL 作為策略最佳化器。最近,出現了新的演算法,例如隱式語言 Q-學習 (ILQL) [CarperAI 上關於 ILQL 的講座],這些演算法特別適合這種最佳化型別。RL 過程中的其他核心權衡,例如探索-利用平衡,也尚未得到記錄。探索這些方向至少會深入理解 RLHF 的功能,如果不能,則會提供改進的效能。
我們於 2022 年 12 月 13 日星期二舉辦了一場講座,對本文進行了擴充套件;您可以在此處觀看!
延伸閱讀
以下是迄今為止關於 RLHF 最流行的論文列表。該領域隨著深度強化學習的興起(大約在 2017 年)而受到廣泛關注,並已發展成為許多大型科技公司對 LLM 應用的更廣泛研究。以下是一些早於關注 LM 的 RLHF 論文
- TAMER:透過評估強化手動訓練智慧體 (Knox and Stone 2008):提出了一種學習型智慧體,人類透過迭代提供行動得分來學習獎勵模型。
- 基於策略的人類反饋互動學習 (MacGlashan et al. 2017):提出了一種演員-評論家演算法 COACH,其中人類反饋(包括積極和消極)用於調整優勢函式。
- 從人類偏好進行深度強化學習 (Christiano et al. 2017):RLHF 應用於 Atari 軌跡之間的偏好。
- 深度TAMER:在高維狀態空間中的互動式智慧體塑造 (Warnell et al. 2018):擴充套件了TAMER框架,其中使用深度神經網路來建模獎勵預測。
- 基於偏好的強化學習方法綜述 (Wirth et al. 2017):總結了上述努力以及更多參考文獻。
以下是展示 RLHF 對 LM 效能的“關鍵”論文不斷增長的快照
- 根據人類偏好微調語言模型 (Zieglar et al. 2019):一篇早期研究獎勵學習對四個特定任務影響的論文。
- 透過人類反饋學習摘要 (Stiennon et al., 2020):RLHF 應用於文字摘要任務。此外,透過人類反饋遞迴摘要書籍 (OpenAI Alignment Team 2021),後續工作是摘要書籍。
- WebGPT:瀏覽器輔助問答與人類反饋 (OpenAI, 2021):使用 RLHF 訓練代理導航網頁。
- InstructGPT:訓練語言模型以遵循人類反饋指令 (OpenAI Alignment Team 2022):RLHF 應用於通用語言模型[InstructGPT 部落格文章]。
- GopherCite:教語言模型用已驗證的引用支援答案 (Menick et al. 2022):用 RLHF 訓練 LM 以返回帶有特定引用的答案。
- Sparrow:透過有針對性的人工判斷提高對話代理的對齊程度 (Glaese et al. 2022):使用 RLHF 微調對話代理。
- ChatGPT:最佳化對話語言模型 (OpenAI 2022):使用 RLHF 訓練語言模型,使其適合用作通用聊天機器人。
- 獎勵模型過最佳化的縮放法則 (Gao et al. 2022):研究 RLHF 中學習到的偏好模型的縮放特性。
- 透過人類反饋強化學習訓練有益且無害的助手 (Anthropic, 2022):詳細記錄了使用 RLHF 訓練 LM 助手的過程。
- 對語言模型進行紅隊測試以減少危害:方法、擴充套件行為和經驗教訓 (Ganguli et al. 2022):詳細記錄了旨在“發現、衡量並嘗試減少[語言模型]潛在有害輸出”的努力。
- 使用強化學習進行開放式對話中的動態規劃 (Cohen et al. 2022):使用 RL 增強開放式對話代理的對話技能。
- 強化學習是否(不)適用於自然語言處理?:自然語言策略最佳化的基準、基線和構建塊 (Ramamurthy and Ammanabrolu et al. 2022):討論了 RLHF 中開源工具的設計空間,並提出了一種新的演算法 NLPO (自然語言策略最佳化) 作為 PPO 的替代方案。
- Llama 2 (Touvron et al. 2023):具有大量 RLHF 細節的重要開放訪問模型。
該領域是多個領域的融合,因此您也可以在其他領域找到資源
- 指令的持續學習(Kojima et al. 2021,Suhr and Artzi 2022)或來自使用者反饋的 Bandit 學習(Sokolov et al. 2016,Gao et al. 2022)
- 早期關於使用其他 RL 演算法進行文字生成(並非所有都帶有偏好)的歷史,例如使用迴圈神經網路(Ranzato et al. 2015),用於文字預測的演員-評論家演算法(Bahdanau et al. 2016),或早期將人類偏好新增到此框架的工作(Nguyen et al. 2017)。
**引用:** 如果您發現本文對您的學術工作有幫助,請考慮在文字中引用我們的工作
Lambert, et al., "Illustrating Reinforcement Learning from Human Feedback (RLHF)", Hugging Face Blog, 2022.
BibTeX 引用
@article{lambert2022illustrating,
author = {Lambert, Nathan and Castricato, Louis and von Werra, Leandro and Havrilla, Alex},
title = {Illustrating Reinforcement Learning from Human Feedback (RLHF)},
journal = {Hugging Face Blog},
year = {2022},
note = {https://huggingface.co/blog/rlhf},
}
感謝 Robert Kirk 修正了 RLHF 具體實現的一些事實錯誤。感謝 Stas Bekman 修正了一些打字錯誤或令人困惑的短語。感謝 Peter Stone、Khanh X. Nguyen 和 Yoav Artzi 幫助進一步擴充套件了相關工作的歷史。感謝 Igor Kotenkov 指出 RLHF 過程、其圖表和文字描述中 KL 懲罰項的技術錯誤。