DeepSeek-R1 剖析:無需強化學習先驗知識,理解 PPO 和 GRPO

社群文章 釋出於 2025 年 2 月 7 日

1. 引言

在強化學習(RL)中,僅僅知道“你得了多少分”通常是不夠的。**單純追求高分**可能導致各種副作用,例如過度探索、模型不穩定,甚至出現偏離合理策略的“捷徑”行為。為了應對這些挑戰,RL 引入了幾種機制,例如評論員(價值函式)、Clip 操作、參考模型以及最新的組相對策略最佳化(GRPO)。

為了使這些概念更直觀,讓我們打個比方:**將 RL 訓練過程想象成小學考試場景。**我們(正在訓練的模型)就像是努力考高分的學生,批改試卷的老師就像獎勵模型,而根據我們的分數給零花錢的父母則類似於評論員。接下來,讓我們一步步探討為什麼**僅僅最終分數**是不夠的,評論員、Clip 和參考模型如何發揮作用,最後 GRPO 如何擴充套件這些思想。


2. 僅僅使用獎勵的天真方法:有什麼問題?

假設我和弟弟在同一個小學班級。老師批改我們的試卷,給出“絕對分數”。我通常考 100 分以上,而我弟弟通常在 30 分左右。然後我們直接拿著這些分數去找爸爸要零花錢——這意味著我們的“獎勵”(用 RL 術語來說)就是我們的原始考試分數。誰分數高,誰就得到更多的零花錢。

乍一看,這似乎沒什麼問題。但很快就出現了兩個大問題:

  • **不公平性**:如果我弟弟透過努力學習從 30 分提高到 60 分,他仍然無法與我通常的 80 多分相比。他得不到應有的鼓勵。
  • **不穩定性**:我自己追求更高的分數可能會導致我採取極端的學習方法(例如,通宵突擊,熬夜)。有時我可能考 95 分,有時只考 60 分,所以我的分數——以及獎勵訊號——波動劇烈。

結果是,**使用絕對分數作為獎勵**會導致獎勵波動大,我弟弟最終覺得小幅進步不值得嘗試。

數學對應關係

在強化學習中,如果我們只做

Jnaive(θ)=E(q,o)(data,πθ)[r(o)], \mathcal{J}_{\text{naive}}(\theta) = \mathbb{E}_{(q, o) \sim (\text{data}, \pi_{\theta})}\big[r(o)\big],

這意味著“只最佳化最終獎勵”,我們可能會遇到高方差和對部分改進激勵不足的問題。換句話說,Actor 缺乏一個與自身當前水平相匹配的**基線**,這會阻礙訓練效率。


3. 引入評論員:使用“預測分數線”來改進獎勵

認識到這個問題後,爸爸意識到**“這不僅僅是關於絕對分數,而是關於你相對於自己當前水平的進步程度。”**

所以他決定:

  • 將我的“預測分數線”設為 80 分,我弟弟的設為 40 分。如果我們在考試中超過這些分數線,我們就會得到更多的零花錢;如果沒有,我們就會得到很少或沒有。

因此,如果我弟弟努力學習並從 30 分提高到 60 分,他比他的“預測分數線”高出 20 分,這意味著豐厚的獎勵。同時,如果我保持在 80 分左右,增量收益會更小,所以我獲得的獎勵不一定會比他多多少。這種安排**鼓勵每個人**從自己的基線出發進行改進,而不是純粹比較絕對分數。

當然,爸爸很忙,所以一旦設定好分數線,它就不會一直保持不變——他需要隨著我們的進步不斷**“重新調整”**。如果我弟弟的水平提高到 60 分左右,那麼 40 分的基線就不再公平了。同樣,如果我一直徘徊在 85 分左右,爸爸可能也需要調整我的分數線。換句話說,**爸爸也必須學習**,特別是關於我和弟弟進步的速度。

數學對應關係

在強化學習中,這種“分數線”被稱為**價值函式**,Vψ(s)V_{\psi}(s)。它作為一個基線。我們的訓練目標從“僅僅獎勵”演變為“我們比基線超出多少”,用優勢表示為

At=rtVψ(st). A_t = r_t - V_{\psi}(s_t).

