微调与蒸馏的本质:函数逼近视角
本节要解决什么问题
"微调"和"蒸馏"是 LLM 时代绕不开的两个词,但它们极易被误解:
- 微调像在"补课",蒸馏像在"提纯"
- 蒸馏这个词本身带来误导——让人以为小模型把大模型的"知识"抽出来装进自己身体
要把这些误解拆干净,必须回到机器学习最底层的一件事:模型到底在学什么。
模型在学什么:函数,不是规则,也不是知识库
神经网络训练可以抽象为一个映射的逼近:
f_θ(x) → y
输入 x 是文本 token、图像像素或任意特征;输出 y 不是确定值,而是一个概率分布——下一个 token 的分布、类别的分布、动作的分布。训练的核心动作是通过反向传播调整参数 θ,让模型输出的分布更接近我们希望它输出的分布。
关键认知:模型并不"存知识"。模型在参数空间里表示并实现一个函数。所谓"能力",是该函数在某一类输入分布上的行为表现。
理解这一点,是理解微调和蒸馏的共同前提。
微调:在同一个函数族里,朝目标任务方向挪一步
预训练模型已经在海量数据上学到了通用表征与语言规律。微调做的不是从零开始,而是在此基础上继续优化:
- 目标变化:从"通用语料上的预测建模"变成"更贴近某个任务或领域的输出行为"
- 训练信号:来自任务数据(监督标签、偏好对齐数据、指令数据等)
- 参数更新:相对温和,尽量保留通用能力,同时在目标分布上表现更好
从本质上看:
微调是在同一类模型结构与参数化方式下,把当前函数
f_θ推到更适合目标任务的局部最优区域。
它不要求模型变小,也不直接解决部署效率问题。
工程比喻
微调就像后端工程师在已有的基础库里继续写业务逻辑——框架不变,接口不变,在现有基础上做定制开发。
蒸馏为什么会出现:普通监督训练在信息上"太粗糙"
要理解蒸馏,必须先理解一个常被忽略的事实:很多监督训练的标签信息量非常低。
典型的分类标签是 one-hot:正确类为 1,其余为 0。这种信号只表达"对/错",不表达"错得有多接近"。
举例来说:
- 图像分类中,"猫"和"狗"相似,"猫"和"车"差异巨大
- 但 one-hot 标签对这两种错误一视同仁
- 模型只能从数据中自己摸索类别相似结构,训练更依赖容量和数据规模
而一个训练充分的大模型能输出更丰富、更结构化的分布——它不仅告诉你答案更可能是什么,还隐含表达了类别之间的相对关系。这部分"分布形状里的结构信息",是监督标签没有提供的。
蒸馏的本质:让小模型逼近大模型的输入–输出函数
剥离所有隐喻,蒸馏就是:
用一个已训练好的模型产生监督信号,让另一个模型在其可表达范围内逼近前者的函数行为。
形式化地说:
- Teacher(大模型)对输入
x输出分布p_T(y|x) - Student(小模型)输出
p_S(y|x) - 蒸馏训练让两者分布尽量一致,最小化 KL 散度:
L_distill = KL(p_T || p_S)
这就是所谓"用大模型教小模型"的准确含义:
Teacher 不"传递知识"。Teacher 生成目标函数值(软分布),Student 用这些值作为训练目标去拟合。
Teacher 更像高质量标注器或目标函数提供者,而不是把内部结构"复制"给 Student。
温度参数(Temperature)常被用来"拉平"分布,让次优类别的差异更显著——本质上不是花活,而是增强监督信号的结构表达。
工程比喻
蒸馏就像后端系统的降级方案设计:大服务能扛所有流量,小服务在有限资源下尽量逼近大服务的关键行为——不是复制全部逻辑,而是在核心路径上保持一致。
为什么"拟合得更好"反而还能更小?
直觉上的矛盾来自把三件事混为一潭:学到的东西多不多、拟合好不好、参数多不多。这三者并不等价。
原因一:Teacher 让学习目标更平滑、更低噪声
真实数据的标签往往带噪、带冲突、信息粗糙。Teacher 输出是对数据分布与表示结构的"平均化"结果,通常更稳定。Student 不需要在噪声里硬扛,而是在更干净的目标上学习。
原因二:Teacher 实际上缩小了 Student 的"搜索空间"
没有蒸馏时,小模型要在复杂崎岖的损失地形上寻找一个能解释数据的解。蒸馏后,小模型面对的是 Teacher 已经找到的解所诱导的目标行为。
Teacher 做了"找解"的重活,Student 做的是"在有限表达能力下逼近这个解"。
从函数空间角度更准确地说:
蒸馏是投影,不是提纯。
Student 能达到的最优结果,是把 Teacher 的行为投影到 Student 的函数族里:
f_S = argmin E_x[ d(f_S(x), f_T(x)) ]
f ∈ F_S
因此,小模型"更好"意味着:在给定任务与输入分布上,它更接近 Teacher 的行为;并不意味着它获得了 Teacher 的全部能力。
原因三:"信息更多"并不意味着"不可压缩"
Teacher 输出分布包含更丰富的结构,但结构化信息往往高度可压缩。蒸馏提供的不是随机额外信息,而是带强规律、强冗余的函数形状——这类信息不需要同等参数量才能表达。
大模型的巨大容量更多服务于训练阶段(覆盖多任务、处理极端样本、应对噪声数据)。当 Teacher 将复杂性平滑后,问题本身的复杂度下降,小模型就有机会以更少参数逼近核心行为。
一句话总结:蒸馏不是让小模型"变得拥有大模型同等复杂的内部",而是让世界(训练目标)变得更容易学。
重新审视"蒸馏"这个词
"蒸馏(distillation)"这个命名来自早期工程语境:把大模型性能"浓缩"到小模型,便于部署。它暗示一种"提纯精华"的过程,容易让人联想到知识可分离、能力可转移——这些都不是蒸馏的真实机制。
更准确的说法是:
- 教师引导的函数逼近(teacher-guided function approximation)
- 行为模仿学习(behavioral imitation learning)
- 函数空间投影(function space projection)
这些说法没有诗意,但准确:Student 学到的是 Teacher 在特定输入分布下的输出行为的可表示部分。
微调 vs 蒸馏:解决不同问题
| 微调 | 蒸馏 | |
|---|---|---|
| 解决什么问题 | 模型能力不够 | 模型资源消耗太高 |
| 改变什么 | 模型的能力边界 | 模型的实现方式 |
| 结果 | 模型变得更聪明 | 模型变得更便宜 |
| 典型场景 | 通用模型不精通医疗领域 | 推理成本太高、速度太慢 |
这两个问题是正交的——微调后你得到更聪明的模型,蒸馏后你得到更便宜的模型。
统一视角:先把目标函数找对,再把它表示得更省。
两者结合(工业界最常见)
先把大模型微调成领域专家,再把该专家的行为蒸馏到小模型:
通用大模型 → [微调] → 领域专家大模型 → [蒸馏] → 可部署的小模型
例如:用医疗数据微调 GPT-4 级别模型成为医疗助手,然后蒸馏到 GPT-3.5 级别大小,既保留专业能力,又控制部署成本。
本节小结
把模型从"知识容器"还原成"函数近似器",微调与蒸馏就不再神秘:
- 微调:在参数空间里把函数挪向目标任务
- 蒸馏:让另一个受限函数族去逼近已得到的函数行为
小模型之所以能更小却更好,并不是违背容量常识,而是因为 Teacher 改写了学习目标、降低了问题复杂度——不是"抽取能力",而是"拟合行为";不是"提纯精华",而是"投影逼近"。
延伸阅读
- 数学基础:反向传播 — 微调和蒸馏的训练信号都依赖反向传播
- 数学基础:交叉熵损失 — 蒸馏的 KL 散度是最小化交叉熵的变体
- Transformer 架构 — 微调通常在 Transformer 架构上进行