Token Lab搜索

← RL 知识库
RL / 5 OF 8

SFT → RLHF → DPO:不同训练信号

选择与可用反馈匹配的训练信号。

学习指南与本课目录LEARNING CONTRACT

理解 → 实现 → 研究

目标:解释本课机制、复现一个例子、测试一个失败案例。读完不自动代表掌握。

  • 理解层:写明假设、形状/单位和一个反例。
  • 实现层:复算数值例子并检查边界。
  • 研究层:在匹配预算下比较一个替代方法。

理解机制

SFT 从期望输出示范中学习。常见 RLHF 流程从偏好拟合奖励模型,再带参考惩罚优化策略。DPO 则直接使用成对偏好与参考对数概率。DPO 属于偏好优化,不能仅因与 RL 目标有关,就说它是在线环境交互循环。

Text / 原始公式
SFT: −log πθ(y_demo|x)
RLHF: E[rφ(x,y)]−β KL(πθ||πref)
DPO: −log σ(βΔ_log-ratio)

机制图与逐步推导

人工示范 → SFT → 偏好对 → 奖励模型 → 策略优化 + 参考惩罚 → 独立行为评估
原创机制示意图,按从上到下顺序阅读。 SVG ↓
符号与假设
符号含义
rφ学习得到的代理奖励
πref漂移惩罚使用的参考策略
β指定约定下的权衡系数
  1. 区分三种数据:SFT 示范、奖励学习的比较、策略优化的采样轨迹,它们并不是可互换标签。
  2. 在同一 prompt 分布上,两种候选策略的(期望奖励,期望 KL)为 (1,0.4)、(0.8,0.1),β 时正则值为 0.6 和 0.7。较低原始奖励也可能在漂移惩罚后胜出。
  3. 用独立任务标签与盲化人工比较评估选中策略,否则奖励模型的错误可能同时成为训练目标与表面成功标准。
实验检查点

报告谁标注数据及评价了什么 prompt 分布,单个奖励分数不能代表每种用户目标。

原创练习与分析

用相同留出 prompt 比较基座、SFT 与偏好微调 checkpoint。控制生成设置与回答长度,分别审查有用性、事实性及拒答;单个总偏好分可能掩盖回退。

人类偏好既不是完美事实标签,也不代表所有用户的普遍价值。

RLHF 能不增加参数量就改善行为吗?

可以。优化改变模型的输出分布,体现为评价分布上的行为变化,不代表所有能力都提高。

阅读依据与后续实践

InstructGPT paper ↗
MATHEMATICAL REVIEW · 2026-10-26

假设、参考实现与验收

β>0,使用自然对数,回答 token 的 log 概率求和,参考模型固定。sigmoid 是成对偏好概率,不是回答生成概率;目标是最小化损失。 RLHF 最大化奖励减 KL,SFT/DPO 最小化损失。

已复核公式条件、单位及算例。实现隔离一个数值机制,不训练完整策略,也不控制真实硬件。

运行前:预测一个边界情况

时损失为 ln2;提高偏好回答的 log odds 应降低损失。

提示:隔离假设

固定基线输入,只改变一个参数或边界;同时比较数值与声明单位。单例通过仅验证该样例。

最小可运行算例

将算例及所链接模块保存在同一目录。使用 Node.js 22 或更高版本,然后运行 node rlhf-dpo.mjs. 无需第三方运行依赖。

const solve=()=>{
const beta=.5, delta=2;
return Math.log1p(Math.exp(-beta*delta));
};
const actual=solve();
const expected=0.31326168751822286;
if(JSON.stringify(actual)===JSON.stringify(expected)){console.log('PASS',actual)}else{
const a=[actual].flat(), b=[expected].flat();
if(a.length!==b.length||a.some((v,i)=>!Number.isFinite(v)||Math.abs(v-b[i])>1e-10))throw Error('Numerical mismatch');
console.log('PASS within 1e-10',actual);
}
参考输出——先预测再展开
0.31326168751822286

测试与迁移

时损失为 ln2;提高偏好回答的 log odds 应降低损失。

在下方笔记记录输入、代码版本、期望值和实测值;再构造违反上述假设的反例,解释原结论为何不再成立。

下载完整代码包(.tar.gz) · 完整参考代码与回归检查

预测、检验与证据记录

展开答案前先预测一个结果;练习后记录差异和迁移测试。记录仅存本地,在不同语言版本间共用。

打开记录/导出/清除 →

数学复核范围逐篇记录,不代表完成论文实证复现;可在笔记中记录疑似错误。 复核范围