你看过学霸的错题本吗?一本错题本上,记着别人做错过的题、老师的批注,还有更优解。真正的备考高手不会每道题都请家教现场陪练,而是把错题本反复吃透,再针对性地补漏。大模型的对齐也有一本“错题本”:过去模型生成的回答、人类标注的好坏、以及大量偏好对,这些都是离线数据。传统的在线 RLHF 像“每次练习都请名师现场批改”,模型每更新一步就要重新生成一批回答,再让奖励模型打分,烧钱又耗时。Off-policy RLHF 的思路是直接用已有的历史数据做策略优化——好比拿着错题本反复学,不用每次练习都重新付费。本文就用“错题本备考法”这条主线,带你搞懂它如何省钱、如何避免被旧题带偏,以及和 DPO、IPO 这些热门方法的关系。
一句话价值:掌握 Off-policy RLHF,你就能用存量偏好数据完成对齐迭代,为大模型团队省下大量在线采样和人工标注成本。
可视化演示
交互展示Off-policy RLHF的在线与离线成本对比、重要性采样权重计算和分布偏移校正过程,理解离线数据如何驱动策略优化。
本节配有交互动效(进入视口后自动加载,约 3KB)。
在线vs离线RLHF成本对比 在线RLHF每轮需实时生成回答 离线RLHF重用已有偏好数据 cost_off = cost_on / N_reuse 离线方案将训练成本降低N倍
离线动机
备考时,请家教最大的开销不是书本费,而是“现场陪练”:每做一道题,老师都要在旁边等着判分、讲解。传统 RLHF 就是这么干的:策略每更新一步,就要让当前模型现场生成一批回答,再由奖励模型逐条打分。这个“采样-标注-更新”循环非常贵,尤其当模型很大、prompt 很多时,一次对齐实验可能要跑几天甚至几周。
Off-policy 的灵感来自学霸错题本。你不需要让错题本的作者重新做一遍题,只需要把本子里记下来的“哪类题容易错、正确解法是什么”拿来反复提炼。对应到 RLHF,就是把历史上已经采集到的 prompt、模型回答和人类偏好对,直接当作训练材料。因为数据不是当前策略现场生成的,所以叫 off-policy(离线策略);数据与当前策略“不同步”是它的核心特征,也是后面所有技巧的出发点。
形式化地说,RLHF 想在满足 KL 约束的前提下最大化奖励模型给出的分数;区别只在于期望怎么算。在线版本在 \(\pi_\theta\) 上重新采样,离线版本把期望改成对历史数据集 \(\mathcal{D}\) 的近似。
错题本虽好,但直接用旧数据算期望会有偏差:旧笔记是别人在旧题型下写的,不能天真地平均。于是需要重要性采样这根“折算尺”,把不同策略产生数据的概率差异补回来。
- 策略参数\(\pi_\theta\) 是当前正在训练的回答策略,\(\theta\) 是需要更新的参数。
- 奖励评分\(r_\phi\) 是已经训练好的奖励模型,给回答的好坏打分。
- KL 约束\(\beta\) 控制新策略不能离参考策略太远,避免一次更新就“学飞了”。
- 离线数据集期望在已有数据 \(\mathcal{D}\) 上求,而不是在 \(\pi_\theta\) 上重新采样。
重要性采样
错题本往往来自不同学长:有人爱钻难题,有人基础扎实。如果把他们笔记里的“这道题值几分”直接拿来平均,会严重失真。正确做法是先把每个样本按“他当时遇到这题的概率”和“我遇到这题的概率”的比值折算一下,再放进平均分里。
旧策略下的样本分布不等于新策略分布,直接平均旧样本的奖励,得到的是旧策略的期望,而不是新策略的期望。重要性采样用概率比值作为权重,让旧样本能够近似回答“如果新策略来生成,这个回答的出现概率会放大还是缩小”。
错题折算不是万能:如果两位学长的笔记风格差异太大,比值会忽大忽小,方差爆炸。这就像某道题在旧本子里记了 100 分权重,实际上只是他当时运气好。方差失控会直接带偏更新方向,于是需要偏差校正。
- 目标期望我们希望估计新策略 \(\pi_\theta\) 下函数 \(f\) 的期望,例如奖励值。
- 旧策略采样样本 \(y_i\) 来自旧策略 \(\pi_{\mathrm{old}}\),不是来自新策略。
- 概率比值用 \(\pi_\theta\) 的概率除以 \(\pi_{\mathrm{old}}\) 的概率,得到每个样本的权重。
- 加权平均把权重乘上 \(f(y_i)\) 再取平均,就得到新策略期望的近似。
偏差校正
错题本放久了会混入旧考纲的题。照单全收,等于把宝贵时间浪费在不再考的题型上。看到明显过时的题,有经验的人会打个折扣,或者干脆撕掉。离线 RLHF 同样要处理分布偏移:历史数据来自旧策略,新策略越走越远,旧样本的参考价值就越低。
如果重要性采样权重不受限制,个别极端样本可能主导整个梯度,造成策略剧烈摆动。偏差校正的核心思路就是给权重上保险:把比值限制在一个合理区间内,过大的权重被压下来,过小的权重被抬上去。
除权重校正外,我们还能不能进一步利用旧题里的计算过程,减少重复劳动?旧策略留下的值函数,本质上就是错题本里的“解题经验”,这就是值函数重用。
- 原始比值先计算当前策略与旧策略在该样本上的概率比。
- 下界截断\(\max(\rho_i, 1-\varepsilon)\) 防止极小权重让有效样本消失。
- 上界截断\(\min(\cdot, 1+\varepsilon)\) 防止单一样本权重过大。
- 合成结果\(\tilde\rho_i\) 就是最终用于更新策略的稳健权重。
值函数重用
高手的错题本不只抄题,还会写“见到这类条件先这样想”。这些解题思路可以被新题复用。对应到 RLHF,旧策略训练时留下的值函数,就是它对“当前状态大概能得多少分”的预期。与其每次在新策略上重新采样估计,不如把这些旧预期拿过来当基线。
在策略梯度类方法中,我们通常需要优势函数 \(\hat A\) 来表示“这个回答比平均水平好多少”。如果每次都重新 rollout 来估计,成本会非常高;复用旧值函数 \(V_{\mathrm{old}}\),可以在不重新采样的前提下算出 TD 误差,再累积成优势估计。
复用旧值函数能降方差,但毕竟基于旧分布估计,也可能有偏。所以很多团队干脆绕开奖励模型和值函数,直接走 DPO、IPO 这类极简路线:把错题本里的“最优解”直接当教材。
- 单步 TD 误差用奖励加上旧价值估计,减去当前旧估计,得到一步的“意外收获”。
- 折扣因子\(\gamma\) 控制未来奖励打多少折,\(\gamma\lambda\) 进一步控制多步累积的衰减速度。
- 多步累积从当前步一直加到最后,近似获得完整的优势信号。
- 旧值函数复用公式中的 \(V_{\mathrm{old}}\) 来自旧策略,不需要在当前策略上重新估算。
DPO与IPO
与其费劲折算不同学长的评分,不如直接把“谁的解法更好”抄成结论。DPO 就是这么做的:它跳过显式奖励模型,只用人類偏好对 \((y_w, y_l)\) 作为教材,让模型直接学习“哪个回答更受欢迎”。从数学上看,DPO 是 RLHF 目标的一个重写,隐含了一个奖励模型。
DPO 的核心是 Bradley-Terry 偏好模型:人类选择 \(y_w\) 而非 \(y_l\) 的概率,可以由两个回答的隐含奖励差决定。把最优策略解带入偏好概率,就得到只用当前策略和参考策略表达的损失函数。
IPO 则把 DPO 的 logistic 损失换成平方损失,相当于给“更优”加了一个最小间隔:只有优劣回答之间的偏好强度超过一定边界,模型才不再继续用力。错题本不是越厚越好,关键是吃透排序关系,而不是死记答案。
- 偏好对数据集中的每个样本包含一个提示 \(x\)、一个更优回答 \(y_w\) 和一个更差回答 \(y_l\)。
- 对数概率比分别计算当前策略与参考策略在优劣回答上的对数概率差。
- 两个比值相减得到“更优回答相对更差回答的偏好强度”。
- Sigmoid 转概率\(\sigma(\cdot)\) 把差值映射成 0 到 1 之间的偏好概率,再取负对数,让模型朝“人类更可能选 \(y_w\)”的方向更新。
稳定训练
考前最后一个月,不能天天换复习资料:今天看 A 老师的讲义,明天换 B 老师的习题,最后什么都记不住。Off-policy RLHF 也是这样,旧数据、新策略、重要性权重叠在一起,更新稍不注意就会震荡甚至崩溃。所以需要给训练过程加“纪律”。
最常见的纪律是 PPO-clip:在目标函数里对重要性比值做裁剪,让每次更新的幅度被牢牢限制住;同时配合 KL 正则、信任域约束,保证新策略不会一步跳出安全区。这些技巧共同构成离线 RLHF 的“复习计划表”。
错题本上每道错题都要用红笔标注原因,不让某个极端题主导复习方向。稳定性技巧就是这套“红笔纪律”,让模型在旧数据上也能一步一个脚印地提升。
- 优势信号\(\hat A(x,y)\) 表示这个回答比平均水平好还是差,是整个更新的“油门”和“刹车”。
- 加权目标原始项 \(\tilde\rho_i\,\hat A(x,y)\) 让好回答的权重被放大。
- 截断目标裁剪后的比值乘以优势,保证极端权重不会带来过大更新。
- 取最小值两种目标取 min,让策略只能保守地变好,不能因噪声大步乱跳。
评测方法
错题本背得再熟,也不代表真能考高分,最后必须用模拟卷检验。Off-policy RLHF 也一样:离线更新完以后,不能只看训练损失降了多少,而要在固定的偏好测试集上算胜率,同时检查模型在对抗样本和分布外数据上的表现。
离线评测最常用的指标是胜率:让新策略和参考策略在相同 prompt 下各自生成回答,用奖励模型打分,看新策略赢多少次。这个指标像模拟考,虽然不能完全代表真实人类偏好,但能快速筛选掉明显退化的策略。
离线胜率只是模拟考,最终还要通过线上 A/B 测试验证真实人类反馈。但一份好的模拟卷,能提前拦下大多数明显风险,这正是 Off-policy RLHF 在工程上最大的价值。
- 成对生成给每个测试 prompt \(x_i\),让新策略 \(\pi_\theta\) 和参考策略 \(\pi_{\mathrm{ref}}\) 各生成一个回答。
- 奖励打分用奖励模型 \(r_\phi\) 分别给两个回答打分。
- 胜场计数指示函数 \(\mathbb{1}[\cdot]\) 在新策略得分更高时记为 1。
- 平均胜率对所有测试样本取平均,得到 0 到 1 之间的胜率指标。
AI 应用场景
场景 1:低成本持续对齐迭代
阶段:模型训练与反馈迭代
解决的问题:传统 RLHF 每次更新都要让当前策略重新采样回答,再请人类或奖励模型标注,GPU 和人工成本都很高。Off-policy RLHF 可以直接复用历史偏好数据,让新策略在不重新采样的情况下完成对齐迭代,显著降低训练成本。
具体案例:某大模型团队每个月发布一个新版 base model。他们不再每次从头在线采样,而是把上一个版本积累的 50 万条人类偏好对作为错题本,用 importance sampling 和 PPO-clip 离线训练对齐策略,迭代周期从两周缩短到三天。
场景 2:对话安全策略的离线加固
阶段:对齐评测与安全缓解
解决的问题:安全团队不希望用线上流量反复试探模型的红线,因为危险对话一旦发生,影响不可控。历史 red-team 日志和违规回复数据本身就是离线数据,可以用来安全地评估和校正新策略。
具体案例:安全团队用过去三个月积累的对抗性 prompt 和人工标注的不良回答,离线训练一个保守的安全策略,再在固定测试集上计算胜率和违规率,确认无回归后才灰度上线。
场景 3:推荐与策略产品的日志驱动优化
阶段:离线日志学习与策略迭代
解决的问题:线上推荐系统每天产生海量用户反馈日志,但用户交互策略和待更新的新策略并不一致,属于典型的 off-policy 数据。直接平均日志奖励会偏差很大,需要重要性采样和偏差校正。
具体案例:推荐算法团队用历史曝光和点击日志,以用户反馈作为奖励,离线训练新的排序策略;通过裁剪重要性权重避免个别高热样本主导,再用离线胜率筛选候选,最后做小流量 A/B。
Python 演示
import numpy as np rng = np.random.default_rng(42) OLD_MEAN = 0.0SIGMA = 1.0TARGET = 1.3LR = 0.1EPOCHS = 50N = 3000 def reward(x): return -(x - TARGET) ** 2 def log_prob(x, mu): return -0.5 * ((x - mu) / SIGMA) ** 2 - np.log(SIGMA) - 0.5 * np.log(2 * np.pi) # collect offline data from old policyoffline_x = rng.normal(OLD_MEAN, SIGMA, N)old_logp = log_prob(offline_x, OLD_MEAN) mu = 0.0for i in range(EPOCHS): cur_logp = log_prob(offline_x, mu) log_ratio = cur_logp - old_logp # clip importance ratio to reduce variance and stale sample impact ratio = np.clip(np.exp(log_ratio), 0.5, 2.0) # off-policy policy gradient: E_old[ ratio * reward * grad_log_pi(mu) ] grad = np.mean(ratio * reward(offline_x) * (offline_x - mu) / (SIGMA ** 2)) mu += LR * grad if i % 10 == 0: est_reward = np.mean(ratio * reward(offline_x)) print("epoch", i, "mu", round(mu, 3), "est_reward", round(est_reward, 3)) print("final mu:", round(mu, 3), "target:", TARGET)
offline_x = rng.normal(OLD_MEAN, SIGMA, N)从旧策略采样一批离线样本,模拟错题本里的历史数据。old_logp = log_prob(offline_x, OLD_MEAN)记录旧策略给这些样本的概率对数,用于后续计算比值。log_ratio = cur_logp - old_logp当前策略与旧策略的对数概率差,是重要性权重的核心。ratio = np.clip(np.exp(log_ratio), 0.5, 2.0)转成重要性权重并截断,抑制过时样本带来的极端影响。grad = np.mean(ratio * reward(offline_x) * (offline_x - mu) / (SIGMA ** 2))用离线样本估计新策略的参数梯度。mu += LR * grad沿梯度方向更新均值参数,让策略逐渐逼近目标位置。
常见误区
误区历史偏好数据越多,Off-policy RLHF 效果一定越好,所以首要任务就是拼命扩充数据量。
正解数据量不是唯一关键,分布的覆盖度和新鲜度更重要。如果离线数据集中在旧策略的少数几种回答上,新策略会被严重带偏。错题本再多,若全是旧考纲,不如精挑细选一批高质量新题。离线算法需要的是“覆盖当前策略可能走到的区域”的数据,而不是一堆过时重复样本。
为何常见:很多人把监督学习的经验直接搬过来,忽略了 off-policy 方法特有的分布偏移问题。
误区权重算得越精细越好,超大权重说明这条样本越重要,应该让它更大程度影响更新。
正解极端权重会导致方差爆炸,一条样本就可能主宰整个梯度,让策略朝错误方向猛冲。重要性采样在理论上无偏,但有限样本下方差会随权重的平方增长。实际工程中必须 clip 或做归一化,像给老师打分设置上限一样,防止个别“满分题”失真。
为何常见:只记住了概率比可以校正分布,却没有意识到有限样本下的方差问题。
误区DPO 没有显式奖励模型,也没有策略梯度更新,所以它和 RLHF 完全是两套技术。
正解DPO 是从 RLHF 目标函数推导出来的离线对齐方法,它把奖励模型隐式地吸收进了策略目标。可以理解为错题本直接标出了“更优解”,省去了先训练一个“评分老师”的步骤,但数学上仍然在做奖励最大化与 KL 约束。
为何常见:只看到工程接口不同,没看到数学推导同源,于是误以为 DPO 是独立范式。
误区新策略在历史偏好测试集上胜率很高,说明模型已经对齐好了,可以放心全量上线。
正解离线指标会过拟合历史分布,尤其是当测试集和训练集同源时,胜率虚高很常见。还需要对抗样本、分布外测试和线上 A/B 验证。模拟考成绩再高,也不能完全替代真实考场的发挥。
为何常见:线上评估成本高、周期长,人很容易把容易拿到的离线指标当成最终结论。
面试题
Q1. Off-policy RLHF 主要想解决什么问题?
- A.让奖励模型更精确
- B.降低在线采样成本← 正确答案
- C.增加人工标注数量
- D.消除全部对齐风险
答案:B。Off-policy RLHF 利用历史偏好数据做策略优化,核心动机是节省在线采样和标注成本。让奖励模型更精确不是它要解决的主要问题;增加标注数量和消除全部风险也都不是离线方法的直接目标。
Q2. 用旧策略样本估计新策略期望奖励时,最关键的手段是?
- A.重要性采样权重← 正确答案
- B.蒙特卡洛树搜索
- C.贝叶斯先验分布
- D.对抗样本增强
答案:A。旧策略和新策略分布不一致,直接用旧样本平均会偏差很大。重要性采样用两个策略的概率比值作为权重,可以修正分布差异。蒙特卡洛树搜索、贝叶斯先验和对抗增强都不是这里的关键工具。
Q3. 下列属于离线偏好优化方法的有?
- A.DPO← 正确答案
- B.PPO
- C.IPO← 正确答案
- D.TRPO
答案:AC。DPO 和 IPO 都直接从偏好对优化策略,不需要显式奖励模型,是典型的离线偏好优化方法。PPO 和 TRPO 是通用的策略优化算法,本身并不直接定义偏好数据的使用方式。
Q4. 重要性采样权重过大时,最直接的风险是?
- A.梯度方差急剧增大← 正确答案
- B.KL 散度直接归零
- C.样本量自动变少
- D.奖励模型无法加载
答案:A。权重越大,单个样本对梯度的贡献可能越极端,有限样本下方差会急剧上升,导致训练不稳定。KL 散度归零、样本量变少和奖励模型加载失败都不是权重过大直接造成的后果。
Q5. 在偏差校正中,截断重要性比值的主要作用是?
- A.抑制过时样本影响← 正确答案
- B.提高采样数据速度
- C.增加奖励模型容量
- D.减少训练步数
答案:A。离线数据来自旧策略,当新旧分布差异大时,极端重要性权重会让过时样本过度影响更新。截断比值相当于给每条样本的影响设上限,从而抑制过时样本的干扰。它不会提升采样速度、模型容量或训练步数。
Q6. 下列哪些技巧能提高离线 RLHF 的稳定性?
- A.KL 正则约束← 正确答案
- B.信任域更新← 正确答案
- C.随机初始化
- D.截断重要性权重← 正确答案
答案:ABD。KL 正则约束新策略不能离参考策略太远,信任域更新限制单步更新幅度,截断重要性权重抑制极端样本,三者都能提升稳定性。随机初始化是训练起点设置,和离线 RLHF 的稳定性直接关系不大。
Q7. 相比传统 RLHF,DPO 最突出的区别是?
- A.无需显式奖励模型← 正确答案
- B.必须在线采样数据
- C.需要更多人工反馈
- D.只能用于小模型
答案:A。DPO 把奖励模型隐式地放入策略目标,不需要显式训练一个奖励模型,也不需要在线采样。它仍然使用人工偏好数据,但数量需求并不必然增加;也没有只能用于小模型的限制。
Q8. 离线数据分布与当前策略差异很大时,复用旧值函数更容易?
- A.引入估计偏差← 正确答案
- B.减小梯度方差
- C.提升采样效率
- D.加快推理速度
答案:A。旧值函数是在旧策略分布下学出来的,当当前策略已经偏离很远时,它对当前状态的价值估计会失真,从而引入偏差。降低方差、提升采样效率通常是分布相近时的优点,而非分布差异很大时的特征。
Q9. 只用历史偏好数据上的准确率评估离线策略,主要问题是?
- A.无法区分过拟合与泛化← 正确答案
- B.准确率一定偏低
- C.无法使用奖励模型
- D.训练时间无法控制
答案:A。如果测试集和训练集高度同源,模型可能只是记住了历史偏好,而不是真正理解了人类意图。离线准确率因此无法区分“背下错题”和“学会解题”。离线评测需要配合对抗样本、分布外测试和线上 A/B 验证。
Q10. 关于 Off-policy RLHF,下列正确的是?
- A.完全消除分布偏移问题
- B.重要性采样能校正跨策略偏差← 正确答案
- C.值函数重用可降低方差← 正确答案
- D.可复用历史偏好数据← 正确答案
答案:BCD。重要性采样通过概率比值校正旧数据与新策略的分布偏差;值函数重用在分布相近时能降低优势估计的方差;离线方法的核心就是复用历史偏好数据。但 Off-policy 无法完全消除分布偏移,clip 和重加权只能缓解而不能根治。