一句话说清:知识蒸馏(Knowledge Distillation)是让一个小模型(student,学生)去模仿一个大模型(teacher,老师)的输出概率分布,从而用更小的体积换到接近的能力。
不只是抄答案:软标签里的“暗知识”
传统训练给模型看的是硬标签:这张图是猫,就是 100% 猫、0% 狗、0% 狐狸。但一个训练好的大模型给出的往往是:猫 0.80、狗 0.15、狐狸 0.05。这些“错误选项”的比例关系本身就是信息——它在说“这确实像猫,但也有点像狗,完全不像狐狸”。这部分信息常被称为暗知识(dark knowledge)。
学生模型学的不是“标准答案”,而是“老师怎么看这个世界”。为了让学生看得更清楚,蒸馏时会给老师的输出加一个温度参数 T(temperature):T 越大,概率分布越平滑,那些 0.15 和 0.05 的相对大小更容易被学到。
打个比方:老医生带实习生。教科书只写“这是肺炎”,但老医生会说“八成是肺炎,一成半像支气管炎,剩下一丁点像过敏”。实习生学到的是鉴别思路,而不是背结论。等他独立看诊,遇到模糊病例时就更稳。
训练时到底在算什么
学生的损失函数通常是两部分相加:一部分是它和真实标签之间的交叉熵,另一部分(往往权重更高)是它和老师软标签之间的差异(常用 KL 散度)。前者保证不跑偏,后者负责“继承”老师的判断方式。
和相邻概念的区别
| 方法 | 做什么 | 模型大小 | 一般是否需要重新训练 |
|---|---|---|---|
| 知识蒸馏 | 学生模仿老师的输出分布 | 学生更小 | 是 |
| 量化 | 降低权重数值精度 | 基本不变 | 通常只需轻量微调 |
| 剪枝 | 删掉冗余的连接或结构 | 变小 | 通常需要微调 |
| 微调 | 在已有模型上继续训练 | 不变 | 是 |
蒸馏和量化、剪枝经常叠着用:先蒸馏出小模型,再量化剪枝,进一步压小。
对从业者和普通人的意义
对做工程的人,蒸馏是“降本”的常规武器:把大模型的能力搬到能本地跑、延迟低、成本低的小模型上,用在客服分流、端侧识别、批量打标这类场景。它也是一种数据增强——在标注稀缺的领域,用强模型的软标签当训练信号。
对普通职场人,最直观的感受是:会越来越多地遇到“能力差不多、但便宜很多、跑得快很多”的小模型,背后往往就有蒸馏。同时也要注意,用某个模型服务的输出去训练别的模型,是否被允许要看对方的服务条款,以官方页面为准。
最后补一句局限:学生模型的容量和老师水平共同决定天花板,蒸馏不是无限复制;像多步推理这类能力,往往还需要让学生学中间步骤,具体做法以相关论文和官方文档为准。
