科普向:一文解構大模型后訓練,GRPO和它的繼任者們的前世今生
大語言模型的發展真是日新月異。
從 DeepSeek 橫空出世以來,其在大模型后訓練的創新 GRPO 一躍成為強化學習黃金范式。
GRPO 已經成為一種大模型通用的強化學習算法,能夠用在廣泛的后訓練任務中,甚至包括讓大模型玩 2048:

而就在今年,大模型后訓練的研究出現了幾個重磅結果,包括 Seed 團隊的 DAPO,Qwen 團隊的 GSPO,微軟團隊的 GFPO 等等,而他們無一例外都是對 GRPO 范式的改進。
看這些名字都繞暈了,GRPO 到底有什么魔力,能讓各大研究團隊繞著它團團轉;GRPO 又有什么缺陷,各大團隊都要在它身上動刀?
通過這篇文章,我們希望能夠深入淺出的解釋大模型后訓練的原理,近期的技術進化路線,以期為讀者構建一個完整的知識體系。
后訓練與強化學習
很多人會覺得,強化學習是一個非常古老的概念,和全新的大模型好似格格不入。
我們先從大模型說起。
大眾理解的大語言模型的概念似乎很簡單,從海量數據中自監督學習出來的一個模型,能夠預測文本中下一個出現的詞,從而輸出語言文本。
但這并不完善,這種理解只突出了大模型「預訓練」的過程,而完全忽略了「后訓練」這一重要過程。
簡單來說,從海量數據中學習的過程稱為「預訓練」,預訓練的結果是讓模型掌握了通用語言能力,但僅僅如此,模型生成的內并不一定符合偏好;可能生成冗長、不準確的內容;可能不符合應用任務的需求。
換句話說,預訓練后的大模型會說話,但不一定會「說對話」。
因此,「后訓練」過程就極為重要。后訓練的主要目標是強化模型在特定領域的知識和應用能力,增強了模型的適應性和靈活性,使其能夠更好地滿足實際應用場景中的多樣化需求。
而強化學習則是在后訓練中不可或缺的核心部分。關于強化學習的理解,我們可以參考先前編譯的來自 Unsloth 團隊的文章。
強化學習的核心是「反饋」,目標是增加好結果的出現概率,降低壞結果的出現概率。
舉個例子,在吃豆人(Pacman)游戲中:如果吃掉一塊餅干,反饋是加分;如果你碰到敵人,反饋是扣分。

這是最樸素的強化學習方式了。我們放到大模型訓練當中,又該用什么方式給大模型加減分的反饋呢?
我們的核心目標是讓大模型輸出符合我們任務偏好的內容,那最簡單的方式就是人類的反饋。
如果你也這么想,那你的想法和 OpenAI 不謀而合。
在訓練 GPT 的時候,OpenAI 就采用了 RLHF(基于人類反饋的強化學習)的方法。在該方法中,需要訓練一個 agent 來針對某個問題(狀態)生成人類認為更有用的輸出。

反饋有了,并非一切萬事大吉了。我們通過 RLHF 獲得了反饋,通過這個反饋的 Reward 作為一個絕對的標準去直接訓練模型,會出現顯著的激勵不充分和方差過大的問題。

假如有兩個模型,A 的初始能力顯著比 B 強,通過直接反饋會出現:
- 模型 B 即使從 30 提升到 60,但和模型 A 的 80 相比,仍然顯得很差,優化時它得到的激勵仍然有限。
- 模型 A 在追求更高分時,可能出現一些激進的變化,導致 reward 有時飆升,有時迅速回落,訓練過程不穩定。
PPO 的穩定策略
為了在此基礎上穩定的實現 RLHF,OpenAI 構建了 PPO(Proximal Policy Optimization,近端策略優化)機制,加入了 Critic、CLIP 操作和 Reference Model,在保證 策略更新不過度 的同時,依舊能 高效提升性能。現在已經成為強化學習領域的 標準方法之一,幾乎是 RLHF 的默認選擇。
針對第一條問題,PPO 引入了 Critic:
通俗來說,我們不再只使用純粹的 Reward 來反饋,而是設置一個「價值函數
」作為參考,訓練目標從「Reward」進化成「Advantage」:

