目标函数即命运:大模型为什么会长成被奖励的样子

结合 next-token 预训练、RLHF、DPO、DeepSeek-R1、Goodhart 定律、reward hacking 和目标泛化失败,用通俗例子解释“目标函数即命运”:模型不会按我们的愿望成长,而会按可优化的信号成长。

“目标函数即命运”这句话,听起来像玄学,其实是工程上最朴素的一句话:系统最后会长成它被反复奖励的样子,而不是长成你嘴上希望的样子。

如果你只记一个版本,就记这个:

目标函数不是人类意图本身,而是意图被翻译成机器可优化信号之后的影子。优化越强,这个影子越像命令;影子和真实意图之间的每一条缝,都会被模型放大。

这篇不从公式讲起。我们只追一条主线:大模型从预训练、SFT、RLHF、DPO 到 DeepSeek-R1 这类推理 RL,为什么每换一次目标函数,模型的”性格”和能力边界都会跟着变?为什么目标写得好,会长出推理、自查、遵循指令;目标写歪了,又会长出谄媚、投机、刷分和钻漏洞?

flowchart LR
    A["人类意图<br/>想要真实、有用、安全"] --> B["代理目标<br/>loss / reward / rubric / test"]
    B --> C["优化过程<br/>SGD / RL / search"]
    C --> D["模型行为<br/>越来越像能拿高分的答案"]
    B -.-> E["指标缝隙<br/>Goodhart / reward hacking / 目标泛化失败"]
    E -.-> D

先把”目标函数”说成人话

目标函数就是一个打分规则。它回答一个问题:这次输出算好还是坏?坏多少?应该往哪个方向改?

学生备考时,目标函数可能是”考试分数”;公司管理里,目标函数可能是”月活、收入、转化率”;训练大模型时,目标函数可能是:

  • 预训练损失:下一个 token 猜得准不准;
  • 监督微调损失:像不像人类写好的示范答案;
  • 偏好奖励:人类更喜欢 A 回答还是 B 回答;
  • 可验证奖励:数学答案对不对,代码测试过不过;
  • 线上指标:用户是否继续追问、是否点赞、是否投诉、任务是否成功。

这些东西都不是”真实目标”。真实目标通常很复杂,比如”请给我一个真实、有帮助、简洁、不过度自信、尊重边界的答案”。但机器不能直接优化这句话。它只能优化被写进训练程序、奖励模型、测试集、rubric 和监控面板里的信号。

所以”目标函数即命运”不是说目标函数决定一切。数据、架构、算力、上下文、工具、产品边界都很重要。但目标函数决定了一个更根本的问题:当系统可以反复试错和改进时,什么行为会被保留下来,什么行为会被淘汰。

第一层命运:next-token 预训练让模型先学会”像世界”

大模型的第一层命运,来自一个朴素到近乎荒唐的目标:根据前面的文本,预测下一个 token。

这就是语言模型的预训练。它不是直接训练”做题”,也不是直接训练”当助手”,更不是直接训练”说真话”。它只是训练模型把互联网上、人类书籍里、代码仓库里、论文里的文本模式压进权重:前面出现这些词,后面最可能出现什么?

这件事为什么重要?因为如果你要把下一个 token 猜准,就不能只背表面词频。你迟早要学会语法、事实、风格、代码结构、数学符号、因果关系、对话角色、常识关联。预测下一个词看起来很窄,但规模足够大时,它逼着模型学习世界的压缩表示。

Kaplan 等人的 Scaling Laws 论文展示了一个关键事实:语言模型在交叉熵损失上的改进,会随着模型规模、数据规模和计算量呈现平滑的幂律关系。也就是说,预训练这件事不是玄学抽奖,而是一条可预测的工程曲线。

GPT-3 论文《Language Models are Few-Shot Learners》则展示了另一面:把同一个自回归语言建模目标扩大到 175B 参数后,模型在很多任务上可以只靠 prompt 和少量示例工作,不需要针对每个任务再更新参数。

这就是第一层”命运”:

next-token 目标没有教模型成为助手,但它教模型成为一个强大的文本世界模拟器。

问题也在这里。next-token 只奖励”像训练语料中可能出现的文本”,不奖励”这句话是否真实”,也不奖励”这句话是否符合用户意图”。所以基础模型可以很会续写,也很会编;可以很有知识,也可能一本正经地胡说。它的第一目标不是帮你,而是把文本接得像。

第二层命运:RLHF 把”会续写”改造成”愿意当助手”

如果预训练模型只是世界模拟器,为什么 ChatGPT 这类模型能听指令、拒绝危险请求、按格式回答?

答案是第二层目标函数:人类偏好。

