RLHF

什么是 RLHF?

基于人类反馈的强化学习(RLHF)是一种机器学习(ML)技术,它利用人类反馈来优化 ML 模型,从而更有效地进行自我学习。强化学习技术可训练软件做出可最大限度地提高回报的决策,使其结果更加准确。RLHF 将人类反馈纳入奖励功能,因此 ML 模型可以执行更符合人类目标、愿望和需求的任务。

RLHF流程

  1. 数据收集
  2. 监督微调 SFT
  3. 构建单独的奖励模型
  4. 使用基于奖励的模型优化语言模型

PPO

PPO(Proximal Policy Optimization,近端策略优化)是一种强化学习(Reinforcement Learning, RL)算法,属于策略梯度(Policy Gradient)方法的改进版本。其核心思想是通过限制策略更新的幅度,确保训练过程的稳定性,避免传统策略梯度方法中可能出现的剧烈波动或崩溃。

1. PPO 的核心原理

1.1 策略梯度方法的局限性

  • 传统策略梯度方法直接通过梯度上升更新策略,但更新步长过大可能导致策略性能急剧下降。
  • 需要大量样本和精细的超参数调整,训练不稳定

1.2 PPO 的创新

  • 重要性采样(Importance Sampling):利用旧策略(old policy)生成的样本,计算新策略(new policy)的梯度,提高数据利用率。
  • 裁剪(Clipping):限制新旧策略的差异,通过裁剪概率比率(probability ratio)确保更新幅度在可控范围内。
  • 自适应惩罚(Adaptive Penalty):通过KL散度约束,防止策略偏离初始策略太远。

2. PPO目标函数

LCLIP(θ)=Et[min(πθ(atst)πθold(atst))A^t,clip(min(πθ(atst)πθold(atst)),1ϵ,1+ϵ)A^t] L^{CLIP}(\theta) = \mathbb{E}_t [ \min(\frac{\pi_{\theta}(a_t | s_t)}{\pi_{\theta_{old}}(a_t | s_t)})\hat A_t, \text{clip}(\min(\frac{\pi_{\theta}(a_t | s_t)}{\pi_{\theta_{old}}(a_t | s_t)}), 1-\epsilon, 1+\epsilon)\hat A_t ]
  • πθ\pi_{\theta}:新策略(待优化的神经网络参数为θ)
  • πθold\pi_{\theta_{old}}:旧策略(更新前的策略)
  • A^t\hat A_t:优势函数(advantage function),衡量动作 αt\alpha_t 相对于平均表现的优劣。
  • ϵ\epsilon:裁剪阈值(例如0.2),限制策略更新幅度

3. PPO流程(以训练聊天机器人为例)

假设我们正在用PPO优化一个对话模型,使其生成更符合人类偏好的回答:

Step 1: 初始化

  • 策略模型(Policy Model): 一个预训练的对话模型(如GPT-2)
  • 奖励模型(Reward Model): 已训练好的模型,能够对回答的质量打分(例如根据人类反馈训练)
  • 旧策略(Old Policy): 初始策略模型的副本,用于生成参考样本

Step 2: 生成样本

  • 输入:”请解释什么是人工智能”
  • 策略模型生成回答A:“人工智能是模拟人类智能的技术。”(得分R=0.8)
  • 旧策略生成回答B:“人工智能是一种算法。”(得分R=0.3)

Step 3: 计算优势

  • 假设优势函数 A^t=R基线值\hat A_t=R-\text{基线值},这里基线值为0.5(通过其他方法估计)。
    • 回答A的优势:0.8−0.5=0.3
    • 回答B的优势:0.3−0.5=−0.2

Step 4: 计算损失

  • 计算新旧策略的概率比率(假设):

    • 回答 A:πθ(A)πθold(A)=1.2\frac{\pi_{\theta}(A)}{\pi_{\theta_{old}}(A)}=1.2
    • 回答 B:πθ(B)πθold(B)=0.8\frac{\pi_{\theta}(B)}{\pi_{\theta_{old}}(B)}=0.8
  • 应用裁剪(假设ϵ=0.2\epsilon=0.2):

    • 回答A:min(1.2×0.3,clip(1.2,0.8,1.2)×0.3)=min(0.36,0.36)=0.36\text{min}(1.2×0.3,\text{clip}(1.2,0.8,1.2)×0.3)=\text{min}(0.36,0.36)=0.36
    • 回答B:min(0.8×(0.2),clip(0.8,0.8,1.2)×(0.2))=min(0.16,0.16)=0.16\text{min}(0.8×(−0.2), \text{clip}(0.8,0.8,1.2)×(−0.2))=\text{min}(−0.16,−0.16)=−0.16
  • 总损失:L=0.360.16=0.2L=0.36−0.16=0.2

