知识蒸馏(knowledge distillation)
/ NOL-ij dis-tih-LAY-shun /
一位老练的教授不会只把正确答案告诉你——他还会告诉你哪些错误答案颇具诱惑、为什么诱惑,而这份微妙之处,比那条干巴巴的事实教给你的更多。知识蒸馏借的正是这个点子:一个又大又准但笨重的模型(「老师」),去训练一个更小、更快的模型(「学生」),教的不只是正确答案,还有它那套完整而细腻的「看法」。
机制是这样的。一个分类器并不只挑一个答案;它在内部给每个选项都赋一个概率——也许是80%「哈士奇」、15%「狼」、5%「猫」。这些数字,叫做软目标,里面编码着丰富的信息:老师其实在说,哈士奇长得很像狼、却一点都不像猫。学生训练的目标,是去匹配老师那一整片概率分布,而不只是那个排第一的标签。多出来的这份信号,让一个小得多的网络去模仿大网络的行为时,远比单拿原始的硬标签去训这个小网络学得好。
蒸馏之所以重要,是因为最好的模型往往太大太慢,跑不进一部手机、也跟不上实时。它把一个大模型的大半身手,压缩进一个部署起来很便宜的东西里。诚实地说说它的边界:学生通常并不能完全追平老师——总有一些准确度的损耗——而且它只学得到老师所知道的,连老师的盲点与偏见也一并忠实继承。它是一种压缩技术,而不是凭空造出新能力的法门;你蒸不出一个比老师还聪明的学生。
一个庞大的图像分类器跑得很准,却慢得装不进手机。工程师训练一个小小的学生网络去照抄大模型的软概率——不只是「狗」,而是「82%狗、11%狼、5%狐狸」。这些「差一点」的猜测,教会了学生哪些类别彼此相像,于是它最终远比用纯标签训练的小网络更准,又小到能在设备上本地运行。
老师的「软」概率,承载的远不止那条干巴巴的正确答案。
蒸馏压缩的是已有的本事,并不创造新能力:学生超不过老师,还会连同老师的长处一起,把它的盲点和偏见也继承下来。