解耦知识蒸馏(Decoupled Knowledge Distillation,DKD)论文解读

论文简介:

1、为了提供研究logit蒸馏的新观点,本文将经典的KD损失重新表述为两个部分,即目标类知识蒸馏(TCKD)和非目标类知识精馏(NCKD)。

2、TCKD传递了关于训练样本“难度”的知识,而NCKD是logit蒸馏工作的突出原因。

3、揭示了经典KD损失是一个耦合公式,既抑制了NCKD的有效性,又限制了平衡这两个部分的灵活性。

因此本文提出了解耦知识蒸馏(DKD),使TCKD和NCKD能够更有效、更灵活地发挥作用。

实验结论:本文的DKD在用于图像分类和对象检测任务的CIF AR-100、ImageNet和MSCOCO数据集上实现了可比甚至更好的结果,并具有更好的训练效率。

贡献:

1、通过将经典KD分为TCKD和NCKD,为研究logit蒸馏提供了一个有洞察力的观点。

2、分别分析和证明了这两部分的效果,揭示了经典KD损失的局限性,这是由其高度耦合的公式引起的。

3、NCKD与教师置信的耦合抑制了知识转移的有效性。TCKD与NCKD的耦合限制了平衡这两个部分的灵活性。

1、相关工作(Logit蒸馏)

Logit蒸馏需要边际计算和存储成本且性能较差,然而逻辑蒸馏应该达到与特征蒸馏相当的性能,因为逻辑蒸馏的语义级别高于深度特征。

假设:logit蒸馏的潜力受到未知原因的限制,导致性能不理想。为了研究这一问题,我们首先研究KD的机制

方法:将分类预测分为两个层次:

(1)针对目标类和所有非目标类的二元预测;

(2)针对每个非目标类进行多类别预测。

此时将经典KD损失重新表述为两部分,如下图所示。一种是目标类的二元逻辑蒸馏(TCKD),另一种是非目标类的多类别逻辑蒸馏(NCKD)

解耦知识蒸馏(Decoupled Knowledge Distillation,DKD)论文解读_第1张图片

 TCKD:通过二元逻辑蒸馏传递知识,这意味着只提供目标类别的预测,而每个非目标类别的具体预测是未知的。——TCKD传递了关于训练样本“难度”的知识,即知识描述了识别每个训练样本的难度。

ps:为了验证这一点,从三个方面设计了实验,以增加训练数据的“难度”,即更强的增强、更具噪声的标签和固有的挑战性数据集

NCKD:只考虑非目标逻辑之间的知识。从实验上证明,只有应用NCKD才能获得与经典KD相当甚至更好的结果,这表明非目标逻辑中包含的知识至关重要,这可能是突出的“暗知识”

2、DKD方法解读 

2.1、符号说明

     对于来自第t类的训练样本,分类概率可以表示为p=\left [ p_{1},p_{2} ,...,p_{t},...,p_{C}\right ]\in R^{1\times C},其中p_{i}是第i类的概率,C是类的数量。p中的每个元素可以通过softmax函数获得:

p_{i}=\frac{\exp \left ( z_{i} \right )}{\sum_{j=1}^{C}\exp \left ( z_{j} \right )}

其中z_{i}表示第i类的logit。

      为了区分与目标类相关和无关的预测,我们定义了以下符号。b=\left [ p_{t},p_{/t} \right ]\in R^{1\times 2}表示目标类(p_{t})和所有其他非目标类(p_{/t})的二元概率,可通过下面公式计算:

p_{t}=\frac{\exp \left ( z_{t} \right )}{\sum_{j=1}^{C}\exp \left ( z_{j} \right )}

p_{/t}=\frac{\exp \left (\sum_{k=1,k\neq t}^{C} z_{k} \right )}{\sum_{j=1}^{C}\exp \left ( z_{j} \right )}

声明:\widehat{p}=\left [ \widehat{p}_{1} ,...,\widehat{p}_{t-1},...,\widehat{p}_{C}\right ]\in R^{1\times \left ( C-1 \right )} 独立地对非目标类之间的概率进行计算(即不考虑第t类)。每个元素的计算公式如下:

\widehat{p}_{t}=\frac{\exp \left ( z_{i} \right )}{\sum_{j=1,j\neq t}^{C}\exp \left ( z_{j} \right )}

2.2、KD重定义

ps:尝试用二进制概率b和非目标类之间的概率\widehat{p}来重新表述KD。

T和S分别表示教师网络和学生网络。经典KD使用KL散度作为损失函数,如下所示:

KD=KL\left ( p^{T}||p^{S} \right )=p_{t}^{T}\log \left ( \frac{p_{t}^{T}}{p_{t}^{S}} \right )+\sum_{i=1,i\neq t}^{C}p_{i}^{T}\log \left ( \frac{p_{i}^{T}}{p_{i}^{S}} \right )

假设\widehat{p}_{i}=\frac{p_{i}}{p_{/t}},则上面式子可以按如下推导:

KD=p_{t}^{T}\log \left ( \frac{p_{t}^{T}}{p_{t}^{S}} \right )+p_{/t}^{T}\sum_{i=1,i\neq t}^{C}\widehat{p}_{i}^{T}\left (\log \left ( \frac{\widehat{p}_{i}^{T}}{\widehat{p}_{i}^{S}} \right ) +\log \left ( \frac{p_{/t}^{T}}{p_{/t}^{S}} \right ) \right )

