Week2-InstructGPT学习笔记
InstructGPT 学习笔记 📘
基于论文:《Training language models to follow instructions with human feedback》
作者:OpenAI(Long Ouyang et al.)
方法核心:RLHF(Reinforcement Learning from Human Feedback)
🧠 总体流程概览
InstructGPT 的训练分为三个主要阶段:
- SFT(Supervised Fine-Tuning):监督微调
 - RM(Reward Model Training):奖励模型训练
 - 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 | 
📌 参考
- 原论文:https://arxiv.org/abs/2203.02155
 - PPO 原始算法:[Schulman et al., 2017]
 - RLHF 初步应用:[Stiennon et al., 2020]
 

                
            
        
浙公网安备 33010602011771号