云一网站公司,seo的中文是什么,建设一个行业性的网站价格,南京网站优化快速排名在本文中#xff0c;我们将深入探讨Deepseek采用的策略优化方法GRPO#xff0c;并顺带介绍一些强化学习#xff08;Reinforcement Learning, RL#xff09;的基础知识#xff0c;包括PPO等关键概念。 策略函数#xff08;policy#xff09;
在强化学习中#xff0c; a…在本文中我们将深入探讨Deepseek采用的策略优化方法GRPO并顺带介绍一些强化学习Reinforcement Learning, RL的基础知识包括PPO等关键概念。 策略函数policy
在强化学习中 a t ∣ s t a_t \mid s_t at∣st 表示在状态 s t s_t st 下采取动作 a t a_t at 的条件概率。具体来说它是由策略函数 π \pi π 决定的。
详细说明 s t s_t st s t s_t st 表示在时间步 t t t 时的状态state。状态是环境对智能体的当前描述例如在游戏中可能是角色的位置、速度等信息。 a t a_t at a t a_t at 表示在时间步 t t t 时智能体采取的动作action。动作是智能体在给定状态下可以执行的操作例如在游戏中可能是“向左移动”或“跳跃”。 π ( a t ∣ s t ) \pi(a_t \mid s_t) π(at∣st) π ( a t ∣ s t ) \pi(a_t \mid s_t) π(at∣st) 是策略函数policy表示在状态 s t s_t st 下选择动作 a t a_t at 的概率。如果是确定性策略 π ( a t ∣ s t ) \pi(a_t \mid s_t) π(at∣st) 会直接输出一个确定的动作如果是随机策略它会输出一个动作的概率分布。 r t ( θ ) π θ ( a t ∣ s t ) π θ old ( a t ∣ s t ) r_t(\theta) \frac{\pi_\theta(a_t \mid s_t)}{\pi_{\theta_{\text{old}}}(a_t \mid s_t)} rt(θ)πθold(at∣st)πθ(at∣st)
在 PPO 中 r t ( θ ) r_t(\theta) rt(θ) 是新策略 π θ \pi_\theta πθ 和旧策略 π θ old \pi_{\theta_{\text{old}}} πθold 在状态 s t s_t st 下选择动作 a t a_t at 的概率比。这个比值用于衡量策略更新的幅度并通过裁剪机制限制其变化范围确保训练的稳定性。
举例说明
假设我们有一个简单的游戏环境 状态 s t s_t st角色的位置。 动作 a t a_t at可以执行的动作是“向左”或“向右”。 策略 π ( a t ∣ s t ) \pi(a_t \mid s_t) π(at∣st)在某个位置 s t s_t st 下策略可能以 70% 的概率选择“向左”以 30% 的概率选择“向右”。
在 PPO 中我们会比较新旧策略在相同状态 s t s_t st 下选择相同动作 a t a_t at 的概率从而计算概率比 r t ( θ ) r_t(\theta) rt(θ)并用于优化目标函数。
总结 a t ∣ s t a_t \mid s_t at∣st 表示在状态 s t s_t st 下选择动作 a t a_t at 的条件概率由策略函数 π \pi π 决定。在 PPO 中这一概率用于计算新旧策略的比值从而控制策略更新的幅度。
近端策略优化PPO
PPOProximal Policy Optimization 是一种用于强化学习的策略优化算法由 OpenAI 提出。它通过限制策略更新的幅度确保训练过程的稳定性。
核心思想
PPO 的核心在于限制策略更新的幅度避免因更新过大导致性能下降。它通过引入“裁剪”机制控制新旧策略之间的差异。
公式
PPO 的替代目标函数 J P P O ( θ ) \mathcal{J}_{PPO}(\theta) JPPO(θ) 用于优化策略 π θ \pi_\theta πθ公式如下 J P P O ( θ ) E [ q ∼ P ( Q ) , o ∼ π θ o l d ( O ∣ q ) ] 1 ∣ o ∣ ∑ t 1 ∣ o ∣ min [ π θ ( o t ∣ q , o t ) π θ o l d ( o t ∣ q , o t ) A t , clip ( π θ ( o t ∣ q , o t ) π θ o l d ( o t ∣ q , o t ) , 1 − ε , 1 ε ) A t ] \mathcal{J}_{PPO}(\theta) \mathbb{E}_{[q \sim P(Q), o \sim \pi_{\theta_{old}}(O|q)]} \frac{1}{|o|} \sum_{t1}^{|o|} \min \left[ \frac{\pi_\theta(o_{t} | q, o_{t})}{\pi_{\theta_{old}}(o_{t} | q, o_{t})} A_{t}, \text{clip} \left( \frac{\pi_\theta(o_{t} | q, o_{t})}{\pi_{\theta_{old}}(o_{t} | q, o_{t})}, 1 - \varepsilon, 1 \varepsilon\right) A_{t} \right] JPPO(θ)E[q∼P(Q),o∼πθold(O∣q)]∣o∣1t1∑∣o∣min[πθold(ot∣q,ot)πθ(ot∣q,ot)At,clip(πθold(ot∣q,ot)πθ(ot∣q,ot),1−ε,1ε)At]
其中
期望符号 E \mathbb{E} E 表示对查询 q q q 和输出 o o o 的期望: q ∼ P ( Q ) q \sim P(Q) q∼P(Q): 查询 q q q 从分布 P ( Q ) P(Q) P(Q) 中采样。 o ∼ π θ o l d ( O ∣ q ) o \sim \pi_{\theta_{old}}(O|q) o∼πθold(O∣q): 输出 o o o 由旧策略 π θ o l d \pi_{\theta_{old}} πθold 生成。 1 ∣ o ∣ ∑ t 1 ∣ o ∣ \frac{1}{|o|} \sum_{t1}^{|o|} ∣o∣1∑t1∣o∣ 对输出 o o o 的每个时间步 t t t 求平均: ∣ o ∣ |o| ∣o∣ 是输出序列的长度。
其核心目标函数为 L C L I P ( θ ) E t [ min ( r t ( θ ) A ^ t , clip ( r t ( θ ) , 1 − ϵ , 1 ϵ ) A ^ t ) ] L^{CLIP}(\theta) \mathbb{E}_t \left[ \min \left( r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1 - \epsilon, 1 \epsilon) \hat{A}_t \right) \right] LCLIP(θ)Et[min(rt(θ)A^t,clip(rt(θ),1−ϵ,1ϵ)A^t)]
其中 r t ( θ ) π θ ( a t ∣ s t ) π θ old ( a t ∣ s t ) r_t(\theta) \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)} rt(θ)πθold(at∣st)πθ(at∣st) 是新旧策略的概率比。 A ^ t \hat{A}_t A^t 是优势函数衡量动作的相对好坏。 ϵ \epsilon ϵ 是裁剪参数通常为 0.1 或 0.2。
步骤
采样使用当前策略与环境交互收集数据在语言模型中可以类比为生成补全generating completions。计算优势值基于收集的数据计算优势值函数 A ^ t \hat{A}_t A^t。优化目标函数通过梯度上升优化目标函数 L C L I P ( θ ) L^{CLIP}(\theta) LCLIP(θ)。更新策略重复上述步骤直到策略收敛。
优点
稳定性通过裁剪机制避免策略更新过大。高效性相比 TRPOPPO 实现更简单计算效率更高。
补充
在强化学习中策略的目标是最大化期望回报而不是最小化损失。所以在PPO中使用的是梯度上升原因在于它的优化目标是最大化目标函数如强化学习中的期望回报而不是最小化损失函数如分类或回归问题。 Advantage优势函数
定义
Advantage函数用于衡量在某个状态State下采取某个动作Action相对于平均表现的优劣程度。它的数学定义为 A ( s , a ) Q ( s , a ) − V ( s ) A(s, a) Q(s, a) - V(s) A(s,a)Q(s,a)−V(s), 其中 Q ( s , a ) Q(s, a) Q(s,a) 是动作值函数表示在状态 s s s 下采取动作 a a a 后未来累积回报的期望。 V ( s ) V(s) V(s) 是状态值函数表示在状态 s s s 下按照当前策略采取动作后未来累积回报的期望。 A ( s , a ) A(s, a) A(s,a) 是优势函数表示在状态 s s s 下采取动作 a a a 比平均表现好多少或差多少。
作用 Advantage函数用于指导策略更新 如果 A ( s , a ) 0 A(s, a) 0 A(s,a)0说明动作 a a a 比平均表现更好策略应该更倾向于选择这个动作如果 A ( s , a ) 0 A(s, a) 0 A(s,a)0说明动作 a a a 比平均表现更差策略应该减少选择这个动作的概率。 在PPO等算法中Advantage函数通常通过**GAEGeneralized Advantage Estimation**来估计。
直观理解
Advantage函数就像一个“评分”告诉模型某个动作在当前状态下是好还是坏以及好或坏的程度。 KL PenaltyKL散度惩罚
定义
KL Penalty是基于**KL散度Kullback-Leibler Divergence**的一种正则化手段。KL散度用于衡量两个概率分布之间的差异。在强化学习中KL Penalty通常用于限制当前策略 π θ \pi_{\theta} πθ 和参考策略 π ref \pi_{\text{ref}} πref 之间的差异。其数学定义为 KL Penalty D KL ( π ref ∥ π θ ) \text{KL Penalty} D_{\text{KL}}(\pi_{\text{ref}} \| \pi_{\theta}) KL PenaltyDKL(πref∥πθ) 其中 π θ \pi_{\theta} πθ 是当前策略由模型参数 θ \theta θ 决定。 π ref \pi_{\text{ref}} πref 是参考策略通常是更新前的策略或某个基线策略。 D KL D_{\text{KL}} DKL 是KL散度用于衡量两个策略之间的差异。
作用
KL Penalty用于防止策略更新过大确保当前策略不会偏离参考策略太远。这样可以避免训练过程中的不稳定现象如策略崩溃。在PPO等算法中KL Penalty通常被添加到目标函数中作为正则化项。
直观理解
KL Penalty就像一个“约束”告诉模型在更新策略时不要“步子迈得太大”以免失去稳定性。 Advantage和KL Penalty的关系 Advantage 用于指导策略更新告诉模型哪些动作更好。 KL Penalty 用于约束策略更新防止策略变化过大。 在PPO等算法中Advantage和KL Penalty共同作用既鼓励模型选择更好的动作又确保更新过程稳定可靠。
举例说明
假设我们训练一个机器人走迷宫 Advantage机器人发现“向右转”比“向左转”更容易找到出口于是Advantage函数会给“向右转”一个正的值鼓励策略更倾向于选择“向右转”。 KL Penalty为了防止策略突然变得只选择“向右转”而忽略其他可能性KL Penalty会限制策略的变化幅度确保策略更新是平滑的。
总结 Advantage优势函数衡量某个动作比平均表现好多少用于指导策略更新。 KL PenaltyKL散度惩罚限制策略更新的幅度确保训练过程的稳定性。 群体相对策略优化GRPO
GRPO 是一种在线学习算法online learning algorithm这意味着它通过使用训练过程中由训练模型自身生成的数据来迭代改进。GRPO 的目标直觉是最大化生成补全completions的优势函数advantage同时确保模型保持在参考策略reference policy附近。
其目标函数为 J GRPO ( θ ) E q ∼ P ( Q ) , { o i } i 1 G ∼ π old ( O ∣ q ) [ 1 G ∑ i 1 G 1 ∣ o i ∣ ∑ t 1 ∣ o i ∣ ( r i , t ( θ ) A ^ i , t − β D KL ( π θ ∣ ∣ π ref ) ) ] J_{\text{GRPO}}(\theta) \mathbb{E}_{q \sim P(Q), \{o_i\}_{i1}^G \sim \pi_{\text{old}}(O|q)} \left[ \frac{1}{G} \sum_{i1}^G \frac{1}{|o_i|} \sum_{t1}^{|o_i|} \left( r_{i,t}(\theta) \hat{A}_{i,t} - \beta D_{\text{KL}}(\pi_\theta || \pi_{\text{ref}}) \right) \right] JGRPO(θ)Eq∼P(Q),{oi}i1G∼πold(O∣q) G1i1∑G∣oi∣1t1∑∣oi∣(ri,t(θ)A^i,t−βDKL(πθ∣∣πref)) 为了理解 GRPO 的工作原理可以将其分解为四个主要步骤 生成补全Generating completions 计算优势值Computing the advantage 估计KL散度Estimating the KL divergence 计算损失Computing the loss
1. 生成补全Generating completions
在每一个训练步骤中我们从提示prompts中采样一个批次batch并为每个提示生成一组 G G G 个补全completions记为 o i o_i oi。
2. 计算优势值Computing the advantage
对于每一个 G G G 序列使用奖励模型reward model计算其奖励reward。为了与奖励模型的比较性质保持一致——通常奖励模型是基于同一问题的输出之间的比较数据集进行训练的——优势的计算反映了这些相对比较。其归一化公式如下 A ^ i , t r i − mean ( r ) std ( r ) \hat{A}_{i,t} \frac{r_i - \text{mean}(\mathbf{r})}{\text{std}(\mathbf{r})} A^i,tstd(r)ri−mean(r)
这种方法赋予了该方法其名称群体相对策略优化Group Relative Policy Optimization, GRPO
GRPO通过优化PPO算法解决了计算优势值时需要同时依赖奖励模型reward model和价值模型value model的问题成功移除了value model价值模型显著降低了推理时的内存占用和时间开销。**Advantage优势值**的核心价值在于为模型输出提供更精准的评估不仅衡量答案的绝对质量还通过相对比较与其他回答的对比来更全面地定位其优劣。
3. 估计KL散度Estimating the KL divergence
在实际算法实现中直接计算KL散度可能会面临一些挑战
计算复杂度高KL散度的定义涉及对两个概率分布的对数比值的期望计算。对于复杂的策略分布直接计算KL散度可能需要大量的计算资源数值稳定性在实际计算中直接计算KL散度可能会遇到数值不稳定的问题尤其是当两个策略的概率分布非常接近时对数比值可能会趋近于零或无穷大。近似器可以通过引入一些数值稳定性的技巧如截断或平滑来避免这些问题在线学习在强化学习中策略通常需要在每一步或每几步更新一次。如果每次更新都需要精确计算KL散度可能会导致训练过程变得非常缓慢。近似器可以快速估计KL散度从而支持在线学习和实时更新。
Schulman et al. (2020) 提出的近似器可以根据当前策略和参考策略的差异动态调整估计的精度从而在保证计算效率的同时尽可能减少估计误差其定义如下 D KL [ π θ ∥ π ref ] π ref ( o i , t ∣ q , o i , t ) π θ ( o i , t ∣ q , o i , t ) − log π ref ( o i , t ∣ q , o i , t ) π θ ( o i , t ∣ q , o i , t ) − 1 \mathbb{D}_{\text{KL}}\left[\pi_\theta \|\pi_{\text{ref}}\right] \frac{\pi_{\text{ref}}(o_{i,t} \mid q, o_{i,t})}{\pi_\theta(o_{i,t} \mid q, o_{i,t})} - \log \frac{\pi_{\text{ref}}(o_{i,t} \mid q, o_{i,t})}{\pi_\theta(o_{i,t} \mid q, o_{i,t})} - 1 DKL[πθ∥πref]πθ(oi,t∣q,oi,t)πref(oi,t∣q,oi,t)−logπθ(oi,t∣q,oi,t)πref(oi,t∣q,oi,t)−1
这个近似器的核心思想是通过对当前策略和参考策略的概率比值的简单变换来估计KL散度。具体来说
第一项 π ref ( o i , t ∣ q , o i , t ) π θ ( o i , t ∣ q , o i , t ) \frac{\pi_{\text{ref}}(o_{i,t} \mid q, o_{i,t})}{\pi_\theta(o_{i,t} \mid q, o_{i,t})} πθ(oi,t∣q,oi,t)πref(oi,t∣q,oi,t) 是参考策略与当前策略的概率比值。第二项 log π ref ( o i , t ∣ q , o i , t ) π θ ( o i , t ∣ q , o i , t ) \log \frac{\pi_{\text{ref}}(o_{i,t} \mid q, o_{i,t})}{\pi_\theta(o_{i,t} \mid q, o_{i,t})} logπθ(oi,t∣q,oi,t)πref(oi,t∣q,oi,t) 是对数概率比值。第三项 − 1 -1 −1 是一个常数项用于调整近似器的偏差。
这个近似器的优势在于它只需要计算当前策略和参考策略的概率比值而不需要直接计算KL散度的积分或期望。因此它可以在保证一定精度的同时显著降低计算复杂度。
近似器的直观理解
这个近似器的设计灵感来自于泰勒展开。KL散度可以看作是两个分布之间的某种“距离”而这个近似器通过一阶或二阶近似来估计这个距离。具体来说
当 π θ \pi_\theta πθ 和 π ref \pi_{\text{ref}} πref 非常接近时 π ref π θ ≈ 1 \frac{\pi_{\text{ref}}}{\pi_\theta} \approx 1 πθπref≈1此时 log π ref π θ ≈ 0 \log \frac{\pi_{\text{ref}}}{\pi_\theta} \approx 0 logπθπref≈0近似器的值趋近于零符合KL散度的性质。当 π θ \pi_\theta πθ 和 π ref \pi_{\text{ref}} πref 差异较大时近似器会给出一个较大的正值反映出两个分布之间的差异。
4. 计算损失Computing the loss
这一步的目标是最大化优势同时确保模型保持在参考策略附近。因此损失定义如下 L GRPO ( θ ) − 1 G ∑ i 1 G 1 ∣ o i ∣ ∑ t 1 ∣ o i ∣ [ π θ ( o i , t ∣ q , o i , t ) [ π θ ( o i , t ∣ q , o i , t ) ] no grad A ^ i , t − β D KL [ π θ ∥ π ref ] ] \mathcal{L}_{\text{GRPO}}(\theta) -\frac{1}{G} \sum_{i1}^G \frac{1}{|o_i|} \sum_{t1}^{|o_i|} \left[ \frac{\pi_\theta(o_{i,t} \mid q, o_{i, t})}{\left[\pi_\theta(o_{i,t} \mid q, o_{i, t})\right]_{\text{no grad}}} \hat{A}_{i,t} - \beta \mathbb{D}_{\text{KL}}\left[\pi_\theta \| \pi_{\text{ref}}\right] \right] LGRPO(θ)−G1i1∑G∣oi∣1t1∑∣oi∣[[πθ(oi,t∣q,oi,t)]no gradπθ(oi,t∣q,oi,t)A^i,t−βDKL[πθ∥πref]]
其中第一项表示缩放后的优势第二项通过KL散度惩罚与参考策略的偏离。
在原始论文中该公式被推广为在每次生成后通过利用**裁剪替代目标clipped surrogate objective**进行多次更新 L GRPO ( θ ) − 1 G ∑ i 1 G 1 ∣ o i ∣ ∑ t 1 ∣ o i ∣ [ min ( π θ ( o i , t ∣ q , o i , t ) π θ old ( o i , t ∣ q , o i , t ) A ^ i , t , clip ( π θ ( o i , t ∣ q , o i , t ) π θ old ( o i , t ∣ q , o i , t ) , 1 − ϵ , 1 ϵ ) A ^ i , t ) − β D KL [ π θ ∥ π ref ] ] \mathcal{L}_{\text{GRPO}}(\theta) - \frac{1}{G} \sum_{i1}^G \frac{1}{|o_i|} \sum_{t1}^{|o_i|} \left[ \min \left( \frac{\pi_\theta(o_{i,t} \mid q, o_{i, t})}{\pi_{\theta_{\text{old}}}(o_{i,t} \mid q, o_{i, t})} \hat{A}_{i,t}, \, \text{clip}\left( \frac{\pi_\theta(o_{i,t} \mid q, o_{i, t})}{\pi_{\theta_{\text{old}}}(o_{i,t} \mid q, o_{i, t})}, 1 - \epsilon, 1 \epsilon \right) \hat{A}_{i,t} \right) - \beta \mathbb{D}_{\text{KL}}\left[\pi_\theta \| \pi_{\text{ref}}\right] \right] LGRPO(θ)−G1i1∑G∣oi∣1t1∑∣oi∣[min(πθold(oi,t∣q,oi,t)πθ(oi,t∣q,oi,t)A^i,t,clip(πθold(oi,t∣q,oi,t)πθ(oi,t∣q,oi,t),1−ϵ,1ϵ)A^i,t)−βDKL[πθ∥πref]]
其中 clip ( ⋅ , 1 − ϵ , 1 ϵ ) \text{clip}(\cdot, 1 - \epsilon, 1 \epsilon) clip(⋅,1−ϵ,1ϵ) 通过将策略比率限制在 1 − ϵ 1 - \epsilon 1−ϵ 和 1 ϵ 1 \epsilon 1ϵ 之间确保更新不会过度偏离参考策略。
在很多代码实现比如Huggingface的TRL中与原始论文一样每次生成只进行一次更新因此可以将损失简化为第一种形式。
总结
GRPO通过优化PPO算法移除了价值模型降低了计算开销同时利用群体相对优势函数和KL散度惩罚确保策略更新既高效又稳定。
想象一下你是个销售员这个月业绩10万块PPO算法就像个精明的老会计拿着算盘噼里啪啦一顿算考虑市场行情、产品类型最后得出结论“嗯这10万还算靠谱但GAE一算发现你的优势值还不够高还得再加把劲啊”
而GRPO呢就像老板直接搞了个“内卷大赛”把所有销售员拉到一个群里每天晒业绩“你10万他15万她20万……”老板还时不时发个红包刺激大家继续卷。你的10万块在群里瞬间被淹没老板摇摇头“你这水平还得加把劲啊”
GRPO这招绝了它把PPO的“算盘”扔了省了不少计算功夫直接搞“内卷PK”用KL散度惩罚来确保大家别躺平。这样一来策略更新既快又稳老板再也不用担心有人摸鱼了毕竟大家都在拼命卷谁敢松懈
总结一下PPO是“单打独斗看实力”GRPO是“内卷大赛拼到死”最后GRPO还省了算盘钱老板笑得合不拢嘴而我们只能默默加班继续卷。