對某個動作,如果實際 Reward 超過了 Critic 的預期,就作為獎勵,若低于預期則為負反饋。優化目標就變成:

也就是說,我們擁有了一個相對評估模型進步程度的新范式,而非采用絕對 Reward 反饋。引入 Critic 可以顯著降低訓練過程中的方差,相對于 Reward 反饋,模型進步能獲得的梯度更顯著。
針對第二條問題,PPO 采用了 Clip 策略:
為了避免模型變化過大導致的不穩定,Clip 策略加入了限制條件,在目標函數中可以體現:

其中,
它表示新策略相對于舊策略,在動作上的概率變化幅度。如果這個比值偏離 1 太多,就會被限制在一定的范圍內,避免模型一次更新的幅度過大。
除此以外,PPO 策略采用 Reference Model 上了雙保險,在損失函數中加入相對初始模型的 KL 散度,同樣可以避免為了短期反饋而脫離合理的策略。
于是,PPO 的損失函數如下:

從 PPO 到 GRPO
上面的描述應該很好理解 PPO 在做什么事情。
但是 PPO 有一個嚴重的問題,由于價值函數是隨著模型訓練同時變動的,也就意味著策略模型本身和 Critic 模型(價值函數)都需要進行訓練,并且 Critic 模型的大小和策略模型相同。因此會帶來額外的內存和計算負擔,訓練成本非常高,很難進行 scale up。這可能是財大氣粗的 OpenAI 玩得轉并且取得領先的原因之一。
為了改善這個雙模型策略的高成本問題,最簡單的方法就是:去掉一個網絡。
如果你一樣這么想,那你和 DeepSeek 又不謀而合。
DeepSeek 在大模型訓練改進的主要動機是想辦法去掉 Critic 模型,為此提出了一種替代方法,也就是大名鼎鼎的組相對策略優化(Group Relative Policy Optimization, GRPO)。

PPO vs GRPO 流程算法對比
從流程算法對比中可以看出來,價值函數直接消失了。那不用價值函數,我們如何確定模型的 Advantage 呢?
GRPO 采用了一個非常合理的方法,不用「學習」一個單獨的價值網絡當 Critic,而是用這個模型過去多次的「考試成績」來確定一個基準線。
對同一道題目、同一個狀態,先用舊策略采樣多條輸出,然后把這些輸出的平均 Reward 當作 baseline; 超過平均值就相當于「正向 Advantage」,低于平均值就是「負向 Advantage」。
在 GRPO 里,除了這一步,還保留了 PPO 中的 Clip 和對 Reference Model 的 KL 正則,這些都可以保障更新的穩定性。不過,KL 散度在 GRPO 的目標函數直接放在了損失函數,這降低了獎勵函數的計算復雜度,并且它的計算方案能夠保證進行歸一化的 KL 值每次都是正值。而在 PPO 中,KL 散度放在獎勵函數中。
GRPO 跟 PPO 的重要區別,主要是去掉了價值函數,同時使用策略模型的多個輸出采樣的獎勵模型輸出的多個獎勵的平均值作為 Advantage 函數。
于是,我們得到了 GRPO 的損失函數:

對于 PPO 到 GRPO,知乎網友將兩者在多個維度上進行了比較,如圖表所示。

