文章目录
摘要
知识蒸馏是一种广泛适用的技术,用于在经过训练的教师网络的指导下训练学生网络。蒸馏损失决定了教师的知识如何被捕获并转移到学生上。在本文中,我们提出了一种新形式的知识蒸馏损失,其灵感来自于观察到语义相似的输入往往会在经过训练的网络中引发相似的激活模式。保持相似性知识蒸馏指导学生网络的训练,使得在教师网络中产生相似(不相似)激活的输入对在学生网络中产生相似(不相似)激活。与以前的蒸馏方法相比,学生不需要模仿教师的表示空间,而是在自己的表示空间中保留成对的相似性。在三个公共数据集上的实验证明了我们方法的潜力。
一、引言
如何定义蒸馏损失仍然是一个悬而未决的问题。在传统的知识蒸馏中,教师软化的分类结果被用作额外的监督:蒸馏损失来鼓励学生模仿教师的结果。
在本文中,我们提出了一种新的知识蒸馏形式,其灵感来自于观察到语义相似的输入往往会在经过训练的神经网络中引发相似的激活模式。保持相似性知识蒸馏指导学生网络的训练,使得在经训练的教师网络中产生相似(不相似)激活的输入对在学生网络中也产生相似(不相似)激活。
图一
给定一个输入b小批量的图像,我们从输出激活图计算成对的相似性矩阵。(b*b相似性矩阵对小批量图像引起的网络激活的相似性进行编码)
我们的蒸馏损失是由学生和教师产生的成对相似矩阵定义的。
图二
为支持猜想,可见图二。我们可以看到,来自相同对象类别的图像往往会激活训练网络中的类似通道。不同图像之间激活的相似性捕获了教师网络学习到的有用语义。我们研究这些相似性是否为知识蒸馏提供了信息丰富的监督信号。
主要贡献
- 我们介绍了保持相似性知识蒸馏,知识蒸馏的一种新形式,使用每一个输入的小批量内的成对激活相似性,用经过训练的教师网络监督学生网络的训练。
- 我们在三个公共数据集上实验验证了我们的方法。我们的实验显示了相似性保持知识蒸馏的潜力,不仅可以改善学生网络的训练结果,还可以补充传统的知识蒸馏方法。
二、方法
知识蒸馏的目标是在经过训练的教师网络的指导下训练学生网络,教师网络充当额外的监督源。经过训练的教师网络提供了超出常规数据监督的额外语义知识(例如,用于分类的常规独热向量)。挑战在于确定如何编码和传递教师的知识,使学生的表现性能最大化。
传统的知识蒸馏损失函数:
公式1中的第一项是鼓励学生网络从真实标签中学习,而第二项鼓励学生模仿教师的软化分类分数。
在图2中,我们可以观察到激活模式在同一对象类别中基本一致,而在不同类别中则不同。激活中的相关性是否可以编码有用的教师知识,并将其传递给学生?我们的假设是,如果两个输入在教师网络中产生高度相似的激活,那么将学生网络引导到一种配置是有益的,这种配置也会导致两个输入在学生中产生高度相似的激活。相反,如果两个输入在教师中产生不同的激活,我们希望这些输入在学生中也产生不同的激活。
给定一个输入小批量,将教师网络T在特定层l产生的激活映射表示为:
b为batch size,c为输出通道数
激活映射:特征映射是卷积层的直接输出,而激活映射是在特征映射基础上,经过激活函数(ReLU)处理后的结果。
令学生网络S在对应层l′处产生的激活映射为
注意,c不一定必须等于c′,对于空间维度也是如此。
我们定义了一个蒸馏损失,它惩罚AlT和A′lS的L2归一化外积的差异。
l和l’为教师网络和学会网络所对应的层
是一个b×b 矩阵,其元素 (i,j)编码了小批量中第 i和第 j 幅图像在教师网络该层激活的相似度。
式(2)中,前一个式子计算未归一化的激活相似性矩阵,后一个式子计算L2归一化激活相似性矩阵
相应的,对于学生网络
这里的l应该为l’
保持相似性蒸馏损失:
上式中的l和l’可以为同一块的末尾的层
将学生网络的输出与真实标签做交叉熵损失后与保持相似性蒸馏损失相加,得到知识蒸馏总损失
与以前的方法不同之处
这些以前的蒸馏方法鼓励学生模仿教师的表征空间的不同方面。我们的方法与这种常见的方法不同,它的目的是保持输入样本的成对激活相似性。例如,其行为不会因教师的表示空间的旋转而改变。在保持相似性的知识蒸馏中,学生不需要能够表达教师的表示空间,只要教师空间中的成对相似性在学生空间中得到很好的保留。
实验
略