基座模型 vs 对话模型
预训练模型只会续写文本,不会回答问题。指令微调加了什么,以及为什么助手人格是一层训练出来的外壳。
先动手,再深入阅读
模型为什么像助手一样回答 · 5 分钟拿一个从海量文本里学会了语言的模型,问它一个问题。你可能得不到答案。
你可能得到更多问题。或者一份选择题列表。或者一个「常见问题」标题,后面跟着一堆毫不相干的条目。
模型没坏。它做的正是它被训练来做的事——续写文本——而在它的训练数据里,一个问题后面跟着的,常常是另一个问题,而不是答案。
基座模型
**基座模型(base model)**只做过预训练:在海量语料上预测下一个 token。这给了它语法、事实、推理模式、代码和文风。
它没给的,是「你是一个在提要求的真人、而它应该帮忙」这个观念。没有请求-应答的框架。只有文本,以及「接下来顺理成章的是什么」这个问题。
所以基座模型表现得像一个极其强大的自动补全:
- 给它
The three main causes of the French Revolution were→ 一段扎实的续写 - 给它
What caused the French Revolution?→ 可能是一串相关的考试题
它们是可以被引导的,但只能靠把想要的输出变成顺理成章的续写。你写出答案的开头,模型把它写完。这是一门真本事,但没人愿意这么干活。
指令微调加了什么
把基座模型变成助手,需要额外的训练阶段。细节各家实验室不同,但形状是一致的。
监督微调(supervised fine-tuning)。 用大量「指令 + 好回答」的样本对训练。模型学到的是格式:输入被框成一个请求,输出被框成一个有帮助的回复。光这一步就能让行为大变。
偏好训练。 给模型看成对的回答,其中人类标出了更喜欢哪一个,然后把它往更受偏好的那一类上训。语气、拒答行为、留有余地的话术、排版习惯、长度,都是在这一步塑形的。常见的叫法是基于人类反馈的强化学习(RLHF),尽管变体有好几种。
结果就是一个指令模型或对话模型。底层架构一样,预训练知识一样,表面的行为不一样。
实际意味着什么
助手是一层外壳,不是本质。 那副热情帮忙的样子,是坐在一个下一 token 预测器上面的训练行为。底下它仍然在预测 token。人格讨喜,不代表内容可靠。
指令微调(instruction tuning)可能吃掉一部分原始能力。 把模型往安全、有帮助、可预测的输出上对齐(alignment),有时会收窄它愿意尝试的范围。这是真实的取舍,偶尔能在创意或不寻常的任务上看见,也是为什么有些实践者在某些生成任务上仍然偏爱基座模型。
对话模型期待特定格式。 指令模型是在一种特定的消息结构上训练的——角色、轮次标记、分隔符。API 替你处理了这些,但它解释了为什么 system prompt 的效果,和把同样的文字粘进一条 user 消息里不一样:它们占的是不同的结构槽位,模型学会了区别对待。
拒答来自这个阶段。 基座模型根本没有「拒绝」这个概念。拒答行为是偏好训练时训进去的,所以它时灵时不灵——那是学出来的倾向,不是规则引擎。
你在用的是哪一种
几乎肯定是指令模型。你通过对话界面用到的一切,以及几乎所有默认的 API 模型,都是指令微调过的。
基座模型通常会明确标注——往往是光秃秃的模型名,而微调版会带 -instruct、-chat 这类后缀。如果你在用开放权重的模型,先确认清楚:下了基座版却指望它有对话行为,是新手常见的第一个跟头。
要点回顾
- 基座模型续写文本;它没有请求-应答的框架。
- 指令微调用监督微调加偏好训练,把这个框架加上去。
- 助手人格是一个 token 预测器上训练出来的表层——态度好不等于准确。
- 对齐可能牺牲掉一部分原始能力,拒答行为也源自这里。
下一篇: 词表是从哪来的? —— 回到最底下的输入层。