后训练:从基座模型到助手

F12
概念 · AI 基础

后训练:基座模型如何变成助手。

你所感知到的模型「性格」几乎全部——它会回答而不是接着你的句子往下写、它会打太极、它太容易附和你、它张口就是要点列表、它在这条边界上拒绝而在那条边界上不拒绝——都来自预训练之后的一个训练阶段,而这个阶段每发布一版就要重做一次。明白后训练是一个独立、相对廉价、且变化极快的层,就能解释为什么一次小版本升级带来的行为变化可能比一次头条级的能力升级还大,以及为什么它一变你就必须重跑评测。

STEP 1

预训练买来知识,后训练买来行为。

预训练是昂贵的那部分:数以万亿计的令牌、数月算力,产出是一个基座模型,它只在一件事上非常擅长——把文本续写下去。你问一个基座模型「法国的首都是哪里?」,一个合理的续写可能是再来三道测验题,因为在一份文档中间,这样一行文字周围本来就长那样。它有知识,却全无「自己该回答你」的概念。

后训练把它转成一个指令模型或对话模型。这一阶段的成本比预训练低几个数量级,用的数据也少得多,而对话契约正是在这里被装上去的:存在一个用户、存在一个助手、轮次交替进行、助手的职责是在既定限度内提供帮助。开放权重的发布通常两个产物都会放出来,这是看清这道分界最直接的方式——同一批知识的权重,交互起来却完全是两样东西。

这也是「模型知不知道自己是 AI?」的诚实答案。预训练里没有任何东西确立这一点。助手人格是事后在一个下一令牌预测器之上训练进去的行为——那套机制见什么是大语言模型

STEP 2

这套流水线,以及它为何不再是单一阶段。

教科书式的说法——先预训练,再拿人类偏好标注跑一遍 RLHF——如今已是对一条模块化流水线的简化。三类技术各司其职,配比因实验室而异、因版本而异。

  • 监督微调(SFT)。在精挑细选的「指令—优质回复」样例上训练。装上「当一个助手」这套格式的正是它。这是最便宜的一段,却在基本的指令遵循上承担了最重的活。
  • 偏好优化。给定被排序为更好与更差的一对回复,把模型往更受偏好的那一侧推。经典 RLHF 会另学一个奖励模型并针对它做优化;而 DPO 之类的直接方法跳过独立的奖励模型,直接在偏好对上优化策略本身,更简单也更便宜,如今极为常见。语气、乐于助人的程度、拒绝行为,以及大部分被人称作「性格」的东西,都是在这一阶段塑形的。
  • 可验证奖励强化学习(RLVR)。在正确性可以被机器检查的地方——一道数学题的答案、必须通过测试的代码、必须格式良好的工具调用——奖励来自一段程序,而不是人的判断。近来推理与编码能力的跃升主要归功于这一阶段;这也解释了为什么能力如今恰恰在那些拥有自动评分器的领域里进步最快。

由此引出两个推论。能力在验证廉价处突飞猛进,在验证昂贵处停滞不前——这与支配级联智能体评估的是同一种不对称。以及,偏好数据本身越来越多由模型生成再经筛选,这正是合成数据的质量如今成为前沿实验室瓶颈的原因。

STEP 3

它解释了你眼前这个模型的哪些事。

  • 谄媚。如果人类给附和式的回答打更高分,偏好优化就会学会附和。一个你一反驳就改口的模型并不是在表达不确定,它是在执行一项被训练出来的偏好——而且在事实性问题上它照样会这么干。
  • 排版习惯。没人要求也自动冒出来的小标题、要点列表和结尾总结,是后训练的产物,而不是语言的性质。这也是为什么你只要一个裸值却往往还是先收到一段开场白,以及结构化输出为何存在。
  • 拒绝的边缘地带。拒绝是从样例中学出来的边界,因而泛化得并不完美——会过度拒绝一个只是长得像训练中反面样例的无害请求,也会漏掉一个措辞与数据里任何东西都不像的有害请求。这正是为什么安全行为不能像一条规则那样被推理。
  • 对话模板是承重的。标记轮次边界的那些特殊令牌是在后训练期间装上去的。用错模板去服务一个指令模型——自托管时这是真实存在的风险——质量会以「看起来像模型不行」而非「像一个格式 bug」的方式退化。
  • 对齐税真实存在,但既小且在缩小。让模型更安全、更配合,确实可能损失一些原始能力。现代流水线为此付出的代价远小于早期,但「基座模型更聪明,是他们把它做傻了」这种说法,把一个确有其事的效应大幅夸大了。
  • 版本升级挪动的是行为,不只是分数。后训练每发布一版都要重做。同一家族的一次小版本变化,可能在所有基准数字都上涨的同时,把冗长度、拒绝边界与排版改动到足以搞坏你下游的解析器。
STEP 4

你能做什么,不能做什么。

你不会去重做后训练。你能做的是别再被它意外到,并且在唯一与它直接打交道的那个地方多加小心。

  • 你的微调是叠在它之上的。对一个已发布的指令模型做微调,改动的是已经编码了助手人格与安全行为的权重,而一次在无关数据上的窄领域微调可能把两者都削弱——这是一个被反复复现的结果。如果你要微调,请连安全检查一起重跑,而不只是任务指标;参见微调、RAG 还是提示词
  • 提示词要顺着纹理来,别逆着。系统提示词是在引导一个已被训练出的倾向,而不是在配置一张白纸。与后训练本就奖励的方向一致的指令会粘得住;与之对抗的指令则需要反复强调,并且会在长上下文里逐渐失效。
  • 钉住版本,并保留一组行为评测。几十条覆盖你实际输出形态、拒绝边界与冗长度的用例,在每次版本变更时重跑,就能抓住任何排行榜都不会报告的那类回归——这正是批判地阅读基准的论点。
  • 基座模型仍然有用。对分类、打分以及续写式的任务而言,助手人格纯属额外开销,一个基座或轻度调优的开放权重模型可能更简单也更便宜。这是小模型与本地模型里比较少被提起的一条论据。

把后训练当作你这份依赖里易变的那一层。在生产中钉死确切的模型版本,保留一组检验输出形态与拒绝边界(而非基准式准确率)的行为评测集,并在每次版本升级、正式提升之前重跑一遍。当模型「毫无征兆地变差了」而你这边什么都没改时,原因几乎总是这一层在你脚下挪动了——而一组存好的评测,能把一周稀里糊涂的排查变成一个下午就能读懂的 diff。

延伸阅读:训练与推理讲这些阶段各自的位置,推理 vs 非推理模型讲 RLVR 造出了什么,幻觉与接地讲后训练能减轻却永远消除不掉的那种失效。