OpenAI RLHF的理解

OpenAI RLHF的理解

1. RLHF 的优化目标

objective=E(x,y)∼DπθRLrθ(x,y)−βlog⁡πθ(y∣x)πref(y∣x)+γ Ex∼Dpretrainlog⁡πθRL(x) \text{objective} = \mathbb{E}{(x,y) \sim D{\pi_\theta^{RL}}} \left r_\\theta(x, y) - \\beta \\log \\frac{\\pi_\\theta(y \\mid x)}{\\pi_{\\text{ref}}(y \\mid x)} \\right + \gamma \, \mathbb{E}{x \sim D{\text{pretrain}}} \left \\log \\pi_\\theta\^{RL}(x) \\right objective=E(x,y)∼DπθRLrθ(x,y)−βlogπref(y∣x)πθ(y∣x)+γEx∼DpretrainlogπθRL(x)


2. 用 PPO-clip 来优化上述目标

arg⁡max⁡θ E(x,y)∼Dπoldmin⁡(πnew(y∣x)πold(y∣x)A,  clip ⁣(πnew(y∣x)πold(y∣x), 1−ε, 1+ε)A) \arg\max_{\theta} \, \mathbb{E}{(x,y) \sim D{\pi_{old}}} \left \\min \\left( \\frac{\\pi_{\\text{new}}(y \\mid x)}{\\pi_{\\text{old}}(y \\mid x)} A,\\; \\text{clip}\\!\\left( \\frac{\\pi_{\\text{new}}(y \\mid x)}{\\pi_{\\text{old}}(y \\mid x)},\\, 1-\\varepsilon,\\, 1+\\varepsilon \\right) A \\right) \\right argθmaxE(x,y)∼Dπoldmin(πold(y∣x)πnew(y∣x)A,clip(πold(y∣x)πnew(y∣x),1−ε,1+ε)A)


3. 为此需要计算如下变量

需要估计以下三个量:

  • πnew(y∣x)\pi_{\text{new}}(y \mid x)πnew(y∣x):当前策略在给定 xxx 下生成 yyy 的概率
  • πold(y∣x)\pi_{\text{old}}(y \mid x)πold(y∣x):旧策略在给定 xxx 下生成 yyy 的概率
  • AAA:优势函数(Advantage)

变量说明: 在上述表达式中,xxx 是用户 prompt,yyy 是生成的 token,π(y∣x)\pi(y \mid x)π(y∣x) 是在策略π\piπ 下prompt xxx 生成 yyy 的概率。

优势函数定义:

A=R−Value(x) A = R - \text{Value}(x) A=R−Value(x)

其中 Value\text{Value}Value 是一个神经网络结构(价值网络)。


4. 完整 RLHF 流程示例

用一个具体例子描述完整的 RLHF 流程:

变量 值
xxx(用户问) "如何减肥"
yyy(回答) "每天控制饮食并运动"
πθ(y∣x)\pi_\theta(y \mid x)πθ(y∣x) 当前策略下,已知 xxx生成yyy的概率 0.4
πSFT(y∣x)\pi_{SFT}(y \mid x)πSFT(y∣x) 当SFT模型下,已知 xxx生成yyy的概率 0.3
Reward Model 打分 rθ(x,y)=0.8r_\theta(x, y) = 0.8rθ(x,y)=0.8
价值网络打分 Value(x)=0.2\text{Value}(x) = 0.2Value(x)=0.2

计算 Advantage:

KL=log⁡πθ(y∣x)πSFT(y∣x) KL = \log \frac{\pi_{\theta}(y \mid x)}{\pi_{SFT}(y \mid x)} KL=logπSFT(y∣x)πθ(y∣x)

A=rθ(x,y)−β∗KL−Value(x) A = r_\theta(x, y) - \beta* KL -\text{Value}(x) A=rθ(x,y)−β∗KL−Value(x)

至此,πθ(y∣x)\pi_{\theta}(y \mid x)πθ(y∣x)、πSFT(y∣x)\pi_{\text{SFT}}(y \mid x)πSFT(y∣x) 以及 AAA 全部就绪,


结合 Advantage 引入到 PPO-clip 中的所有变量均已确定。其中初始时令:

πnew=π训练时候(y∣x) \pi_{\text{new}} = \pi_{\text{训练时候}}(y \mid x) πnew=π训练时候(y∣x)

πold=πrollout时模型(y∣x) \pi_{\text{old}} = \pi_{\text{rollout时模型}}(y \mid x) πold=πrollout时模型(y∣x)


5. 用工程语言描述 RLHF 的完整流程

涉及的模型