知乎網友@杞鋂 分享PPO與GRPO的對比
從 GRPO 開枝散葉
GRPO 在出現后迅速成為一個后訓練范式的重要節點,DeepSeek 的模型成功充分證明了 GRPO 范式的有效性和優越性。也因此,后續的改進工作大多都是在 GRPO 的方法基礎上進行。
那么 GRPO 到底有啥問題,各個新工作都要在它身上動刀呢?
最致命的問題,哪怕 GRPO 在 PPO 的基礎上進行了改進,但在穩定性上與 PPO 方法仍然半斤八兩。也就是說 GRPO 仍然存在嚴重的穩定性問題,很容易導致訓練崩潰。
根據數學中國的說法, DeepSeek 的數據足夠多,多到可以完美地避開 GRPO 的穩定性缺陷。每次的策略梯度計算,只要 Batch 數據足夠多,就能有效降低策略梯度的方差,就能獲得比較穩定的迭代了。對于中小規模的 RL 訓練,GRPO 并非一個好的選擇,尤其是當每次使用的數據批量比較小的時候,它的穩定性缺陷將是致命的。
因此,最新的一些方法針對 GPRO 的不同部分進行了迭代,具體缺陷和優化方式在介紹新工作時細講。
DAPO
首先要講的優化范式是 DAPO,這是字節、清華 AIR 在今年三月開源的算法。
使用該算法,該團隊成功讓 Qwen2.5-32B 模型在 AIME 2024 基準上獲得了 50 分,優于同等規模的 DeepSeek-R1-Zero-Qwen-32B,同時 DAPO 版 Qwen2.5-32B 使用的訓練步數還少 50%。
但是值得一提的是,DAPO 方法并沒有在數學原理上有什么本質上的改變,基本優化目標仍然沿用了 GRPO 的形式,只是對 Clip 等參數和采樣機制做出了改進。因此,我們把 DAPO 放在最早討論的順位。
在實踐過程中,GRPO 存在以下幾個問題:
- Token 級別的 Clip 容易導致熵崩潰:模型很快收斂到少量固定答案,導致多樣性和探索能力不足(熵崩潰)。
- Batch 采樣中出現獎勵極端化:部分樣本的獎勵可能全部為 1 或 0,從而產生「零梯度」問題,削弱訓練信號。
- 長序列訓練的梯度分布失衡:權重分布讓極少數 token 的梯度占據主導,導致許多高質量的長序列樣本被忽視。
為此,DAPO 根據實踐中出現的問題提出了針對性的優化:
1. Clip-Higher 機制:將 Clip 的上下限分開 ,研究者將較低和較高的剪輯范圍解耦為 ε_low 和 ε_high,研究者增加了 ε_high 的值,以便為低概率 token 的增加留出更多空間,能夠顯著提升模型訓練早期的熵。
2. 動態采樣:進行過度采樣,過濾掉獎勵等于 1 和 0 的提示語,只保留有效梯度的樣本,提高訓練效率。
3. Token 級策略梯度損失:對所有 token 一起求平均,保證長序列的所有 token 都公平地為 batch loss 做貢獻,并防止長序列的優化梯度被過度縮小。
4. 超長獎勵調整:針對超長樣本,當響應長度超過預定義的最大值時,研究者定義一個「soft 罰分」。在這個區間內,響應越長,受到的懲罰就越大,以此避免過長的響應。
因此,DAPO 的優化損失函數如下:

雖然 DAPO 依然是 token 級別的重要性采樣,但訓練曲線和最終性能提升非常明顯。

- 項目頁面:https://dapo-sia.github.io/
- 論文地址:https://dapo-sia.github.io/static/pdf/dapo_paper.pdf
GSPO
大的來了。后訓練領域里重要的突破是 Qwen3 使用的新方法 GSPO。
上文那么多文字一直在提及 PPO 類似方法的重要級采樣均為 token 級,迭代方法一直沒有突破 token 采樣的限制,而 GSPO 真正在原理上做出了改進。
最近 Qwen 的研究表明,使用 GRPO 訓練大語言模型時存在嚴重的穩定性問題,往往會導致模型不可逆地崩潰。在 Qwen 團隊的研究中,揭示了 GPRO 方法的嚴重問題:
- 在每個 token 級別應用重要性采樣,會在長序列中積累高方差,導致訓練不穩定。
- 這一問題在 專家混合模型(Mixture-of-Experts, MoE) 中尤為嚴重,因為 token 級別的路由變化會加劇不穩定性。
如果說 DAPO 是在 GRPO 框架內做微調,那么 GSPO 則是直接調整了優化目標的顆粒度 —— 從 token 級跳到序列級。
重要性采樣的作用是:來緩解 off-policy 帶來的分布差異情況,也就是說:
我們想要估計一個預期的分布,但是我們手上只有另行為模型的分布,我們就只能在行為策略下進行采樣,通過這個樣本,賦予重要性權重,來估計出目標策略下函數的值。

