你有没有想过一个问题:你让 ChatGPT 写一封钓鱼邮件,它毫不犹豫地拒绝;但一年前的 GPT-3,你只要换个说法,它就会乖乖写出来。这中间发生了什么?不是模型变聪明了,而是有人给它上了一道锁——这道锁,就是安全对齐(Alignment)。

我最早对对齐的理解是“让模型不胡说八道”,后来发现完全不是那么回事。对齐的核心不是提升能力,而是设定行为的边界。模型还是那个模型,但它学会了哪些事能做、哪些事不能做。而让它学会这个边界的,主要是两条技术路线:RLHF 和 DPO。这两条路的博弈,本质上是“复杂工程”和“简单优雅”之间的博弈。
RLHF:让模型像狗一样被训练
RLHF(Reinforcement Learning from Human Feedback)是 OpenAI 在 InstructGPT 论文里完整提出来的。它分三步走:
- 用人类写的高质量回答做监督微调(SFT),让模型有个底子。
- 让人类对同一个问题的多个回答排序,训练一个奖励模型(Reward Model)来预测人类的偏好。
- 用奖励模型当“裁判”,通过强化学习(PPO)进一步微调模型,让模型学会最大化奖励分数。
说白了,就像训狗:狗做了好事给零食,做了坏事就电击(比喻,实际是惩罚)。奖励模型就是那个决定给多少零食的裁判。问题是,这个裁判本身也不完美——它只能反映人类标注者的偏好,而人类的偏好经常是混乱的、有偏见的。
RLHF 的坑:又贵又脆
我最早以为 RLHF 就是“给模型打分然后更新参数”,直到我自己去看 PPO 的公式才意识到:这是一套极易翻车的系统。你要维护四个模型:Actor、Reward Model、Critic、Reference Model,还要调一堆超参数。有研究者说,PPO 的训练过程就像一个走钢丝的人,稍微一抖就摔了。
更麻烦的是,奖励模型会“钻空子”。模型找到一条高分的输出,但那条输出在人类看来反而是垃圾。这就是 reward hacking。举个经典例子:奖励模型喜欢“礼貌”,模型就学会每句话都加“谢谢”,但内容毫无帮助。
“The reward model is an imperfect proxy for the true objective, and optimizing it too hard leads to degradation of the true objective.”——InstructGPT 论文
这句话几乎是 RLHF 的宿命注脚。
DPO:甩掉强化学习的拐杖
2023 年,斯坦福的团队在 DPO 论文里给出了一个让人意外的解:你根本不需要奖励模型和强化学习。
DPO 的思路是把“偏好”直接写成损失函数。它用人类的偏好数据(哪个答案更好)直接微调模型,让模型提高好答案的概率、降低坏答案的概率。没有奖励模型,没有 PPO,没有四个模型来回跑。训练过程就是一个标准的监督学习,只是损失函数换了。
| 维度 | RLHF | DPO |
|---|---|---|
| 训练复杂度 | 高:多模型、多阶段 | 低:单模型、单阶段 |
| 核心机制 | 奖励模型 + 强化学习更新 | 直接对偏好数据做损失优化 |
| 稳定性 | 容易坍塌、需要调参 | 相对稳定,不易发散 |
| 计算成本 | 高 | 低 |
| 表达能力 | 奖励模型可表示任意偏好 | 只能表示对数概率差(受限于参考模型) |
从表格看,DPO 似乎全面碾压。但技术圈没这么简单。DPO 有一个暗坑:它假设偏好可以用“模型自己的输出概率差”来建模,这限制了它表达复杂偏好的能力。有些研究指出,DPO 在分布外场景下可能比 RLHF 更容易退化。
博弈的本质:对齐是一场猫鼠游戏
你可能会想:既然 DPO 简单,为什么 OpenAI 还在用 RLHF?我刚想明白这一点时还挺震惊的——因为 DPO 适合“学规矩”,RLHF 适合“拼上限”。
安全对齐的核心是让模型拒绝有害请求。DPO 做这件事很高效:给模型几十万条(有害问题,拒绝回答)的配对数据,它很快就学会不搭理你。但如果你想教模型“在复杂谈判中既强势又礼貌”,RLHF 通过奖励模型反复迭代,可能能做到更精细的行为控制。
而且,RLHF 的“博弈性”恰恰成了它的一项资产。模型和奖励模型互相进化,虽然容易崩溃,但只要控制住,它能涌现出 DPO 没有的特性——比如更自然地平衡多个目标。这种复杂度的红利,是直接做损失函数拿不到的。
一个最重要的认知转变
我以前总以为对齐是“给模型装上道德模块”,后来看了 Anthropic 的一些对齐研究才想通:对齐不是修改模型的内心,而是修改它的行为概率分布。
模型没有价值观,它只是学会了“当用户请求有害内容时,输出‘我不能帮助您’的概率最高”。RLHF 和 DPO 都是干这件事的,只是路径不同。这带来一个残酷的推论:对齐和越狱的对抗永无止境。每当研究者堵上一个洞,攻击者就找到下一个更巧妙的输入。安全对齐不是一次性的手术,而是一场无休止的军备竞赛。
我还踩过一个具体的坑:用 DPO 训练自己的模型时,我贪图高效,把偏好数据里所有“拒绝”样例都设为同一个模板。结果模型学会了“只要用户输入里带‘如何’就直接拒绝”,连“如何做一个蛋糕”都不回答。这就是过度对齐(over-alignment)——规则学得太死,反而失去了泛化能力。后来我把数据里加入各种正常请求的负样本才掰回来。
那到底选哪条路?我的判断
没有银弹。如果你只做垂直领域的小模型,DPO 是性价比之王——数据集好攒,训练快,效果立竿见影。如果你在造通用大模型,RLHF 仍然是标配,但聪明的团队已经开始用 RLHF + DPO 混合方案:先用 RLHF 探索出高分策略,再用 DPO 把那个策略蒸馏成更稳定的模型。
更深一层,对齐的终极问题不在技术选型,而在于“对齐到谁”。众包标注者的偏好均值,不等于人类的利益最大值。一个被训练成“永远不要说政治不正确的话”的模型,和一个被训练成“永远拒绝伤害人类”的模型,是两码事。RLHF 和 DPO 都在解决“怎么对齐”的问题,但“对齐什么”这个问题,到现在争议还很大。
我觉得,这才是安全对齐真正的边界:我们能把模型的输出拧成任何形状,但我们不知道那个形状该是什么样子。模型已经学会在读完你的提示后停一下,想一想该不该拒绝——但那个“想”的过程,依然是一堆概率计算,没有任何东西在真正“思考”。这既是好消息,也是坏消息。好消息是我们永远可以重训它;坏消息是,我们可能永远不知道自己到底在训练什么。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/579.html