PPO-Clip的工作原理:

  • 当优势函数 At>0A_t>0 好动作):
    • 如果 πθ(atst)πθold(atst)>1+ϵ\frac{\pi_{\theta}(a_t | s_t)}{\pi_{\theta_{old}}(a_t | s_t)} > 1+\epsilon,说明新策略相对于旧策略,大幅度增加了好动作的概率,裁剪函数会将其限制在 ,防止策略更新过大,导致“过拟合”或者“震荡”。
    • 如果 πθ(atst)πθold(atst)1+ϵ\frac{\pi_{\theta}(a_t | s_t)}{\pi_{\theta_{old}}(a_t | s_t)} \leq 1 + \epsilon,则不裁剪,正常更新。
  • 当优势函数 At<0A_t<0 坏动作):
    • 如果 πθ(atst)πθold(atst)<1ϵ\frac{\pi_{\theta}(a_t | s_t)}{\pi_{\theta_{old}}(a_t | s_t)} < 1-\epsilon,说明新策略相对于旧策略,大幅度减少了坏动作的概率,裁剪函数会将其限制在 ,防止策略更新过大,导致“欠拟合”或者“震荡”。
    • 如果 πθ(atst)πθold(atst)1ϵ\frac{\pi_{\theta}(a_t | s_t)}{\pi_{\theta_{old}}(a_t | s_t)} \geq 1 - \epsilon,则不裁剪,正常更新。

Step 5: 更新策略

  • 通过梯度下降最小化损失,调整策略模型参数 θ\theta,使模型更倾向于生成类似回答A的高分回答。
  • 更新后,旧策略 πθold\pi_{\theta_{old}} 被替换为当前策略 πθ\pi_{\theta}

DPO

1. 为什么要提出DPO

  在之前,我们已经了解到基于人类反馈的强化学习RLHF分为三个阶段:全监督微调(SFT)、奖励模型(RM)、强化学习(PPO)。但是RLHF面临缺陷:RLHF 是一个复杂且经常不稳定的过程,首先拟合反映人类偏好的奖励模型,然后使用强化学习微调大型无监督 LM,以最大化这种估计奖励,而不会偏离原始模型太远。为解决这一问题,提出一个直接偏好优化 (DPO) 的新算法:通过利用奖励函数与最优策略之间的映射关系,证明这个受限的奖励最大化问题可以通过单阶段的策略训练来精确优化,本质上是在人类偏好数据上解决一个分类问题。DPO是稳定的、性能和计算成本轻量级的,无需拟合奖励模型,在微调期间从 LM 中采样,或执行显着的超参数调整。通过实验表明:DPO 进行微调超过了 RLHF 效果,并提高了摘要和单轮对话的响应质量。

2. 什么是DPO

DPO,一种基于人类偏好优化语言模型的新方法。与RLHF不同,DPO不依赖于明确的奖励建模或强化学习。它针对与RLHF相同的目标,但提供了一种更简单、更直接的培训方法。

DPO的工作原理:增加偏好样本的对数概率与减小非偏好样本响应的对数概率。它结合了动态加权机制,以避免仅使用概率比目标时遇到的模型退化问题。

DPO依赖于理论上的偏好模型,如Bradley-Terry模型,来测量奖励函数与经验偏好数据的对齐程度。与传统方法不同,传统方法使用偏好模型来训练奖励模型,然后基于该奖励模型训练策略,DPO直接根据策略定义偏好损失。给定一个关于模型响应的人类偏好数据集,DPO可以使用简单的二元交叉熵目标来优化策略,无需在训练过程中明确学习奖励函数或从策略中采样。

3. 数学公式

3.1 基础设定与目标函数

