知识蒸馏论文阅读:DKD算法笔记

news2025/7/15 1:34:12

标题:Decoupled Knowledge Distillation
会议:CVPR2022
论文地址:https://ieeexplore.ieee.org/document/9879819/
官方代码:https://github.com/megvii-research/mdistiller
作者单位:旷视科技、早稻田大学、清华大学

文章目录

  • Abstract
  • 1. Introduction
  • 2. Related work
  • 3. Rethinking Knowledge Distillation
  • 3.1. Reformulating KD
  • 3.2. Effects of TCKD and NCKD
  • 3.3. Decoupled Knowledge Distillation
  • 4. Experiments
  • 4.1. Main Results
  • 4.2. Extensions
  • 5. Discussion and Conclusion

Abstract

SOTA的蒸馏方法主要基于蒸馏来自中间层的深度特征,而logit蒸馏的重要性被极大地忽略。为了给logit蒸馏的研究提供一个新的视角,我们将经典的KD损失重新表示为两部分,即目标类知识蒸馏(TCKD)和非目标类知识蒸馏(NCKD)。我们经验地研究并证明了这两部分的作用:TCKD迁移了关于训练样本的“难度”的知识,而NCKD则是logit蒸馏起作用的重要原因。更重要的是,我们揭示了经典的KD损失是一个耦合的形式,它①抑制了NCKD的有效性,②限制了平衡这两部分的灵活性。为了解决这些问题,我们提出了解耦知识蒸馏(Decoupled Knowledge Distillation,DKD),使得TCKD和NCKD能够更加高效灵活地发挥作用。与复杂的基于特征的方法相比,我们的DKD在用于图像分类和目标检测任务的CIFAR-100、ImageNet和MS-COCO数据集上取得了相当甚至更好的结果,并且具有更好的训练效率。本文证明了logit蒸馏的巨大潜力,希望对未来的研究有所帮助。

1. Introduction

在过去的几十年中,深度神经网络(DNN)给计算机视觉领域带来了革命性的变化,成功地促进了图像分类、目标检测和语义分割等各种真实场景任务。然而,强大的网络通常受益于较大的模型容量,引入了高昂的计算和存储成本。在工业应用中这种成本并不合适,因此轻量级模型被广泛部署。在过去的文献中,一个可能降低成本的方向是知识蒸馏(KD)。KD代表了一系列将知识从重型模型(教师)迁移到轻型模型(学生)的方法,可以在不引入额外成本的情况下提高轻模型的性能。
Hinton等人首次提出KD的概念,通过最小化教师和学生的预测logit之间的KL散度(KL-Divergence)来迁移知识(图1a)。自FitNets以来,大部分研究都关注从中间层的深度特征中蒸馏知识。与基于logit的方法相比,特征蒸馏在各种任务上的性能都更优越,因此对logit蒸馏的研究几乎没有触及。然而,基于特征的方法的训练成本并不令人满意,因为在训练过程中引入了额外的计算和存储使用(例如网络模块和复杂操作)来蒸馏深度特征。
在这里插入图片描述
logit蒸馏只需要微不足道的计算和存储成本,但性能较差。直觉上,logit蒸馏应该达到与特征蒸馏相当的性能,因为logit比深度特征具有更高的语义层次。我们猜想logit蒸馏的潜力受到未知原因的限制,导致性能不理想。为了重振基于logits的方法,我们通过研究KD的机制开始这项工作。首先,我们将分类预测分为两个层次:①对目标类和所有非目标类进行二分类预测;②对每个非目标类进行多分类预测。基于此,我们将经典的KD损失重新表示为两部分,如图1b所示。一部分是针对目标类的二分类logit蒸馏,另一部分针对是非目标类的多分类logit蒸馏。出于简化,我们分别将其命名为目标类知识蒸馏(TCKD)和非目标类知识蒸馏(NCKD)。这种重新表示使得我们可以独立地研究两部分的作用。
TCKD通过二分类logit蒸馏来迁移知识,即只提供目标类的预测,不知道每个非目标类的具体预测。一个合理的假设是TCKD迁移了关于训练样本“难度”的知识,即这些知识描述了识别每个训练样本的难易程度。为了验证这一点,我们从三个方面设计实验来增加训练数据的“难度”,即更强大的增广、更嘈杂的标签和内在地有挑战性的数据集。
NCKD只考虑非目标logits之间的知识。有趣的是,我们经验地证明了仅应用NCKD取得了与经典的KD相当甚至更好的结果,表明非目标logits中包含的知识至关重要,可能是重要的“暗知识”。
更重要的是,我们的重新表示表明,经典的KD损失是一个高度耦合的形式(如图1b所示),这可能是logit蒸馏潜力被限制的原因。首先,NCKD损失项通过一个与教师在目标类别上预测置信度负相关的系数来加权。因此较大的预测分数会导致较小的权重。这种耦合显著抑制了NCKD对预测良好的(well-predicted)训练样本的作用。这种抑制是不合适的,因为教师在训练样本中置信度越高,它所能提供的知识就越可靠和有价值。其次,TCKD和NCKD的重要性是耦合的,即不允许将TCKD和NCKD分别加权。这种限制也是不合适的,因为TCKD和NCKD的贡献来自不同的方面,应该分别考虑。
针对这些问题,我们提出了一种灵活高效的logit蒸馏方法,取名为解耦知识蒸馏(Decoupled Knowledge Distillation,DKD,图1b)。DKD将NCKD损失从与教师置信度负相关的系数解耦,将其替换为恒定值,提高了对预测良好的样本的蒸馏效果。同时,NCKD和TCKD也是解耦的,可以通过调整各部分的权重来分别考虑它们的重要性。
总的来说,我们的贡献概括如下:

  • 我们通过将经典的KD分为TCKD和NCKD,为研究logit蒸馏提供了一个有洞察力的视角。此外,分别对两部分的作用进行了分析和证明。
  • 我们揭示了经典的KD损失因其高度耦合形式而导致的局限性。NCKD与教师置信度的耦合抑制了知识迁移的有效性。TCKD与NCKD的耦合限制了平衡这两部分的灵活性。
  • 为了克服这些局限性,我们提出了一种有效的logit蒸馏方法DKD。DKD在各种任务上取得了SOTA的性能。我们还通过实验验证了与基于特征的蒸馏方法相比,DKD具有更高的训练效率和更好的特征迁移能力。