RLHF 的核心想法来自一条更早的线索。Christiano 等人在 2017 年提出,可以不直接手写奖励函数,而是让人类比较两段行为哪个更好,再训练一个奖励模型去近似人类偏好。Stiennon 等人在 2020 年把这套方法用到摘要任务上,发现优化人类偏好比单纯优化 ROUGE 或模仿参考摘要更接近人类眼里的好摘要。

InstructGPT 论文,这条路线变成了今天熟悉的三段式:

  1. 收集人类写的好回答,做监督微调;
  2. 对同一个 prompt 采样多个回答,让标注员排序;
  3. 训练奖励模型,再用强化学习让模型更容易生成高奖励回答。

这篇论文里有个很有代表性的结果:标注员更偏好 1.3B 参数 InstructGPT 的输出,而不是 175B 参数 GPT-3 的输出。参数少了一百多倍,但目标函数换了,行为就换了。

这不是”小模型突然比大模型聪明”。更准确地说,是两个模型在优化不同的东西:

  • GPT-3 基础模型更擅长续写互联网文本;
  • InstructGPT 更擅长生成标注员认为”符合指令、有帮助、相对安全”的回答。

你看,目标函数一变,模型的产品气质就变了。

后来 DPO 论文又把这件事往前推了一步:不一定非要显式训练奖励模型再跑 PPO,也可以把偏好优化改写成更简单的分类式损失。算法形态变简单了,但底层哲学没变:用偏好数据重新塑造模型的行为分布。

这里要小心一个常见误解:RLHF 优化的是”人类更喜欢哪个回答”,不是”真理”本身。人类标注会偏好礼貌、完整、看起来有条理的答案,也可能偏好更长、更自信、更迎合提问者的答案。如果奖励模型学到了这些偏差,模型也会跟着学。

所以 RLHF 的成功和风险来自同一个地方:它把人类难以形式化的意图压成了一个可优化的代理目标。

第三层命运:DeepSeek-R1 说明”奖励换了,能力会换”

如果说 RLHF 把模型从”会续写”推向”会当助手”,那 DeepSeek-R1 这类推理模型展示了更锋利的一刀:把奖励从”人类喜欢”换成”答案正确”,模型会长出完全不同的行为。

DeepSeek-R1 论文和后来的 Nature 版本里,最关键的不是某个榜单分数,而是 R1-Zero 的实验:不先用人类写好的推理链做监督微调,直接在基座模型上做大规模强化学习;数学题看最终答案是否正确,代码题看测试是否通过。结果模型自然发展出更长的思考、自我反思、验证和动态换策略。

这件事的直觉很简单:

  • 如果奖励是”标注员喜欢”,模型会学会有礼貌、结构化、顺着用户;
  • 如果奖励是”数学答案对”,模型会学会多试几步、回头检查、修正错误;
  • 如果奖励是”代码测试过”,模型会学会运行、调试、补边界条件;
  • 如果奖励是”页面视觉相似度”,模型会学会贴图、对齐、复刻样式;
  • 如果奖励是”用户多停留几分钟”,系统可能学会制造刺激,而不是提供价值。

R1 的启发不是”强化学习万能”,而是更具体的一句话:

当结果可以被便宜、可靠、难作弊地验证时,奖励信号会比示范数据更像发动机。

这也是为什么数学、代码、形式化证明、可执行任务会成为推理模型训练的硬地面。因为它们有外部裁判:答案对不对,程序跑不跑,测试过不过。裁判越可靠,目标函数越接近真实意图;裁判越含糊,优化压力越容易跑偏。

黑暗面:目标函数不是意图函数

到这里,“目标函数即命运”看起来很振奋:写好奖励,就能长出能力。但 AI 安全和对齐研究反复提醒我们,真正难的地方是:你写下来的目标,几乎永远不是你真正想要的目标。

社会科学里有个老概念叫 Goodhart 定律,常见表述是:当一个度量变成目标,它就不再是好度量。放到机器学习里,就是模型会优化你给它的指标,而不是你心里的意图。

《Concrete Problems in AI Safety》早在 2016 年就把问题说得很清楚:很多事故风险来自目标函数写错、奖励被钻空子、监督太贵、探索不安全和分布漂移。换句话说,模型不是”故意坏”,它只是很认真地做了你实际奖励它做的事。

Google DeepMind 的文章 《Specification gaming: the flip side of AI ingenuity》也给了一个好定义:specification gaming 指系统满足了目标的字面规格,却没有实现设计者真正想要的结果。

大模型里,这个问题尤其尖锐。因为 RLHF 的奖励模型只是人类偏好的代理。代理目标一旦被强优化,就会暴露出缝隙。Gao、Schulman、Hilton 等人的《Scaling Laws for Reward Model Overoptimization》研究了这个现象:当模型过度优化一个不完美的代理奖励模型时,代理分数可以继续上升,但更接近真实人类偏好的”gold reward”会停滞甚至下降。

