资料摘要:personal chatgpt 30 — instructGPT 中的 reward modeling,概率建模与损失函数性质
本讲由真实视频转录与作者 notebook/代码交叉整理。原始层:🔒 带时间戳视频转录;课程总览:personal chatgpt — LLMs 实践系列。
本讲回到 InstructGPT 的 Reward Modeling 理论:标注者对同一 prompt 的 个回答排序,转成最多 个 chosen/rejected 比较;奖励模型分别输出标量,奖励差被解释为“chosen 胜过 rejected”的 log odds;sigmoid 把差值转成概率,负对数似然即 pairwise cross-entropy。课程还分析 的梯度与大 margin 饱和现象。
1. RLHF 三阶段中的 Reward Model
Section titled “1. RLHF 三阶段中的 Reward Model”课程回顾:
- SFT / 指令模型初始化;
- 人类比较多个 response,训练 Reward Model;
- PPO 用 Reward Model 分数优化 policy。
第 16 讲给出 TRL 总览,第 23 讲实现 RewardTrainer;本讲补充第二阶段的统计解释。
2. 为什么使用排序而不是绝对 rating
Section titled “2. 为什么使用排序而不是绝对 rating”不同标注者的“3 分/4 分”刻度不一定一致,但对同一 prompt 的两个回答,哪一个更好通常更容易达成一致。Reward Model 因而采用双输入/共享参数的 Siamese 式评估:
(x, y_w) -> r_w(x, y_l) -> r_l只约束 ,不要求 reward 的绝对零点有固定语义。
3. Bradley–Terry 概率模型
Section titled “3. Bradley–Terry 概率模型”
令 ,则:
即奖励差是人类更偏好 chosen 的对数赔率。对于标签 ,二元交叉熵退化为:
4. 一个 prompt 的多响应排序
Section titled “4. 一个 prompt 的多响应排序”若一个 prompt 产生 个 response,严格排序可构成:
- :6 对;
- :36 对;
- 外层 batch size 64、:最多
64×36=2304个比较对。
课程解释,标注者主要时间花在理解 prompt;理解多个答案后的追加排序成本低于线性增长,因此 可较高效扩充比较数据。无法区分的 tie 在 InstructGPT 训练中被丢弃。
5. 为什么同一 prompt 的比较放在同一 batch element
Section titled “5. 为什么同一 prompt 的比较放在同一 batch element”notebook/论文公式对一个 prompt 的 项先平均:
一次前向得到 K 个 reward 后即可复用成所有 pair,计算更有效;若把每个 pair 完全独立打散,同一个 response 会在一个 epoch 内重复出现 次,更容易快速过拟合。
6. Loss 与 gradient
Section titled “6. Loss 与 gradient”
复核值:
| loss | gradient | ||
|---|---|---|---|
| 0 | 0.5000 | 0.6931 | -0.5000 |
| 1 | 0.7311 | 0.3133 | -0.2689 |
| 3 | 0.9526 | 0.0486 | -0.0474 |
| -3 | 0.0474 | 3.0486 | -0.9526 |
| -6 | 0.0025 | 6.0025 | -0.9975 |
因此 后 loss/梯度已经较小,继续拉大正 margin 的收益递减;排序错误的负 margin 会得到接近 -1 的梯度,推动 chosen 分数上升、rejected 分数下降。
7. notebook 中需校正的一处数值
Section titled “7. notebook 中需校正的一处数值”cell 22 同时计算 -F.logsigmoid(0) 与 -np.log10(0.5)。Reward Model 公式使用自然对数,因此正确对照应是 -np.log(0.5)=ln 2≈0.6931,而不是十进制对数的 0.3010。该 cell 是演示代码不一致,草稿不能照抄为等式。
公式 / 代码要点
Section titled “公式 / 代码要点”loss = -F.logsigmoid(r_chosen - r_rejected).mean()delta = np.linspace(-10, 10, 1000)sigma = 1 / (1 + np.exp(-delta))loss = -np.log(sigma)grad = sigma - 1Bradley–Terry 概率对共同平移不敏感: 同时加常数不改变 ;这也是 reward 绝对零点不可识别的原因。
00:00:连接第 16、23 讲并说明本讲补理论。01:06:回顾 InstructGPT 三阶段。02:28:提出比较标签、reward difference 与 cross-entropy。03:05:进入 multiple responses 与 。04:14:解释同一 prompt 的比较组成一个 batch element。06:33:说明 tie 被 drop。07:00:算出64×C(9,2)=2304。08:00:写出 pairwise reward loss。10:58:把 reward difference 解释为 log odds。12:00:连接 sigmoid、概率与 Bradley–Terry。15:00:分析 K=9 的标注效率。16:45:正式写 Bradley–Terry 概率。17:43:推导 loss gradient。19:01:分析 后的饱和。
- notebook 是理论可视化,不训练真实 Reward Model;应用代码见第 23 讲。
- 是无 tie 的最大 pair 数;平局丢弃或不完全排序时实际数量更少。
- “ 基本无梯度”是定性近似;在 时 gradient 仍约
-0.0474,不是严格为零。 - Bradley–Terry 假设单一标量 utility 足以解释成对偏好;循环偏好、标注者群体差异和 prompt 分布漂移不由该基础模型解决。
- 成对准确率高不等于 reward 在跨 prompt 间绝对可比,也不等于可直接安全地被 PPO 无约束最大化。
与前后讲关系
Section titled “与前后讲关系”- 前接第 16 讲:TRL 中 Value Head、Reward Modeling、PPO 的总体位置。
- 前接第 23 讲:
RewardTrainer的四字段与 loss 实现,本讲给出概率解释。 - 前接第 27 讲:PPO 把 Reward Model 输出作为外部 score;本讲解释 score 的训练来源。
- 向后延伸:DPO 同样把 Bradley–Terry 偏好模型作为推导起点,但消去显式 Reward Model 与 PPO。
- 如何从 化为 ?
- 为什么同时给两个 reward 加常数不改变偏好概率?
- 最多有多少比较对,batch size 64 时最多多少?
- 为什么同一 prompt 的 pairs 不宜完全随机打散为独立样本?
- 时梯度是严格为零吗?
- 视频:instructGPT 中的 reward modeling,概率建模与损失函数性质
- 转录:🔒 personal chatgpt 30 视频转录
- 课件 / 代码:🔒 reward_model_Bradley_Terry_model.ipynb
- 滴答清单抓取时学习状态:未完成。
- 视频正文采用自动语音识别;关键术语已用标题、notebook 与源码校正,无法确认的口语细节不扩写。
- notebook 未执行的 CUDA、权重下载、训练或外部 API 单元,不表述为已复现实验。