2. Related work

知识蒸馏的概念最早由Hinton等人提出。KD定义了一种学习方式,即使用较大的教师网络来指导较小的学生网络进行许多任务的训练。“暗知识”通过来自教师的软标签迁移给学生。为了提高对负logits的关注,超参数温度被引入。后续的工作可以分为两类,从logits蒸馏和从中间特征蒸馏。
以往关于logit蒸馏的工作主要集中于提出有效的正则化和优化方法,而非新颖的方式。DML提出了一种相互学习的方式来同时训练学生和教师。TAKD引入了一个名为“助教”的中型网络来弥补教师和学生之间的差距。除此之外,一些工作也关注对经典KD方法的解读。
SOTA的方法主要基于中间特征,可以直接将表示从教师迁移给学生或者将教师中捕获的样本之间的相关性迁移给学生。大多数基于特征的方法都能取得更好的性能(显著高于基于logits的方法),但计算和存储开销较大。
本文聚焦于分析什么限制了基于logits的方法的潜力和重振logit蒸馏。

3. Rethinking Knowledge Distillation

在这一节,我们深入探究了知识蒸馏的机制。我们将KD损失重新表示为两部分的加权和,一部分与目标类相关,另一部分与非目标类相关。我们探究了知识蒸馏框架中各部分的作用,并揭示了经典KD的一些局限性。受这些结果的启发,我们进一步提出了一种新颖的logit蒸馏方法,在各种任务上取得了引人注目的性能。

3.1. Reformulating KD