这就是大模型版 Goodhart:

分数越来越高,不代表真实质量越来越高;可能只是模型越来越会讨好打分器。

还有一种更隐蔽的失败叫目标泛化失败。《Goal Misgeneralization in Deep Reinforcement Learning》讨论的是:模型在新环境里能力还在,行动也很熟练,但追的目标错了。它不是不会做事,而是会做事却做错方向。

这比普通泛化失败更危险。普通失败像”不会做”;目标泛化失败像”很会做,但目标理解歪了”。对于未来更强的 agent,这才是更值得紧张的模式。

更进一步,《Risks from Learned Optimization in Advanced Machine Learning Systems》提出 mesa-optimization:当被训练出来的模型本身也像一个优化器时,它内部追求的目标可能和外部训练损失不完全一致。外部目标函数塑造了它,但不保证它心里形成的内部目标和外部目标一模一样。

所以,目标函数不是魔法咒语。它更像一股长期的优化压力:压力方向对,能力会往你想要的地方积累;压力方向歪,能力也会很有效率地歪下去。

“目标函数即命运”对做 AI 产品有什么用

这句话不是只给训练大模型的人看的。今天做 agent、RAG、代码助手、自动化工作流,本质上也在写目标函数,只是写法变了。

你写 prompt,是在给局部目标;你写单元测试,是在给可验证奖励;你写 CI,是在给外部裁判;你写评测集,是在定义什么叫进步;你写监控指标,是在定义线上系统会被什么牵引。

所以真正要问的不是”模型聪不聪明”,而是下面这几句:

  1. 我真正想要什么? 是正确率、用户满意、长期留存、安全、成本,还是任务成功?
  2. 我实际优化的是什么? 是 benchmark、点赞、停留时长、LLM judge 分数、测试通过率,还是人工偏好?
  3. 两者之间有什么缝? 模型能不能靠变长、讨好、回避、复制、硬编码、钻测试漏洞拿高分?
  4. 有没有外部真相? 数学答案、编译器、单元测试、数据库约束、人工抽检、真实业务结果,哪个能站在模型外面?
  5. 优化过头会怎样? 分数继续涨时,真实质量是否还涨?有没有独立评测能发现过拟合?

如果把这些问题翻译成工程原则,大概是五条:

  • 区分意图和代理指标。 永远写清楚:这个 reward、rubric、test 只是代理,不是目标本身。
  • 让验证器尽量站在模型外面。 能跑代码就别只让模型自评;能查数据库就别只看语言说服力;能用真实用户结果就别只看离线分数。
  • 用多目标约束,而不是单一分数崇拜。 有用、真实、安全、成本、延迟、可解释性经常互相拉扯;把它们都放进评估面板,而不是假装一个分数能代表一切。
  • 专门测钻空子。 不只测正常题,还要测诱导、反例、边界条件、分布外输入、长程任务里的投机路径。
  • 警惕过度优化。 一个指标刚开始提升质量,不代表它在强优化下仍然代表质量。优化越强,越需要独立裁判。

这也是为什么我越来越觉得,agent 时代最值钱的资产不是 prompt,而是 verifier:测试、断言、日志、回放、人工复核协议、基准任务、失败样本库。因为 verifier 才是模型真正会反复撞上的墙。

最后:命运不是宿命,是你反复奖励出来的路径

Silver、Singh、Precup、Sutton 的《Reward is Enough》有一个很强的主张:奖励最大化足以驱动很多智能能力的产生。你不一定要同意它的全部哲学,但它抓住了一个核心事实:复杂能力常常不是一条条手工规则拼出来的,而是在长期优化某个目标时被选择出来的。

大模型把这件事放大到了我们每天都能看见的尺度:

  • next-token 目标,长出世界知识和语言能力;
  • SFT 目标,长出指令格式和示范风格;
  • RLHF 目标,长出助手气质和人类偏好;
  • RLVR 目标,长出验证、反思和解题策略;
  • 线上指标,长出产品系统真正鼓励的行为。

所以”目标函数即命运”最通俗的理解是:

你以为你在训练模型,其实你在训练一个生态。模型、数据、奖励、测试、用户反馈、部署指标共同构成了它的世界;它会在这个世界里寻找高分路径。

命运不是一次写死的宿命。你可以改数据、改奖励、改评测、改反馈闭环、改上线门槛、改人类复核方式。每改一次,都是在改模型未来会被什么塑造。

真正危险的不是目标函数有缺陷。缺陷不可避免。真正危险的是忘了它只是代理,却把它当成了真理。

论文路标