一、 引言
大模型強化學習的核心目標是讓模型的輸出與人類目標、真實場景需求對齊。在工作和學習中,大模型強化學習訓練經常會遇到各種算法,各種O,在強化學習訓練選型過程中經常容易混淆,也分不清各種訓練算法的使用場景和優缺點。
本文將從“通俗原理-真實數據樣例-場景對比-實踐案例”四個維度,拆解這六種核心的強化學習算法,幫你搞懂每種算法的“核心優勢”與“適用邊界”,并結合對話、推薦、文本生成等場景,說明如何選擇合適的算法落地。
傳統強化學習中,PPO(近端策略優化)是首個在大模型訓練中落地的核心算法,但其在大規模模型(如千億參數)、復雜任務(如長鏈數學推理)中暴露了穩定性差、依賴獎勵模型等問題。為此,各個模型廠商相繼提出 DPO(直接偏好優化)、GRPO(群體相對策略優化)、ORPO(優勢比偏好優化)、KTO(卡尼曼-特沃斯基優化)和 GSPO(分組序列策略優化)等新算法:有的省去了獎勵模型的訓練,有的優化了內存占用,有的解決了混合專家(MoE)模型的訓練崩潰問題。
二、PPO:大模型強化學習的基礎算法
2.1 PPO 算法的概念與原理
PPO(近端策略優化)是一種通過策略梯度優化實現安全策略更新的強化學習算法。其核心思想可概括為:?在策略空間中劃定信任區域,通過限制參數更新幅度避免策略突變。這一特性使其尤其適合大語言模型的微調場景。
以對話模型優化為例:
? ?舊策略?:直接生成答案(如"答案是42")
? ?新策略?:嘗試分步推導(如"首先計算半徑,再代入公式…")
PPO通過概率比裁剪控制策略差異:當新策略生成分步回答的概率比舊策略高20%時,自動將更新幅度限制在安全閾值內(如ε=0.2),防止模型突然"學偏"。
2.2 PPO 的訓練方法與數據集樣例
訓練方法
PPO 的訓練就像“三步迭代優化”,每一輪都在“收集反饋-評估好壞-微調策略”:
- 收集樣本:讓當前模型(舊策略)和“環境”交互——對大模型來說,“環境”就是文本上下文(比如用戶的問題、歷史對話),模型生成一批響應后,記錄“輸入(狀態)-生成內容(動作)-獎勵(比如獎勵模型給的分數)”。
- 計算優勢值:用 GAE 給每個“動作”打分——比如模型生成“分步推導數學題”的優勢值高,說明這個動作“既當前有用,后續也能帶來好結果”;生成“模糊答案”的優勢值低,說明這個動作“短期看似能應付,長期會讓用戶不滿”。
- 更新策略:用“裁剪目標函數”微調模型——只保留“優勢值高且和舊策略差異小”的更新,確保模型每次只進步一點,不“跑偏”。
訓練數據集樣例
PPO 依賴“狀態-動作-獎勵”的序列數據,大模型場景中通常是“用戶輸入-模型響應-獎勵分數”的結構,其中“獎勵”由獎勵模型(如基于人類偏好訓練的模型)給出:
[{"episode_id": "ep_001", // 一輪交互的唯一標識"steps": [ // 交互步驟(大模型場景通常單步,復雜對話多步){"state": "用戶輸入:請解釋什么是“強化學習”,用一句話說明", // 輸入狀態(上下文)"action": "強化學習是讓智能體通過“試錯”從環境反饋中學習,不斷優化策略以獲得更多獎勵的技術", // 模型動作(生成的響應)"reward": 0.85, // 獎勵分數(0-1,越高表示越符合偏好)"next_state": "對話結束" // 下一個狀態(無后續交互則為結束)}]},{"episode_id": "ep_002","steps": [{"state": "用戶輸入:用 Python 寫一個計算斐波那契數列前 10 項的代碼","action": "def fib(n):\n a, b = 0, 1\n res = []\n for _ in range(n):\n res.append(a)\n a, b = b, a+b\n return res\nprint(fib(10))","reward": 0.92,"next_state": "對話結束"}]}
]
2.3 PPO 的優缺點與適用場景
優缺點
優點 | 缺點 |
---|---|
1. 樣本效率高:不用像傳統策略梯度算法那樣每次都丟棄舊樣本,少量數據就能迭代優化; 2. 訓練易調優:對超參數(如學習率)不敏感,新手也能較快上手; 3. 通用性強:既能優化對話生成,也能適配文本摘要、代碼生成等任務。 | 1. 依賴獎勵模型:必須先訓一個“判斷好壞”的獎勵模型,若獎勵模型有偏差(比如誤把“冗長回答”當優質),PPO 會越訓越偏; 2. 長文本不穩定:對長鏈推理(如數學證明),因獎勵通常只給最后一個 token,中間步驟的“優勢值”計算不準,容易訓練波動; 3. 資源消耗高:需要同時維護“舊策略”和“新策略”,千億參數模型訓練時內存壓力大。 |
適用場景(對比其他算法)
- 最適合:中等規模模型(如 7B-70B 參數)的“通用文本生成優化”,比如對話系統(如客服機器人)、常規文本摘要——這些場景中,獎勵模型容易訓練,且文本長度適中,PPO 的穩定性優勢能發揮。
- 對比 DPO:PPO 需要訓獎勵模型,而 DPO 直接用偏好數據,若你沒有足夠資源訓獎勵模型,選 DPO;若你已有高質量獎勵模型,PPO 的通用性比 DPO 強。
- 對比 GRPO:PPO 依賴價值函數(算優勢值),GRPO 不用,若你做長鏈數學推理(如 DeepSeekMath),GRPO 更適合;若你做常規對話,PPO 足夠。
- 不適合:MoE 模型(如 Qwen3-MoE)、超大規模(千億參數以上)模型的復雜任務——這類場景容易出現訓練崩潰,需用 GSPO。
2.4 PPO 在大模型中的應用案例
- OpenAI GPT-3.5/4:GPT 系列基礎模型的核心優化算法就是 PPO——先通過監督微調訓出初始模型,再用人類偏好數據訓獎勵模型,最后用 PPO 讓模型“跟著獎勵模型的反饋優化”,最終實現“對話對齊人類需求”。
- Anthropic Claude:早期版本用 PPO 優化“安全對話”,通過獎勵模型懲罰“有害內容”(如歧視、暴力),PPO 則讓模型逐漸減少這類生成,同時保持回答的相關性。
三、DPO:不用獎勵模型的“直接對齊算法”
3.1 DPO 算法的概念與原理
DPO(直接偏好優化)是 “輕量型對齊算法”,核心思路是“跳過獎勵模型,直接用人類偏好數據訓模型”——解決了 PPO 依賴獎勵模型的痛點。
你可以把 DPO 理解為“讓模型‘看例子’學偏好”:比如人類標注員認為“回答 A(分步解釋)比回答 B(直接給答案)好”,DPO 就會讓模型“多生成像 A 這樣的內容,少生成像 B 這樣的內容”。它的核心邏輯基于“Bradley-Terry 模型”——簡單說,就是讓“人類喜歡的響應”在模型中的生成概率,比“不喜歡的響應”高,且差距越大越好。
例如:
用戶提問:“請解釋什么是椅子”
模型生成兩個響應:
??響應A?(偏好):“椅子是一種有靠背和扶手的家具,通常有四條腿,供人坐的。比如公園長椅、餐廳餐椅、辦公室辦公椅,不同材質的椅子用途也不同。”
?響應B?(非偏好):“椅子是供人坐的家具”
DPO 會優化模型參數,讓“生成 A 的概率 / 生成 B 的概率”變大——比如從原來的 1.2 倍,提升到 3 倍,這樣模型下次遇到類似問題,就更傾向于生成 A 類響應。
和 PPO 比,DPO 少了“訓獎勵模型”這一步,不僅節省了計算資源,還避免了“獎勵模型偏差”帶來的問題(比如獎勵模型誤判偏好)。
3.2 DPO 的訓練方法與數據集樣例
訓練方法
DPO 的訓練就像“兩步學偏好”,核心是“用成對數據教模型分好壞”:
- 收集偏好數據:讓人類標注員對模型生成的兩個響應打分——比如“更喜歡 A”“更喜歡 B”或“兩者差不多”,最終得到一批“輸入 x + 偏好響應 y + 非偏好響應 y’”的數據。
- 優化模型參數:構建“偏好損失函數”——讓模型生成 y 的概率比 y’ 高,同時限制模型“不要偏離原始生成能力”(比如不能為了學偏好,連基本的事實都錯了),用梯度下降最小化這個損失,完成優化。
訓練數據集樣例
DPO 依賴“成對偏好數據”,每個樣本必須包含“輸入、兩個響應、偏好標簽”,格式如下:
[{"sample_id": "dpo_001","input_x": "用戶輸入:為什么夏天白天比冬天長?", // 原始輸入"preferred_response": "因為夏天太陽直射北半球,北半球的白晝時間變長,比如北京夏天凌晨 4 點天亮,晚上 7 點天黑,白天有 15 小時左右;而冬天太陽直射南半球,北京早上 7 點天亮,下午 5 點天黑,白天只有 10 小時左右", // 人類喜歡的響應"dispreferred_response": "因為夏天地球離太陽近,所以白天長", // 人類不喜歡的響應(事實錯誤)"preference_label": 1 // 1 表示更喜歡 preferred_response,0 表示更喜歡 dispreferred_response(此處固定為 1,因已明確標注)},{"sample_id": "dpo_002","input_x": "用戶輸入:推薦一本適合新手的編程入門書","preferred_response": "推薦《Python 編程:從入門到實踐》,這本書用案例驅動,比如做小游戲、數據分析項目,新手能邊學邊練,而且語法講解很通俗,不用先學復雜的計算機理論","dispreferred_response": "推薦《C++ Primer》,這是經典編程書,講得很全面", // 不適合新手,人類不喜歡"preference_label": 1}
]
3.3 DPO 的優缺點與適用場景
優缺點
優點 | 缺點 |
---|---|
1. 無獎勵模型依賴:省去訓獎勵模型的步驟,計算資源消耗比 PPO 少 30%~50%; 2. 訓練穩定:不用像 PPO 那樣控制策略更新幅度,很少出現“訓練崩潰”; 3. 對齊精度高:直接用人類偏好數據,避免了“獎勵模型中轉”帶來的偏差(比如獎勵模型沒學到人類的細微偏好)。 | 1. 依賴高質量偏好數據:若標注數據有噪聲(比如標注員誤把差響應標為好),DPO 會學錯; 2. 復雜獎勵難適配:若任務需要“多維度評估”(如代碼生成需同時看正確性、效率、可讀性),成對偏好數據無法覆蓋所有維度,不如 PPO 的獎勵模型靈活; 3. 長文本效果弱:對長鏈推理(如數學證明),成對響應的標注成本極高,且 DPO 難以捕捉“中間步驟的偏好”,效果不如 GRPO/GSPO。 |
適用場景(對比其他算法)
- 最適合:資源有限(如小團隊、中小規模模型)、需要快速對齊人類偏好的場景,比如開源模型的輕量微調(如 Llama 3-7B 的偏好對齊)、短文本對話(如客服機器人的常見問題回答)。
- 對比 PPO:若你沒有足夠 GPU 訓獎勵模型(比如只有 1~2 張 A100),選 DPO;若你需要多維度評估(如代碼生成),PPO 的獎勵模型能整合“正確性+效率”等多指標,更適合。
- 對比 ORPO:DPO 只需要偏好數據,ORPO 需要“監督數據+偏好數據”,若你沒有監督數據(如全新領域),選 DPO;若你有監督數據,ORPO 的“兼顧生成能力+偏好”效果更好。
- 不適合:長文本生成(如小說續寫)、復雜推理任務(如數學公式推導)、需要多維度評估的任務——這些場景要么標注成本高,要么 DPO 難以捕捉細微偏好。
3.4 DPO 在大模型中的應用案例
- Llama 3:Meta 在 Llama 3 的后訓練中,用 DPO 替代了部分 PPO 的工作——通過收集 10 萬+ 英文/多語言偏好數據,用 DPO 快速對齊“對話自然度”和“事實準確性”,最終讓 Llama 3-70B 在對話任務上接近 GPT-3.5。
- Qwen2-7B:阿里巴巴在 Qwen2 的輕量版本中,用 DPO 優化“中文對話偏好”——針對中文用戶喜歡的“簡潔+禮貌”風格,收集了 5 萬+ 中文成對數據,用 DPO 微調后,模型的中文響應滿意度提升了 25%。
四、GRPO:不用價值函數的“長推理優化算法”
4.1 GRPO 算法的概念與原理
GRPO(群體相對策略優化)是 DeepSeek 團隊 2024 年提出的“長推理專用算法”,核心思路是“用‘群體對比’替代‘價值函數’,解決大模型長文本獎勵難計算的問題”。
先解釋一個痛點:大模型在長任務(如數學推理、代碼調試)中,通常只有“最后一步”會得到獎勵(比如“最終答案正確”給 1 分,錯誤給 0 分),中間步驟沒有獎勵——這導致 PPO 用的“價值函數”(算每個步驟的優勢值)根本訓不好,因為“中間步驟的好壞”無法判斷。
GRPO 的解決方案很直接:對同一個輸入,讓模型生成一組響應(比如 5 個),用“組內平均獎勵”當基線,判斷每個響應的好壞。比如用戶問“解方程組 2x+y=5,x-y=1”,模型生成 5 個響應:
- 響應 1:步驟正確,答案 x=2,y=1(獎勵 1.0);
- 響應 2:步驟有小錯,答案 x=3,y=2(獎勵 0.3);
- 響應 3:步驟混亂,答案 x=1,y=3(獎勵 0.0);
- 響應 4:步驟正確,答案 x=2,y=1(獎勵 1.0);
- 響應 5:步驟部分正確,答案 x=2,y=0(獎勵 0.5)。
GRPO 會先算這組響應的平均獎勵((1.0+0.3+0.0+1.0+0.5)/5=0.56),再算每個響應的“優勢值”(響應獎勵 - 平均獎勵):比如響應 1 的優勢值是 0.44,響應 3 的優勢值是 -0.56。這樣一來,即使沒有中間步驟的獎勵,也能通過“群體對比”判斷每個響應的好壞。
另外,GRPO 還會限制模型“不要偏離初始的監督微調模型”(比如用 KL 散度正則),避免模型為了追求高獎勵而“胡編亂造”(比如數學推理步驟全錯,但答案蒙對)。
和 PPO 比,GRPO 去掉了“價值函數”,不僅節省了內存(千億參數模型訓練時內存占用減少 40%),還解決了長推理任務中“優勢值算不準”的問題。
4.2 GRPO 的訓練方法與數據集樣例
訓練方法
GRPO 的訓練就像“三步群體優化”,核心是“用組內對比找好壞”:
- 采樣響應組:對每個輸入 x(如數學題),讓當前模型生成一組響應(比如 5~10 個,稱為“群體”),確保響應有好有壞(比如有的答案對,有的錯)。
- 計算群體獎勵與優勢:用獎勵函數(如數學答案正確性評分、代碼運行成功率)給每個響應打分,再算“群體平均獎勵”,每個響應的優勢值 = 響應獎勵 - 平均獎勵(標準化后更穩定)。
- 更新策略:用“裁剪目標函數”微調模型——讓“優勢值高的響應”(比如正確的數學推理)在模型中的生成概率變高,同時限制模型偏離初始的監督微調模型,避免“學偏”。
訓練數據集樣例
GRPO 依賴“輸入+響應組+獎勵”的數據,每個樣本包含一個輸入和一組(通常 5~10 個)響應,格式如下:
[{"sample_id": "grpo_001","input_x": "用戶輸入:解數學題:已知一個三角形的兩邊長為 3cm 和 4cm,夾角為 90 度,求第三邊長", // 長推理輸入(數學題)"response_group": [ // 響應組(5 個響應,有好有壞){"response": "這是直角三角形,用勾股定理:a2+b2=c2,32+42=9+16=25,所以第三邊長為 5cm","reward": 1.0 // 完全正確,獎勵滿分},{"response": "用勾股定理:3+4=7,所以第三邊長為 7cm", // 公式用錯(沒平方)"reward": 0.2},{"response": "這是銳角三角形,第三邊長小于 7cm", // 錯誤判斷三角形類型"reward": 0.0},{"response": "勾股定理:32+42=25,平方根是 5,所以第三邊長 5cm,單位是 cm", // 正確,細節更全"reward": 1.0},{"response": "第三邊長為 5cm,但需要驗證是否滿足三角形三邊關系:3+4>5,3+5>4,4+5>3,滿足", // 正確且加了驗證"reward": 1.0}],"group_stats": { // 群體統計信息(訓練時自動計算,此處為示例)"mean_reward": 0.64,"std_reward": 0.48}}
]
4.3 GRPO 的優缺點與適用場景
優缺點
優點 | 缺點 |
---|---|
1. 無價值函數依賴:解決了長推理任務中“價值函數訓不好”的痛點,內存占用比 PPO 少 40%; 2. 長推理效果好:通過“群體對比”能捕捉“中間步驟的好壞”(比如數學推理的步驟正確性),比 DPO/PPO 更適合長任務; 3. 適配大規模模型:千億參數模型訓練時,因省去價值函數,能在有限 GPU 資源下運行(如 8 張 A100 可訓 DeepSeek-R1-70B)。 | 1. 對獎勵噪聲敏感:若獎勵函數有誤差(比如數學題判錯),“群體平均獎勵”會不準,導致優勢值計算偏差; 2. 全負樣本組問題:若一組響應全錯(比如模型生成的 5 個數學推理全錯),所有響應的優勢值接近 0,模型無法更新; 3. 計算成本高:每個輸入要生成 5~10 個響應,比 PPO(1 個響應)的計算量多 5~10 倍。 |
適用場景(對比其他算法)
- 最適合:長鏈推理任務(如數學解題、代碼調試、邏輯證明)、大規模模型(70B 以上參數)的微調,比如 DeepSeekMath(數學推理模型)、CodeLlama 的代碼調試優化。
- 對比 PPO:若你做數學推理(如解微積分題),PPO 的價值函數算不準中間步驟的優勢,GRPO 更適合;若你做短文本對話,PPO 的計算成本更低,更劃算。
- 對比 GSPO:GRPO 解決了長推理的價值函數問題,但沒解決 MoE 模型的訓練崩潰問題;若你用 MoE 模型(如 Qwen3-MoE)做長推理,GSPO 更適合;若你用稠密模型(如 DeepSeek-R1),GRPO 足夠。
- 不適合:資源有限的場景(如只有 1~2 張 GPU)、短文本任務(如客服常見問題)——這些場景中,GRPO 的“多響應采樣”成本太高,不如 DPO/PPO 性價比高。
4.4 GRPO 在大模型中的應用案例
- DeepSeek-R1-Zero:DeepSeek 團隊用 GRPO 優化“零樣本數學推理”——通過生成 8 個響應/輸入的群體數據,讓模型學會“對比不同推理路徑的好壞”,最終在 MATH 數據集(高中數學題)上的正確率提升了 18%,超過了 GPT-3.5。
- DeepSeekMath-70B:這是專門的數學推理模型,研究者用 GRPO 解決“步驟獎勵缺失”問題——即使只有“最終答案獎勵”,GRPO 也能通過群體對比,讓模型優化“中間推理步驟”(比如從“跳步”變成“分步推導”),步驟正確率提升了 30%。
五、ORPO:兼顧監督微調與偏好的“一體化算法”
5.1 ORPO 算法的概念與原理
ORPO(優勢比偏好優化)核心思路是“把‘監督微調’和‘偏好優化’揉成一步,既讓模型學好基礎能力,又對齊人類偏好”——解決了 DPO 只學偏好、容易丟基礎能力的問題。
傳統方法(如 PPO、DPO)通常是“先監督微調(SFT)學基礎能力,再用 RL 學偏好”,兩步分開訓,容易出現“學偏好后,基礎能力下降”(比如模型學會了禮貌對話,但連簡單的事實都答錯了)。
ORPO 的解決方案是“單步訓練,雙目標優化”:在損失函數中,同時包含“監督微調損失”(讓模型學好基礎能力,比如事實準確性)和“偏好懲罰項”(讓模型對齊人類偏好,比如對話自然度)。
舉個例子:用戶問“地球半徑是多少”,模型生成兩個響應:
- 響應 A(監督正確,偏好差):“地球半徑約 6371 千米”(事實正確,但太簡潔,人類不喜歡);
- 響應 B(監督正確,偏好好):“地球的平均半徑約 6371 千米,赤道半徑略長(約 6378 千米),兩極半徑略短(約 6357 千米),這個差異是地球自轉導致的”(事實正確,且詳細,人類喜歡)。
ORPO 的損失函數會做兩件事:
- 監督損失:確保模型生成的響應符合事實(比如不會把半徑說成 6371 米);
- 偏好懲罰項:讓模型生成 B 的概率比 A 高(用“優勢比”控制,比如 B 的概率 / A 的概率 > 2)。
這樣一來,模型在學偏好的同時,不會丟了基礎的事實準確性——相當于“一邊學‘說好話’,一邊不忘‘說真話’”。
和 DPO 比,ORPO 多了“監督損失”,能兼顧基礎能力;和 PPO 比,ORPO 不用訓獎勵模型,且一步完成訓練,更簡潔。
5.2 ORPO 的訓練方法與數據集樣例
訓練方法
ORPO 的訓練就像“一步雙目標學習”,核心是“同時抓基礎能力和偏好”:
- 準備雙數據集:一是“監督微調數據集”(輸入 x + 正確響應 y,比如事實性問答數據),二是“偏好數據集”(輸入 x + 偏好響應 y + 非偏好響應 y’,比如人類標注的成對數據)。
- 構建雙目標損失:損失 = 監督微調損失(讓模型生成正確響應) + λ × 偏好懲罰項(讓模型偏好響應的概率更高,λ 控制偏好的重要程度)。
- 單步更新模型:用梯度下降最小化這個雙目標損失,模型會在“學好事實”的同時,逐漸對齊人類偏好——不用分“監督微調”和“RL 優化”兩步。
訓練數據集樣例
ORPO 需要“監督數據”和“偏好數據”兩類數據,通常分開存儲,訓練時按比例混合使用:
1. 監督微調數據集(基礎能力訓練)
[{"sample_id": "orpo_sft_001","input_x": "用戶輸入:水的化學式是什么?","correct_response": "水的化學式是 H?O,由兩個氫原子和一個氧原子組成" // 事實正確的響應},{"sample_id": "orpo_sft_002","input_x": "用戶輸入:《靜夜思》的作者是誰?","correct_response": "《靜夜思》的作者是唐代詩人李白,這首詩表達了詩人的思鄉之情"}
]
2. 偏好數據集(對齊偏好訓練)
[{"sample_id": "orpo_pref_001","input_x": "用戶輸入:水的化學式是什么?","preferred_response": "水的化學式是 H?O哦~簡單說就是兩個氫原子(H)和一個氧原子(O)結合在一起,我們日常喝的水、用的水都是這個成分", // 事實正確+語氣友好(偏好)"dispreferred_response": "水的化學式是 H?O,沒什么好說的", // 事實正確+語氣生硬(非偏好)"preference_label": 1},{"sample_id": "orpo_pref_002","input_x": "用戶輸入:《靜夜思》的作者是誰?","preferred_response": "《靜夜思》是唐代大詩人李白的代表作之一~詩里“床前明月光,疑是地上霜”這兩句特別有名,表達了他在異鄉對家鄉的思念", // 事實正確+內容豐富(偏好)"dispreferred_response": "《靜夜思》作者是李白,唐代的", // 事實正確+內容簡略(非偏好)"preference_label": 1}
]
5.3 ORPO 的優缺點與適用場景
優缺點
優點 | 缺點 |
---|---|
1. 一體化訓練:一步完成“監督微調+偏好對齊”,不用分兩步,節省訓練時間; 2. 兼顧基礎能力:有監督損失,避免了 DPO“學偏好丟事實”的問題; 3. 資源效率高:不用訓獎勵模型,計算成本比 PPO 低,比 DPO 只高 10%~20%。 | 1. 依賴雙數據集:必須同時有監督數據和偏好數據,若某類數據缺失(如全新領域沒有監督數據),無法使用; 2. 超參數敏感:偏好懲罰項的權重 λ 對效果影響大——λ 太小,偏好對齊差;λ 太大,基礎能力下降; 3. 復雜任務適配弱:對長推理(如數學證明),監督數據和偏好數據的標注成本極高,ORPO 難以覆蓋所有場景,效果不如 GRPO。 |
適用場景(對比其他算法)
- 最適合:有監督數據、需要兼顧“事實準確性”和“偏好對齊”的場景,比如知識問答機器人(如醫療科普機器人,既要講對醫學知識,又要語氣親切)、教育類模型(如小學數學輔導,既要算對題,又要講清楚步驟)。
- 對比 DPO:若你需要模型“既說真話,又說好話”(如醫療科普),ORPO 的監督損失能保證事實正確,更適合;若你沒有監督數據(如全新領域的對話),DPO 只需要偏好數據,更靈活。
- 對比 PPO:ORPO 一步訓練,比 PPO 的“監督微調→訓獎勵模型→PPO 優化”三步更簡潔,若你追求訓練效率,選 ORPO;若你需要多維度獎勵(如代碼生成的“正確性+效率”),PPO 的獎勵模型更適合。
- 不適合:無監督數據的場景、長推理任務(如數學證明)、資源極度有限的場景(如只有 1 張 GPU)——這些場景要么數據缺失,要么標注成本高,ORPO 難以發揮。
5.4 ORPO 在大模型中的應用案例
以智能助手優化為例,OPPO小布助手通過ORPO算法對DeepSeek-R1大模型進行微調,實現了意圖搜索升級與多輪對話記憶功能,使復雜問題解決能力提升170%,日均主動交互量占比達42%
。在醫療領域,ORPO被用于訓練AI診斷模型,通過對比優質與低質醫療報告數據,顯著提升診斷準確性,某三甲醫院應用后誤診率降低至0.8%,同時支持聯邦學習框架下的隱私保護部署。
六、KTO:模擬人類“怕損失”的“簡潔對齊算法”
6.1 KTO 算法的概念與原理
KTO(卡尼曼-特沃斯基優化)核心思路是“模擬人類‘怕損失’的決策習慣,用‘單響應標簽’替代‘成對偏好數據’,簡化對齊過程”——解決了 DPO/ORPO 依賴成對數據、標注成本高的問題。
KTO 的理論基礎是“前景理論”——人類對“損失”的敏感程度遠高于“收益”:比如丟 100 元的痛苦,比撿 100 元的快樂更強烈。KTO 把這個原理用到模型對齊上:
- 對“人類喜歡的響應”(稱為“可取響應”,如正確的數學答案),模型若生成得不好,會受到“更重的懲罰”;
- 對“人類不喜歡的響應”(稱為“不可取響應”,如錯誤的數學答案),模型若生成了,會受到“額外的懲罰”。
舉個例子:用戶問“1+1=?”,模型生成兩個響應:
- 響應 A(可取):“1+1=2,這是基本的加法運算”(人類喜歡,標記為+1);
- 響應 B(不可取):“1+1=3,因為兩個數相加可以大于 2”(人類不喜歡,標記為-1)。
KTO 會設置兩個懲罰系數:
- λ_D(可取響應的懲罰系數,比如 1.2):若模型生成 A 的概率低,會用 λ_D 加大懲罰,督促模型多生成 A;
- λ_U(不可取響應的懲罰系數,比如 1.5):若模型生成 B 的概率高,會用 λ_U 加大懲罰,督促模型少生成 B。
這樣一來,模型會像人類一樣“盡量避免生成壞響應,優先生成好響應”——而且 KTO 只用“單響應標簽”(每個響應標+1/-1),不用成對數據,標注成本比 DPO 低 50%~70%。
和 DPO 比,KTO 不用成對數據,標注更便宜;和 ORPO 比,KTO 不用監督數據,更靈活;但 KTO 對“細微偏好”(如“詳細回答”vs“簡潔回答”)的捕捉不如 DPO。
6.2 KTO 的訓練方法與數據集樣例
訓練方法
KTO 的訓練就像“兩步學‘避壞趨好’”,核心是“用單標簽教模型分‘好/壞’”:
- 收集單響應標簽數據:讓人類標注員對每個響應打“可取(+1)”或“不可取(-1)”標簽——比如“正確的數學答案”標+1,“錯誤的數學答案”標-1;“禮貌的對話”標+1,“無禮的對話”標-1。
- 構建前景理論損失:根據標簽計算損失——對+1 響應,損失隨生成概率降低而增大(用 λ_D 加權);對-1 響應,損失隨生成概率升高而增大(用 λ_U 加權),同時限制模型偏離初始預訓練模型(避免丟基礎能力)。
- 更新模型參數:用梯度下降最小化這個損失,模型會逐漸“多生成+1 響應,少生成-1 響應”。
訓練數據集樣例
KTO 依賴“單響應標簽數據”,每個樣本只有“輸入+響應+可取性標簽”,格式簡單,標注成本低:
[{"sample_id": "kto_001","input_x": "用戶輸入:計算 2+3×4 的結果","response": "先算乘法再算加法:3×4=12,2+12=14,結果是 14","desirability_label": 1 // 1=可取(正確+步驟清晰),-1=不可取},{"sample_id": "kto_002","input_x": "用戶輸入:計算 2+3×4 的結果","response": "2+3=5,5×4=20,結果是 20", // 運算順序錯"desirability_label": -1},{"sample_id": "kto_003","input_x": "用戶輸入:你覺得人類會滅絕嗎?","response": "這個問題目前沒有確定答案~科學家認為,若人類能應對氣候變化、小行星撞擊等風險,長期生存的可能性很大;但如果忽視這些風險,可能會面臨危機。我們可以從現在開始保護地球,降低風險呀", // 客觀+積極(可取)"desirability_label": 1},{"sample_id": "kto_004","input_x": "用戶輸入:你覺得人類會滅絕嗎?","response": "人類肯定會滅絕,早晚的事,現在做什么都沒用", // 消極+絕對(不可取)"desirability_label": -1}
]
6.3 KTO 的優缺點與適用場景
優缺點
優點 | 缺點 |
---|---|
1. 標注成本低:只用單響應標簽,不用成對數據,標注效率比 DPO 高 2~3 倍; 2. 計算復雜度低:不用對比兩個響應的概率,損失函數計算簡單,訓練速度比 DPO 快 30%; 3. 適配不平衡數據:若可取響應少、不可取響應多(如醫療錯誤回答多),KTO 的“損失厭惡”機制能有效聚焦于“減少不可取響應”,魯棒性比 DPO 強。 | 1. 偏好捕捉粗:只能區分“好/壞”,無法捕捉“細微偏好”(如“詳細回答”vs“簡潔回答”),對齊精度不如 DPO; 2. 參數敏感:λ_D 和 λ_U 的設置對效果影響大——比如 λ_U 太小,模型仍會生成較多壞響應; 3. 基礎能力難兼顧:沒有監督損失,若訓練數據中可取響應的“事實準確性”不一,模型可能學偏(如把“詳細但錯誤的回答”當可取)。 |
適用場景(對比其他算法)
- 最適合:標注資源有限、只需“粗粒度對齊”(好/壞區分)的場景,比如內容審核模型(區分“合規/違規”內容)、低成本開源模型微調(如用少量標注數據優化 Alpaca-7B)、不平衡數據場景(如醫療錯誤回答多,需優先減少錯誤)。
- 對比 DPO:若你標注預算少(如只有 1 萬元標注費),KTO 的單標簽標注更便宜;若你需要精細偏好(如“對話自然度”的細微差異),DPO 的成對數據對齊精度更高。
- 對比 ORPO:KTO 不用監督數據,若你沒有監督數據(如全新領域),KTO 更靈活;若你需要兼顧事實準確性(如知識問答),ORPO 的監督損失更適合。
- 不適合:需要精細偏好對齊的場景(如高端對話機器人)、需要兼顧事實準確性的場景(如醫療科普)、長推理任務(如數學證明)——這些場景要么需要高精度對齊,要么需要基礎能力保障,KTO 難以滿足。
七、GSPO:解決 MoE 崩潰的“大規模訓練算法”
7.1 GSPO 算法的概念與原理
GSPO(分組序列策略優化)是阿里巴巴 Qwen 團隊 2024 年提出的“大規模模型專用算法”,核心思路是“讓‘優化單位’和‘獎勵單位’對齊——從‘逐詞優化’變成‘整段優化’,解決混合專家(MoE)模型的訓練崩潰問題”。
先解釋一個行業痛點:MoE 模型(如 Qwen3-MoE、GPT-4o)因參數多(千億甚至萬億)、專家分工不同,在傳統 RL 算法(如 PPO、GRPO)訓練中容易“崩潰”——比如某幾個專家突然“瘋狂輸出錯誤內容”,導致整個模型性能斷崖式下跌。原因是傳統算法“逐詞計算策略更新”:每個詞的生成概率變化都會影響更新,MoE 專家的微小偏差會在逐詞更新中被放大,最終導致崩潰。
GSPO 的解決方案是“整段優化”:不逐詞計算策略差異,而是計算“整個響應(整段文本)”的策略差異,讓更新幅度由“整段質量”決定,而非“單個詞的質量”。
比如用戶問“寫一個 Python 函數計算階乘”,模型生成一段響應(整段文本):
def factorial(n):if n < 0:raise ValueError("n 不能為負數")result = 1for i in range(1, n+1):result *= ireturn result
傳統算法會逐詞計算“新策略生成每個詞的概率 / 舊策略生成每個詞的概率”,再逐詞更新;而 GSPO 會計算“新策略生成這段代碼的整體概率 / 舊策略生成這段代碼的整體概率”,再根據這個“整段比率”更新模型——而且會用“長度歸一化”(比如代碼長 100 詞,就把比率開 100 次方),避免“長文本比率過大”導致的更新波動。
另外,GSPO 還會“裁剪整段比率”:若某段響應的比率超過 1+ε(如 1.2),就限制為 1.2,避免“極端比率”導致 MoE 專家偏差放大——相當于給 MoE 模型加了“全局穩定器”,從根源上解決訓練崩潰問題。
和 GRPO 比,GSPO 從“群體對比”升級到“整段優化”,更適合 MoE 模型;和 PPO 比,GSPO 解決了大規模模型的訓練穩定性問題,且訓練效率更高(因丟棄了 15% 低質量樣本,聚焦高價值更新)。
7.2 GSPO 的訓練方法與數據集樣例
訓練方法
GSPO 的訓練就像“四步大規模穩定優化”,核心是“整段評估+群體對比+穩定更新”:
- 生成響應組:對每個輸入 x(如復雜數學題、代碼需求),讓當前 MoE 模型生成一組響應(比如 8 個整段響應),確保覆蓋“好/中/差”不同質量。
- 計算整段獎勵與優勢:用多維度獎勵函數(如代碼的“運行成功率+效率+可讀性”、數學題的“步驟正確性+答案正確性”)給每個整段響應打分,再算“群體平均獎勵”,每個響應的優勢值 = 響應獎勵 - 平均獎勵(標準化后更穩定)。
- 計算整段比率:對每個整段響應,算“新策略生成概率 / 舊策略生成概率”,再做“長度歸一化”(開響應長度次方),得到整段比率。
- 裁剪與更新:對整段比率做裁剪(限制在 1-ε 到 1+ε 之間),再用“裁剪后的比率 × 優勢值”更新模型——只保留 85% 高優勢值樣本,丟棄 15% 低優勢值樣本,提升訓練效率。
訓練數據集樣例
GSPO 依賴“輸入+整段響應組+多維度獎勵”的數據,每個樣本包含一個輸入和一組整段響應,獎勵是多維度評分(更貼合復雜任務需求):
[{"sample_id": "gspo_001","input_x": "用戶輸入:寫一個 Python 函數,輸入是列表,輸出是列表中所有偶數的平方和(如輸入 [1,2,3,4],輸出 22+42=20)", // 復雜代碼需求"response_group": [ // 整段響應組(8 個,此處簡化為 5 個){"response": "def even_square_sum(lst):\n total = 0\n for num in lst:\n if num % 2 == 0:\n total += num **2\n return total\n# 測試:輸入 [1,2,3,4],輸出 20,正確","reward": { // 多維度獎勵(總分 1.0)"correctness": 0.3, // 運行正確(滿分 0.3)"efficiency": 0.25, // 效率高(滿分 0.25)"readability": 0.25, // 代碼易讀(滿分 0.25)"test_case": 0.2 // 帶測試用例(滿分 0.2)},"total_reward": 1.0 // 總分},{"response": "def even_square_sum(lst):\n return sum(num** 2 for num in lst if num % 2 == 0)","reward": {"correctness": 0.3,"efficiency": 0.25,"readability": 0.2, // 代碼簡潔但無注釋,可讀性略低"test_case": 0.0 // 無測試用例},"total_reward": 0.75},{"response": "def even_square_sum(lst):\n total = 0\n for num in lst:\n if num % 2 == 1:\n total += num **2\n return total", // 條件錯(取了奇數)"reward": {"correctness": 0.0,"efficiency": 0.25,"readability": 0.2,"test_case": 0.0},"total_reward": 0.45},{"response": "def even_square_sum(lst):\n total = 0\n for num in lst:\n if num % 2 == 0:\n total += num * num\n return total\n# 測試:輸入 [2,4,6],輸出 4+16+36=56,正確","reward": {"correctness": 0.3,"efficiency": 0.25,"readability": 0.25,"test_case": 0.2},"total_reward": 1.0},{"response": "def even_square_sum(lst):\n # 這是計算偶數平方和的函數\n total = 0\n for i in range(len(lst)):\n num = lst[i]\n if num % 2 == 0:\n total += num **2\n return total\n# 測試:輸入 [1,3,5],輸出 0,正確","reward": {"correctness": 0.3,"efficiency": 0.2, // 用了索引,效率略低"readability": 0.25,"test_case": 0.2},"total_reward": 0.95}],"group_stats": {"mean_total_reward": 0.83,"std_total_reward": 0.21}}
]
7.3 GSPO 的優缺點與適用場景
優缺點
優點 | 缺點 |
---|---|
1. 解決 MoE 訓練崩潰:整段優化避免了逐詞更新的偏差放大,MoE 模型訓練穩定性提升 90%; 2. 訓練效率高:丟棄 15% 低價值樣本,聚焦高優勢值更新,同等計算資源下,性能提升比 GRPO 高 20%; 3. 適配復雜任務:多維度獎勵+整段評估,適合長推理(如數學證明)、復雜代碼生成等任務; 4. 簡化基礎設施:整段優化對精度容忍度高,可簡化 RL 訓練的硬件適配(如不用高精度計算)。 | 1. 實現復雜:整段比率計算、長度歸一化、多維度獎勵整合都需要定制化開發,比 PPO/DPO 難實現; 2. 計算資源需求高:每個輸入要生成 8~10 個整段響應,且需計算多維度獎勵,GPU 顯存占用比 GRPO 高 30%; 3. 理論基礎待完善:目前缺乏完整的收斂性證明,部分超參數(如長度歸一化的次方數)需靠實驗調整。 |
適用場景(對比其他算法)
- 最適合:大規模 MoE 模型(如 Qwen3-MoE、GPT-4o)的復雜任務訓練,比如千億參數模型的數學推理(如解微積分)、工業級代碼生成(如分布式系統代碼)、長文本邏輯證明(如哲學論證)。
- 對比 GRPO:GRPO 適合稠密模型的長推理,GSPO 適合 MoE 模型的長推理——若你用 MoE 模型,GSPO 能解決訓練崩潰問題;若你用稠密模型,GRPO 的計算成本更低。
- 對比 PPO:PPO 適合中等規模模型的通用任務,GSPO 適合大規模 MoE 模型的復雜任務——若你訓千億參數 MoE 模型,PPO 容易崩潰,GSPO 更穩定。
- 不適合:中小規模模型(如 7B-70B 稠密模型)、資源有限的場景(如只有 4 張以下 A100)、短文本任務(如客服常見問題)——這些場景中,GSPO 的“高計算成本”性價比太低。
7.4 GSPO 在大模型中的應用案例
- Qwen3 系列模型:阿里巴巴用 GSPO 訓練 Qwen3 的三個核心版本——Qwen3-Instruct(對話)、Qwen3-Coder(代碼)、Qwen3-Thinking(推理),均為 MoE 架構(千億參數)。GSPO 讓模型在訓練中未出現一次崩潰,且在 MATH 數學數據集上的正確率比 GRPO 高 22%,在 HumanEval 代碼數據集上的通過率比 GRPO 高 18%。
- Qwen3-30B-A3B-Base:這是 Qwen3 的中等規模 MoE 模型,GSPO 和 GRPO 比實驗——在同等計算成本下(8 張 A100,訓練 7 天),GSPO 微調后的模型在“長鏈邏輯推理”任務上的表現比 GRPO 高 25%,且訓練過程中顯存波動小于 5%,GRPO 則出現 3 次顯存溢出。
八、大模型強化學習算法比較
8.1 核心維度對比表
算法 | 核心創新 | 數據需求 | 計算成本 | 適合模型規模 | 核心適用場景 | 關鍵痛點 |
---|---|---|---|---|---|---|
PPO | 裁剪機制穩更新,通用型強 | 狀態-動作-獎勵序列(需獎勵模型) | 中 | 中小規模(7B-70B 稠密) | 通用文本生成、短對話 | 依賴獎勵模型,長推理/ MoE 不穩定 |
DPO | 無獎勵模型,直接用成對偏好 | 成對偏好數據(x,y,y’) | 中低 | 中小規模(7B-70B 稠密) | 輕量偏好對齊、短對話 | 長推理標注成本高,難捕細微偏好 |
GRPO | 群體對比代價值函數,長推理優 | 輸入+響應組+獎勵 | 高 | 中大規模(70B 稠密-千億稠密) | 長鏈推理(數學/代碼) | 全負樣本組問題,MoE 不穩定 |
ORPO | 單步兼顧 SFT 與偏好 | 監督數據+偏好數據 | 中 | 中小規模(7B-70B 稠密) | 知識問答、教育輔導 | 依賴雙數據集,超參數敏感 |
KTO | 單標簽+前景理論,低成本 | 單響應標簽數據(x,y,±1) | 低 | 小規模(7B-13B 稠密) | 內容審核、低成本微調 | 偏好精度低,難兼顧事實 |
GSPO | 整段優化,MoE 穩定 | 輸入+整段響應組+多維度獎勵 | 極高 | 大規模(千億-萬億 MoE) | 復雜推理、工業級代碼 | 實現復雜,中小模型性價比低 |
8.2 場景選擇決策樹
-
第一步:看模型類型與規模
- 若為 MoE 模型(千億以上) → 直接選 GSPO;
- 若為 稠密模型(70B 以上) → 優先選 GRPO(長推理)或 PPO(通用);
- 若為 稠密模型(7B-70B) → 進入第二步。
-
第二步:看數據資源
- 若 只有單響應標簽數據 → 選 KTO;
- 若 有偏好數據但無監督數據 → 選 DPO;
- 若 既有偏好數據又有監督數據 → 選 ORPO;
- 若 有獎勵模型(或能訓獎勵模型) → 選 PPO。
-
第三步:看任務類型
- 若為 長鏈推理(數學/代碼) → 選 GRPO(稠密)或 GSPO(MoE);
- 若為 短文本對話/通用生成 → 選 PPO/DPO/ORPO;
- 若為 內容審核/低成本微調 → 選 KTO。
選型建議
大模型強化學習算法已從“通用型 PPO”發展到“場景專用型 GSPO”,每種算法都有其“核心優勢”與“適用邊界”:
- 若是小團隊,做短文本對話:選 DPO/KTO,低成本快速對齊;
- 若是中團隊,做長推理(數學/代碼):選 GRPO,平衡效果與成本;
- 若是大團隊,做大規模 MoE 模型:選 GSPO,解決訓練崩潰,釋放千億參數潛力。