符号。 对于来自第 t t t类的训练样本,其分类概率可以表示为 p = [ p 1 , p 2 , . . . , p t , . . . , p C ] ∈ R 1 × C \bold{p}=[p_1,p_2,...,p_t,...,p_C]\in\mathbb{R}^{1×C} p=[p1,p2,...,pt,...,pC]R1×C,其中 p i p_i pi是第 i i i类的概率, C C C是类别数目。 p \bold{p} p中的每个元素都可以通过softmax函数得到:
p i = e x p ( z i ) ∑ j = 1 C e x p ( z j ) (1) p_i=\frac{\mathrm{exp}(z_i)}{\sum_{j=1}^C\mathrm{exp}(z_j)}\tag{1} pi=j=1Cexp(zj)exp(zi)(1)其中, z i z_i zi表示第 i i i类的logit。
为了分离与目标类相关和不相关的预测,我们定义以下符号。 b = [ p t , p ∖ t ] ∈ R 1 × 2 \bold{b}=[p_t,p_{\setminus t}]\in\mathbb{R}^{1×2} b=[pt,pt]R1×2表示目标类( p t p_t pt)和所有其它非目标类( p ∖ t p_{\setminus t} pt)的二分类概率,可以通过下式计算得到:
p t = e x p ( z t ) ∑ j = 1 C e x p ( z j ) ,   p ∖ t = ∑ k = 1 , k ≠ t C e x p ( z k ) ∑ j = 1 C e x p ( z j ) p_t=\frac{\mathrm{exp}(z_t)}{\sum_{j=1}^C\mathrm{exp}(z_j)},~p_{\setminus t}=\frac{\sum_{k=1,k\neq t}^C\mathrm{exp}(z_k)}{\sum_{j=1}^C\mathrm{exp}(z_j)} pt=j=1Cexp(zj)exp(zt), pt=j=1Cexp(zj)k=1,k=tCexp(zk)同时,我们声明 p ^ = [ p ^ 1 , . . . , p ^ t − 1 , p ^ t + 1 , . . . , p ^ C ] ∈ R 1 × ( C − 1 ) \bold{\hat{p}}=[\hat{p}_1,...,\hat{p}_{t-1},\hat{p}_{t+1},...,\hat{p}_C]\in\mathbb{R}^{1×(C-1)} p^=[p^1,...,p^t1,p^t+1,...,p^C]R1×(C1)对非目标类(即不考虑第 t t t类)中的概率进行独立建模。每个元素通过下式计算得到:
p ^ i = e x p ( z i ) ∑ j = 1 , j ≠ t C e x p ( z j ) (2) \hat{p}_i=\frac{\mathrm{exp}(z_i)}{\sum_{j=1,j\neq t}^C\mathrm{exp}(z_j)}\tag{2} p^i=j=1,j=tCexp(zj)exp(zi)(2)重新表示。 在这一部分,我们尝试用二分类概率 b \bold{b} b和非目标类中的概率 p ^ \bold{\hat{p}} p^来重新表示KD。 T \mathcal{T} T S \mathcal{S} S分别表示教师和学生。经典的KD使用KL散度作为损失函数,可写为(不失一般性,我们略去温度T):
K D = K L ( p T ∣ ∣ p S ) = p t T l o g ( p t T p t S ) + ∑ i = 1 , i ≠ t C p i T l o g ( p i T p i S ) (3) \begin{align} \mathrm{KD}&=\mathrm{KL}(\bold{p}^{\mathcal{T}}||\bold{p}^{\mathcal{S}})\\ &=p_t^{\mathcal{T}}\mathrm{log}(\frac{p_t^{\mathcal{T}}}{p_t^{\mathcal{S}}})+\sum_{i=1,i\neq t}^Cp_i^{\mathcal{T}}\mathrm{log}(\frac{p_i^{\mathcal{T}}}{p_i^{\mathcal{S}}}) \end{align}\tag{3} KD=KL(pT∣∣pS)=ptTlog(ptSptT)+i=1,i=tCpiTlog(piSpiT)(3)根据公式1和公式2,我们有 p ^ i = p i / p ∖ t \hat{p}_i=p_i/p_{\setminus t} p^i=pi/pt,因此我们可以改写公式3为:
K D = p t T l o g ( p t T p t S ) + p ∖ t T ∑ i = 1 , i ≠ t C p ^ i T ( l o g ( p ^ i T p ^ i S ) + l o g ( p ∖ t T p ∖ t S ) ) = p t T l o g ( p t T p t S ) + p ∖ t T l o g ( p ∖ t T p ∖ t S ) ⏟ K L ( b T ∣ ∣ b S ) + p ∖ t T ∑ i = 1 , i ≠ t C p ^ i T l o g ( p ^ i T p ^ i S ) ⏟ K L ( p ^ T ∣ ∣ p ^ S ) (4) \begin{align} \mathrm{KD}&=p_t^{\mathcal{T}}\mathrm{log}(\frac{p_t^{\mathcal{T}}}{p_t^{\mathcal{S}}})+p_{\setminus t}^{\mathcal{T}}\sum_{i=1,i\neq t}^C\hat{p}_i^{\mathcal{T}}(\mathrm{log}(\frac{\hat{p}_i^{\mathcal{T}}}{\hat{p}_i^{\mathcal{S}}})+\mathrm{log}(\frac{p_{\setminus t}^{\mathcal{T}}}{p_{\setminus t}^{\mathcal{S}}}))\\ &=\underbrace{p_t^{\mathcal{T}}\mathrm{log}(\frac{p_t^{\mathcal{T}}}{p_t^{\mathcal{S}}})+p_{\setminus t}^{\mathcal{T}}\mathrm{log}(\frac{p_{\setminus t}^{\mathcal{T}}}{p_{\setminus t}^{\mathcal{S}}})}_{\mathrm{KL}(\bold{b}^{\mathcal{T}}||\bold{b}^{\mathcal{S}})}+p_{\setminus t}^{\mathcal{T}}\underbrace{\sum_{i=1,i\neq t}^C\hat{p}_i^{\mathcal{T}}\mathrm{log}(\frac{\hat{p}_i^{\mathcal{T}}}{\hat{p}_i^{\mathcal{S}}})}_{\mathrm{KL}(\bold{\hat{p}}^{\mathcal{T}}||\bold{\hat{p}}^{\mathcal{S}})} \end{align}\tag{4} KD=ptTlog(ptSptT)+ptTi=1,i=tCp^iT(log(p^iSp^iT)+log(ptSptT))=KL(bT∣∣bS) ptTlog(ptSptT)+ptTlog(ptSptT)+ptTKL(p^T∣∣p^S) i=1,i=tCp^iTlog(p^iSp^iT)(4)然后,公式4可以改写为:
K D = K L ( b T ∣ ∣ b S ) + ( 1 − p t T ) K L ( p ^ T ∣ ∣ p ^ S ) (5) \mathrm{KD}=\mathrm{KL}(\bold{b}^{\mathcal{T}}||\bold{b}^{\mathcal{S}})+(1-p_t^{\mathcal{T}})\mathrm{KL}(\bold{\hat{p}}^{\mathcal{T}}||\bold{\hat{p}}^{\mathcal{S}})\tag{5} KD=KL(bT∣∣bS)+(1ptT)KL(p^T∣∣p^S)(5)如公式5所示,KD损失被重新表示为两项的加权和。 K L ( b T ∣ ∣ b S ) \mathrm{KL}(\bold{b}^{\mathcal{T}}||\bold{b}^{\mathcal{S}}) KL(bT∣∣bS)表示教师和学生对目标类的二分类概率之间的相似度。因此,我们将其命名为目标类知识蒸馏(TCKD)。同时, K L ( p ^ T ∣ ∣ p ^ S ) \mathrm{KL}(\bold{\hat{p}}^{\mathcal{T}}||\bold{\hat{p}}^{\mathcal{S}}) KL(p^T∣∣p^S)表示教师和学生对非目标类中的概率之间的相似度,命名为非目标类知识蒸馏(NCKD)。公式5可以改写为:
K D = T C K D + ( 1 − p t T ) N C K D (6) \mathrm{KD}=\mathrm{TCKD}+(1-p_t^{\mathcal{T}})\mathrm{NCKD}\tag{6} KD=TCKD+(1ptT)NCKD(6)显然,NCKD的权重与 p t T p_t^{\mathcal{T}} ptT是耦合的。
上述重新表示启发了我们研究TCKD和NCKD单独的作用,这将揭示经典的耦合表示的局限性。

