PPO 论文链接
DPO 论文链接
GRPO 论文链接
DAPO 论文链接
Keywords:PPO、DPO、GRPO、DAPO、RLHF
PPO# 监督学习是在固定数据分布 上进行函数拟合,而强化学习是在自己诱导的数据分布 上优化奖励。
因此当策略改变,会导致数据分布发生变化,我们必须控制每次策略更新的幅度 ,这也是 RL 更难稳定的原因。
RL 的目标是最大化期望累积回报,公式可以表示为:
J ( θ ) = E τ ∼ π θ [ R ( τ ) ] J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ R(\tau) \right] J ( θ ) = E τ ∼ π θ [ R ( τ ) ] 由于目标中的期望依赖于由策略 π θ \pi_\theta π θ 诱导的离散采样过程,由于其离散特性,无法直接通过标准反向传播优化,因此需要采用策略梯度方法 。
策略梯度方法通过对数似然技巧 (log-likelihood trick),将目标函数的梯度变换为:
∇ θ J ( θ ) = E s t , a t ∼ π θ [ ∇ θ log π θ ( a t ∣ s t ) A ^ t ] \nabla_\theta J(\theta) = \mathbb{E}_{s_t,a_t \sim \pi_\theta} \left[ \nabla_\theta \log \pi_\theta(a_t|s_t)\, \hat{A}_t \right] ∇ θ J ( θ ) = E s t , a t ∼ π θ [ ∇ θ log π θ ( a t ∣ s t ) A ^ t ] PPO 是基于 TRPO 的改进,TRPO 就是一种策略梯度方法,它的公式如下:
maximize θ E ^ t [ π θ ( a t ∣ s t ) π θ old ( a t ∣ s t ) A ^ t ] \underset{\theta}{\text{maximize}} \quad \hat{\mathbb{E}}_t \left[ \frac{\pi_\theta(a_t | s_t)}{\pi_{\theta_{\text{old}}}(a_t | s_t)} \hat{A}_t \right] θ maximize E ^ t [ π θ old ( a t ∣ s t ) π θ ( a t ∣ s t ) A ^ t ] subject to E ^ t [ KL [ π θ old ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t ) ] ] ≤ δ \text{subject to} \quad \hat{\mathbb{E}}_t \left[ \text{KL}[\pi_{\theta_{\text{old}}}(\cdot | s_t), \pi_\theta(\cdot | s_t)] \right] \le \delta subject to E ^ t [ KL [ π θ old ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t )] ] ≤ δ TRPO 是对目标函数的梯度进行局部近似,并引入信任域 (Trust Region) 约束,通过限制新旧策略之间的 KL 散度 ,避免一次更新导致策略发生剧烈变化。但实际实现中需要运用二阶优化方法,带来了大量额外计算。
为了避免 TRPO 复杂的二阶优化,PPO 的作者提出了两种一阶优化版本:一种通过 Clip 机制 限制更新幅度 (PPO-Clip),另一种通过 KL 惩罚约束新旧策略之间的差异 (PPO-Penalty),目标函数分别如下:
L C L I P ( θ ) = E ^ t [ min ( r t ( θ ) A ^ t , clip ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ t ) ] L^{CLIP}(\theta) = \hat{\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] L C L I P ( θ ) = E ^ t [ min ( r t ( θ ) A ^ t , clip ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ t ) ] L K L P E N ( θ ) = E ^ t [ r t ( θ ) A ^ t − β KL [ π θ old ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t ) ] ] L^{KLPEN}(\theta) = \hat{\mathbb{E}}_t \left[ r_t(\theta) \hat{A}_t - \beta \text{KL}[\pi_{\theta_{\text{old}}}(\cdot|s_t), \pi_\theta(\cdot|s_t)] \right] L K L P E N ( θ ) = E ^ t [ r t ( θ ) A ^ t − β KL [ π θ old ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s 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)} r t ( θ ) = π θ old ( a t ∣ s t ) π θ ( a t ∣ s t ) 实验发现,PPO-Clip 能够达到与 TRPO 相当甚至更好的性能,而 PPO-Penalty 变体虽然已经通过动态调整惩罚系数 β \beta β 来避免超参数敏感问题,但整体表现仍不如 PPO-Clip,因此 PPO-Clip 后来被广泛采用。
for RLHF#
实际在 LLM 的 RLHF 训练中,PPO 通常会被扩展为由 Policy Model (Actor)、Reference Model、Reward Model 和 Value Model (Critic) 组成的训练框架,完整训练流程可以参考知乎链接 ,以下是我自己的概括和补充:
先复制一份 SFT 之后的 Policy Model 作为 Reference Model,然后用人类偏好数据离线训练 Reward Model,这两个 Model 在接下来的训练过程中完全固定。
对 Policy Model 进行采样得到一个 rollout batch,然后切分成多个 mini_batch,每次取一个出来用作梯度更新。
对一次梯度更新,由 Reward Model 的结果和对比 Reference Model 计算出的 KL penalty,得到最终 reward,再以 Value Model 为 baseline 通过 GAE 得到 advantage。然后对 Policy Model 和 Value Model 进行梯度下降更新,重复多个 epoch 后再次采样,并更新 θ o l d \theta_{old} θ o l d 。
值得一提的是 GAE 的公式:
A t G A E ( γ , λ ) = ∑ l = 0 ∞ ( γ λ ) l δ t + l A_t^{GAE(\gamma,\lambda)} = \sum_{l=0}^{\infty} (\gamma\lambda)^l \delta_{t+l} A t G A E ( γ , λ ) = l = 0 ∑ ∞ ( γ λ ) l δ t + l 其中
δ t = r t + γ V ( s t + 1 ) − V ( s t ) \delta_t = r_t + \gamma V(s_{t+1}) - V(s_t) δ t = r t + γ V ( s t + 1 ) − V ( s t ) 常用的参数大概是 γ = 0.99 ∼ 1.0 \gamma=0.99\sim1.0 γ = 0.99 ∼ 1.0 ,λ ≈ 0.95 \lambda\approx0.95 λ ≈ 0.95 。
DPO# PPO 的缺点在于训练时需要同时维护四个模型,这带来了巨大的硬件门槛和训练成本,而 DPO 则选择了一条完全不同的路线。
DPO 完全舍弃了 Reward Model 和 Value Model,直接用偏好数据优化模型 ,无需在线采样,因此 DPO 更像是一种隐式的强化学习。
我们先回顾一下 RLHF 的优化目标:
max π θ E x ∼ D , y ∼ π θ ( y ∣ x ) [ r ϕ ( x , y ) ] − β D KL [ π θ ( y ∣ x ) ∥ π ref ( y ∣ x ) ] \max_{\pi_\theta} \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi_\theta(y|x)} \left[ r_\phi(x, y) \right] - \beta \mathbb{D}_{\text{KL}} \left[ \pi_\theta(y|x) \parallel \pi_{\text{ref}}(y|x) \right] π θ max E x ∼ D , y ∼ π θ ( y ∣ x ) [ r ϕ ( x , y ) ] − β D KL [ π θ ( y ∣ x ) ∥ π ref ( y ∣ x ) ] DPO 对优化目标进行了数学推导,先将其转化为等价的求和形式:
∑ y π ( y ∣ x ) r ( x , y ) − β ∑ y π ( y ∣ x ) log π ( y ∣ x ) π r e f ( y ∣ x ) \sum_y \pi(y|x) r(x,y) - \beta \sum_y \pi(y|x) \log \frac{\pi(y|x)}{\pi_{ref}(y|x)} y ∑ π ( y ∣ x ) r ( x , y ) − β y ∑ π ( y ∣ x ) log π r e f ( y ∣ x ) π ( y ∣ x ) 事实上经过运算可以直接表示出最优策略 π r ( y ∣ x ) \pi_r(y|x) π r ( y ∣ x ) ,对固定的 x x x ,Z ( x ) Z(x) Z ( x ) 可以视作归一化常数:
π ∗ ( y ∣ x ) = 1 Z ( x ) π r e f ( y ∣ x ) exp ( 1 β r ( x , y ) ) \pi^*(y|x) = \frac{1}{Z(x)} \pi_{ref}(y|x) \exp\left(\frac{1}{\beta} r(x,y)\right) π ∗ ( y ∣ x ) = Z ( x ) 1 π r e f ( y ∣ x ) exp ( β 1 r ( x , y ) ) Z ( x ) = ∑ y π r e f ( y ∣ x ) exp ( 1 β r ( x , y ) ) Z(x) = \sum_y \pi_{ref}(y|x) \exp\left(\frac{1}{\beta} r(x,y)\right) Z ( x ) = y ∑ π r e f ( y ∣ x ) exp ( β 1 r ( x , y ) ) 因此可以反推出奖励函数的公式:
r ( x , y ) = β log π ∗ ( y ∣ x ) π r e f ( y ∣ x ) + β log Z ( x ) r(x,y) = \beta \log \frac{\pi^*(y|x)}{\pi_{ref}(y|x)} + \beta \log Z(x) r ( x , y ) = β log π r e f ( y ∣ x ) π ∗ ( y ∣ x ) + β log Z ( x ) 这也是 DPO 核心观点的来源,如果我们把策略模型本身看成隐式奖励模型 ,通过推广定义任意策略 π θ \pi_\theta π θ 的隐式奖励:
r θ ( x , y ) = β log π θ ( y ∣ x ) π ref ( y ∣ x ) r_{\theta}(x,y)
= \beta \log \frac{\pi_\theta(y|x)}{\pi_{\text{ref}}(y|x)} r θ ( x , y ) = β log π ref ( y ∣ x ) π θ ( y ∣ x ) 那么我们就可以直接用偏好对训练策略模型:
L DPO ( θ ) = − E ( x , y w , y l ) ∼ D [ log σ ( β ( log π θ ( y w ∣ x ) π ref ( y w ∣ x ) − log π θ ( y l ∣ x ) π ref ( y l ∣ x ) ) ) ] . \mathcal{L}_{\text{DPO}}(\theta) = -\mathbb{E}_{(x,y_w,y_l)\sim \mathcal{D}} \left[ \log \sigma \Bigl( \beta \Bigl( \log \frac{\pi_\theta(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \log \frac{\pi_\theta(y_l|x)}{\pi_{\text{ref}}(y_l|x)} \Bigr) \Bigr) \right]. L DPO ( θ ) = − E ( x , y w , y l ) ∼ D [ log σ ( β ( log π ref ( y w ∣ x ) π θ ( y w ∣ x ) − log π ref ( y l ∣ x ) π θ ( y l ∣ x ) ) ) ] . 相比 PPO,DPO 不需要 Reward Model、Value Model 和在线采样过程,因此训练更加稳定 ,且计算成本更低,这让 DPO 成为了工业界的主流对齐方法。
不过 DPO 也有边界,因为是离线方法,无法在线探索出新的高质量行为。
而且 DPO 对数据噪声很敏感 ,因为它直接将偏好对作为训练信号,这对数据构造提出了较高要求。
GRPO# GRPO 是基于 PPO 的改进,它去掉提供 baseline 以降低 advantage 估计的方差的 Value Model (Critic),直接从同一个 prompt 的一组回答中构造 baseline。
首先我们来看 GRPO 是如何计算 advantage:
A ^ i , t = A ^ i = r i − mean ( r ) std ( r ) = r i − 1 G ∑ j = 1 G r j 1 G ∑ j = 1 G ( r j − mean ( r ) ) 2 + ϵ \hat{A}_{i,t} = \hat{A}_i = \frac{r_i - \text{mean}(\mathbf{r})}{\text{std}(\mathbf{r})} = \frac{r_i - \frac{1}{G}\sum_{j=1}^G r_j}{\sqrt{\frac{1}{G}\sum_{j=1}^G (r_j - \text{mean}(\mathbf{r}))^2 + \epsilon}} A ^ i , t = A ^ i = std ( r ) r i − mean ( r ) = G 1 ∑ j = 1 G ( r j − mean ( r ) ) 2 + ϵ r i − G 1 ∑ j = 1 G r j 不同于 PPO 的逐 token 计算 advantage (A t = R t − V ( s t ) A_t=R_t−V(s_t) A t = R t − V ( s t ) ),GRPO 一个回答的所有 token 共用一个 advantage。
GRPO 的 baseline 是当前 prompt 生成的一组回答的组内平均奖励 ,而不是一个额外训练出来的 value function。
再看 GRPO 的目标函数:
J G R P O ( θ ) = E [ q ∼ D , { o i } i = 1 G ∼ π θ o l d ( ⋅ ∣ q ) ] 1 G ∑ i = 1 G 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ { min [ π θ ( o i , t ∣ q , o i , < t ) π θ o l d ( o i , t ∣ q , o i , < t ) A ^ i , t , clip ( π θ ( o i , t ∣ q , o i , < t ) π θ o l d ( o i , t ∣ q , o i , < t ) , 1 − ε , 1 + ε ) A ^ i , t ] − β D K L ( π θ ∣ ∣ π r e f ) } J_{GRPO}(\theta) = \mathbb{E} \left[ q \sim \mathcal{D}, \{o_i\}_{i=1}^G \sim \pi_{\theta_{old}}(\cdot|q) \right] \frac{1}{G} \sum_{i=1}^G \frac{1}{|o_i|} \sum_{t=1}^{|o_i|} \left\{ \min \left[ \frac{\pi_\theta(o_{i,t}|q, o_{i,<t})}{\pi_{\theta_{old}}(o_{i,t}|q, o_{i,<t})} \hat{A}_{i,t}, \text{clip} \left( \frac{\pi_\theta(o_{i,t}|q, o_{i,<t})}{\pi_{\theta_{old}}(o_{i,t}|q, o_{i,<t})}, 1-\varepsilon, 1+\varepsilon \right) \hat{A}_{i,t} \right] - \beta D_{KL}(\pi_\theta || \pi_{ref}) \right\} J GR P O ( θ ) = E [ q ∼ D , { o i } i = 1 G ∼ π θ o l d ( ⋅ ∣ q ) ] G 1 i = 1 ∑ G ∣ o i ∣ 1 t = 1 ∑ ∣ o i ∣ { min [ π θ o l d ( o i , t ∣ q , o i , < t ) π θ ( o i , t ∣ q , o i , < t ) A ^ i , t , clip ( π θ o l d ( o i , t ∣ q , o i , < t ) π θ ( o i , t ∣ q , o i , < t ) , 1 − ε , 1 + ε ) A ^ i , t ] − β D K L ( π θ ∣∣ π r e f ) } 可以理解成让策略在给定 prompt 下,把概率质量从低质量回答转移到高质量回答上。
需要注意的是 KL 散度正则化需要直接加在 Loss 上,防止污染对 A ^ i , t \hat{A}_{i,t} A ^ i , t 的计算。并且在 KL 项的计算上用了无偏估计器 ,公式如下:
D K L ( π θ ∣ ∣ π r e f ) = π r e f ( o i , t ∣ q , o i , < t ) π θ ( o i , t ∣ q , o i , < t ) − log π r e f ( o i , t ∣ q , o i , < t ) π θ ( o i , t ∣ q , o i , < t ) − 1 D_{KL}(\pi_\theta || \pi_{ref}) = \frac{\pi_{ref}(o_{i,t}|q, o_{i,<t})}{\pi_\theta(o_{i,t}|q, o_{i,<t})} - \log \frac{\pi_{ref}(o_{i,t}|q, o_{i,<t})}{\pi_\theta(o_{i,t}|q, o_{i,<t})} - 1 D K L ( π θ ∣∣ π r e f ) = π θ ( o i , t ∣ q , o i , < t ) π r e f ( o i , t ∣ q , o i , < t ) − log π θ ( o i , t ∣ q , o i , < t ) π r e f ( o i , t ∣ q , o i , < t ) − 1 采用该无偏估计器是因为真实 KL 需要对整个词表进行期望计算,在大规模语言模型中无法直接精确求解,只能基于采样 token 进行近似。该形式仅依赖当前生成的 token 即可计算,同时保持对真实 KL 的无偏性,从而在不引入额外计算开销的情况下稳定约束策略更新幅度。
Insights# GRPO 的论文中还提到了几个 insights,首先是范式的统一,它提出主流后训练方法对参数 θ \theta θ 的优化公式都可以表示为通用梯度公式:
∇ θ J A ( θ ) = E ( q , o ) ∼ D [ 1 ∣ o ∣ ∑ t = 1 ∣ o ∣ G C A ( q , o , t , π r f ) ⋅ ∇ θ log π θ ( o t ∣ q , o < t ) ] \nabla_\theta J_{\mathcal{A}}(\theta) = \mathbb{E}_{(q, o) \sim \mathcal{D}} \left[ \frac{1}{|o|} \sum_{t=1}^{|o|} \mathbf{GC}_{\mathcal{A}}(q, o, t, \pi_{rf}) \cdot \nabla_\theta \log \pi_\theta(o_t | q, o_{<t}) \right] ∇ θ J A ( θ ) = E ( q , o ) ∼ D ∣ o ∣ 1 t = 1 ∑ ∣ o ∣ GC A ( q , o , t , π r f ) ⋅ ∇ θ log π θ ( o t ∣ q , o < t ) 对于每个方法可以找到以下变量:
Data Source D \mathcal{D} D :决定了训练数据的来源
Reward Function π r f \pi_{rf} π r f :训练奖惩信号的提供者
Algorithm A \mathcal{A} A :负责将数据和奖励转化为梯度系数 (Gradient Coefficient, G C \mathbf{GC} GC ),它决定了对某个 token 概率进行放大或惩罚的力度
论文分析了基于这种统一范式的几种代表性方法,得到以下表格:
我认为这种控制变量的视角会让研究的思路变得更清晰,是值得记录的内容。
第二个是关于强化学习的本质,论文对比了 Instruct 模型和 RL 模型在 GSM8K 和 MATH 数据集上的两组指标:Pass@K 和 Maj@K 准确率。
强化学习提升了 Maj@K 的性能,但对 Pass@K 的性能没有显著提升,这说明强化学习并没有提升模型的绝对数学推理能力,而是优化了模型的策略分布,使原本偶尔出现的正确推理路径成为高概率输出。
第三个是关于后续的优化方向,我们可以从之前提到的三个变量出发:
Data Source:不局限于在 SFT 数据集上训练,还可以引入域外问题;同时也可以引入更优的采样策略,如树搜索策略。
Reward Function:如何提升奖励模型在域外问题的泛化能力,如何让奖励模型能够表达自身的不确定性,如何更低成本更高效率建立高质量过程奖励模型,这些都是需要克服的痛点。
Algorithm:目前的强化学习都百分之百信任奖励信号,但是复杂的任务中奖励任务必然存在噪声,因此可能需要能抵御噪声奖励的鲁棒 RL 算法。
DAPO# GRPO 算法相比 PPO 大幅降低了显存消耗,且更适合数学、代码等可验证任务,不过在训练过程中存在一些瓶颈,DAPO 在 GRPO 的基础上,进行了一些优化。
首先关注 DAPO 的目标函数和约束条件:
J D A P O ( θ ) = E ( q , a ) ∼ D , { o i } i = 1 G ∼ π θ o l d ( ⋅ ∣ q ) [ 1 ∑ i = 1 G ∣ o i ∣ ∑ i = 1 G ∑ t = 1 ∣ o i ∣ min ( r i , t ( θ ) A ^ i , t , clip ( r i , t ( θ ) , 1 − ϵ l o w , 1 + ϵ h i g h ) A ^ i , t ) ] \mathcal{J}_{DAPO}(\theta)=\mathbb{E}_{(q,a)\sim\mathcal{D},\{o_{i}\}_{i=1}^{G}\sim\pi_{\theta_{old}}(\cdot|q)} \left[ \frac{1}{\sum_{i=1}^{G}|o_{i}|}\sum_{i=1}^{G}\sum_{t=1}^{|o_{i}|}\min\left(r_{i,t}(\theta)\hat{A}_{i,t},\text{clip}(r_{i,t}(\theta),1-\epsilon_{low},1+\epsilon_{high})\hat{A}_{i,t}\right) \right] J D A P O ( θ ) = E ( q , a ) ∼ D , { o i } i = 1 G ∼ π θ o l d ( ⋅ ∣ q ) ∑ i = 1 G ∣ o i ∣ 1 i = 1 ∑ G t = 1 ∑ ∣ o i ∣ min ( r i , t ( θ ) A ^ i , t , clip ( r i , t ( θ ) , 1 − ϵ l o w , 1 + ϵ hi g h ) A ^ i , t ) subject to 0 < ∣ { o i ∣ is_equivalent ( a , o i ) } ∣ < G \text{subject to} \quad 0<|\{o_{i} \mid \text{is\_equivalent}(a,o_{i})\}|<G subject to 0 < ∣ { o i ∣ is_equivalent ( a , o i )} ∣ < G 根据上面的公式,可见主要的优化有以下四点。
Clip-Higher# GRPO 使用的裁剪区间为 [ 1 − ϵ , 1 + ϵ ] [1-\epsilon,1+\epsilon] [ 1 − ϵ , 1 + ϵ ] ,然而被上限裁剪的 token 大多数是低概率 token,这种裁剪会限制低概率成长性 token 的探索空间。
因此 DAPO 放宽了正方向的上界,可以参考目标函数的公式,其中ϵ l o w = 0.2 \epsilon_{low}=0.2 ϵ l o w = 0.2 、ϵ h i g h = 0.28 \epsilon_{high}=0.28 ϵ hi g h = 0.28 。
Dynamic Sampling# GRPO 在某些 prompt 下很容易采出全对或全错的一组回答,从而计算出来的组内优势为 0,策略梯度也为 0,这会导致整个 batch 内实际能够提供有效训练信号的样本数量减少,降低了采样的效率。
因此 DAPO 在训练前直接过滤掉回答全对和全错的关键词,这就是 DAPO 的约束条件。
Token-Level Policy Gradient Loss# GRPO 的目标函数对每条回答先做 token 平均,再跨回答平均,这导致长回答对整体 loss 的贡献被严重低估:200 token 的回答权重只有 10 token 回答的 1/20。
这可能会稀释较长回答中单个推理 token 的损失权重,阻碍模型从高质量的长推理步骤中汲取有效模式,也会导致长回答中的错谬 token 无法被施加足够的惩罚。
因此 DAPO 将损失函数改为 token 级别的策略梯度损失,采用所有生成样本的 Token 总数之和作为归一化分母。
Overlong Reward Shaping# 在 RL 中通常设置最大学习长度,超出该长度的样本会被直接截断。如果对这些被截断的超长样本进行不合理的奖励设计,会引入剧烈的奖励噪声。
因此 DAPO 采用了平滑超长惩罚机制,在最大生成长度 L m a x L_{max} L ma x 之前预留一段缓冲区间 L c a c h e L_{cache} L c a c h e ,并根据实际生成的长度进行渐进式的柔性惩罚,公式如下:
R l e n g t h ( y ) = { 0 , ∣ y ∣ ≤ L m a x − L c a c h e − ∣ y ∣ − ( L m a x − L c a c h e ) L c a c h e , L m a x − L c a c h e < ∣ y ∣ ≤ L m a x − 1 , ∣ y ∣ > [ c i t e s t a r t ] L m a x R_{length}(y) = \begin{cases} 0, & |y|\le L_{max}-L_{cache} \\ -\frac{|y| - (L_{max} - L_{cache})}{L_{cache}}, & L_{max}-L_{cache}<|y|\le L_{max} \\ -1, & |y| > [cite_start]L_{max} \end{cases} R l e n g t h ( y ) = ⎩ ⎨ ⎧ 0 , − L c a c h e ∣ y ∣ − ( L ma x − L c a c h e ) , − 1 , ∣ y ∣ ≤ L ma x − L c a c h e L ma x − L c a c h e < ∣ y ∣ ≤ L ma x ∣ y ∣ > [ c i t e s t a r t ] L ma x 最终的综合奖励为:R f i n a l = R ( x , y ) + R l e n g t h ( y ) R_{final} = R(x,y) + R_{length}(y) R f ina l = R ( x , y ) + R l e n g t h ( y ) 。在缓冲区间内,回答越长,受到的负向惩罚越大 ,这引导模型学会简洁且正确的回答。