本文已授权极市平台, 并首发于极市平台公众号. 未经允许不得二次转载.
知识蒸馏(KD)已成为压缩深神经网络的一种表现良好的范式。进行知识蒸馏的典型方法是在教师网络的监督下训练学生网络,在教师网络中以一个或多个位置(spots,即 layers)来利用(harness)知识。在整个蒸馏过程中,一旦针对所有训练样本指定了蒸馏位置就不会再更改。
在这项工作中,我们认为蒸馏位置应该适应训练样本和蒸馏周期。因此,我们提出了一种新的蒸馏策略,称为 spot-adaptive KD(SAKD),以在整个蒸馏期间的每次训练迭代中,针对每个样本而在教师网络中自适应决定蒸馏位置。由于 SAKD 实际上专注于“在哪里蒸馏”,而不是大多数现有作品广泛研究的“要蒸馏什么”,因此可以将其无缝集成到现有的蒸馏方法中以进一步提高其性能。
在 10 种最先进的蒸馏算法上的实验验证了在同质和异质(homogeneous and heterogeneous,这里主要强调学生网络和教师网络是否是相同风格的架构)蒸馏的设置下 SAKD 在改善其蒸馏性能方面的有效性。
将 DNN 部署到资源有限的边缘设备上仍然存在 困难。为了使 DNN 更适用于这些现实情况,知识蒸馏(KD)被用于针对 DNN 的构建轻巧的替代。其主典型思想是采用一种“教师-学生”的学习形式,这里具有竞争力的轻量级替代品(称为学生)是通过模仿行为良好但结构繁琐的“教师”DNN 的行为而产生的。通过利用教师模型学到的隐式知识(dark knowledge),轻量 de 学生模型被期望可以实现可比的性能,但参数量却要少得多。
KD 已经逐渐成为一种成熟的模型压缩范式,已经出现了大量的相关工作。
除了经典的“教师-学生”范式,也存在一些其他的形式:
在这项工作中,我们仍然遵循传统设定,即教师网络和原始训练数据都可以用于训练学生网络。但是我们认为,这个一般的想法也可以应用于各种 KD 设置,这将留给将来的工作。
基于蒸馏位置的差异,可以将他们大致归为两类:
由于 multi-spot 蒸馏方法与 one-spot 方法相比,从教师模型中使用的信息更多,因此通常认为它们可以表现出较好迁移效果。
现有的蒸馏方法,无论是 one-spot 还是 mutli-spot,都共享一个共同的特征:蒸馏点通常是一种手动设计的选择,无法优化,尤其是对于具有数百或数千层的网络。一方面,如果蒸馏点过于稀疏,则学生模型不受教师的充分监督。另一方面,如果蒸馏斑的设置过于密集,例如,每个可能的层或神经元都被用上,学生模型的学习可能会过度正则化,这也会导致蒸馏性能恶化。
此外,当前方法采用了全局蒸馏策略,即蒸馏点一旦确定,就对于所有样本都是固定的。基本的假设是,这种蒸馏点对于整个数据分布都是最佳的,这在许多情况下是不正确的。理想情况下,我们希望可以为每个样本以及每个可能的位置自动确定蒸馏点。
这项工作提出了一种新的蒸馏策略 spot-adaptive KD(SAKD)。这使蒸馏点自适应与训练样本和蒸馏阶段。
为此,我们首先将学生模型和教师模型合并到一个多路径路由网络中,如图 2 所示。结构对数据流提供了多种可行的路径。当数据到达网络分支点时,一个轻巧的策略网络(policy network)会为每个样本选择最优的传播路径。
由于策略网络是在路由网络之上设计的,并通过路由网络同时进行优化,因此在学生模型的训练迭代中它可以自动确定每个样本的最佳蒸馏点。
由此可以看出来,所提出的方法着重于“在哪里提炼”,这与当前工作不同且相互正交,他们主要研究了“什么要蒸馏”,即要蒸馏的知识的形式。因此,提出的方法可以与现有方法无缝结合,以进一步增强蒸馏性能。具体而言,所提出的方法自然与同质蒸馏兼容,其中学生模型与教师模型相同。但是,实验表明,在异质蒸馏设置下,所提出的方法也可以很好地发挥作用,其中学生模型与教师模型架构差异很大。此外,尽管所提出的方法主要用于 multi-spot 蒸馏,但它也可以通过动态确定每个训练样本的蒸馏来提高 one-spot 蒸馏的性能。
总体而言,主要的贡献为:
路由网络是一种高模块化的神经网络,这是鼓励任务分解、降低模型复杂性和改善模型泛化能力所需的关键属性。路由网络通常由两个可训练的组件组成:一组函数模块(function settings)和一个策略代理(policy agent)。
路由网络与数种结构密切相关,例如条件计算、专家混合模型,以及他们基于现代注意力和稀疏结构的变体。它们已成功应用于多任务学习,迁移学习和语言模型等多个领域。在这项工作中,借助路由网络,我们提出了一种新型的蒸馏策略,以自动确定网络中的蒸馏位置。
整个模型由两个主要组成部分组成:多路径路由网络和一个轻量级策略网络。
所提出的蒸馏方法的一般思想是自动确定是否要在候选蒸馏点进行蒸馏,如图 2 所示。如果样本被策略网络路由到某些教师层,则表明对应的学生层不能替换这些老师层。因此,这些老师层中的知识应被蒸馏成相应的学生层。如果数据通过策略网络传输到某些学生层,则表明这些学生层是相应的教师层的良好替代品,可以产生优于或至少可比的表现。这些位置就不再需要蒸馏。
蒸馏的最终目标是使策略网络逐渐为路由数据而选择学生层,这意味着学生模型是教师网络的良好替代品。
不失一般性,假设用于视觉分类的卷积神经网络(CNN)由几个用于表征学习的卷积块、一个用于矢量化特征图的全连接的层以及用于做出概率预测的 softmax 层组成。每个卷积块由几个卷积层组成,每个卷积层随后是非线性激活层和批归一化层。一般而言,在每个块之后,特征图会被池化层或卷积层缩小了 2 个或更多。
由此,教师网络和学生网络可以大致表示为数个卷积块、一个线性层和一个 softmax 层的级联组合。
多路路由网络由教师和学生网络组成,其中间层相互关联。然而由于他们各个层之间存在维度不匹配的问题,所以本文也引入了用于对齐特征维度的 1x1 卷积适应层。由此,多路径路由网络同样可以看做是使用多个卷积层、一个线性层和 softmax 层的级联结构,但是不同于单一网络,这里的卷积层和线性层都是教师网络与学生网络对应结构的加权融合的结果(这里会用到适应层来对齐特征)。而用于融合所使用的权重就来自于策略网络,其取值范围为 0 到 1。当特征融合权重取离散值的情况时,网络实际上就成为了教师网络部分层和学生网络部分层的组合体。
使用路由网络,最终的目的是为了获得一个独立的学生模型,其可以对感兴趣任务表现的尽可能好。
我们采用策略网络来为通过路由网络的数据流路径上的每个样本做出决策。在这里,我们只采用轻量的全连接层来实现策略网络。
采样操作对于离散情况是不可微的。为了确保采样操作的可微分性,这里使用 Gumbel-Softmax 技术来实现策略网络。形式上来讲,对于第 i 个分支点,对应的路由向量是一个二维向量,这里第一个元素存储着表示第 i 个块中的教师网络层有多可能会被用于处理到来的数据。
前向传播中,该策略根据基于如下分布的分类分布中得出离散决策:
这里的 w 就是一个二维的 one-hot 向量,而“one_hot”函数表示返回 one-hot 向量的函数。最右侧量是一个二维向量,其中的元素都为从 Gumbel 分布中绘制的 i.i.d 样本,用于添加少量噪声,以避免 argmax 操作始终选择具有最高概率值的元素。
为了确保离散采样函数的可微分性,这里使用了 Gumbel-Softmax 技巧来在反向传播期间放松 w。
这里的 τ 是温度参数,用于近似后的分布的锐利程度。注意对于 w 中的每个向量,其中包含的两个元素之和都为 1。
提出的位置自适应蒸馏通过同时训练路由网络和策略网络而构造。从策略网络和路由网络的角度来看,训练所提出的网络是非平稳的,因为最佳路由策略取决于模块参数,反之亦然。
在这项工作中,多路路由网络和策略网络以端到端的方式同时训练。
完整的目标函数包括四部分:
在整个训练阶段,教师模型的预训练参数被保持固定。可训练的参数仅包括学生模型的参数,适应层和策略网络。策略网络和适应层仅参与仅计算路由损失,它们的参数仅在路由损失的监督下进行训练。
学生网络和策略网络形成一个环,学生模型的输出进入策略网络,策略网络的输出再次进入学生网络。为了稳定学生网络的训练,我们不再将反传策略网络的梯度到学生网络中。
在训练早期,由于教师模型已经训练得当,因此策略网络更有可能将样本传递给教师层。在这种情况下,知识蒸馏发生在所有候选蒸馏点。随着训练进行,学生模型在不同层次的不同程度上逐渐掌握了教师的知识。在这种情况下,策略网络可以为每个样本规划一条路径,其中教师层和学生层都交织在一起。因此,知识蒸馏是在某些层适应性进行的,以推动仅涉及学生层的最佳策略。
为了使提出的方法更清晰,伪代码在算法 1 中提供。
在实验当前方法与其他方法的组合效果时,所有方法都会与普通的 KD 损失(从老师和学生模型中的软化预测之间的差异)结合在一起,以提高其性能。因此,所有方法均至少涉及两个蒸馏点,无论它们最初是单点或多点蒸馏方法,都将变成多点版本。而且这些方法在本文的使用中,会在训练前确定不同的蒸馏点,并在整个蒸馏过程中保持相同。如果一种方法采用块 i(1≤i≤N+1)的知识,则将其蒸馏点称为 i。
软化预测分布的温度值设置为 4。gumbel-softmax 中的 τ 最初设置为 5,并在训练期间逐渐衰减,因此网络可以在早期阶段自由探索,并在后期利用收敛后的蒸馏策略。
为简单起见,超参数 β1 和 β3 被设置为 1。β2 是根据蒸馏方法设置的。我们在用 CRD 原始论文中的参数对大多数蒸馏方法设置 β2。除了 FitNets,为了更稳定的训练,所以 β2 设置为 1 而不是 1000。 β2 的详细设置如表 II 所示。
注意所有的对比方法都会搭配原始的 KD 策略,而且在我们的方案中,候选蒸馏点包括 softmax 层和一些中间层。对于中间层,不同方案会利用不同数量的的中间层,提出的自适应蒸馏策略仅确定是否在这些蒸馏点处进行蒸馏。它不会在标准蒸馏方法中添加任何其他候选蒸馏点。
与同质蒸馏相似,候选蒸馏点包括 softmax 层和中间层。softmax 层始终是自适应方案中的候选蒸馏点。
作者们也在 ImageNet 这样的大型数据集上验证了提出的策略的扩展性。
我们验证了策略网络做出决策的实用性。为此,我们介绍了四种基线蒸馏策略:
可以看出,所提出的自适应蒸馏始终优于其他基准,包括竞争性的 always-distillation。尽管对于某些蒸馏方法的改进有时微不足道,但几乎所有蒸馏的一致改进都验证了提出的策略网络确实为蒸馏做出了有用的路由决策。此外,anti-distillation 通常比 adaptive-,adaptive-和 rand-distillation 的性能要差得多,有时甚至比没有 no-distillation 的情况还要差。这些结果表明,在不适当的地方进行蒸馏可能对训练学生有害。
在这里,我们研究了策略网络在不同的蒸馏点和蒸馏阶段(即训练时期)做出的蒸馏决策。**在每个候选蒸馏位置,蒸馏的可能性是在此点蒸馏的样本数量与训练样本总数的比例。**图 3 中描述了沿训练时期的不同点的概率曲线。
一般而言,浅层对自适应蒸馏更敏感。深层的话,几乎所有样本都一直都需要蒸馏,正如 KD_4 和 KL 的曲线所展示的那样。这种现象的原因可能是浅层的特征对于蒸馏而言相对嘈杂。由于学生模型的能力比老师小得多,因此从这些嘈杂的功能中学习会使其在最终目标任务上的表现降低。
教师网络在提出的方法中一直是被冻结的。这里放松了这一约束,并介绍了两个替代设置:
可训练的教师网络提高了多路路由网络的能力,但可能会损害将要独立部署的学生模型的训练。表 VIII 提供了实验结果。可以看出,无论是从头开始还是从预训练的参数中训练教师网络,都会降低蒸馏性能,从而验证我们的假设。更糟糕的是,训练教师网络会减慢蒸馏过程,因为更新教师参数需要更多的计算。
提出的方法涉及几个超参数。但是,其中大多数是在以前的作品中引入的。我们沿用了这些文献中的设置。这个工作还引入了两个新的超参数,即 τ 和 β3。这里对齐进行敏感性分析,观察下他们的影响。
实验结果可以看到他们都会在某种程度上影响结果。但是,它们使所提出的自适应方法在广泛的值中获得了比标准蒸馏方法高的结果。这一特点使提出的方法更具潜力,因为我们没有过多调整参数。
为了更好地了解策略网络做出的决策,这里提供了 tiny-ImageNet 中十种类别上的决策的可视化。
可以看到,大多数要被蒸馏的图像,有着比不会被蒸馏的图像更好的质量。我们把没有知识蒸馏的样本分为四类:内容缺失,主题模棱两可,对象组,以及形态异常。这些分别由图中的红色,黄色,紫色和绿色方框表示。
这些低质量的特征可能产生嘈杂的特征或预测,这可能会因为学生模型能力有限,而损害模型的学习。我们承认,这些未蒸馏的图像可以从另一个角度为模型提供信息,但是它们引入的噪音也值得考虑。通常,具有判别性的图像可以提供有用特征,因此图中显示的蒸馏决策是合理的,因此这些图像的知识将很好地指导学生。