3.2. Effects of TCKD and NCKD

各部分的性能增益。 我们分别研究了TCKD和NCKD在CIFAR-100上的作用。选择ResNet、WideResNet(WRN)和ShuffleNet作为训练模型,其中相同和不同的结构都考虑了。实验结果报告于表1。对于每一个教师-学生对,我们报告了以下结果:①学生基线(原始训练),②经典的KD(TCKD和NCKD都被使用),③单独地TCKD和④单独地NCKD。每个损失的权重设为1.0(包括默认的交叉熵损失)。其它实现细节与第4节相同。
在这里插入图片描述
直觉上,TCKD关注的是与目标类相关的知识,因为对应的损失函数只考虑二分类概率。相反,NCKD关注非目标类中的知识。我们注意到,单独使用TCKD对学生可能是无益的(例如在ShuffleNet-V1上分别获得0.02%和0.12%的增益),甚至是有害的(例如在WRN-16-2上下降2.3%,在ResNet8×4上下降3.87%)。然而,NCKD的蒸馏性能与经典的KD相当甚至更好(例如在ResNet8×4上1.76% vs. 1.13%)。消融结果表明,与目标类相关的知识可能不如非目标类中的知识重要。为了研究这一现象,我们提供如下的进一步分析。
TCKD迁移关于训练样本“难度”的知识。 根据式公式5,TCKD通过二分类任务来迁移“暗知识”,其可能与样本“难度”有关。例如, p t T = 0.99 p_t^{\mathcal{T}}=0.99 ptT=0.99的训练样本比 p t T = 0.75 p_t^{\mathcal{T}}=0.75 ptT=0.75的训练样本“更容易”学习。由于TCKD传达了训练样本的“难度”,我们猜想当训练数据变得具有挑战性时,TCKD的有效性将显现出来。然而,CIFAR-100训练集是容易拟合的(收敛后在CIFAR-100上的训练精度可以达到100%)。因此,教师提供的“难度”知识是无用信息。本部分从3个角度进行实验验证:训练数据越困难,TCKD能提供的好处越多(这些角度的所有实验都是和NCKD一起进行的,因为根据表1的结果,我们推断TCKD不应该单独使用)。
①应用强大的增广是一种增加训练数据难度的直接方法。我们在CIFAR-100上利用AutoAugment训练ResNet32×4模型作为教师,达到了81.29%的top-1验证准确率。对于学生,我们训练使用/不使用TCKD的ResNet8×4和ShuffleNet-V1模型。表2的结果表明,如果应用强大的增广,TCKD可以获得显著的性能增益。
在这里插入图片描述
②噪声标签也可以增加训练数据的难度。我们在CIFAR-100上以 { 0.1 , 0.2 , 0.3 } \{0.1,0.2,0.3\} {0.1,0.2,0.3}的对称噪声比训练ResNet32×4模型作为教师和ResNet8×4作为教师。如表3所示,结果表明TCKD在更嘈杂的训练数据上取得了更多的性能提升。
在这里插入图片描述
③还考虑了具有挑战性的数据集(例如ImageNet)。由表4可知,TCKD在ImageNet上可以带来+0.32%的性能增益。
在这里插入图片描述
综上所述,我们通过实验各种策略增加训练数据的难度(例如强大的增广、噪声标签和困难任务),证明了TCKD的有效性。实验结果验证了在更具挑战性的训练数据上蒸馏知识时,关于训练样本“难度”的知识可能更有益处。
NCKD是logit蒸馏有效但极大地被抑制的重要原因。 有趣的是,我们在表1中注意到,当仅使用NCKD时,性能与经典的KD相当甚至更好。这表明非目标类中的知识对logit蒸馏至关重要,可能是重要的“暗知识”。然而,通过回顾公式5,我们注意到NCKD损失是和 ( 1 − p t T ) (1-p_t^{\mathcal{T}}) (1ptT)耦合的,其中 p t T p_t^{\mathcal{T}} ptT表示教师在目标类上的置信度。因此,更自信的预测会导致更小的NCKD权重。我们认为教师在训练样本中越自信,其提供的知识就越可靠和有价值。然而,损失权重被这种自信的预测高度地抑制。我们认为这一事实会限制知识迁移的有效性,这是由于我们在公式5中对KD重新表示而首次研究的。
我们设计了一个消融实验来验证预测良好的样本确实比其它样本迁移了更好的知识。首先我们根据 p t T p_t^{\mathcal{T}} ptT对训练样本进行排序,并将其平均地拆分为两个子集。为清晰起见,一个子集包含了前50% p t T p_t^{\mathcal{T}} ptT而交叉熵损失仍然在整个集合上的样本,而剩余的样本则在另一个子集。然后我们在每个子集上训练使用NCKD的学生网络来比较性能增益(交叉熵损失仍然在整个集合上)。表5显示,使用NCKD在前50%的样本上取得了更好的性能,表明预测良好的样本的知识比其它样本更丰富。然而,预测良好的样本的损失权重被教师的高置信度所抑制。
在这里插入图片描述