在传统RLHF中,自标是通过强化学习最大化奖励函数 r(x,y)r(x,y), 同时约束策略 πθ\pi_{\theta} 与参考模型 πref\pi_{ref} 的 KL 散度:

max Ex,yπθ[r(x,y)]βDKL(πθ(yx)πref(yx)) \text{max}~\mathbb{E}_{x,y \sim \pi_{\theta}} [r(x,y)]-\beta D_{KL}(\pi_{\theta}(y|x)||\pi_{ref}(y|x))

其中 β\beta 是平衡奖励与 KL 约束的超参数

3.2 引入 Bradley-Terry 偏好模型

假设人类偏好数据符合 Bradley-Terry 模型,即对于输入 xx,偏好回答 ywy_w 优于 yly_l 的概率为:
P(ym>ylx)=exp(r(x,yw))exp(r(x,yw))+exp(r(x,yl)) P(y_m > y_l | x) = \frac{\exp(r(x,y_w))}{\exp(r(x,y_w))+\exp(r(x,y_l))}

3.3 将奖励函数替换为策略概率比

DPO的关键创新点在于:将奖励函数 r(xy)r(x,y) 表达为策略模型与参考模型的概率比
r(x,y)=βlogπθ(yx)πref(yx) r(x,y)=\beta \log \frac{\pi_{\theta}(y|x)}{\pi_{ref}(y|x)}
这一步通过拉格朗日对偶性将原优化问题中的奖励与 KL 约束合并为一个显性表达式

3.4 代入偏好概率公式

r(x,y)r(x,y) 代入 Bradley-Terry 模型中,得到:
P(ym>ylx)=exp(βlogπθ(ywx)πref(ywx))exp(βlogπθ(ywx)πref(ywx))+exp(βlogπθ(ylx)πref(ylx))=11+exp(βlogπθ(ylx)πref(ylx)βlogπθ(ywx)πref(ywx)) \begin{align*} P(y_m > y_l | x) &= \frac{\exp(\beta \log \frac{\pi_{\theta}(y_w|x)}{\pi_{ref}(y_w|x)})}{\exp(\beta \log \frac{\pi_{\theta}(y_w|x)}{\pi_{ref}(y_w|x)})+\exp(\beta \log \frac{\pi_{\theta}(y_l|x)}{\pi_{ref}(y_l|x)})} \\ &=\frac{1}{1+\exp (\beta \log \frac{\pi_{\theta}(y_l|x)}{\pi_{ref}(y_l|x)} - \beta \log \frac{\pi_{\theta}(y_w|x)}{\pi_{ref}(y_w|x)})} \end{align*}

3.5 构建损失函数

通过最大化偏好数据的对数似然,定义损失函数:

maxLDPO=logσ(βlogπθ(ywx)πref(ywx)βlogπθ(ylx)πref(ylx)) \max L_{DPO} = - \log \sigma(\beta \log \frac{\pi_{\theta}(y_w|x)}{\pi_{ref}(y_w|x)} - \beta \log \frac{\pi_{\theta}(y_l|x)}{\pi_{ref}(y_l|x)})

其中 σ(x)=11+ez\sigma(x)=\frac{1}{1+e^{-z}} 是 sigmoid 函数。

GRPO

对比 PPO: PPO 中的值函数通常是一个与策略模型大小相当的模型,这带来了显著的内存和计算负担。此外,在 LLMs 的上下文中,值函数在训练过程中被用作优势计算中的 Baseline,但通常只有最后一个 token 会被奖励模型赋予奖励分数,这可能使得值函数的训练变得复杂。

为了解决这些问题,提出了 Group Relative Policy Optimization (GRPO),不再需要像PPO那样加入额外的价值函数近似,而是直接使用多个采样输出的平均奖励作为 Baseline,显著减少了训练资源的使用。

优化目标

对于每个问题 qq,GRPO 从旧策略 πθold\pi_{\theta_{old}} 中抽取一组输出 o1,o2,,oG{o_1, o_2, · · · · , o_G},然后通过最大化以下目标来优化策略模型 πθ\pi_{\theta}