但是這種采樣的前提在于多次采樣,如果只有一次采樣,并不能起到分布矯正的作用。問題在于大模型訓練過程中,重要性采樣都是 在 token 級別進行的,單個 token 進行的重要性采樣是無法起到分布矯正的作用的,相反,這種采樣手段反而會帶來很大方差的噪聲。
在訓練時,獎勵其實是針對整段回答打的分,比如一句話、一個完整回復都會得到一個整體評價。
但是在模型優化時,我們通常是在 token 層面進行采樣和更新。于是常見的做法是:把獎勵直接分攤到每一個 token 上,再逐個去調整。
這就導致了 優化目標和獎勵目標的顆粒度不匹配:模型可能在單個 token 上學得很用力,但這并不能完全對應整段回答的質量。
為此,Qwen 團隊將 GRPO 進化為組序列策略優化(Group Sequence Policy Optimization, GSPO)。
正如其名稱所暗示的,GSPO 的核心在于將重要性采樣從 token 級轉移至序列級,其重要性比值基于整個序列的似然度計算:

這種采樣權重的設計自然地緩解了逐 token 方差的累積問題,從而顯著提升了訓練過程的穩定性。
因此,GSPO 的損失函數為:

- GRPO:重要性權重在 token 級,每個 token 都可能被單獨裁剪。
- GSPO:重要性權重在 序列級,裁剪時直接作用于整個回答,更符合獎勵信號的整體性。
此外,GSPO 對 序列級的重要性還做了 長度歸一化,不同問題的回答長度差別很大,如果不歸一化,importance ratio 會對長度非常敏感,造成不穩定。
最后,因為同一個序列中的所有 token 共用同一個重要性權重,一旦發生 clipping,被裁剪掉的就是 整個序列,而不是像 GRPO 那樣只影響部分 token。
因此,GSPO 提出的「序列級重要性采樣」顯著提高了訓練的穩定性,很可能會成為未來后訓練強化學習的新標準。

- 論文標題:Group Sequence Policy Optimization
- 論文鏈接:https://huggingface.co/papers/2507.18071
- 博客鏈接:https://qwenlm.github.io/blog/gspo/
GFPO
在 GSPO 之后不久,微軟研究員曝出一個新成果:組過濾策略優化(Group Filtered Policy Optimization,GFPO),另一種顛覆性的強化學習算法。
在 GFPO 工作中,微軟研究團隊指出了 GRPO 的一個關鍵限制:
GRPO 依賴于單一的標量獎勵信號,這使得它難以聯合優化多個屬性,例如同時優化簡潔性和準確度。
結果就是,GRPO 確實能提高準確度,但也會讓響應長度大幅增加。這也導致了大模型遇到一個稍微棘手的問題,就會像陷入沉思一樣長篇大論地推下去,耗時耗算力,結果卻未必靠譜。
GFPO 正是為了解決這個問題而生的,它可以同時優化多個響應屬性。
GFPO 是一種簡單而有效的方法,可以針對想要的響應屬性進行有針對性的策略優化。
GFPO 會為每個問題采樣更大的候選響應組,從而擴大響應池以包含更多具有所需特性的候選響應,然后在計算策略梯度時顯式地過濾這些特性,不符合目標屬性的響應不進入優化。
數據過濾是一種隱式、靈活的獎勵塑造形式 —— 類似于使用選擇性采樣來放大特定模型行為的迭代式自我改進方法。過濾機制會迭代地放大模型在目標屬性上的表現,就像強化學習里的「偏好放大器」。
在此顯式過濾步驟分離出所需的響應后,將在所選組內使用標準獎勵來計算相對優勢。
因此,GFPO 無需復雜的獎勵工程,即可同時優化多個所需屬性(例如長度和準確度)。
GFPO 的形式化定義如下:

