【论文链接】https://arxiv.org/abs/2203.08679
问题动机
目前最先进的蒸馏方法主要基于从中间层提取深层特征,而大大忽视了逻辑蒸馏的意义。 Logit 蒸馏需要边际计算和存储成本,但性能较差。直观上,logit 蒸馏应该达到与特征蒸馏相当的性能,因为 logit 比深层特征具有更高的语义级别。为了提供研究逻辑蒸馏的新观点,本文将经典 KD 损失重新表述为两部分,即目标类知识蒸馏 (TCKD) 和非目标类知识蒸馏 (NCKD)。通过实证研究和证明了两部分的效果:TCKD 传递了关于训练样本“难度”的知识,而 NCKD 是逻辑蒸馏起作用的主要原因。更重要的是,本文发现经典的 KD 损失是一个耦合公式,(1) 抑制了 NCKD 的有效性,(2) 限制了平衡这两个部分的灵活性。
解决方法
我们假设 logit 蒸馏的潜力受到未知原因的限制,导致性能不尽如人意。为了振兴基于 logits 的方法,我们通过深入研究 KD 的机制来开始这项工作。首先,我们将分类预测分为两个级别:(1)目标类和所有非目标类的二元预测和(2)每个非目标类的多类预测。基于此,我们将经典的 KD 损失重新表述为两部分,如图 b 所示。一种是针对目标类的二元 logit 蒸馏,另一种是针对非目标类的多类 logit 蒸馏。为了简化起见,我们将它们分别命名为目标分类知识蒸馏(TCKD)和非目标分类知识蒸馏(NCKD)。重新制定使我们能够独立研究这两个部分的影响。
TCKD 通过二进制逻辑蒸馏来传递知识,这意味着只提供目标类的预测,而每个非目标类的具体预测是未知的。一个合理的假设是 TCKD 传递了关于训练样本“难度”的知识,即知识描述了识别每个训练样本的难度。为了验证这一点,我们从三个方面设计实验来增加训练数据的“难度”,即更强的增强、更嘈杂的标签和固有的挑战性数据集。
NCKD 只考虑非目标逻辑之间的知识。有趣的是,我们凭经验证明,仅应用 NCKD 可以获得与经典 KD 相当甚至更好的结果,表明非目标逻辑中包含的知识至关重要,这可能是突出的“暗知识”。
对于来自t类的训练样本,分类概率定义为 其中
为第i个类别的概率,C为类别总数。
为第i类的对数。
为了区分与目标类相关和不相关的预测,我们定义了以下符号。表示目标类
和所有其他非目标类
的二元概率。
被定义为独立的非目标类之间的概率。
。
以下是DKD算法的伪代码:
实验结果
启发
能否将这种模式的知识蒸馏应用到模态缺失和不缺失的情况。