17 · 后训练地图:为什么规则兜不住泛化¶
先讲给朋友听(如果你只有一分钟)¶
Prompt 是员工手册,RAG 是资料架,微调是入职培训。前两者管"他知不知道",后者管"他愿不愿意、会不会"——你给模型写一百条规则"不要用列表要用表格",不如用三百条好答案训一遍。因为规则是逐个案例的外推,后训练是把偏好压进权重。
补一句边界:后训练有两条平行的路——生成式(教模型写什么)和判别式(教模型判断什么)。本书前四篇讲生成式,本篇末尾的工位 5 讲判别式。
你的 Aha Moment¶
一个你肯定写过的场景:
你加了更严厉的措辞、加了 few-shot、加了正则后处理兜底——终于在第 42 次对话后它老实了,但换了个模型版本,问题原样复活。
Aha 就在这:规则是对抗,后训练是教育。 Prompt 的每条指令都改变不了模型的输出分布,它只是在概率上"推了一把";而微调是直接告诉模型"什么样的回答值钱",用几千个样本把这个偏好焊进参数里。
三个只能靠后训练解决的事,规则怎么做都是补丁:
| 症状 | 规则/工程方案的下场 | 后训练为什么能解 |
|---|---|---|
| 输出格式不稳定("偶尔不按 JSON") | few-shot + 正则兜底,治标 | 格式就是分布里的一条峰,训完直接收敛 |
| 风格不一致(每个客服回复语气都不同) | Prompt 里写"请温柔一点",模型对"温柔"的理解每次飘 | 给 300 条温柔范本,把"温柔"变成权重里的方向 |
| 小模型干不了精细活(1.7B 听不懂"分两步走") | Prompt 拆得再细,模型容量摆在那 | 先 SFT 教它步骤拆解,再用偏好数据教它别跳步 |
最后一行是关键,也是小模型路线的立项理由:2026 年斯坦福在 Qwen2.5-0.5B 上做过受控实验,结论是偏好优化"meaningfully improve small model behavior"——5 亿参数的模型也能被偏好数据明显改造。 这条对米宝你的意义直接:你机器上跑得动的 1.7B/3B 小模型,后训练完是能上岗的,不必迷信 API 后面的巨无霸。
还有一个反直觉的结论(oxRL 对 51 种后训练算法的受控对比):离线方法里 SFT 的最终成绩(54.4%)直接压过所有偏好算法(IPO 52.2% > KTO 51.2% > DPO 49.1% > SimPO 38.7%),DPO 家族内部各种变体差距不到 3.2 个百分点。翻译成人话:你把数据打磨好、把 SFT 做扎实,就已经赢了八成;花两周比较第 18 种 DPO 变体,不如回去多写 50 条好数据。
Aha 合龙:后训练的门槛从来不在算法,在数据。算法是开源库的三行代码,数据是你的业务认知。
不讲术语的版本:一张地图,四个工位¶
后训练(Post-training)= 模型出厂前的全部"入职培养"。预训练(读互联网成才)是别人的事,我们只谈从"基础模型/开源模型"到"能上岗"的这段路。
生成式路线(输出文字) 判别式路线(只输出概率)
───────────────────────── ──────────────────────────
基础模型 ─①SFT──▶ 会干活 ─②偏好对齐──▶ 干得好 冻结主干
│ │
└─③RLVR/GRPO──▶ 会推理会用工具 └─⑤判别式后训练(RLCD)
│ └▶ 只输出校准概率
④蒸馏(大模型教小模型) 的决策头
▼ (参数可低至 0.4%)
便宜可部署的专用模型
工位 1 · SFT(监督微调):手把手教。
拿"问题→标准答案"的成对数据,让模型模仿。这是后训练的地基,也是唯一"必须做"的工位。LoRA/QLoRA 让它平民化(18 篇的主角)。
工位 2 · 偏好对齐:让它知道"什么是好"。
SFT 只教了"可以这样答",偏好优化教"这样答比那样答强"。数据是三元组:{问题, 好答案, 坏答案}。
- DPO:直接用"好/坏"对训练,不用训奖励模型,简单稳定
- KTO:只需要"这个回答好不好"的单条标注(不用成对),标注便宜一半
- ORPO:把 SFT 和偏好对齐合成一步,省一轮训练
- PPO/RLHF:训一个奖励模型再做强化学习,贵且难,2026 年个人和小团队别碰
工位 3 · RLVR / GRPO(带可验证奖励的强化学习):让它学会"怎么想对"。
适合答案能被程序判对错的场景:数学题、代码单测、格式合规。做法是"让模型对同一题生成多个答案,对的加分错的减分,自我进化"。DeepSeek-R1 系列推理能力的主要来源。
好消息(ICLR 2026 的实证):GRPO 的奖励曲线在 70%~80% 个 epoch 内就饱和,再训纯属浪费算力——所以小团队完全可以做"短促突击式"的 GRPO。另一个好消息:2-GRPO 用 12.5% 的采样量保留了 16-GRPO 98.1% 的效果,穷有穷的玩法。
工位 4 · 蒸馏:让大佬带小弟。
用大模型(GPT/Claude/DeepSeek 满血版)生成高质量回答或推理轨迹,拿去训小模型。这是小模型路线的加速器:你不会有一手标注预算,但你有 API。
工位 5 · 判别式后训练("不写字的模型"):训模型做判断,而不是写作文。
前四个工位有一个共同前提:模型输出的是文字。但有一大类任务根本不需要文字——工单该转哪个部门、这条 prompt 是不是越狱注入、这段代码有没有安全漏洞。对这类任务,正确的产物不是一段话,而是一个校准过的概率。
这条路线的做法和前四个工位完全不同:
| 生成式后训练(工位 1-4) | 判别式后训练(工位 5) | |
|---|---|---|
| 产物 | 一个会说话的模型 | 一个只输出概率的决策头 |
| 典型训练 | SFT / DPO / GRPO | 判别式损失 + 校准优化(如 RLCD) |
| 冻结的部分 | 训 LoRA 适配器 | 主干可以完全冻结,只训一个小头 |
真实案例(2026 年 9 月,AutoTrust 开源的 JEV-27B):冻结整个 Qwen3.8-27B 主干,只训练一个 1.089 亿参数的决策块——占全模型的 0.4%,在单张 B200 上训练约 9.2 小时。官方验证了一个漂亮的性质:把这个决策块关掉,模型在 HumanEval 上的 164 个输出与原始模型逐字节相同——也就是说,它加的是新能力,而不是改掉了旧能力。
这一条对你的意义:决策头的参数占比可以低到 0.4%,这意味着"造一个专用判断器"的成本远低于你想象的 SFT。什么时候该走这条线:
- 任务能表述成固定选项 + 概率(分类、路由、审核、优先级)
- 你需要的不是解释,而是一个可以卡阈值做二次判断的分数
- 延迟敏感(决策必须能放进同步调用链里)
什么时候别走:需要开放生成、需要跨领域泛化、或者错误成本极高——那些还是老老实实用生成式路线。
可信度声明(本书的一贯做法):决策模型是 2026 年 9 月才出现的新品类,本书只采用多来源可交叉验证的事实(训练方式、参数占比、冻结主干的做法)。各家跑分对比目前全部来自利益相关方或立场性媒体,本书不引用。
这条声明不是客套——它是本书第 17 篇上线时被作者真正执行的一道工序。决策模型事件里,我们给每一条事实做了 S/A/B/C/D 可信度分级,只有 S 和 A 级的被写进书里,"谁打败谁"的跑分一律不引用。完整的分级标准、这次 review 的逐条记录、以及三个"看到数字先问什么"的自查问题,见 附录 B · AI 信息可信度分级手册。
半年后复盘约定:这个品类只有 1 个月历史,是否成立尚未可知。本书约定 2027 年 4 月 由作者重新 review 一次——到那时,是补一篇《System 1 vs System 2》专章,还是维持现状,就有了真实答案。判据是附录 B 的分级标准:半年后不管外面怎么吹,只信 S/A 级证据。
选型决策树(照这个走,别纠结)¶
你要解决什么问题?
├─ "输出格式/风格不听话、不稳定" → SFT(300~2000 条金数据)
├─ "两种回答方式我知道哪个好,但我写不出标准答案" → DPO/KTO(偏好对数据)
├─ "答案能判对错,要它自己想对"(代码/数学/抽取) → GRPO/RLVR(短训)
├─ "业务知识它不知道" → 别微调,回去 RAG(12 篇)
├─ "它不知道的知识 + 我的风格" → RAG + SFT 组合拳
├─ "任务只需要一个类别/分数,不要文字" → 判别式后训练(工位5,参数可低至 0.4%)
└─ "我机器跑不动大模型,但要那个质量" → 蒸馏(用大模型造数据训小模型)
最后两条是最容易走错的路:知识问题永远优先 RAG,微调灌知识又贵又容易忘;只有"行为、风格、格式、推理习惯"才是微调的主场。
Java 老司机对照室¶
| 后训练概念 | 你已经懂的概念 | 一句话翻译 |
|---|---|---|
| 预训练 | 通识教育(别人的事) | 万亿级算力,不是我们的赛道 |
| SFT | 入职培训(带标准答案的习题册) | 数据 = 习题册 |
| 基座模型选型 | 技术选型评审 | 中文 Qwen 系,先想清楚许可证 |
| LoRA/QLoRA | AOP 代理(不侵入原对象) | 18 篇讲透 |
| 偏好数据 | A/B 测试的标注数据 | {好, 坏} 对 |
| 奖励模型 | 打分卡 | RLHF 的中间产物,DPO 绕开它 |
| GRPO/RLVR | 自动化测试驱动的强化 | 对错由单测/规则判定,不靠人 |
| 蒸馏 | 高保真 Mock → 重写核心 | 大佬的生成就是你的标注 |
| 过拟合 | 死记答案不懂变通 | eval loss 抬头就是信号 |
| 灾难性遗忘 | 改 A 坏 B | 微调后能力回退,靠数据配比防 |
动手实验室¶
实验 1:给你的项目做一次"要不要微调"的体检¶
CASES = [
("客服回复语气不稳,有时正式有时卖萌", "SFT", "风格属于行为偏好,300条范本能定"),
("问它公司报销制度它不知道", "RAG", "知识问题,微调又贵又容易忘"),
("总把 JSON 包在 markdown 代码块里", "SFT+few-shot", "格式遵从,先用 few-shot 顶不住再训"),
("抽表格字段偶尔漏列", "GRPO", "答案可验证:列齐=对,漏=错"),
("我想让 1.7B 小模型干 GPT-4o 的活", "蒸馏", "用大模型造数据,别硬训小模型"),
("模型总爱在结论前加一堆废话", "DPO/KTO", "有'简洁版更好'的判断就能造偏好对"),
]
for symptom, drug, why in CASES:
print(f"{symptom:<28} → {drug:<12} ({why})")
把你的真实痛点填进去。填不出"症状"的微调项目,最后都会变成"为了微调而微调"。
实验 2:同一个问题的四种解法成本对比¶
# 假设你在做一个"把客服对话整理成工单"的功能
options = {
"裸 Prompt": {"标注成本": 0, "训练成本": 0, "格式稳定性": "低", "可维护性": "差"},
"Prompt+正则兜底": {"标注成本": 0, "训练成本": 0, "格式稳定性": "中", "可维护性": "中"},
"SFT LoRA": {"标注成本": 500, "训练成本": "3小时/4B", "格式稳定性": "高", "可维护性": "好"},
"SFT+DPO": {"标注成本": 800, "训练成本": "4小时/4B", "格式稳定性": "很高", "可维护性": "好"},
}
for k, v in options.items():
print(f"{k:<16} 标注{v['标注成本']}条 训练{v['训练成本']} 稳定性{v['格式稳定性']}")
跑完感受一下曲线:标注成本从 0 到 800 条是唯一持续上涨的,而稳定性在 SFT 之后收益锐减。 这就是"数据比算法贵"的具象化——也解释了为什么多数团队停在 SFT。
费曼复述卡¶
- 用"员工手册 vs 入职培训"的比喻,向同事解释:为什么规则(Prompt)治不了泛化,而微调可以?
- 说出后训练四个工位各自解决什么问题,并各举一个你项目中的例子。
- 为什么说"知识问题优先 RAG"是铁律?(提示:从微调灌知识的成本和遗忘曲线想)
三题过不了,回到选型决策树,把"要微调"的三个信号背下来。
今日一句话¶
Prompt 是推一把概率,微调是把偏好焊进参数——规则兜不住泛化,因为泛化本来就是权重的活。
下一篇:18 · SFT 深水区:让 1.7B 小模型上岗(返回 目录)