角色和術語定義
- State:狀態
- Action:動作
- Policy/actor model:策略模型,用于決策行動的主要模型
- Critic/value model:價值模型,用于評判某個行動的價值大小
- Reward model:獎勵模型,用于給行動打分
- Reference model:參考模型,是初始的策略模型,用于計算更新后策略模型和初始的偏差
一個簡單的小故事
首先,舉個最簡單的例子:在考試中,學生是policy/actor model,努力獲得高分;老師是reward model,通過閱卷得到成績;根據成績發放零花錢的家長是critic/value model;第一次模擬考試的學生是reference model。
為什么根據成績發放零花錢的家長需要使用model呢?因為家長發放零花錢時,定的分數線不能是靜態不變的,也需要動態考慮到孩子成績的變化,比如第一次考試70分,那分數線可以定在80,第二次考了81分,分數線可以調整到85,并且對于不同的人,這個分數線也應該是差異化定制的。所以發放零花錢的家長是critic/value model,根據model去動態預測合適分數線,因此也是需要訓練更新的。
【至此,已經介紹完了PPO的故事場景】
但是家長覺得這種動態調整太費時費力了,需要一直觀察孩子的情況。所以提出在每次考試前,先給孩子做幾套模擬試卷,取平均分作為分數線。正式考完試之后計算成績和分數線的差距,決定零花錢怎么發。
【至此,已經介紹完了GRPO的優化】
有一次,家長突然發現孩子拿了100分,非常驚訝,調查后發現是作弊了。所以家長決定給孩子一些限制,要求孩子能力不能和初始時偏差太遠!也就是要循序漸進地進步,而不是通過作弊的方式拿到100分。
【以上,是PPO和GRPO中引入reference model的KL散度的原因】
可以看到,PPO和GRPO的不同點在于怎么去計算這個動態的分數線(也稱作優勢),其他部分幾乎一致。
對比監督學習和強化學習
強化學習分類
- Value-based方法:相對早期的算法,比如DQN只能用于離散的動作空間,而輸出需要是連續值時,DQN則無法實現。
- Policy-based方法:現在比較流行的算法,比如PPO、GRPO,也是這篇博客的重點。這種方法直接學習一個策略函數(actor model),在給定的狀態下,輸出動作的概率分布π(a∣s)\pi(a|s)π(a∣s)。
基于Policy的強化學習
Actor-Critic架構
- Actor(策略模型):在給定的狀態sss下,輸出動作的概率分布π(a∣s)\pi(a|s)π(a∣s)。
- Critic(價值函數):在狀態sss下,預測長期累積獎勵的期望值V(s)V(s)V(s)。這里很容易疑惑,critic model那reward model的區別是什么?簡單來說,reward model通常是環境或人工設計的單步即時獎勵信號,無法衡量長期收益。所以critic model的目標就是學習這個V(s)V(s)V(s),以更好地指導actor優化方向。
- Advantage(優勢函數):在給定的狀態sss下,動作aaa比平均水平好多少,計算方式是A(s,a)=Q(s,a)?V(s)A(s,a)= Q(s,a)-V(s)A(s,a)=Q(s,a)?V(s)。優勢函數可以給actor帶來精確的反饋信號。
這里再舉一個直觀的例子:actor是運動員,只負責行動,不知道自己做的好不好;critic是教練員,通過當前局勢狀態,計算價值,用于評估當前這個局面怎么樣,critic會去預測從當前狀態出發,按照當前策略一直玩下去,最終大概能得多少分,所以critic不決定動作,只負責評價。那教練員如何給運動員提供精確的反饋呢?不能只說“好”或“壞”,而要說“比我預想的要好/壞多少”,這個值就是上面說的advantage。
下面介紹PPO和GRPO算法,首先強烈推薦大家先看博主給的關于強化學習的story:一個故事秒懂強化學習與GRPO!
PPO算法
PPO則是基于上面的actor-critic架構,其中critic/value model是一個可訓練的模型,一般用actor+linear層或reward model進行初始化(所以通常參數規模和actor一致)。
為了避免actor的更新過程不穩定(更新程度太大),PPO引入了 clipping機制:
一般來說,?=0.2\epsilon=0.2?=0.2。
其中rt(θ)=πθ(at∣st)πθold(at∣st)r_t(\theta)=\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}rt?(θ)=πθold??(at?∣st?)πθ?(at?∣st?)?,用于衡量新舊策略選擇動作ata_tat?的概率比,比如rt(θ)>1r_t(\theta)>1rt?(θ)>1,說明新策略更傾向于選擇ata_tat?。
rt(θ)r_t(\theta)rt?(θ)是其實是重要性采樣,目標是復用舊策略收集的數據,通過新舊策略的概率比修正舊數據的權重,以提高效率。
在PPO中,advantage是由GAE算法得到的【TODO:涉及到時序差分算法】,需要輸入critic/value model的輸出vvv以及reward rrr。注意這里的reward中包含了KL散度項,目的是保證actor和reference model不要偏離太遠:
PPO總體優化目標如下(最大化):
GRPO算法
GRPO相比于PPO,去掉了critic/value model,并且通常reward model可以是自定義的規則(比如DeepSeek-R1-Zero中直接判斷數學題答案對錯),因此也不需要用單獨的模型了。這對于強化學習訓練來說,省下了可觀的顯存。
GRPO的核心是引入了一個 “組相對策略” 的概念,對于每一個輸入的prompt,會復制多份,并且分別采樣生成多個completion,得到reward,把它們看作一組。在組內,將每個輸出句子的normalized reward當作每個句子(所有token)的advantage。
GRPO總體優化目標如下(最大化):
不同于PPO,GRPO中的KL散度項不是在reward的計算中,而是直接寫在優化目標中用于actor的更新。
PPO與GRPO結構圖
參考資料
- 無需RL基礎理解 PPO 和 GRPO
- https://github.com/yogyan6/cartpole-DQN
- PPO基礎介紹
- 【大白話03】一文理清強化學習RL基本原理 | 原理圖解+公式推導
- 【大白話04】一文理清強化學習PPO和GRPO算法流程 | 原理圖解
- PPO已經有了reward model 為何還要有critic model?
- 從原理到代碼,帶你掌握DeepSeek GRPO!