摘要:
本文主要讨论知识蒸馏的功效,实验发现更准确的老师往往不是最好的老师。通过梳理影响知识蒸馏性能的因素,发现,更大的模型并不经常成为更好的教师。实验证明是能力不匹配的结果,小型的学生模型无法很好的模拟大的教师模型,现有的规避方法效果不是很好。通过实验,我们最后发现可以提前停止教师培训来缓解。实验证明理论正确。
问题的提出:
知识蒸馏背后的想法是,来自训练有素的教师的软目标更多地反映了数据,而不仅仅是真正的标签。人们可能会认为,随着教师变得更加准确,这些软目标将捕获潜在的类分布,从而更好地监督学生。因此,直觉上,我们可能会期望更大,更准确的模型可能会形成更好的教师。然后通过实验来证明是否属实。
实验结果:
从实验中,我们发现更大、更准确的模型造就更好的教师的假设是不正确的:尽管随着教师变大,教师的准确性继续上升(参见教师准确性的补充),但学生的准确性上升,然后开始下降
为什么更大、更准确的教师不能提高学生的准确性,提出两个假设:
- 学生能够模仿老师,但这并不能提高准确性。这表明 KD 损失与我们关心的精度指标不匹配
- 学生无法模仿老师,这表明学生和教师的能力不匹配
实验证明:
在这两种情况下,最大的教师的KD错误/损失都要高得多,这反过来又导致学生最不准确。这表明学生无法模仿大教师,并指出了第二个假设,即问题在于能力不匹配
问题的发现:
实验中KD 损失最初提高了验证准确性,但在训练结束时开始损害准确性
思考的假设:
低容量学生可能处于欠拟合状态。学生可能没有足够的能力来最小化训练损失和知识蒸馏损失,并且可能最终以牺牲另一个损失(交叉熵损失)为代价来最小化一个损失(KD损失),特别是在训练即将结束时。也就是说为了得到较高的准确度那么就可以不要后面那段下降的部分。
解决办法:
在训练过程的早期停止知识蒸馏,并且仅在其余训练的交叉熵损失上进行梯度下降。将此过程称为“早期停止”知识蒸馏(“ESKD”),而不是标准知识蒸馏(“Full KD”)
实验证明:
与标准知识蒸馏的比较,通过显示训练结束时的损失值发现,提前停止的版本对所有老师来说都更好。而且早期停止版本实现了比基线版本更低的训练交叉熵损失和更高的 KD 损失,这表明后一种模型确实在权衡一个损失与另一个损失。
总结:
本文对影响知识蒸馏的因素进行了详尽的研究。主要发现知识蒸馏不是万能的,当学生的能力太低而无法成功模仿老师时,知识蒸馏就是不成功的。文中提出了一种通过尽早停止教师培训来缓解此问题的方法,以恢复更适合学生的解决方案。 最后,在CIFAR10和ImageNet以及Places 365的迁移学习上展示了这种方法的好处。
参考文献:On the Efficacy of Knowledge Distillation