一句話概括:還在用PPO微調大模型?你可能被它的核心機制坑了!這篇論文發現PPO用來限制更新幅度的「比率截斷」CLIP在長尾分佈的語言模型上完全失效:它會粗暴地阻止模型探索新穎的低頻詞,卻又管不住高頻詞的劇烈漂移。作者提出的DPPO算法,直接用「策略分佈的真實距離」來做「風控」,徹底解決了訓練效率低和不穩定的老大難問題。(原論文題目見文末,點擊閱讀原文可直接跳轉至原文連結,Published on arXiv on 05 Feb 2026, by Sea AI Lab, Singapore / NUS.)
各位夥伴好,我創建了學術交流群(個人建群,非廣告),涵蓋大模型/CV/agent/多模態各個方向,歡迎進群交流,一起進步!
第一階段:識別核心概念
論文的motivation分析
在LLM的強化學習微調(如RLHF)中,PPO(Proximal Policy Optimization)是預設的王者。PPO的核心機制是利用一個「比率截斷」來限制模型更新的幅度,防止新策略偏離舊策略太遠(即走出Trust Region,信任區域)。作者發現了一個被長期忽視的結構性缺陷:
PPO的截斷機制是為傳統RL(小動作空間)設計的,並不適合LLM(巨大的詞表空間)。具體表現為兩個問題:
- 對低機率Token的過度懲罰:LLM的長尾分佈意味著很多合理的探索Token機率很低(如)。如果模型稍微提升一點它的機率(到),比率會瞬間變成100倍,觸發PPO截斷,導致模型學不動。
- 對高機率Token的約束不足:對於機率極高的Token(如0.99),如果機率掉到0.8,比率變化很小,PPO認為這很安全。但在機率分佈上,這其實是一個巨大的質量移動(Mass Shift),可能導致訓練崩塌。
論文主要貢獻點分析
- 提出 Divergence Proximal Policy Optimization (DPPO):放棄了PPO粗糙的「比率」作為代理,直接使用策略散度(Policy Divergence)(如Total Variation或KL散度)來決定是否更新參數。
- 引入輕量級近似方法:為了解決在幾十萬詞表上計算全量散度太占顯存的問題,提出了Binary(二值)和Top-K近似方法。這使得DPPO的計算開銷幾乎可以忽略不計。
- 建立了針對LLM的理論框架:推導了專門針對LLM生成任務(有限視界、無折扣、序列級獎勵)的策略提升下界,彌補了經典RL理論與LLM實踐之間的鴻溝。
- 顯著的實驗結果:在數學推理任務(AIME24/25)上,DPPO在穩定性和最終性能上都顯著優於GRPO等PPO變體,且不需要複雜的Rollout Router Replay技巧就能穩定訓練。
理解難點識別
- 最具挑戰性的概念:Ratio vs. Divergence (Total Variation) 的本質區別。初學者很難直觀理解為什麼「比率變化大」不等於「分佈變化大」。這是理解為什麼PPO在LLM上會失效的關鍵。
- 需要重點解釋的核心概念:
- PPO的比率陷阱:為什麼它對長尾詞表不公平?
- Binary Approximation(二值近似):如何在不遍歷整個詞表的情況下算出近似的散度?
概念依賴關係
要理解DPPO,必須先透過比喻徹底搞懂PPO錯在哪裡。路徑為:理解PPO的缺陷 引入「真實的距離」概念(TV散度) 解決計算難題(近似方法) 最終方案(DPPO)。
第二階段:深入解釋核心概念
比喻中的關鍵元素
- 投資經理:模型策略 Policy。
- 投資組合:詞表 Vocabulary。
- 藍籌股(高機率Token):比如「蘋果」或「微軟」,原本把99%的資金(機率0.99)都投在這裡。
- 仙股(低機率Token):一些名不見經傳的小公司,只投了1塊錢(機率0.00001)。
- 風控規則:Trust Region(信任區域)。
每個元素對應的實際技術概念
- 投資操作:模型更新參數,改變Token的生成機率。
- 資金變動:機率分佈的變化量(Divergence)。
- 資金倍數:PPO中的機率比率(Ratio)。
解釋為什麼這些對應關係是合理的
這個比喻捕捉了LLM中「高頻詞佔據絕大部分機率質量」而「低頻詞雖然機率極低但數量巨大」的長尾特徵,就像投資組合中資金分配極度不均一樣。
深入技術細節
PPO的問題核心
PPO使用比率 進行截斷。
- 對於低機率詞,分母極小,分子稍有變動, 就會爆炸。
- 對於高機率詞,分母極大,分子的大幅變動在 上體現不明顯。
DPPO的解決方案
DPPO引入了一個基於散度(Divergence)的動態遮罩(Mask)。它不再盲目截斷,而是計算新舊策略分佈之間的總變差距離(Total Variation, TV)。
關鍵公式:DPPO的目標函數
符號替換版本:DPPO的訓練目標 = 期望值 [ 累加每一個Token ( 智能風控開關機率比率優勢值 ) ]
這裡的核心是那個智能風控開關 ():
智能風控開關的狀態:
- 情況1(想加倉但超標):如果這個動作是好的(優勢值大於0)且正在增加它的機率,並且 整個投資組合的變動量(Divergence)已經超過了安全線() 關掉開關(0),阻止更新。
- 情況2(想減倉但超標):如果這個動作是壞的(優勢值小於0)且正在減少它的機率,並且 整個投資組合的變動量(Divergence)已經超過了安全線() 關掉開關(0),阻止更新。
- 其他情況:一切正常,保持開啟(1)。
解決記憶體噩夢:Binary Approximation(二值近似)
要計算準確的TV散度,需要遍歷詞表裡所有Token(比如10萬個詞)的機率變化並求和。這在訓練時太慢且太占顯存。作者提出了Binary Approximation(二值近似)。
公式:
符號替換版本:簡化的變動量計算 = | 舊策略下當前Token的機率 - 新策略下當前Token的機率 |
將技術細節與比喻相互映射
- 場景一:你發現了潛力股(低機率Token的更新):你覺得那個只投了1塊錢的「仙股」很有前途,決定加倉到100塊錢。
- PPO(比率風控官):只看增長倍數。它尖叫道:「天啊!你把倉位增加了100倍(Ratio = 100)!這是違規操作!駁回!」 結果:有益的探索被扼殺了。
- DPPO(散度風控官):看資金總量的變動。它說:「哦,你只動了99塊錢,占總資產比例不到億分之一。批准操作。」 結果:模型成功學到了新知識。
- 場景二:藍籌股暴雷(高機率Token的更新):你突然覺得「蘋果」不行了,決定把99%的倉位降到80%。
- PPO(比率風控官):還是只看倍數。它計算:。它說:「倍數變化不大,還在0.8到1.2的安全範圍內。批准操作。」 結果:巨大的策略偏移未被察覺,導致訓練不穩定(Collapse)。
- DPPO(散度風控官):看到你移動了19%的巨額資金。它立刻報警:「警告!資金變動量(Total Variation)超過閾值!這太危險了,必須阻止!」 結果:避免了模型崩塌。
總結
PPO的Ratio機制就像一個只懂小學乘除法的風控,容易對小額交易大驚小怪,卻對大額資產流失視而不見。DPPO引入的TV散度(以及其近似)則是真正的精算師,它關注的是實際的「資金流動量」,從而在保證安全的前提下,允許模型對長尾知識進行有效探索。
第三階段:詳細說明流程步驟
具體流程偽代碼
輸入階段我們有一個Prompt資料集(例如數學問題),一個參考模型(Reference Policy,,通常是SFT後的模型凍結不變),和一個正在訓練的模型(Policy,)。
Step 1: 採樣與生成 (Rollout)
- 從資料集中取出一個Prompt。
- 讓當前模型 根據 生成一個完整的回答序列。
- 關鍵記錄:在生成的過程中,不僅要保留生成的Token,還要記錄下舊策略 對這些Token的預測機率以及新策略 對這些Token的預測機率。
Step 2: 優勢估計 (Advantage Estimation)
- 將生成的回答 送入獎勵模型(或透過規則打分,如數學題看答案是否正確),得到標量獎勵。
- 為了減少方差,通常會用GRPO的方式,對同一個Prompt生成多條回答,計算每條回答相對於平均值的優勢。
Step 3: 計算散度與構建遮罩 (Divergence Masking)進入訓練循環,對於序列中的每一個位置:
- 輸入:當前Token,舊機率,新機率。
- 計算比率:。
- 計算近似散度 (Binary TV):直接做差取絕對值:。(註:如果是Top-K近似,則需要取前K個高頻詞的機率分佈進行對比)。
- 生成遮罩:
- 設定一個超參數(例如0.15)。
- 檢查是否違反信任區域:
- 如果 (且) 或者 (且):說明模型正在試圖根據優勢更新參數。
- 此時,如果,說明這次更新會導致分佈變化過大,無論如何都要攔截。
- 如果滿足攔截條件,置;否則。
Step 4: 計算損失並反向傳播
- 輸入:遮罩,比率,優勢。
- 計算Loss:將它們相乘:。(注意通常是最小化負收益)。
- 梯度更新:根據Loss計算梯度,更新模型 的參數。
輸出更新後的模型參數,進入下一個訓練步。
第四階段:實驗設計與驗證分析
主實驗設計:核心論點的驗證
核心主張:DPPO比PPO/GRPO更穩定,且能處理詞表長尾問題。
- 資料集與任務:選擇了數學推理任務,使用 AIME 2024 和 AIME 2025 作為測試集。數學推理對邏輯鏈條要求極高,任何一個步驟的崩塌都會導致結果錯誤,AIME是高難度競賽題,非常適合測試RL的穩定性。
- 基線方法:
- **GRPO (Clip-Higher)**:DeepSeek-R1使用的GRPO算法,加上了Clip-Higher trick。
- CISPO:另一種嘗試解決信任區域問題的方法。
- 實驗結果:DPPO在AIME 24/25上的Pass@1準確率不僅上升速度更快(效率高),而且最終收斂的分數明顯高於GRPO。結論是使用散度(Divergence)代替比率(Ratio)作為約束,確實帶來了實打實的性能提升。
消融實驗分析:內部組件的貢獻
問題一:信任區域真的必要嗎?
- 消融對象:移除所有Trust Region約束(即PG-IS方法)。
- 結果:模型訓練很快就崩塌(Collapse)了,準確率跌到谷底。
- 結論:Trust Region是必須的,尤其是在學習率極低的情況下,訓練-推理的不匹配(Mismatch)會累積。
問題二:錨點(Anchor)選誰?
- 消融對象:對比以 (Rollout Policy)為錨點 vs. 以 (Recomputed Policy)為錨點。
- 結果:以Rollout Policy為錨點(即DPPO的做法)非常穩定;而以Recomputed Policy為錨點(很多開源庫的預設做法,如MiniRL)會導致崩塌。
- 結論:必須錨定在生成資料的那個模型上,這符合On-Policy的理論假設。
問題三:二值近似(Binary)夠用嗎?
- 消融對象:對比 Binary TV vs. Top-K TV。
- 結果:兩者性能幾乎一致。
- 結論:簡單的二值近似已經捕捉到了絕大部分的分佈偏移資訊,性價比極高。
深度/創新性實驗剖析:洞察方法的內在特性
實驗A:被PPO誤殺的Token有哪些?
- 設計:作者把訓練過程中被PPO截斷(Clipped)的Token列印出來分析。
- 發現:被截斷最多的全是關鍵推理詞!比如數字("1", "4")、數學符號("+", "=")、邏輯連接詞("Therefore", "Since")。
- 洞見:這些詞通常在初始模型中機率較低(因為推理路徑多樣),一旦RL發現某條路徑是對的,想大幅提升這些詞的機率時,PPO卻因為Ratio過大而「一刀切」地阻止了更新。
實驗B:解剖「不穩定性」的來源
- 設計:作者逐步放寬約束,看看到底哪種更新導致了崩塌。
- 發現:崩塌的主要推手是對負樣本(Negative Samples)的過度更新。當模型收到負回饋時,如果沒有Divergence約束,模型會瘋狂降低相關Token的機率,導致「矯枉過正」,破壞了模型原本的語言能力。
- 結論:DPPO的遮罩機制在處理負回饋時起到了關鍵的保護傘作用。
本文題目:Rethinking the Trust Region in LLM Reinforcement Learning
歡迎Deep Learning同好與我交流、討論、合作!