
happy-llm 偏好對齊指南從強化學習原理到 RLHF 獎勵模型構建【免費下載鏈接】happy-llm 從零開始構建大模型項目地址: https://gitcode.com/GitHub_Trending/ha/happy-llm導讀本文是 happy-llm 開源倉庫第六章的進階補充專題圍繞通過強化學習進行偏好對齊展開。你將完整掌握強化學習RL的核心概念與數學目標理解為何在指令微調SFT之后還需要訓練獎勵模型Reward Model并學會按照 RLHFReinforcement Learning from Human Feedback的標準流程構建chosen / rejected偏好數據集、借助 TRL 框架訓練獎勵模型為后續(xù)開展 DPO、PPO 等后訓練實驗打下基礎。6.4.0 前置知識為什么 SFT 之后還需要偏好對齊大語言模型如 Llama 系列、Qwen 系列經過預訓練后已經具備強大的文本理解和生成能力但預訓練模型并不總能直接滿足特定業(yè)務需求和人類價值觀。因此業(yè)界通常先對預訓練模型進行指令微調Instruction Tuning即向模型提供特定的指令prompts和示例使其在對話、問答、文本生成等任務中表現(xiàn)得更符合人類期望。在 happy-llm 倉庫中這一步的完整實踐對應 第六章正文 的 6.2 節(jié)配套腳本為 docs/chapter6/code/finetune.py。從該腳本可以看到指令微調的核心機制使用|im_start|human/|im_start|assistant等角色標識符組織多輪對話在labels中通過IGNORE_TOKEN_ID屏蔽 user 側文本只對 assistant 側回答計算損失通過TrainerTrainingArguments完成標準的交叉熵式有監(jiān)督訓練。但指令微調只解決回答格式與大致內容正確的問題。我們還希望模型的回答不僅能正確還能最大程度上滿足人類的審美、價值觀和安全標準——這正是偏好對齊Preference Alignment要解決的問題也是本文的核心主題。6.4.1 強化學習的基本原理從行為心理學到計算強化學習在進入強化學習的細節(jié)之前先看看它的起源。強化學習Reinforcement Learning簡稱 RL其實并不是什么新鮮事物它的理論基礎可以追溯到 20 世紀初的行為心理學尤其是 Edward Thorndike 和 B.F. Skinner 對動物學習的研究。Thorndike 提出了效果律如果一個行為帶來積極的結果那么這種行為重復發(fā)生的概率會增加。Skinner 則進一步發(fā)展了這一思想提出操作性條件作用學說通過獎勵和懲罰來塑造行為。計算機科學領域的強化學習正是從這些心理學原理中生發(fā)出來的。20 世紀 80 年代隨著計算能力提升和數學理論發(fā)展人們開始嘗試將生物心理學的學習概念應用于機器和計算機程序從而發(fā)展出現(xiàn)代意義上的強化學習。核心要素在強化學習中以下五個要素構成了最基本的框架狀態(tài)State系統(tǒng)在某一時刻的具體狀況。比如棋盤游戲中狀態(tài)可以表示棋盤上所有棋子的當前排列情況對自動駕駛汽車來說狀態(tài)可能包括汽車的速度、位置以及周圍障礙物的位置等。動作Action智能體在給定狀態(tài)下可執(zhí)行的操作。以自行車為例動作可能包括前進、停止、轉彎等。在復雜系統(tǒng)中動作集可以非常龐大。獎勵Reward智能體執(zhí)行某個動作后獲得的反饋通常是一個數值。獎勵可以是立即的也可以是延后的好的動作獲得正獎勵不好的動作獲得負獎勵。策略Policy一套指導智能體如何選擇動作的規(guī)則即告訴智能體在每個狀態(tài)下應該做什么。價值函數Value Function對策略的評估工具用于預測從當前狀態(tài)出發(fā)、長期來看能夠獲得的總獎勵幫助智能體權衡短期與長期的收益。模型Model在部分強化學習系統(tǒng)中我們會建立一個環(huán)境模型幫助智能體預見其動作的結果這在許多復雜計算場景下非常有用。這些元素共同作用幫助智能體通過在虛擬環(huán)境中不斷試錯來學習最佳行動策略智能體與環(huán)境的交互循環(huán)在強化學習中智能體是學習和決策的主體它通過以下步驟與環(huán)境交互觀察狀態(tài)智能體首先觀察當前的狀態(tài)State。選擇動作根據觀察到的狀態(tài)和預先確定的策略智能體選擇一個動作Action。執(zhí)行動作智能體執(zhí)行所選的動作。接收獎勵和新狀態(tài)執(zhí)行動作后智能體從環(huán)境中接收到相應的獎勵Reward和更新后的新狀態(tài)State。更新策略智能體使用獲得的獎勵信息來調整策略以便在未來獲得更好的結果。將這個過程不斷重復智能體在反復交互中不斷優(yōu)化策略目標是在給定任務中表現(xiàn)得越來越好。上圖倉庫 docs/images/6-images/7.1-1.png直觀展示了這一閉環(huán)智能體基于當前狀態(tài) $s_t$ 選擇動作 $a_t$環(huán)境接收動作后更新狀態(tài)并返回獎勵 $r_t$如此往復進入下一輪迭代。6.4.2 強化學習的目標強化學習的目標十分明確通過在給定環(huán)境中反復試探和學習使得智能體能夠選擇一系列動作從而最大化其總累計獎勵??梢杂猛嬗螒騺眍惐韧婕业哪繕耸峭ㄟ^一系列操作走路、跳躍、打怪來贏得高分或完成關卡在強化學習中這種高分或成功通過關卡的概念就對應于最大化獎勵。數學表達在數學上這個目標可以表示為訓練一個策略 $\pi$使得在所有狀態(tài) $s$ 下智能體選擇的動作能夠使回報 $R(\tau)$ 的期望值最大化。具體來說我們希望最大化以下期望值$$ E(R(\tau)){\tau \sim P{\theta}(\tau)} \sum_{\tau} R(\tau) P_{\theta}(\tau) $$其中$E(R(\tau)){\tau \sim P{\theta}(\tau)}$表示在策略 $P_{\theta}(\tau)$ 下軌跡 $\tau$ 的回報 $R(\tau)$ 的期望值$R(\tau)$軌跡 $\tau$ 的回報即從起始狀態(tài)到終止狀態(tài)獲得的所有獎勵的總和$\tau$一條軌跡即智能體在環(huán)境中的狀態(tài)和動作序列$P_{\theta}(\tau)$在參數 $\theta$ 下生成軌跡 $\tau$ 的概率通常由策略或策略網絡確定$\theta$策略的參數控制著策略 $P_{\theta}$ 的行為。為了找到這個策略我們使用梯度上升的方法不斷更新策略參數 $\theta$使得 $E(R(\tau)){\tau \sim P{\theta}(\tau)}$ 不斷增大。適用領域與典型代表這種學習方式非常有效因為它不依賴于大量標注數據而是通過對環(huán)境直接進行交互和反饋進行學習。這使得強化學習在機器人控制、自動駕駛、金融交易乃至游戲中都展現(xiàn)出巨大潛力。在大模型領域AlphaGo、AlphaZero 等系統(tǒng)正是通過強化學習不斷優(yōu)化策略最終在圍棋、象棋等項目中擊敗人類頂尖選手。強化學習同樣可以用于偏好對齊問題例如讓大模型學習模仿人類的交流方式它也廣泛應用于自動駕駛等領域。未來強化學習的應用場景還會更加廣泛。6.4.3 獎勵模型讓偏好可量化從人類反饋到自動打分在完成初步的指令微調后我們還希望模型的回答不僅正確還能最大程度滿足人類的審美、價值觀和安全標準。為此引入了RLHFReinforcement Learning from Human Feedback基于人類反饋的強化學習。在 RLHF 中我們首先從人類標注者那里獲得對模型回答的偏好例如給出多個模型回答讓人類標注者對它們進行排名然后通過這些反饋來指導模型學習從而不斷提高模型生成內容與人類偏好的契合度。為了在 RLHF 流程中自動對模型的回答進行打分賦予獎勵需要構建一個專門的獎勵模型Reward Model。這個獎勵模型會根據人類標注的數據進行訓練并在實際部署中獨立對模型輸出進行自動評分從而減少持續(xù)人工參與的成本和延遲。獎勵模型在整體管線中的位置可以這樣理解完整的后訓練管線預訓練在無標注語料上學習語言能力SFT指令微調學會按人類指令和對話格式生成內容對應 docs/chapter6/code/finetune.py 的實踐獎勵模型訓練用人類偏好數據訓練一個自動評分器替代人工打分強化學習優(yōu)化以獎勵模型的分數作為獎勵信號通過強化學習如 PPO、DPO 等算法進一步優(yōu)化策略模型。其中獎勵模型是承上啟下的關鍵組件——它將模糊的人類喜好轉化為可優(yōu)化的數值信號。6.4.4 偏好數據集構建在構建獎勵模型之前首先需要準備高質量的人類反饋數據集。此數據集的核心目標是為每條給定的提示prompt提供多個候選回答completion并由人類標注者對這些回答進行細致的評定與排序。通過對回答的對比和篩選我們可以為機器模型提供明確的參考標準幫助其學習在給定任務下如何生成更符合人類期望的輸出。數據收集三步走收集初始回答首先從一個已經過基本微調的大模型往往是具有一定指令理解和生成能力的預訓練模型中為一組精心設計的提示生成多條回答這些回答將作為后續(xù)人類標注工作的基礎。人工標注與評估擁有多條候選回答后邀請專業(yè)標注人員或眾包標注者對每條回答的質量進行評價。評估通常會基于一系列預先設計的評價標準如回答的準確性、完整性、上下文相關性、語言流暢度以及是否遵循道德與安全準則。對不同回答的比較與排序幫助識別最佳和最差的回答從而形成有價值的訓練數據。數據格式化與整理標注完成后將數據進行整理與格式化通常采用 JSON、CSV 或其他便于計算機處理的結構化數據格式。數據集中需明確標識每個問題prompt、其對應的多個回答completions以及人類標注者對這些回答的選擇如標記為 chosen 的最佳答案與 rejected 的較差答案。這些標記信息可直接作為獎勵模型學習的監(jiān)督信號使其在訓練中自動傾向于生成高質量回答。數據示例下面是一個簡單的數據示例展示兩個問題question及其對應的回答和人類評價結果。通過 chosen 與 rejected 字段的對比可以直觀看出哪條回答更為優(yōu)質[ { question: Python中的列表是什么, chosen: Python中的列表是一種有序的可變容器允許存儲多個元素并且可以通過索引訪問。, rejected: Python中的列表用于存儲數據。 }, { question: Python中的元組是什么, chosen: Python中的元組是一種有序的不可變容器允許存儲多個元素并且一旦創(chuàng)建就不能修改。, rejected: Python中的元組用于存儲數據。 } ]在上述示例中人類標注者認為 chosen 字段下的回答相對于對應的 rejected 回答在描述、準確性和信息量等方面都更為優(yōu)質。例如對于列表的定義chosen 答復更清晰地解釋了列表的特征有序、可變、支持索引訪問而非僅僅停留在用于存儲數據這種籠統(tǒng)描述。從 SFT 數據到偏好數據的差異對比倉庫 docs/chapter6/code/finetune.py 中 SFT 數據的conversations多輪對話格式可以發(fā)現(xiàn)偏好數據集的結構差異非常明顯SFT 數據關注給定指令標準回答是什么監(jiān)督信號是唯一的目標文本偏好數據關注多個回答中哪個更好監(jiān)督信號是回答之間的相對優(yōu)劣chosen vs rejected這正是獎勵模型排序式訓練所需的輸入形式。6.4.5 獎勵模型訓練基于 TRL 框架說明原文此節(jié)編號為 7.2.2與本章章節(jié)號6.4不一致本文按章節(jié)順序修正為 6.4.5內容保持一致。我們可以借助大模型強化學習框架TRLTransformer Reinforcement Learning來訓練獎勵模型。TRL 是一個基于強化學習的訓練框架旨在通過人類反饋指導模型生成更符合人類期望的回答。在 TRL 中我們會將獎勵模型作為一個獨立的組件用于評估模型生成的回答并根據評估結果給予獎勵或懲罰。獎勵模型的核心思想獎勵模型的訓練本質上是排序學習Learning to Rank輸入同一條 prompt 下的兩條回答chosen 與 rejected模型為兩條回答各輸出一個標量分數訓練目標就是讓 chosen 回答的分數顯著高于 rejected 回答的分數。在 happy-llm 中的實踐定位需要注意的是當前 happy-llm 倉庫第六章的配套代碼docs/chapter6/code主線覆蓋的是預訓練pretrain.py與指令微調finetune.py兩部分環(huán)境依賴見 requirements.txt其中已包含transformers、datasets、torch、deepspeed等訓練基礎組件。偏好對齊RLHF / 獎勵模型 / DPO / KTO 等屬于進階后訓練主題建議的學習路徑是先完成第六章正文 6.16.3Pretrain、SFT、PEFT/LoRA的實踐掌握Trainer、TrainingArguments與 DeepSpeed 的用法再按本文內容準備好偏好數據集chosen / rejected 格式最后在現(xiàn)有訓練環(huán)境中引入 TRL 框架將獎勵模型作為獨立組件接入即可銜接 PPO、DPO 等偏好優(yōu)化算法。小結本文圍繞 happy-llm 倉庫第六章的偏好對齊專題系統(tǒng)梳理了從強化學習原理到 RLHF 獎勵模型構建的完整鏈條原理層面掌握狀態(tài)、動作、獎勵、策略、價值函數五大要素理解智能體與環(huán)境的交互閉環(huán)以及最大化累計獎勵的數學目標與梯度上升優(yōu)化思路動機層面理解指令微調SFT與偏好對齊的分工明確獎勵模型在 RLHF 管線中的承上啟下作用數據層面掌握人類偏好數據集的收集、標注、格式化流程以及 chosen / rejected 字段的標準 JSON 結構訓練層面了解基于 TRL 框架訓練獎勵模型的定位與后續(xù)銜接方式。倉庫第六章的代碼資源docs/chapter6/code為上述內容提供了 Pretrain 與 SFT 的落地實踐基礎偏好對齊可作為掌握訓練主線后的進階方向繼續(xù)深入?!久赓M下載鏈接】happy-llm 從零開始構建大模型項目地址: https://gitcode.com/GitHub_Trending/ha/happy-llm創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考