3.3. Decoupled Knowledge Distillation

至此,我们将经典的KD损失转化为两个独立部分的加权和,并进一步验证了TCKD的有效性和揭示了NCKD的抑制。具体来说,TCKD迁移关于训练样本“难度”的知识。TCKD在更具挑战性的训练数据上可以获得更显著的改进。NCKD迁移非目标类中的知识,在权重 ( 1 − p t T ) (1-p_t^{\mathcal{T}}) (1ptT)相对较小的情况下会被抑制。
直觉上,TCKD和NCKD都是必须的、至关重要的。然而,在经典的KD形式中,TCKD和NCKD从以下几个方面耦合:

  • 一方面,NCKD与 ( 1 − p t T ) (1-p_t^{\mathcal{T}}) (1ptT)耦合,它可能在预测良好的样本上抑制NCKD。由于表5中的结果表明预测良好的样本可以带来更多的性能增益,因此这种耦合形式会限制NCKD的有效性。
  • 另一方面,NCKD和TCKD的权重在经典的KD框架下是耦合的。它不允许为了平衡重要性而改变各项的权重。我们认为TCKD和NCKD应该分开考虑,因为它们的贡献来自不同方面。

得益于我们对KD的重新表示,我们提出了一种新的名为解耦知识蒸馏(DKD)的logit蒸馏方法来解决上述问题。我们提出的DKD将TCKD和NCKD独立地考虑在一个解耦的形式中,如图1b所示。具体来说,我们引入两个超参数 α \alpha α β \beta β,分别作为TCKD和NCKD的权重。DKD的损失函数可以写成如下形式:
D K D = α T C K D + β N C K D (7) \mathrm{DKD}=\alpha\mathrm{TCKD}+\beta\mathrm{NCKD}\tag{7} DKD=αTCKD+βNCKD(7)在DKD中,将会抑制NCKD有效性的 ( 1 − p t T ) (1-p_t^{\mathcal{T}}) (1ptT)替换为 β \beta β。此外,它还允许调整 α \alpha α β \beta β来平衡TCKD和NCKD的重要性。通过解耦NCKD和TCKD,DKD为logit蒸馏提供了一种高效灵活的方式。算法1提供了PyTorch-like风格的DKD伪代码。
在这里插入图片描述