KD=\underbrace{p_{t}^{T}\log \left ( \frac{p_{t}^{T}}{p_{t}^{S}} \right )+p_{/t}^{T}\log \left ( \frac{p_{/t}^{T}}{p_{/t}^{S}} \right )}+p_{/t}^{T}\underbrace{\sum_{i=1,i\neq t}^{C}\widehat{p}_{i}^{T}\log \left ( \frac{\widehat{p}_{i}^{T}}{\widehat{p}_{i}^{S}} \right )}

                                                       KL\left ( b^{T} ||b^{S}\right )                                KL\left ( \widehat{p}^{T}||\widehat{p}^{S} \right )

因此,上式可以改写为:

KD=KL\left ( b^{T}||b^{S} \right )+\left ( 1-p_{t}^{T} \right )KL\left ( \widehat{p}^{T}||\widehat{p}^{S} \right )

综上来看,KD损失被重新定义为两项的加权和。

1、KL\left ( b^{T}||b^{S} \right )表示教师和学生对目标类的二元概率之间的相似性,将其命名为目标类知识蒸馏(TCKD)。

2、KL\left ( \widehat{p}^{T}||\widehat{p}^{S} \right )表示非目标类中教师和学生概率之间的相似性,称为非目标类知识蒸馏(NCKD)。

KD=TCKD+\left ( 1-p_{t}^{T} \right )NCKD

ps:上述公式启发研究者需要研究TCKD和NCKD的个体效应,揭示经典耦合公式的局限性。

3、TCKD和NCKD

3.1、概述

研究了TCKD和NCKD对CIFAR-100的影响。选择ResNet、WideResNet(WRN)和ShuffleNet作为训练模型,其中考虑了相同和不同的架构。实验结果如下所示:

解耦知识蒸馏(Decoupled Knowledge Distillation,DKD)论文解读_第2张图片

 

       对每一对师生网络,我们报告了(1)学生基线训练、(2)经典KD(其中TCKD和NCKD都使用)、(3)单独TCKD和(4)单独NCKD的结果。

1、TCKD专注于与目标类别相关的知识,因为相应的损失函数只考虑二进制概率。

2、NCKD侧重于非目标类之间的知识。

       当仅应用NCKD时,性能与经典KD相当甚至更好。这表明,非目标类之间的知识对于逻辑蒸馏至关重要,这可能是突出的“黑暗知识”。而且注意到NCKD损失与\left ( 1-p_{t}^{T} \right )相关。

3.2、NCKD和TCKD权重设置

p_{t}^{T}表示教师对目标类的置信,更可靠的预测会导致更小的NCKD权重。

教师对培训样本越有信心,就越能提供可靠和有价值的知识。然而,这种自信的预测高度抑制了损失权重。

设计了一个消融实验,以验证预测良好的样本确实比其他样本传递更好的知识

步骤1:首先,我们根据p_{t}^{T}对训练样本进行排序,并将它们平均分成两个子集。

步骤2:一个子集包括p_{t}^{T}最高50%的样本,而其余样本在另一个子集中。

步骤3:在每个子集上使用NCKD训练学生网络,以比较性能增益(而交叉熵损失仍然在整个集合上)。

 

       在前50%的样本上使用NCKD可以获得更好的性能,这表明预测良好的样本的知识比其他样本更丰富。然而,教师的高置信抑制了预测良好的样本的损失权重。

3.3、解耦知识蒸馏实现(DKD)

        TCKD和NCKD都是不可或缺的。然而,在经典KD公式中,TCKD和NCKD从以下方面耦合:

1、NCKD与\left ( 1-p_{t}^{T} \right );,可以抑制预测良好样本上的NCKD。——预测良好的样本可以带来更多的性能增益,因此耦合形式会限制NCKD的有效性

2、NCKD和TCKD的权重在经典KD框架下耦合。不允许为了平衡重要性而改变每个项目的权重。——假设TCKD和NCKD应该是分开的,因为他们的贡献来自不同的方面。

       因此我们提出了一种新的逻辑蒸馏方法,称为解耦知识蒸馏(DKD),以解决上述问题。我们提出的DKD在解耦公式中独立考虑TCKD和NCKD。具体来说,我们引入了两个超参数α和β,分别作为TCKD和NCKD的权重。DKD的损失函数可以表示为:

DKD=\alpha TCKD+\beta NCKD

       在DKD中,\left ( 1-p_{t}^{T} \right )被β取代,这将抑制NCKD的有效性。此外,允许调整α和β以平衡TCKD和NCKD的重要性。通过解耦NCKD和TCKD,DKD为logit蒸馏提供了一种高效、灵活的方式。算法1以类似PyTorch的样式提供DKD的伪代码,如下所示:

解耦知识蒸馏(Decoupled Knowledge Distillation,DKD)论文解读_第3张图片

 

 4、总结

1、通过将经典的KD损失重新表述为两个部分,提供了一种解释logit蒸馏的新观点部分,即目标类知识蒸馏(TCKD)和非目标类知识精馏(NCKD)。分别研究和证明了这两部分的作用,发现KD的耦合公式限制了知识迁移的有效性和灵活性。

2、提出了解耦知识蒸馏(DKD),它在CIFAR-100、ImageNet和MS-COCO数据集上实现了显著改进,用于图像分类和对象检测任务。此外,还证明了DKD在训练效率和特征可迁移性方面的优势。

3、限制和未来工作:

 3.1、DKD无法在目标检测任务上胜过现有技术的基于特征的方法(例如ReviewKD),因为基于logit的方法无法传递关于定位的知识。

3.2、提供了如何调整β的直观指导。然而,蒸馏性能与β之间的严格相关性尚未得到充分研究。

你可能感兴趣的:(知识蒸馏,迁移学习,深度学习,人工智能,算法,python)