從指令微調到人類偏好:構建更有用的大語言模型
大語言模型(LLMs)已經成為現代自然語言處理系統的核心,但單純依賴傳統語言建模目標,往往難以滿足實際應用的“人類意圖”。從 Instruction Tuning(指令微調)出發,到 Preference Optimization(偏好優化)和 Prompt 工程,本博客將系統梳理這些技術的背景、方法與挑戰,幫助你構建更實用、更安全的語言模型。
一、語言建模目標的局限
預訓練語言模型通常優化“下一個詞預測”目標,但這個目標并不等同于執行實際任務。
- 輸入:“請總結以下文本。”
- 輸出:“這本書是……” —— 并沒有完成任務,僅僅模仿語氣
這說明:語言建模學的是“如何說話”,而不是“如何完成任務”。
二、通用微調的瓶頸
在實際應用中,研究者嘗試通過領域微調(Fine-tuning)讓模型學會完成任務。但這種方式存在多個問題:
- 模型學到形式模仿,而非執行邏輯
- 標簽和任務之間缺乏清晰邊界
- 輸出“看起來像”答案,但并不實用
這催生了更結構化的訓練方式:指令微調(Instruction Tuning)。
三、什么是 Instruction Tuning?
Instruction Tuning 是一種使用"輸入-任務描述 + 輸出-示例結果"對進行訓練的方法。目標是讓模型:
- 理解人類自然語言中的指令
- 輸出貼合任務目標的內容
示例:
- 輸入:請判斷情感傾向:“演技一般但畫面精美。”
- 輸出:正面
相比傳統分類器,這種方式更貼近真實對話與任務場景。
四、代表模型:FLAN-T5
由 Google 提出的 FLAN-T5(Chung et al., 2022)是 Instruction Tuning 的代表性成果。
其優勢包括:
- 覆蓋多種任務類型(問答、摘要、翻譯等)
- 多語言訓練,增強泛化能力
- Zero-shot 與 Few-shot 表現優異
五、數據是關鍵:任務對的構建
Instruction Tuning 成敗的核心在于數據:
優質任務對勝過龐雜數據量。常用數據來源包括:
- InstructGPT 人工標注任務
- FLAN 公開任務集合
- Super-Natural Instructions 跨領域任務集
此外,還有一種趨勢是使用大模型自己生成任務數據,如 Stanford Alpaca 項目。
六、合成任務數據的潛力與風險
通過大模型生成指令-回應對,可以快速擴充訓練集:
- 人工構造任務:“設計20個多樣任務”
- GPT 生成回答
- 用于微調較小模型
這類方法低成本、高效率,但存在風險:
- 輸出質量不一致
- 存在語義重復或模糊任務
七、訓練任務量:真的越多越好嗎?
Zhou 等人提出 LIMA(Less is More for Alignment)方法,發現:
幾百條高質量任務對,足以訓練出優秀模型。
相比海量低質量任務,更小但更精的指令數據可獲得更強泛化能力。
困惑度Perplexity不能完全代表生成質量Quality,后者更早飽和,說明過度訓練未必帶來更好輸出。
此外,該研究還通過多組實驗可視化展示:
- 篩選后的 Stack Exchange 數據質量遠高于 wikiHow 與原始數據;
- 增加訓練樣本數量(從 2K 到 32K)對生成質量影響極小;
- 即使 PPL(困惑度)持續下降,生成質量在一定步數后飽和甚至下降。
八、面對模糊任務:唯一答案不再適用
現實任務中,很多任務沒有唯一答案:
- “寫封感謝信”
- “概括一段評論”
這意味著評估方式不能再依賴 token-level 準確率,而應:
- 使用語義匹配指標(如 BERTScore)
- 多參考答案評估(multi-reference)
- 或采用人類偏好打分機制
九、從偏好學習人類意圖:RLHF 登場
當任務無法標準化時,我們轉向人類偏好:
“哪個回答更好?”
這就是 RLHF(Reinforcement Learning from Human Feedback)的核心:
- 指令微調
- 構建獎勵模型(Reward Model)
- 用強化學習優化模型輸出
目標不是“給出標準答案”,而是:讓模型學會更被人類喜歡的回答方式。
十、獎勵模型訓練流程
人類評審比較模型輸出 A 與 B,判斷誰更好:
- 訓練一個小型 LLM 學習這種偏好
- 成為“獎勵模型”
- 用作 RL 優化的評分參考
這種方式已經廣泛用于 ChatGPT、Claude 等系統中。
RLHF 三階段訓練流程
第一階段:Instruction Tuning(指令微調)
🌟 目標:讓模型初步學會“聽懂指令”和“執行任務”
- 抽取 prompt,例如:Explain the moon landing to a 6 year old
- 人工示范回答:Some people went to the moon…
- 用監督學習微調模型(SFT)
第二階段:Reward Model 構建(獎勵模型)
🌟 目標:學會判斷“哪個輸出更好”
- 給定指令生成多個回答(A, B, C, D)
- 人類排序偏好,例如 D > C > A = B
- 訓練小型 LLM 學習排序分值(Reward Predictor)
第三階段:使用獎勵模型進行強化學習(PPO)
🌟 目標:強化高偏好輸出,抑制差回答
- 模型生成新回答
- 獎勵模型打分
- 使用 PPO 更新模型策略
📝 注:RLHF 中的 PPO 與傳統強化學習不同,不涉及環境交互,而是單步獎勵優化。
數據從哪里來?——OpenAI 的三類數據采集方式
1. Plain(自由構造)
標注者自主編寫任務與回答,強調任務多樣性。
2. Few-shot 模式
標注者為每條任務設計多個示例輸入-輸出對。
3. User-based(用戶用例驅動)
提取 API 用戶真實需求,請標注者設計對應 prompt。
十一、Direct Preference Optimization(DPO)
DPO 是一種更簡單的偏好優化方式:
- 無需訓練獎勵模型
- 直接通過“好 vs 差”的樣本對優化模型
- 適合高效迭代
其核心思想是最大化:優質響應被采樣的概率 > 劣質響應被采樣的概率
具體形式如下:
- 輸入:一組包含正負偏好樣本的對比樣本((x, y+), (x, y-))
- 損失函數優化目標為對比概率比 log σ(f(y+) - f(y?)),提升正例被選概率。
該方法在多個任務中展現出與 RLHF 相當甚至更優的性能,同時大大簡化了訓練流程。
十二、對齊是否可靠?模型仍可能脆弱
Lee 等人(2024)發現,RLHF 雖提升了人類偏好得分,但對齊結果具有脆弱性:
- 對輸入微小變動敏感
- 面對未見指令時表現不穩
- 模型容易被攻擊性 prompt 引導走偏
這意味著,RLHF 更多是在表面行為上控制模型,而非改變其內在知識結構與推理方式。
十三、有毒表示潛藏在模型內部
盡管 RLHF 能使輸出更安全,但并不代表模型內部已移除這些內容:
- 模型隱藏層仍保留“毒性向量”——與敏感內容(如攻擊性語言、偏見)相關的方向
- 在特定上下文或攻擊性 prompt 下仍可能被激活
研究者嘗試通過“表示空間干預”抑制這類方向,但如何徹底凈化仍屬開放問題。
十四、Prompt 優化:模型質量的決定性變量
優化 Prompt 是提升輸出質量的重要手段:
- 向量化 Prompt(Prefix Tuning):訓練前綴向量,無需微調主模型參數
- 使用 RL 搜索 Prompt:在大空間中通過獎勵信號搜索最優指令形式
- 系統級 Prompt 編排:通過 LangChain 等框架構建多步任務流程
十五、LangChain 與 Prompt 系統化
LangChain 讓模型以鏈式方式完成復雜任務,例如:
- 步驟1:獲取產品信息
- 步驟2:命名公司
- 步驟3:撰寫口號
LangChain 還支持與檢索模塊、工具 API 等連接,構建 agent 系統。
十六、ChainForge:Prompt 批量實驗工具
ChainForge 支持:
- 快速測試 Prompt 變體
- 自動記錄輸出結果
- 分析一致性與偏好性
研究者可通過該平臺系統比較不同 prompt 的有效性與穩定性,提升 Prompt 工程科學性。
十七、總結:微調之外,我們學到了什么?
? Instruction Tuning:強化任務意識
? RLHF:融入人類偏好
? DPO:簡化偏好優化流程
? Prompt 工程:提升交互體驗與系統控制力
?? 持續挑戰:對齊脆弱性、毒性表示殘留、Prompt 敏感性與泛化能力不足
🎯 未來方向:
- 更穩健的價值對齊方法
- 多模態偏好優化(圖文、語音)
- 自動化 Prompt 構建與驗證體系
- 更高層次的自主推理與意圖理解