4. Experiments

在图像分类和目标检测任务上进行实验,包括CIFAR-100、ImageNet和MS-COCO数据集。

4.1. Main Results

首先,我们分别证明了解耦①NCKD和 ( 1 − p t T ) (1-p_t^{\mathcal{T}}) (1ptT)以及②NCKD和TCKD所带来的改进。然后,我们在图像分类和目标检测任务上测试了我们的方法。
消融: α \alpha α β \beta β 下面两个表格报告了不同 α \alpha α β \beta β的学生准确率(%)。ResNet32×4和ResNet8×4分别设为教师和学生。首先,我们在第一个表中证明解耦 ( 1 − p t T ) (1-p_t^{\mathcal{T}}) (1ptT)和NCKD可以带来尚可的性能增益(73.63% vs. 74.79%)。然后,我们证明了解耦NCKD和TCKD的权重有助于进一步改进(74.79% vs. 76.32%)。此外,第二个表表明TCKD是不可或缺的,在1.0左右不同的 α \alpha α下TCKD带来的改进是稳定的(出于简化我们在第一个表中将 α \alpha α固定为1.0,在第二个表中将 β \beta β固定为8.0,因为它在第一个表中取得了最佳性能)。
在这里插入图片描述
CIFAR-100图像分类。 DKD在CIFAR-100上的性能对比,具体的实验结论可以参照原文。
在这里插入图片描述
在这里插入图片描述
ImageNet图像分类。 DKD在ImageNet上的性能对比,具体的实验结论可以参照原文。
在这里插入图片描述
MS-COCO目标检测。 正如之前的工作所讨论的,目标检测任务的性能在很大程度上依赖于深度特征定位感兴趣目标的质量。这个规则也体现在检测器之间的知识迁移,即特征模仿(feature mimicking)是至关重要的,因为logits不能为目标定位提供知识。如表10所示,单独应用DKD难以达到优异的性能,但有望超越经典的KD。因此,我们引入了基于特征的蒸馏方法ReviewKD来获得令人满意的结果。可以观察到我们的DKD可以进一步提升AP指标,即使ReviewKD的蒸馏性能已经相当高了。总之,通过将我们的DKD与基于特征的蒸馏方法相结合,在目标检测任务上获得了新的SOTA结果。
在这里插入图片描述

4.2. Extensions

为了更好地理解DKD,我们从四个方面进行了扩展。首先,我们全面比较了DKD与具有代表性的SOTA方法的训练效率。然后,我们提供了一个新的视角来解释为什么更大的模型并不总是更好的教师,并通过使用DKD缓解了这个问题。此外,我们考察了DKD学习到的深度特征的可迁移性。我们还展示了一些可视化结果来验证DKD的优越性。
训练效率。 DKD取得了很好的训练开销和模型性能(例如训练时间和额外的参数)之间的折衷,具体的实验结论可以参照原文。
在这里插入图片描述
提高大型教师的性能。 之所以更大的模型不一定是更好的教师,是因为NCKD的抑制,即 ( 1 − p t T ) (1-p_t^{\mathcal{T}}) (1ptT)会随着教师变大而变小。具体的实验结论可以参照原文。
在这里插入图片描述
特征可迁移性。 我们通过实验来评估深度特征的可迁移性,以验证我们的DKD迁移了更多的可泛化的知识。具体的实验结论可以参照原文。
在这里插入图片描述
可视化。 ①DKD有利于深度特征的可区分性。②DKD有助于学生输出与教师更相似的logits。具体的实验结论可以参照原文。
在这里插入图片描述