對於給定的狀態 sts_t 和動作 oto_t,如果實際獎勵超過評論員的預期,則表示該動作表現優於預測。如果低於預期,則該動作表現不佳。最簡單的表述是,我們最佳化的是

Jadv(θ)=E[A(o)],where A(o)=r(o)Vψ(o). \mathcal{J}_{\text{adv}}(\theta) = \mathbb{E}\big[A(o)\big], \quad \text{where } A(o) = r(o) - V_{\psi}(o).

透過減去這個“分數線”,我們減少了訓練中的方差,對超出預期的動作給予更高的梯度訊號,並懲罰那些表現不佳的動作。

4. 新增 Clip 和 Min 操作:防止過度更新

即使有了“分數線”,也可能出現新問題。例如:

  • 如果我突然在一場考試中**突破**,考到 95 或 100 分,爸爸可能會給我一個巨大的獎勵,促使我在下一次考試前採取過於激進的學習模式。我的成績可能會在極端之間波動(95 分和 60 分),導致獎勵波動巨大。

因此,爸爸決定限制我每一步學習策略的更新幅度——他不會因為我一次考得好就給我**指數級**的更多零花錢。如果給太多,我可能會走向極端探索;如果給太少,我就沒有動力。所以他必須找到一個平衡點。

數學對應關係

在**PPO (Proximal Policy Optimization)** 中,這種平衡透過“Clip”機制實現。PPO 目標的核心包括:

