人类反馈强化学习
Reinforcement Learning from Human Feedback
先用人类偏好训练一个奖励模型,再让模型通过强化学习去最大化这个奖励。
如果说得更直白一点:
预训练只会“续写最像数据的文本”,而 RLHF 想让模型学会“生成人更喜欢、更有帮助的回答”。
RLHF 这条路线最早在强化学习环境中被系统化:让人去比较两段轨迹,模型从这些比较中学出一个奖励函数,再用 RL 优化这个奖励。后来它被迁移到语言模型上,典型代表是文本风格控制、摘要和 InstructGPT。
为什么需要 RLHF
只做语言模型预训练,优化目标通常是 next-token prediction:
这个目标擅长让模型学会“什么文本在训练语料里最可能出现”,但它不直接等价于“回答是否有帮助、是否诚实、是否安全”。因此,语言模型的预训练目标和真实产品目标之间会出现错位。
在摘要场景里,这个问题也很明显:像 ROUGE 这样的自动指标只是代理指标,不等于人类真正关心的“摘要质量”。RLHF 的价值就在于:把难以手写成公式的人类偏好,转成可学习的奖励信号。
一个标准的 RLHF 流程
在语言模型里,最经典的 RLHF 流程通常分成三步:
- 先做
SFT(supervised fine-tuning),得到一个能基本按指令回答的初始策略; - 收集人类偏好比较数据,训练
reward model; - 用强化学习去优化这个 reward model,同时用
KL约束避免策略跑得太远。
InstructGPT 基本就是这条三阶段路线:SFT -> RM -> PPO。
第一步:SFT
假设输入 prompt 是
这一步的作用不是“最终对齐”,而是先给模型一个足够好的起点。因为如果初始策略太差,后面无论是采样比较数据,还是训练 reward model,都会很困难。
第二步:收集偏好数据
对同一个 prompt
最简单的情形是二选一:给定同一个 prompt
所以偏好数据的基本形式可以写成:
这类数据和监督学习里的“唯一标准答案”很不一样。RLHF 通常不要求人类给出精确分数,而是只要求人类回答:
这两个回答里,你更喜欢哪一个?
这样做的一个好处是:比较通常比打绝对分数更容易、更稳定。
第三步:训练奖励模型
奖励模型记成
最常见的做法是用 Bradley–Terry / logistic 形式建模偏好概率:
把分子分母同时除以
其中
奖励模型损失是怎么来的
既然训练数据告诉我们“在这对回答里,人类更喜欢
等价地,最小化负对数似然:
如果写成对整个比较数据集
这个损失非常好理解:
- 如果奖励模型给 winner 的分数明显高于 loser,那么括号里的差值大,sigmoid 接近 1,loss 很小;
- 如果它把 loser 评得更高,那么差值会变小甚至为负,loss 就会变大。
所以 reward model 学到的不是“真实世界奖励”,而是:
一个尽量和人类偏好排序一致的标量函数。
第四步:用 RL 优化策略
有了奖励模型以后,最朴素的想法就是直接最大化期望奖励:
但如果只盯着 reward model 最大化,会出现一个严重问题:
策略可能会学会“钻奖励模型的空子”,生成在人类看来并不好、但能骗过 reward model 的回答。
因此,RLHF 通常不会只优化
这里:
是当前策略; 是参考策略,通常就是 SFT 模型; 控制“追求奖励”和“别跑太远”之间的权衡。
为什么要加 KL
KL 约束的直觉很重要。
奖励模型只在有限的比较数据上训练过,所以它只在某个分布附近比较可信。如果策略为了拿高分,跑到一个很奇怪的区域,reward model 可能就会严重失真。加上 KL 后,策略就会被拉回参考模型附近,避免过度优化。
在语言模型里,由于序列概率可以按 token 分解:
所以 KL 惩罚也常写成逐 token 的形式:
这也是为什么 InstructGPT 里会说“对每个 token 加一个来自 SFT 模型的 KL penalty”。
TIP
表示:
当前模型参数是
时,给定输入 ,生成回答 的概率。
因为语言模型是一个 token 一个 token 生成的,所以整段回答概率可以拆成:
比如:
x = "法国首都是哪里?",y = "法国首都是巴黎。"
为什么要加 log?
因为连乘很多小概率会非常小,不方便算。
第五步:为什么常用 PPO
到这里,目标已经有了:让策略拿更高奖励,同时不要离参考策略太远。接下来就需要一个真正能优化策略的 RL 算法。
经典 RLHF 里最常用的是 PPO。它的核心策略目标写成:
其中
在语言模型的 RLHF 里,可以把:
- 状态
理解成 prompt + 已生成前缀; - 动作
理解成“下一个 token”; - 回答结束时 reward model 给出一个序列级奖励,再结合 KL 与 value/advantage 估计,把信用分配回各个 token。
也就是说,RLHF 里的 PPO 不是把语言模型当普通分类器训练,而是把“生成一整条回答”看成一条轨迹来优化。
RLHF 到底做了什么
如果把整个流程压成一句话,就是:
- 预训练告诉模型:什么文本像互联网文本;
- SFT 告诉模型:什么回答像人工示范;
- Reward model 告诉模型:人类在多个候选里更偏好哪种回答;
- RL 告诉模型:怎样系统性地提高这种偏好分数,同时别跑偏太远。
所以 RLHF 的本质不是“再做一次普通微调”,而是把训练目标从“拟合数据分布”进一步改成“优化人类偏好”。
RLHF 的优点
RLHF 最重要的优点,是它能处理那些很难手写成准确损失函数的目标。
比如:
- 一个回答是否真正 helpful;
- 一个摘要是否真的抓住重点;
- 一个回复是否显得诚实、稳妥、不过度自信。
这些目标很难直接写成标准监督学习标签,但人类通常能做相对稳定的比较判断。因此,偏好学习 + 奖励建模就成了一条很自然的路线。
RLHF 的局限
RLHF 也不是“有了人类反馈就万事大吉”。至少有三类问题需要记住。
第一,reward model 不等于真实人类偏好。它只是用有限比较数据学出来的近似模型,所以可能学偏、学浅、或者抓住错误捷径。
第二,会发生 reward hacking / over-optimization。也就是策略越来越会讨好 reward model,但不一定越来越符合真实人类偏好。
第三,它对标注群体敏感。优化出来的模型,往往是在对齐“某一批标注者的偏好”,而不是抽象意义上的“全人类价值”。
总结
RLHF = 先学会模仿人,再学会赢得人的偏好。
重点
SFT:
Reward model:
RLHF 的策略目标(带 KL):
RLHF 的标准路线是:先用监督微调得到一个初始策略,再利用人类比较数据训练奖励模型,最后用 PPO 等强化学习算法去最大化奖励模型,同时加入 KL 正则防止策略偏离参考模型太远。它的核心价值在于:把“人类更喜欢什么回答”这种难以直接写成公式的目标,转化为一个可以训练、可以优化的学习问题。