5. Discussion and Conclusion

本文通过将经典的知识蒸馏损失重新表示为目标类知识蒸馏(TCKD)和非目标类知识蒸馏(NCKD)两部分,为解释logit蒸馏提供了新的视角。这两部分的作用被分别研究和证明。更重要的是,我们揭示了KD的耦合形式限制了知识迁移的有效性和灵活性。为了克服这些问题,我们提出了解耦知识蒸馏(DKD),在用于图像分类和目标检测任务的CIFAR-100、ImageNet和MS-COCO数据集上取得了显著的改进。此外,DKD在训练效率和特征可迁移性方面的优越性也被证明。我们希望本文对未来logit蒸馏的研究有所贡献。
局限性和未来的工作。 下面讨论值得注意的局限性。在目标检测任务上,DKD无法超越目前SOTA的基于特征的方法(例如ReviewKD),因为基于logits的方法无法迁移定位知识。除此之外,我们在补充材料中对如何调整 β \beta β提供了直觉上的指导。然而,蒸馏性能与 β \beta β之间的严格相关性并没有得到充分的研究,这将是我们未来的研究方向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/395928.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud (Eureka服务注册、发现)

本章导学: 微服务各个服务如何调用?服务直接调用出现的问题Eureka的引出及其作用搭建单机Eureka 注册发现一、微服务各个服务之间的调用 很简单,我们只需要在SpringBoot的配置类里把RestTemplate类加载到容器,利用RestTemplate的…

【目标检测 DETR】通俗理解 End-to-End Object Detection with Transformers,值得一品。

文章目录DETR1. 亮点工作1.1 E to E1.2 self-attention1.3 引入位置嵌入向量1.4 消除了候选框生成阶段2. Set Prediction2.1 N个对象2.2 Hungarian algorithm3. 实例剖析4. 代码4.1 配置文件4.1.1 数据集的类别数4.1.2 训练集和验证集的路径4.1.3 图片的大小4.1.4 训练时的批量…

idea 2022.2.4 导入依赖警告的问题

在我导入依赖的时候,pom文件提示警告如下信息 Provides transitive vulnerable dependency commons-collections:commons-collections:3.2.2 Cx78f40514-81ff 7.5 Uncontrolled Recursion vulnerability pending CVSS allocation Results powered by Checkmarx(c) …

第十二章:网络编程

第十二章:网络编程 12.1:网络编程概述 ​ Java是Internet上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。 ​ Java提供的网络类库,可以实现无痛的网络连接,…

【项目精选】基于struts+hibernate的采购管理系统

点击下载 javaEE采购管理系统 本系统是一个独立的系统,用来解决企业采购信息的管理问题。采用JSP技术构建了一个有效而且实用的企业采购信息管理平台,目的是为高效地完成对企业采购信息的管理。经过 对课题的深入分析,采购系统需实现以下功能…

秒懂算法 | DP概述和常见DP面试题

动态(DP)是一种算法技术,它将大问题分解为更简单的子问题,对整体问题的最优解决方案取决于子问题的最优解决方案。本篇内容介绍了DP的概念和基本操作;DP的设计、方程推导、记忆化编码、递推编码、滚动数组以及常见的DP面试题。 01、DP概述 1. DP问题的特征 下面以斐波那…

在找docker命令和部署?看这一篇文章就够了。

一、docker 常用命令 docker ps -a #查看所有容器 docker images #查看所有images docker search rabbitmq #搜索rabbitmq docker pull rabbitmq #拉去rabbitmq docker run -id --namemy_rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq # 创建一个容器并启动 docker exec -it…

数据结构算法学习记录——线性表之单链表(上)-初始单链表及其头插函数(顺序表缺陷、单链表优点、链表打印)

单链表的概念单链表是一种链式存取的数据结构,链表中的数据是以结点来表示的。每个结点的构成:元素(数据元素的映象) 指针(指示后继元素存储位置)。元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。以“结点的序列”表示的线性…

Ubuntu安装Docker

