RRHF
Rank Responses to align Human Feedback
先为同一个问题准备多条候选回答,再让模型学会:人类更偏好的回答,应该有更高的生成概率。
它的核心不是像传统 RLHF 那样先训练奖励模型、再跑一轮 PPO,而是把“偏好对齐”改写成一个更直接的排序问题:
- 对同一个提示词,收集多条候选回答;
- 给这些回答打一个“偏好分数”;
- 再让语言模型自己的分数顺序,尽量和这些偏好顺序一致。
好回答以后应该更容易被模型生成,差回答以后应该更不容易被模型生成。
论文把 RRHF 定位为一种比 PPO 更简单的对齐方法:它直接用条件对数概率给回答打分,再通过排序损失把这些分数和人类偏好对齐;训练时通常只需要 1 到 2 个模型,并且可以利用来自不同来源的候选回答。论文还指出,它和 PPO 相比在实现、模型数和超参数上都更简单。
为什么会有 RRHF
RRHF 的出发点并不是否定 RLHF,而是想解决一个很实际的问题:
PPO 路线虽然有效,但训练复杂、模型多、超参数也多。
原论文总结的几个痛点是:
- PPO 训练通常需要策略模型、价值模型、奖励模型、参考模型等多个组件;
- 训练过程对超参数比较敏感;
- 对大模型来说,资源和工程负担都比较重。
RRHF 的想法是:
如果我们已经能拿到“哪条回答更好”这样的偏好信息,那是否可以不显式做强化学习,而是直接训练模型把好回答排在前面?
这就是 RRHF 的核心动机。
训练数据长什么样
对一个提示词
同时,还需要给每条回答一个外部偏好分数:
这里的
- 人类标注;
- 奖励模型;
- 更强模型提供的偏好信号;
- 数据集中现成的 chosen / rejected 标签;
- 不同来源混合出来的打分。
原论文特别强调,RRHF 的候选回答来源可以非常广:可以来自待训练模型本身、其他大模型(如 ChatGPT、GPT-4),也可以来自人工专家或现成数据集。
所以 RRHF 的一个重要特点是:
它不是只会从“当前策略在线采样”里学,而是能利用很多离线候选回答。
RRHF 如何给回答打分
RRHF 不再单独训练一个奖励头来打分,而是直接用语言模型本身的条件对数概率给回答打分。
对于回答
这里:
是提示词; 是整条回答; 是语言模型给整条回答的条件概率; - 用
做长度归一化,是为了避免模型天然偏向短回答。
论文把这个分数描述为“长度归一化的条件对数概率”。官方代码里还支持更一般的长度惩罚写法,即除以
RRHF 直接把“模型更愿不愿意生成这条回答”当作训练对象。
如果一个回答是人类更偏好的,那 RRHF 就希望它的
RRHF 的核心目标:排序损失
现在,对于同一个提示词
- 一组候选回答
; - 一组外部偏好分数
; - 模型自己的分数
。
RRHF 的目标就是:
如果
,也就是回答 比 更受偏好,那么模型也应该满足
为了实现这个目标,可以写出一个很自然的排序损失:
这条式子可以这样理解:
- 如果
本来就应该排在 前面; - 但模型却给了
更高分; - 那就产生损失;
- 如果顺序已经对了,这一对就不再额外惩罚。
所以 RRHF 不是要求模型“记住绝对分数是多少”,而是要求模型学会相对顺序。
论文把 RRHF 描述为“通过排序损失让模型分数与人类偏好顺序对齐”;官方实现里,这一项的核心逻辑也是:只对“偏好顺序和模型顺序不一致”的回答对进行惩罚。实现上对应的是把所有“外部分数更高、但模型分数更低”的样本对挑出来,再把它们的分数差拉回来。
如果你把每个回答看成考试里的候选答案,那么 RRHF 做的事不是让模型预测一个绝对分数,而是:
更好的答案,概率要更高;更差的答案,概率要更低。
这种做法的好处是:
- 不一定需要一个标定得非常准的“绝对奖励值”;
- 只要能比较谁更好、谁更差,就可以训练;
- 而“比较”通常比“打绝对分数”更稳定。
这也是原论文为什么强调:RRHF 更关注不同回答之间的比较,而不是 PPO 那种直接优化绝对奖励值。
RRHF 不是只有排序损失
如果只做排序,模型可能会学会“相对关系”,但不一定能稳定模仿最好的回答。因此 RRHF 还会额外加一个类似 SFT 的交叉熵项。
先定义这一组回答里外部偏好最高的回答:
然后让模型显式提高这条“当前最好回答”的概率:
也就是:
- 排序损失负责“把好回答和差回答拉开”;
- SFT 项负责“直接学最好回答本身”。
RRHF 的总目标
把两部分放在一起,RRHF 的总目标可以写成:
如果用更完整的话说:
RRHF 一边要求模型模仿当前这组回答里最好的那条,一边要求模型把整组回答排出和人类偏好一致的顺序。
所以它既不像纯 SFT 那样只看 chosen answer,也不像 PPO 那样真的进入强化学习式的策略优化;它更像是一种带排序信号的监督微调。
RRHF 的训练流程
RRHF 的训练流程可以概括成四步。
第一步:准备提示词
给定一批提示词
第二步:为每个提示词准备多条候选回答
这些回答可以来自:
- 当前模型;
- 初始模型;
- 更强模型;
- 人工回答;
- 数据集已有的 chosen / rejected。
第三步:给候选回答打外部偏好分数
这个分数可以是人工偏好,也可以是奖励模型输出。
第四步:训练语言模型
训练时让模型同时做到两件事:
- 最优回答要有更高概率;
- 候选回答之间的概率顺序要和偏好顺序一致。
RRHF 通常是在训练前先把候选回答采样好,再进入训练,因此它不像 PPO 那样在训练过程中持续在线采样;另外,正因为采样和训练分离,RRHF 不再需要 PPO 里那种 KL 约束和价值模型。
RRHF 为什么比 PPO 简单
它不需要价值模型
RRHF 不做 advantage 估计,也不需要额外训练 value model。它不是问“这条回答比 baseline 好多少”,而是直接问“这组回答里谁更好”。
它不需要训练时的参考模型 KL 约束
PPO 路线里,参考模型常用于限制策略不要走太远;而 RRHF 采用的是“先离线采样,再训练排序”的方式,因此论文明确写到,PPO 里的 KL 项在 RRHF 里退化掉了。
它更像普通监督训练
RRHF 的目标函数本质上还是排序损失和交叉熵,工程形态更接近 SFT,而不是完整强化学习。RRHF 代码相对 SFT 只增加了很少的额外逻辑。
RRHF 学到的到底是什么
RRHF 并不是显式训练一个独立奖励模型,再拿奖励模型去指导策略。它直接让语言模型自己的条件概率承担两种角色:
- 既是生成概率;
- 又是“排序分数”。
训练后的模型既可以作为生成模型使用,也可以把其长度归一化对数概率当作评分函数使用。从这个意义上说,RRHF 把“生成模型”和“偏好打分器”部分合在了一起。
RRHF 的优点
训练更简单
它不需要完整 PPO 流程,也不需要价值模型。对很多实际工程场景来说,这会显著降低训练复杂度。
能利用多来源回答
它可以混合人工回答、当前模型回答、更强模型回答、数据集中已有回答。这个灵活性是 RRHF 的一个明显优势。
对“比较式偏好”很自然
如果数据本来就是 chosen / rejected,或者能排出一个相对顺序,那么 RRHF 的目标就很贴合。它天然适合“谁更好”这种监督信号。
RRHF 的局限
它非常依赖候选回答质量
RRHF 的效果和采样质量高度相关。 论文指出,训练后模型的奖励往往接近采样候选中的最好回答,这说明 RRHF 在某种意义上很像在学一种 best-of-n 行为。
这意味着:
- 如果候选回答整体质量很低,RRHF 很难学得特别好;
- 如果候选回答里没有真正优秀的答案,模型也不太可能学出远超这些候选的能力。
它更像离线对齐
RRHF 的训练数据通常先采样好,再用这些离线样本训练。因此它不像在线 RL 那样,在训练过程中不断根据新策略重新探索。
它优化的是“排序一致性”
RRHF 更擅长学会“把更好的答案排在前面”,但这不等于它显式学到了一个非常准确、可泛化的绝对奖励函数。它的强项是排序,不是标定。这个结论更像对方法本身的结构性理解:从目标函数上看,它主要优化的就是相对顺序。
总结
RRHF = 对同一个问题收集多条回答,让模型把人类更喜欢的回答排在更前面。
模型分数:
排序损失:
总目标:
RRHF 是一种把偏好对齐改写成“回答排序”的方法。它不再显式走“奖励模型 + PPO”那条复杂路线,而是直接用语言模型自己的长度归一化条件对数概率给回答打分,再通过排序损失让模型分数顺序尽量贴近人类偏好顺序。
为了避免只学相对顺序不学具体答案,它还会加入一个针对当前最好回答的 SFT 项。这样一来,RRHF 就变成了一种介于 SFT 和 RLHF 之间的方案:它保留了偏好优化的信号,但训练形式更接近监督学习,工程上也更简单。
WARNING
RRHF:先有一批候选答案和它们的偏好顺序,模型学“怎么把好答案排前面”。
GRPO:当前模型先自己生成一组答案,再根据这一组里的相对好坏做策略更新。