Decoupled Knowledge Distillation

Zhao B., Cui Q., Song R., Qiu Y. and Liang J. Decoupled knowledge distillation. CVPR, 2022.

对普通的 KD (Knowledge Distillation) 损失解耦得到 Target Class Knowledge Distillation (TCKD) 和 Non-target Class Knowledge Distillation (NCKD) 两部分. 由此提出新的蒸馏损失以强化 NCKD 部分

符号说明

  • zRC 为 logits, C 表示类别个数;

  • 正常的概率估计:

    pi=exp(zi)j=1Cexp(zj),i=1,2,,C.

  • 二分概率估计:

    b=[pt,pt],pt=itexp(zi)j=1Cexp(zj)

  • Non-target 上的概率分布:

    p~i=exp(zi)jtexp(zj),i=1,2,,t1,t+1,,C.

  • 显然有:

    (1)pi=ptp~i,it.

DKD

  • pT,pS 分别表示 teacher, student 的概率分布, 则一般的蒸馏损失为:

    KD=KL(pTpS)=ptTlog(ptTptS)+ipiTlog(piTpiS).

  • 将 (1) 代入其中可以得到:

    KD=ptTlog(ptTptS)+ptTlog(ptTptS)KL(bTbS)+ptTi=1,itCp~iTlog(p~iTp~iS)KL(p~Tp~S).

  • 故:

    KD=KL(bTbS)=:TCKD+(1ptT)KL(p~Tp~S)=:NCKD.

  • TCKD 关注 target 的概率的差异, 而 NCKD 则是反映了在 non-target class 中的一个一致性.

  • 这里需要关注的一个点是 NCKD 的权重 (1ptT), 显然, 当教师模型对当前的分类特别自信的时候 (即 ptT1), NCKD 的权重大大降低了. 不过, 作者认为, 这个时候, NCKD 实际上也是很重要的.

  • 其次, (1ptT) 这个系数有时候不能够很好的反应难度, 显然, 当类别数很多的时候, ptT 就很难接近 1.

  • 总之, 作者希望更加灵活地控制调节这两个部分:

    DKD=αTCKD+βNCKD.

  • 此外, 作者做了一些很有意思的实验:

  • 如上图所示, 仅 NCKD 即可媲美 KD, 这说明 KD 中实际效果大抵来源于 NCKD 部分. 比如, 作者通常设置 α=1,β=8 以达到最佳的性能.

  • 其实, 总的来看, KD 里的 temperature 其实起到的是一个类似的作用, 某种程度上, 它把 ptT 降低从而加重了 NCKD 部分.

代码

[official]

posted @   馒头and花卷  阅读(113)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2022-11-02 Estimating or Propagating Gradients Through Stochastic Neurons for Conditional Computation
2020-11-02 Reliable evaluation of adversarial robustness with an ensemble of diverse parameter-free attacks
2020-11-02 Boosting Adversarial Training with Hypersphere Embedding
点击右上角即可分享
微信分享提示