一、安装条件1.操作系统要求需要以下 Ubuntu 版本之一的 64 位版本:Ubuntu Kinetic 22.10Ubuntu Jammy 22.04 (LTS)Ubuntu Focal 20.04 (LTS)Ubuntu Bionic 18.04 (LTS)二、安装1.要是之前安装过,可以进行卸载然后再安装,旧版本的 Docker 的名…

_Linux (传输层一版本)

文章目录0. 传输层作用1. 再谈端口号1-1 端口号范围划分1-2 认识知名端口号(Well-Know Port Number)1-3 两个问题1-4 netstat1-5 pidof2. UDP协议2-1 UDP协议端格式1. UDP协议如何分离(封装)?2. UDP协议如何交付(应用层- - 客户&a…

什么蓝牙耳机佩戴舒适?2023长时间佩戴最舒适的蓝牙耳机

现如今,很多蓝牙耳机的产品都在不断地更新,市面上的耳机也是越来越普及,可以说是成为我们日常生活中不可或缺的一类电子设备,下面介绍一些佩戴舒适性好的蓝牙耳机。 一、南卡小音舱蓝牙耳机 音质推荐指数:★★★★★…

[ 网络 ] 应用层协议——HTTPS协议原理

目录 1.HTTPS是什么 2.加密技术 2.1什么是加密 2.2为什么要加密 2.3加密处理防止被窃听 3.常见的加密方式 对称加密 非对称加密 4.数据摘要&&数据指纹 5.数字签名 6.HTTPS的工作过程探究 方案1——只是用对称加密 方案2——只进行非对称加密 方案3——双方…

JavaEE——简单介绍Thread类以及线程的基本操作

文章目录一、Thread 类中的常见构造方法二、Thread 的一些常见属性三、线程的启动——start()isAlive() 方法的解释四、线程中断五、线程等待-join()了解六、简单解释线程休眠一、Thread 类中的常见构造方法 我们已知,Thread 类是Java中多线程中的一个关键类&#…

MATLAB的快速入门

第一部分:基础知识常用命令:clc %清除命令行窗口 clear %清空工作区数据 cd %显示或改变工作目录 clf %清除图形窗口 help %打开帮助文档 save %保存内存变量到指定文件 hold %保持图形 close %关闭当前图窗 quit %退出变量&#x…

sentry权限控制

sentry权限控制 文章目录sentry权限控制前言1. 安装2. hive内得配置4. hdfs配置5. Hue 授权6. 连接hive配置权限7. 验证前言 Apache Sentry是一个可以对Hadoop集群中的数据及元数据进行细粒度管理的权限管理系统。Sentry目前可以与ApacheHive,HiveMetastore / HCat…

前端基础(十四)_Math对象

Math对象 1.Math对象 对象.方法名 (1)Math.floor() 向下取整 去掉小数部分 等同于parseInt Math.floor(1.222) //1(2)Math.ceil() 向上取整 去掉小数部分 向上进一 Math.ceil(1.222) //2(3)Math.round() 四舍五入 4.5 5 针对小数点后面第一位数字 Math.round(1.272) //1 Ma…

嵌入式安防监控项目——exynos4412主框架搭建

目录 一、模块化编程思维 二、安防监控项目主框架搭建 一、模块化编程思维 其实我们以前学习32使用keil的时候就是再用模块化的思维。每个硬件都单独有一个实现功能的C文件和声明函数,进行宏定义以及引用需要使用头文件的h文件。 比如简单的加减乘除取余操作我们…

Spark Standalone 部署

Spark Standalone 部署解压缩文件修改配置文件启动集群Web UI 界面提交应用提交参数说明配置历史服务配置日志存储路径添加日志配置重启重新执行任务查看历史服务配置高可用(HA)集群规划停止集群启动 Zookeeper启动集群关闭集群关闭历史服务解压缩文件 …

Go语言使用Playwright自动化测试、录屏、执行js

Go版本的Playwright支持Chromium、Firefox和WebKit的Web自动化测试,兼容Windows、Linux和MacOS,默认支持headless无头模式,安装方便、绿色高效、兼容性强、运行速度快。 支持的主要功能有: 跨多个页面、域名和iframe的场景&#x…

什么led灯性价比高?家用led灯选哪种最好

人造灯具经过多年的发展,现在最为成熟的工艺就是led灯了,不仅有荧光灯高效节能、省电高亮的特点,而且光线可控性非常高,对于调光、提高光线柔和度等方面非常方便,保护眼睛更有效。 那么什么led灯性价比高呢&#xff0c…