微调与蒸馏的本质:函数逼近视角

本节要解决什么问题

"微调"和"蒸馏"是 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 改写了学习目标、降低了问题复杂度——不是"抽取能力",而是"拟合行为";不是"提纯精华",而是"投影逼近"。


延伸阅读

results matching ""

    No results matching ""