Week2-InstructGPT学习笔记

InstructGPT 学习笔记 📘

基于论文:《Training language models to follow instructions with human feedback》
作者:OpenAI(Long Ouyang et al.)
方法核心:RLHF(Reinforcement Learning from Human Feedback)


🧠 总体流程概览

InstructGPT 的训练分为三个主要阶段:

  1. SFT(Supervised Fine-Tuning):监督微调
  2. RM(Reward Model Training):奖励模型训练
  3. PPO(Proximal Policy Optimization):强化学习微调

🧾 第一阶段:监督微调(SFT)

🎯 目标

使用人类书写的指令和理想回答,对 GPT-3 进行监督学习,使模型初步具备“听懂指令”的能力。

📊 数据

  • 人类标注者为 prompt 写出的高质量回答(demonstration)
  • 数据量:约 13,000 条

🔧 方法

最大化 log-likelihood:

\[\mathcal{L}_{\text{SFT}} = \log P_{\text{model}}(y|x) \]


🧮 第二阶段:奖励模型(RM)

🎯 目标

学习一个奖励函数 \( r_\theta(x, y) \),对输出 \( y \) 给出评分,反映人类偏好。

📊 数据来源

  • 对每个 prompt,采样多个模型输出 \( y_1, y_2, ..., y_K \)
  • 人类标注者将这些回答排序,产生成对比较数据(pairwise preference)

例如:如果 \( y_a \succ y_b \),则训练模型预测:

\[r_\theta(x, y_a) > r_\theta(x, y_b) \]

⚙️ 损失函数(Pairwise Ranking Loss)

\[\mathcal{L}_{\text{RM}}(\theta) = - \frac{1}{\binom{K}{2}} \, \mathbb{E}_{(x, y_w, y_l) \sim D} \left[ \log \sigma \left( r_\theta(x, y_w) - r_\theta(x, y_l) \right) \right] \]

  • \( y_w \):被偏好回答
  • \( y_l \):较差回答
  • \( \sigma \):Sigmoid 函数

🧩 注意事项

  • 一次使用 K 个回答,可以构造 \( \binom{K}{2} \) 个训练对
  • 奖励模型是固定的,不随 PPO 训练而更新

🚀 第三阶段:PPO 强化学习微调

🎯 目标

用奖励模型提供的分数作为信号,优化语言模型策略 \( \pi_{\text{RL}}(y|x) \),使其生成更符合人类偏好的回答。

📊 数据

  • Prompt 数据来自 API 用户提交(约 31,000 条)
  • 每次模型生成一个回答 \( y \),由奖励模型打分

⚙️ 优化目标

最大化如下目标函数:

\[\mathbb{E}_{(x, y) \sim \pi_{\text{RL}}} \left[ r_\theta(x, y) - \beta \cdot \text{KL} \left( \pi_{\text{RL}}(\cdot|x) \| \pi_{\text{SFT}}(\cdot|x) \right) \right] \]

  • 第一项:奖励模型对回答的评价
  • 第二项:KL 散度约束,限制策略不要偏离 SFT 过远
  • \( \beta \):KL 惩罚系数

💡 PPO 的核心机制

PPO 不是直接强化当前输出,而是强化“相对好的回答更容易被采样”的策略倾向

  • 使用策略梯度更新:

    \[\nabla_\theta J(\theta) \propto \mathbb{E}_{(x,y)} \left[ A(x,y) \cdot \nabla_\theta \log \pi_\theta(y|x) \right] \]

    其中 \( A(x, y) = r(x, y) - b(x) \) 为优势函数。

  • 引入剪裁机制(clip)保持训练稳定,避免策略剧烈改变。


🧪 PPO-ptx:混合预训练目标

为减轻在公开 NLP 任务上的性能退化(alignment tax),引入如下混合目标:

\[\text{Objective} = \text{PPO目标} + \gamma \cdot \mathbb{E}_{x \sim D_{\text{pretrain}}} \left[ \log \pi_{\text{RL}}(x) \right] \]

  • \( \gamma \):控制预训练 loss 与 RL loss 的混合权重

🔍 PPO 的“相对强化”思想体现

PPO 机制 如何体现相对强化
多样采样 采样多个回答,奖励高的被更大更新
策略梯度 只根据优势值正负决定是否强化
clip 机制 防止某个 y 被无限强化,保持更新稳定
KL 惩罚 避免策略走偏,增强鲁棒性

✅ 总结

阶段 方法 数据 优化目标
SFT 监督学习 演示数据 最大化 log-likelihood
RM 奖励模型 人类排序 Pairwise ranking loss
PPO 强化学习 API prompt 奖励最大化 + KL 惩罚
PPO-ptx PPO + 预训练混合 同上 + 预训练语料 同上 + log-likelihood

📌 参考


posted @ 2025-05-25 21:12  SIo_2  阅读(48)  评论(0)    收藏  举报