目录
提出了基于Oracle的知识蒸馏框架,并引入了Oracle知识蒸馏损失Loss
Introduction
知识蒸馏在2015年被提出,核心概念就是从一个集成网络模型或者大模型移植到一个容量较小的模型中,同时精度也不会有太多下降。知识蒸馏定义了一个新的学习范式,不同于以往的深度学习模型,知识都是直接从ground truth中提取,而在知识蒸馏中,学生网络去学习教师网络从而去逼近教师网络的精度。知识蒸馏不仅可以学习教师网络的输出标签,还可以学习到教师网络的特征表达,从而更加逼近教师的模型表达能力。然而,随着教师模型变复杂亦或是教师集成模型数量的增多,学生网络大多达不到教师网络的精度,反而差距越来越大。这是由于学生网络并不能充分利用教师模型。换句话说,学生网络中有限的容量成为知识蒸馏的瓶颈,这意味着增加学生模型的能力将有助于减少师生之间的表现差距。
本文提出了一种称作是Oracle知识蒸馏的方式,它可以有效地提升学生网络的模型表达能力和精度。往常的知识蒸馏学习算法将学生网络固定,而本文中可以对学生网络进行调节,从而找到自适应模型大小的最优结构和操作。同时,由于Oracle知识蒸馏会进一步加大容量差距,因此我们将神经架构搜索与Oracle知识蒸馏相结合。先前提到,学生网络的容量是知识蒸馏的瓶颈,我们的目的是尽可能地缩小由于模型容量而导致的模型表达差距。将NAS与Oracle知识蒸馏相结合可以找到具有足够容量的最优学生模型,缩小了学生与教师之间的模型容量差距,达到更高的精度。需要提到的是,在实验中,本文的算法会寻找比backbone学生网络稍大的模型进行有效的知识蒸馏。
Approach