Hinton 的知识蒸馏:让小模型喝下大模型的“暗知识”
// TL;DR
- 大模型输出的概率分布(软标签)里藏着类间相似度信息,Hinton 称之为 dark knowledge。
- 用带温度的 softmax 软化分布,让小模型同时拟合软标签和真实标签。
- 蒸馏让“训练用大模型、部署用小模型”成为标准做法。
一句话版本
Hinton、Vinyals 和 Dean 这篇论文回答了一个很实际的问题:大模型(或者一堆模型的 ensemble)效果好但太重,怎么把它的本事转移到一个小模型上?答案:别只用 one-hot 标签训练小模型,用大模型输出的概率分布当目标。
直觉在哪?一张宝马车的图片,大模型可能给“垃圾车”0.001 的概率,但给“胡萝卜”只有 0.000001。这种“错误之间的相对关系”就是所谓的暗知识——它编码了类别之间的相似结构,而 one-hot 标签把这些信息全扔了。
# 蒸馏的核心损失(示意)
soft_targets = softmax(teacher_logits / T)
soft_preds = softmax(student_logits / T)
loss = alpha * kl_div(soft_preds, soft_targets) * T**2 \
+ (1 - alpha) * cross_entropy(student_logits, labels)
为什么我觉得它重要
这篇论文表面上讲模型压缩,实际上提出了一个更深的问题:模型学到的知识到底存在哪?答案显然不只在权重里,也在它对输入的整个响应分布里。从工程角度,蒸馏给了我们一条标准路径:研究阶段堆算力堆出最好的模型,部署阶段蒸馏成小模型上线。这个“教师-学生”范式,感觉会用很多年。