JGRPO(θ)=E[qP(Q),{oi}i=1Gπθold(Oq)]=1Gi=1G(min(πθ(oiq)πθold(oiq)Ai,clip(πθ(oiq)πθold(oiq),1ϵ,1+ϵ)Ai)βDKL(πθπref))DKL(πθπref)=πref(oiq)πθ(oiq)logπref(oiq)πθ(oiq)1Ai=rimean({r1,r2,...,rG})std({r1,r2,...,rG}) \begin{align*} J_{GRPO}(\theta) &= \mathbb{E}[q \sim P(Q), \{o_i\}_{i=1}^G \sim \pi_{\theta_{old}}(O|q)] \\ &= \frac{1}{G} \sum_{i=1}^G \left(\min \left( \frac{\pi_{\theta}(o_i|q)}{\pi_{\theta_{old}}(o_i|q)} A_i, \text{clip}( \frac{\pi_{\theta}(o_i|q)}{\pi_{\theta_{old}}(o_i|q)} , 1-\epsilon, 1+\epsilon) A_i \right) - \beta \mathbb{D}_{KL} (\pi_{\theta} || \pi_{ref}) \right) \end{align*} \\ \mathbb{D}_{KL} (\pi_{\theta} || \pi_{ref}) = \frac{\pi_{ref}(o_i|q)}{\pi_{\theta}(o_i|q)} - \log \frac{\pi_{ref}(o_i|q)}{\pi_{\theta}(o_i|q)} - 1 \\ \\ A_i = \frac{r_i - \text{mean}(\{r_1, r_2, ..., r_G \})}{\text{std}(\{r_1, r_2, ..., r_G \})}

在 DeepSeek-R1 论文中,奖励函数规定为:

  • 准确率奖励:评估响应是否正确。例如,对于具有确定性结果的数学问题,模型需要以指定格式(在框内)提供最终答案,从而实现可靠的基于规则的正确性验证。同样,对于 LeetCode 问题,可以使用编译器根据预定义的测试用例生成反馈。

    我们使用 DeepSeek 求解数学问题时,最终总结部分会有框内的最终答案

  • 格式奖励: 评估输出的结果是否符合特定模板,该模型强制将其思考过程置于 ‘\‘ 和 ‘\<\think>‘ 标签之间。

    即使用 DeepSeek 时的思考过程


通俗来理解 PPO 和 GRPO 区别:

  • PPO: 每个同学单独考试,老师根据答案来评分,学生根据评分反馈来反思学习。

    同学=模型,老师=奖励模型,答案=人类偏好,评分=消耗算力

  • GRPO: 学生组成学习小组考试

    • 组奖励机制: 给整个小组打总体分(基于规则的评分,显著降低算力)
    • 组内比较: 学生比较组内方法的差异
    • 相对优势分析: 找出谁的方法最好
    • 协同改进: 各自调整方法,即保留自身特点,又保持组内成员共同进步

参考:一文通透GRPOGRPO教会DeepSeek R1高智商推理,但GRPO可能不完美且有偏见

PPO、DPO、GRPO 对比

优缺点分析

算法 核心机制 优势 缺点 应用场景
PPO 限制策略更新幅度(概率比裁剪) 稳定性高,通用性强 依赖奖励模型和评价模型 游戏AI、机器人控制、通用RL任务
DPO 直接利用偏好数据优化策略 省去奖励模型,数据直接拟合人类偏好 复杂任务效果有限 大模型对齐、对话系统优化
GRPO 组内动态基线 动态优势估计,适合复杂推理,输出多样性高 生成多候选答案耗时、倾向优化简单问题、对冗长错误回答的惩罚被稀释 数学推理优化、代码多样性生成

机制对比

维度 PPO DPO GRPO
核心机制 在线RL + 奖励模型 + Critic 离线偏好优化 + 参考策略约束 组内对比 + 动态基线 + 多候选生成
训练效率 低(需交替训练) 高(单阶段) 中(多候选生成增加计算)
稳定性 高(Clip + KL约束) 中(依赖数据质量) 中(存在长度/难度偏见)
适用场景 通用RL任务、复杂交互环境 人类偏好对齐、快速微调 复杂推理、资源受限场景
占用显存 高(需维护Critic) 中(无Critic但需多候选)

RLHF
https://guokent.github.io/deeplearning/RLHF/
作者
Kent
发布于
2025年3月25日
许可协议