GFPO 的主要干預措施是在 Advantage 估計層面,使其可與任何 GRPO 類似的方法兼容,例如 DAPO、Dr. GRPO 或帶有 Dual-Clip PPO 損失的 GRPO。

- 論文標題:Sample More to Think Less: Group Filtered Policy Optimization for Concise Reasoning
- 論文地址:https://arxiv.org/abs/2508.09726
GRPO 的一些其他問題
除此以外,也有些研究者發現了 GRPO 的一些其他缺陷,或許可以為未來的研究工作提供一些新思路。

- 博客鏈接:https://aryagxr.com/blogs/grpo-limitations.html
缺陷 1:獎勵的歧義性
復雜的推理問題通常需要多個獎勵信號,因此我們會為每個評判標準單獨設計獎勵函數。然后,把所有獎勵函數的分數加在一起,折疊成一個單一的獎勵信號。

問題在于,模型根本無法知道 自己到底是因為什么行為被獎勵的。雖然我們寫了不同的獎勵函數,但最后所有獎勵依然被合并為一個標量信號。模型又怎么知道獎勵是來自「答案正確」,還是「推理清晰」,還是「格式規范」呢?
即使我們調整不同獎勵組件的權重,模型看到的仍然只是一個總的標量獎勵。
GFPO 一定程度上改善了上述問題。
缺陷 2:標量反饋
在推理任務中,GRPO 會丟棄所有中間的文本反饋,因為傳給模型的只是一個數值化的獎勵信號。
舉個例子,模型訓練過程中會打印一些輸出,每次猜測都有文字反饋,比如:
- 「字母 ‘c’ 不應該在答案里」
- 「‘n’ 不能出現在位置 3」
這些文字反饋對模型其實很有幫助,但在 GRPO 框架下完全用不上,因為它們最終都會被抽象成一個標量獎勵。
缺陷 3:多輪推理
另一個瓶頸是 多輪推理 任務在 GRPO 下的表現。問題的關鍵在于:
在多輪對話中,每一輪的反饋都會被重新輸入到基礎模型的 prompt 中,從而導致 指數級分支(exponential forking),使得 GRPO 在多輪任務中的訓練變得非常痛苦。見下圖:

寫在最后
簡單總結一下,后訓練的發展脈絡其實很清晰。從 OpenAI 提出 PPO 的后訓練方法開始,都在此基礎上縫縫補補。
GRPO 是 PPO 基礎上重要的更新范式,自 GRPO 起,后訓練策略優化就作為大模型的一個重要研究方向進行,就像樹節點一樣向外延伸。
- PPO:以 token 為核心,依賴價值函數。
- GRPO:提出組優化思路,在組內對獎勵做歸一化,從而擺脫價值函數依賴;但仍停留在 token 級,方差依舊較大。
- DAPO:在 GRPO 基礎上加入大量工程改進(如 Clip-Higher、Dynamic Sampling 等),一定程度緩解大模型 RL 的訓練瓶頸,但仍停留在 token 級。
- GSPO:實現范式轉變,將 off-policy 與 clip 全部提升到 序列級,顯著降低方差,兼具算法簡潔性與性能表現,已成為 Qwen3 RL 的核心實踐框架。
- GFPO:針對同時優化多個所需屬性的目標進行優化,加入數據過濾操作。




