模型 作用 输入输出
Actor Model 训练目标模型,生成回复 x→Actoryx \xrightarrow{\text{Actor}} yxActor y,输出 P(y)P(y)P(y) 的概率分布
Reward Model 打分模型 (x,y)→Rewardr∼(0,1)(x, y) \xrightarrow{\text{Reward}} r \sim (0, 1)(x,y)Reward r∼(0,1)
Reference Model SFT 基准模型,用于计算 KL 散度 x→Refyx \xrightarrow{\text{Ref}} yxRef y,输出 P(y)P(y)P(y) 概率
Critic Model Value 价值网络,估计状态价值 x→CriticV∼(0,1)x \xrightarrow{\text{Critic}} V \sim (0, 1)xCritic V∼(0,1)
Pretrain Model OpenAI 的底层语言模型 ---

步骤

  1. 输入 prompt: "如何减肥"
  2. 通过 Actor Model 生成 response :"每天控制饮食并运动",得到 πθ(y∣x)\pi_{\theta}(y \mid x)πθ(y∣x)
  3. 用 Reward Model 打分 :(x,y)→Reward Modelr(x, y) \xrightarrow{\text{Reward Model}} r(x,y)Reward Model r
  4. 计算 KL 散度 :用 Reference Model 算出 rθ(x,y)r_\theta(x,y)rθ(x,y),用sft模型得到 πSFT(y∣x)\pi_{\text{SFT}}(y \mid x)πSFT(y∣x),按 OpenAI 方式计算:FinalReward=rθ(x,y)−β⋅KL ⁣(πθ∥πSFT)+LLM \text{FinalReward} = r_\theta(x,y) - \beta \cdot \text{KL}\!\left(\pi_\theta \| \pi_{\text{SFT}}\right) + \mathcal{L}_{\text{LM}}FinalReward=rθ(x,y)−β⋅KL(πθ∥πSFT)+LLM
  5. 用 Critic Model 估算 Value 值 :V=Critic(x)V = \text{Critic}(x)V=Critic(x)
  6. 计算优势函数 AAA :
    A=FinalReward−Critic Model 的值 A = \text{FinalReward} - \text{Critic Model 的值} A=FinalReward−Critic Model 的值
  7. 用 PPO-clip 更新策略 (loop):
    • πnew\pi_{\text{new}}πnew:训练时候一个epoch的更新后的模型,用这个模型得到的这个 token 的输出概率
    • πold\pi_{\text{old}}πold:Rollout时候的token输出概率

参考:

1 Ouyang, L., Wu, J., Jiang, X., Almeida, D., Wainwright, C. L., Mishkin, P., Zhang, C., Agarwal, S., Slama, K., Ray, A., Schulman, J., Hilton, J., Kelley, F., Miller, L., Simens, M., Askell, A., Welinder, P., Christiano, P., Leike, J., & Lowe, R. (2022). Training language models to follow instructions with human feedback. Advances in Neural Information Processing Systems, 35, 27730--27744. https://arxiv.org/abs/2203.02155

相关推荐
又过二十27 分钟前
Qwen-Image2.1游戏素材工坊:让角色真的走起来(三)
ai·aigc·comfyui·game·qwen-image
ServBay15 小时前
GPT-6.1 Terra 单价降了一半,修 bug 更省了吗?
gpt·chatgpt·aigc
Behavior16 小时前
16天,他用Opus 5.5把《小王子》做成3D游戏,书里的星球能逛了
aigc·unity3d·游戏开发
threerocks20 小时前
2026 深度盘点:我评估了 369 个 Claude/CodeX AI 视频与自动化剪辑开源项目
aigc·openai·ai编程
全栈探索者1 天前
一枚 162MB 的挂件,改写一只猫的画风:LoRA 实战——风格定制与人脸保持
人工智能·macos·lora·aigc·stablediffusion·comfyui
TomEval1 天前
【测AI】第20篇:大模型安全测试 —— 越狱攻击与防护
人工智能·python·功能测试·ai·aigc·测试用例·安全性测试
Dawson Zhu1 天前
【AI编译器入门②】TVM架构拆解:Relay、Relax、TIR与Runtime四层结构
人工智能·语言模型·架构·aigc·agi
Dawson Zhu1 天前
【AI编译器入门③】编译前端:ONNX、TorchScript与动态shape处理
人工智能·语言模型·架构·aigc·agi
科起点AI1 天前
初稿写作指南:用科起点AI从文献阅读到初稿生成
人工智能·aigc·ai写作
贾公子2 天前
图片 AIGC 检测接入实战——URL 与 Base64 的取舍、体积校验与「你送过去的可能不是那张图」
python·aigc