ChatGPT 背後的“功臣”——RLHF 技術詳解
OpenAI 推出的 ChatGPT 對話模型掀起了新的 AI 熱潮,它面對多種多樣的問題對答如流,似乎已經打破了機器和人的邊界。這一工作的背後是大型語言模型 (Large Language Model,LLM) 生成領域的新訓練正規化:RLHF (Reinforcement Learning from Human Feedback) ,即以強化學習方式依據人類反饋優化語言模型。
過去幾年裡各種 LLM 根據人類輸入提示 (prompt) 生成多樣化文字的能力令人印象深刻。然而,對生成結果的評估是主觀和依賴上下文的,例如,我們希望模型生成一個有創意的故事、一段真實的資訊性文字,或者是可執行的程式碼片段,這些結果難以用現有的基於規則的文字生成指標 (如 BLUE 和 ROUGE) 來衡量。除了評估指標,現有的模型通常以預測下一個單詞的方式和簡單的損失函式 (如交叉熵) 來建模,沒有顯式地引入人的偏好和主觀意見。
如果我們 用生成文字的人工反饋作為效能衡量標準,或者更進一步用該反饋作為損失來優化模型,那不是更好嗎?這就是 RLHF 的思想:使用強化學習的方式直接優化帶有人類反饋的語言模型。RLHF 使得在一般文字資料語料庫上訓練的語言模型能和複雜的人類價值觀對齊。
看看 ChatGPT 是如何解釋 RLHF 的:
ChatGPT 解釋的很好,但還沒有完全講透;讓我們更具體一點吧!
RLHF 技術分解
RLHF 是一項涉及多個模型和不同訓練階段的複雜概念,這裡我們按三個步驟分解:
- 預訓練一個語言模型 (LM) ;
- 聚合問答資料並訓練一個獎勵模型 (Reward Model,RM) ;
- 用強化學習 (RL) 方式微調 LM。
Step 1. 預訓練語言模型
首先,我們使用經典的預訓練目標訓練一個語言模型。對這一步的模型,OpenAI 在其第一個流行的 RLHF 模型 InstructGPT 中使用了較小版本的 GPT-3; Anthropic 使用了 1000 萬 ~ 520 億引數的 Transformer 模型進行訓練;DeepMind 使用了自家的 2800 億引數模型 Gopher。
這裡可以用額外的文字或者條件對這個 LM 進行微調,例如 OpenAI 對 “更可取” (preferable) 的人工生成文字進行了微調,而 Anthropic 按 “有用、誠實和無害” 的標準在上下文線索上蒸餾了原始的 LM。這裡或許使用了昂貴的增強資料,但並不是 RLHF 必須的一步。由於 RLHF 還是一個尚待探索的領域,對於” 哪種模型” 適合作為 RLHF 的起點並沒有明確的答案。
接下來,我們會基於 LM 來生成訓練獎勵模型 (RM,也叫偏好模型) 的資料,並在這一步引入人類的偏好資訊。
Step 2. 訓練獎勵模型
RM 的訓練是 RLHF 區別於舊正規化的開端。這一模型接收一系列文字並返回一個標量獎勵,數值上對應人的偏好。我們可以用端到端的方式用 LM 建模,或者用模組化的系統建模 (比如對輸出進行排名,再將排名轉換為獎勵) 。這一獎勵數值將對後續無縫接入現有的 RL 演算法至關重要。
關於模型選擇方面,RM 可以是另一個經過微調的 LM,也可以是根據偏好資料從頭開始訓練的 LM。例如 Anthropic 提出了一種特殊的預訓練方式,即用偏好模型預訓練 (Preference Model Pretraining,PMP) 來替換一般預訓練後的微調過程。因為前者被認為對樣本資料的利用率更高。但對於哪種 RM 更好尚無定論。
關於訓練文字方面,RM 的提示 - 生成對文字是從預定義資料集中取樣生成的,並用初始的 LM 給這些提示生成文字。Anthropic 的資料主要是通過 Amazon Mechanical Turk 上的聊天工具生成的,並在 Hub 上可用 (https://huggingface.co/datasets/Anthropic/hh-rlhf),而 OpenAI 使用了使用者提交給 GPT API 的 prompt。
關於訓練獎勵數值方面,這裡需要人工對 LM 生成的回答進行排名。起初我們可能會認為應該直接對文字標註分數來訓練 RM,但是由於標註者的價值觀不同導致這些分數未經過校準並且充滿噪音。通過排名可以比較多個模型的輸出並構建更好的規範資料集。
對具體的排名方式,一種成功的方式是對不同 LM 在相同提示下的輸出進行比較,然後使用 Elo 系統建立一個完整的排名。這些不同的排名結果將被歸一化為用於訓練的標量獎勵值。
這個過程中一個有趣的產物是目前成功的 RLHF 系統使用了和生成模型具有 不同 大小的 LM (例如 OpenAI 使用了 175B 的 LM 和 6B 的 RM,Anthropic 使用的 LM 和 RM 從 10B 到 52B 大小不等,DeepMind 使用了 70B 的 Chinchilla 模型分別作為 LM 和 RM) 。一種直覺是,偏好模型和生成模型需要具有類似的能力來理解提供給它們的文字。
接下來是最後一步:利用 RM 輸出的獎勵,用強化學習方式微調優化 LM。
Step 3. 用強化學習微調
長期以來出於工程和演算法原因,人們認為用強化學習訓練 LM 是不可能的。而目前多個組織找到的可行方案是使用策略梯度強化學習 (Policy Gradient RL) 演算法、近端策略優化 (Proximal Policy Optimization,PPO) 微調初始 LM 的部分或全部引數。因為微調整個 10B~100B+ 引數的成本過高 (相關工作參考低秩適應 LoRA 和 DeepMind 的 Sparrow LM) 。PPO 演算法已經存在了相對較長的時間,有大量關於其原理的指南,因而成為 RLHF 中的有利選擇。
事實證明,RLHF 的許多核心 RL 進步一直在弄清楚如何將熟悉的 RL 演算法應用到更新如此大的模型。
讓我們首先將微調任務表述為 RL 問題。首先,該策略 (policy) 是一個接受提示並返回一系列文字 (或文字的概率分佈) 的 LM。這個策略的行動空間 (action space) 是 LM 的詞表對應的所有詞元 (一般在 50k 數量級) ,觀察空間 (observation space) 是可能的輸入詞元序列,也比較大 (詞彙量 ^ 輸入標記的數量) 。獎勵函式是偏好模型和策略轉變約束 (Policy shift constraint) 的結合。
PPO 演算法確定的獎勵函式具體計算如下:將提示 輸入初始 LM 和當前微調的 LM,分別得到了輸出文字 ,將來自當前策略的文字傳遞給 RM 得到一個標量的獎勵 。將兩個模型的生成文字進行比較計算差異的懲罰項,在來自 OpenAI、Anthropic 和 DeepMind 的多篇論文中設計為輸出詞分佈序列之間的 Kullback–Leibler (KL) 散度的縮放,即 。這一項被用於懲罰 RL 策略在每個訓練批次中生成大幅偏離初始模型,以確保模型輸出合理連貫的文字。如果去掉這一懲罰項可能導致模型在優化中生成亂碼文字來愚弄獎勵模型提供高獎勵值。此外,OpenAI 在 InstructGPT 上實驗了在 PPO 新增新的預訓練梯度,可以預見到獎勵函式的公式會隨著 RLHF 研究的進展而繼續進化。
最後根據 PPO 演算法,我們按當前批次資料的獎勵指標進行優化 (來自 PPO 演算法 on-policy 的特性) 。PPO 演算法是一種信賴域優化 (Trust Region Optimization,TRO) 演算法,它使用梯度約束確保更新步驟不會破壞學習過程的穩定性。DeepMind 對 Gopher 使用了類似的獎勵設定,但是使用 A2C (synchronous advantage actor-critic) 演算法來優化梯度。
作為一個可選項,RLHF 可以通過迭代 RM 和策略共同優化。隨著策略模型更新,使用者可以繼續將輸出和早期的輸出進行合併排名。Anthropic 在他們的論文中討論了迭代線上 RLHF,其中策略的迭代包含在跨模型的 Elo 排名系統中。這樣引入策略和 RM 演變的複雜動態,代表了一個複雜和開放的研究問題。
RLHF 的未來
儘管 RLHF 取得了一定的成果和關注,但依然存在侷限。這些模型依然會毫無不確定性地輸出有害或者不真實的文字。這種不完美也是 RLHF 的長期挑戰和動力 —— 在人類的固有領域中執行意味著永遠不會到達一個完美的標準。
收集人類偏好資料的質量和數量決定了 RLHF 系統性能的上限。RLHF 系統需要兩種人類偏好資料:人工生成的文字和對模型輸出的偏好標籤。生成高質量回答需要僱傭兼職人員 (而不能依賴產品使用者和眾包) 。另一方面,訓練 RM 需要的獎勵標籤規模大概是 50k 左右,所以並不那麼昂貴 (當然遠超了學術實驗室的預算) 。目前相關的資料集只有一個基於通用 LM 的 RLHF 資料集 (來自 Anthropic) 和幾個較小的子任務資料集 (如來自 OpenAI 的摘要資料集) 。另一個挑戰來自標註者的偏見。幾個人類標註者可能有不同意見,導致了訓練資料存在一些潛在差異。
除開資料方面的限制,一些有待開發的設計選項可以讓 RLHF 取得長足進步。例如對 RL 優化器的改進方面,PPO 是一種較舊的演算法,但目前沒有什麼結構性原因讓其他演算法可以在現有 RLHF 工作中更具有優勢。另外,微調 LM 策略的一大成本是策略生成的文字都需要在 RM 上進行評估,通過離線 RL 優化策略可以節約這些大模型 RM 的預測成本。最近,出現了新的 RL 演算法如隱式語言 Q 學習 (Implicit Language Q-Learning,ILQL) 也適用於當前 RL 的優化。在 RL 訓練過程的其他核心權衡,例如探索和開發 (exploration-exploitation) 的平衡也有待嘗試和記錄。探索這些方向至少能加深我們對 RLHF 的理解,更進一步提升系統的表現。
參考資料
首先介紹一些相關的開源工作:
關於 RLHF 的第一個專案,來自 OpenAI: https://github.com/openai/lm-human-preferencesy
一些 PyTorch 的 repo:
此外,Huggingface Hub 上有一個由 Anthropic 建立的大型資料集:
https://huggingface.co/datasets/Anthropic/hh-rlhf
相關論文包括在現有 LM 前的 RLHF 進展和基於當前 LM 的 RLHF 工作:
- TAMER: Training an Agent Manually via Evaluative Reinforcement (Knox and Stone 2008)
- Interactive Learning from Policy-Dependent Human Feedback (MacGlashan et al. 2017)
- Deep Reinforcement Learning from Human Preferences (Christiano et al. 2017)
- Deep TAMER: Interactive Agent Shaping in High-Dimensional State Spaces (Warnell et al. 2018)
- Fine-Tuning Language Models from Human Preferences (Zieglar et al. 2019)
- Learning to summarize with human feedback (Stiennon et al., 2020)
- Recursively Summarizing Books with Human Feedback (OpenAI Alignment Team 2021)
- WebGPT: Browser-assisted question-answering with human feedback (OpenAI, 2021)
- InstructGPT: Training language models to follow instructions with human feedback (OpenAI Alignment Team 2022)
- GopherCite: Teaching language models to support answers with verified quotes (Menick et al. 2022)
- Sparrow: Improving alignment of dialogue agents via targeted human judgements (Glaese et al. 2022)
- ChatGPT: Optimizing Language Models for Dialogue (OpenAI 2022)
- Scaling Laws for Reward Model Overoptimization (Gao et al. 2022)
- Training a Helpful and Harmless Assistant with Reinforcement Learning from Human Feedback (Anthropic, 2022)
- Red Teaming Language Models to Reduce Harms: Methods, Scaling Behaviors, and Lessons Learned (Ganguli et al. 2022)
- Dynamic Planning in Open-Ended Dialogue using Reinforcement Learning (Cohen at al. 2022)
- Is Reinforcement Learning (Not) for Natural Language Processing?: Benchmarks, Baselines, and Building Blocks for Natural Language Policy Optimization (Ramamurthy and Ammanabrolu et al. 2022)
本文翻譯自 Hugging Face 官方部落格 (https://huggingface.co/blog/rlhf)
參考資料部分連結請點選原文部落格檢視。你也可以檢視我們的直播活動回放瞭解更多: RLHF: From Zero to ChatGPT本文譯者:
李濼秋,浙江大學電腦科學碩士,主要研究 NLP 領域。
我們正在招募更多翻譯志願者幫助我們擴充官方公眾號內容,如果你感興趣,歡迎 點選這裡 填寫志願者招募表單。謝謝!
- 在一張 24 GB 的消費級顯示卡上用 RLHF 微調 20B LLMs
- 如何評估大語言模型
- 千億引數開源大模型 BLOOM 背後的技術
- Kakao Brain 的開源 ViT、ALIGN 和 COYO 文字-圖片資料集
- AI 影評家: 用 Hugging Face 模型打造一個電影評分機器人
- 我的語言模型應該有多大?
- Hugging Face 每週速遞: Chatbot Hackathon;FLAN-T5 XL 微調;構建更安全的 LLM
- AI 大戰 AI,一個深度強化學習多智慧體競賽系統
- Hugging Face 每週速遞: ChatGPT API 怎麼用?我們幫你搭好頁面了
- 深入瞭解視覺語言模型
- CPU推理|使用英特爾 Sapphire Rapids 加速 PyTorch Transformers
- 大語言模型: 新的摩爾定律?
- 從 PyTorch DDP 到 Accelerate 到 Trainer,輕鬆掌握分散式訓練
- 從 PyTorch DDP 到 Accelerate 到 Trainer,輕鬆掌握分散式訓練
- 在低程式碼開發平臺 ILLA Cloud 中使用 Hugging Face 上的模型
- 瞭解 Transformers 是如何“思考”的
- 第 1 天|基於 AI 進行遊戲開發:5 天建立一個農場遊戲!
- 加速 Document AI (文件智慧) 發展
- 一文帶你入門圖機器學習
- 解讀 ChatGPT 背後的技術重點:RLHF、IFT、CoT、紅藍對抗