min(rt(θ)At, clip(rt(θ,1ε,1+ε)At), \min \Big(r_t(\theta) A_t,\ \text{clip}\big(r_t(\theta), 1 - \varepsilon,\, 1 + \varepsilon\big)\,A_t\Big),

其中

rt(θ)=πθ(otst)πθold(otst), r_t(\theta) = \frac{\pi_{\theta}(o_t\mid s_t)}{\pi_{\theta_{\text{old}}}(o_t\mid s_t)},

代表新舊策略在該動作上的機率比。如果該比率偏離 1 太遠,它就會被截斷在 [1ε, 1+ε]\bigl[\,1-\varepsilon,\ 1+\varepsilon\bigr] 範圍內,這**限制了**策略在一次更新中能改變多少。

簡單來說:

  • 考 100 分會讓我獲得額外的獎勵,但爸爸設定了一個“上限”,以免我得意忘形。他會在下一次考試中重新評估,保持穩定的方法,而不是助長極端的波動。

5. 參考模型:防止作弊和極端策略

即便如此,如果我只專注於高分,我可能會**採取可疑的策略**——例如,作弊或恐嚇老師給我滿分。顯然,這違反了所有規則。在大型語言模型領域,類似的情景是生成有害或捏造的內容,以人為地提高某些獎勵指標。

因此,爸爸又設定了一條規則:

  • “無論如何,你都不能偏離你最初誠實的學習方法太遠。如果你的表現與你的基線相差太遠,即使分數很高,我也會取消你的資格並扣留你的零花錢。”

這就像在學期開始時(即初始監督微調之後)劃定了一條**“參考線”**。你不能偏離原始策略太遠,否則將面臨懲罰。

數學對應關係

在 PPO 中,這透過對**參考模型**(初始策略)新增 KL 懲罰來體現。具體來說,我們包含類似

βDKL(πθ πref) -\beta\, \mathbb{D}_{\mathrm{KL}}\big(\pi_{\theta}\,\|\ \pi_{\text{ref}}\big)

在損失中。這可以防止 Actor 偏離原始的、合理的策略太遠,避免“作弊”或其他極端出格的行為。

6. GRPO:用“多個模擬平均值”取代價值函式

有一天,爸爸說:“我沒時間一直評估你們的學習進度並劃定新的分數線。為什麼不先做五套模擬試卷,然後把它們的**平均分數**作為你的**預期分數**呢?如果你在真實考試中超過了這個平均分,就說明你表現超出預期,我會獎勵你。否則,你就得不到多少。”我弟弟、我以及其他同學,都可以依靠一套個人模擬測試,而不是爸爸需要不斷調整的外部“價值網路”。

到目前為止,我們已經看到 PPO 依賴於 Actor + Critic + Clip + KL 懲罰框架。然而,在大型語言模型 (LLM) 場景中,Critic(價值函式)**通常需要和 Actor 一樣大**才能準確評估狀態,這可能很昂貴,有時也不切實際——特別是當最終只有一個最終獎勵時(例如最終答案質量)。

因此,**組相對策略最佳化 (GRPO)** 應運而生。其核心思想是:

  • **沒有獨立的價值網路**作為評論員,
  • 從舊策略中對相同問題或狀態進行多次輸出取樣,
  • 將這些輸出的平均獎勵作為基線,,
  • 任何高於平均值的都產生“正優勢”,任何低於平均值的都產生“負優勢”。

同時,GRPO **保留了** PPO 的 Clip 和 KL 機制,以確保穩定、合規的更新。

數學對應關係

根據 DeepSeekMath 的技術報告,GRPO 目標(省略了一些符號)為

JGRPO(θ)=E[i=1G(min(πθ(oi)πθold(oi)Ai, clip(πθ(oi)πθold(oi),1ε,1+ε)Ai) β DKL(πθ  πref))], \begin{aligned} \mathcal{J}_{GRPO}(\theta) = \mathbb{E}\Bigg[ & \sum_{i = 1}^{G}\Bigg(\min \Bigg(\frac{\pi_{\theta}\left(o_{i}\right)}{\pi_{\theta_{\text{old}}}\left(o_{i}\right)} A_{i},\ \text{clip}\Big(\frac{\pi_{\theta}\left(o_{i}\right)}{\pi_{\theta_{\text{old}}}\left(o_{i}\right)}, 1-\varepsilon, 1+\varepsilon\Big) A_{i}\Bigg) \\ & \quad -\ \beta\ \mathbb{D}_{KL}\left(\pi_{\theta}\ \|\ \pi_{\text{ref}}\right)\Bigg) \Bigg], \end{aligned}

其中

Ai=rimean({r1,r2,,rG})std({r1,r2,,rG}) A_{i} = \frac{r_{i} - \mathrm{mean}(\{r_1, r_2, \cdots, r_G\})}{\mathrm{std}(\{r_1, r_2, \cdots, r_G\})}

透過對相同問題的多個輸出來進行平均和歸一化,從而計算出“相對分數”。透過這種方式,**我們不再需要專門的價值函式**,但仍然可以獲得動態的“分數線”,從而簡化訓練並節省資源。

7. 結論:反思與展望

用小學的考試打比方,我們一步步從原始絕對分數,到PPO的完整機制(Critic、優勢函式、Clip、參考模型),最後到GRPO(利用多個輸出的平均分來消除價值函式)。以下是一些關鍵要點:

  • Critic 的作用:為每個狀態提供一個“合理預期”,顯著降低訓練方差。
  • Clip & min 機制:限制更新幅度,防止對單一“突破性”考試反應過度。
  • 參考模型:阻止“作弊”或極端偏差,確保策略與初始狀態保持合理一致。
  • GRPO 的優勢:在大型語言模型中,它消除了對獨立價值網路的需求,降低了記憶體和計算成本,同時與“比較式”獎勵模型設計完美契合。

就像爸爸改用“讓孩子們自己模擬多次考試,然後把他們的平均分作為基準”一樣,GRPO 避免了維護一個龐大的 Critic,同時仍然提供相對獎勵訊號。它保留了 PPO 的穩定性和合規性特點,但簡化了流程。

希望本文能幫助您自然地理解 PPO 和 GRPO。實際上,如果您對 Process Supervision 或 Iterative RL 等主題感興趣,請關注我的部落格以獲取更多更新。

社群

感謝您的帖子。解釋非常清晰,例子也很好 ;)

類比真的很酷!

一篇寫得非常好的文章,解釋清晰!

📻 🎙️ 嘿,我為這篇部落格文章製作了一個播客,快來聽聽吧!

該播客由 ngxson/kokoro-podcast-generator 生成,使用了 DeepSeek-R1 和 Kokoro-TTS

非常有幫助,謝謝

哇,解釋得太好了!謝謝您!

真的很有幫助。謝謝您!

你好。
我認為您的 PPO 描述中有一個錯誤,實際上,PPO 並沒有明確懲罰與初始(參考)策略的 KL 散度。

註冊登入 以評論

© . This site is unofficial and not affiliated with Hugging Face, Inc.