Decoupled Knowledge Distillation——目标分布与非目标分布相解耦

article/2025/8/6 8:51:36

通过传统知识蒸馏的解耦分析,DKD(Decoupled Knowledge Distillation)重新审视了暗知识的本质,并通过蒸馏损失函数的改进、获得DKD loss,显著改善了任务相关知识迁移的效果:

Paper地址:https://arxiv.org/abs/2203.08679

GitHub链接:GitHub - megvii-research/mdistiller: The official implementation of [CVPR2022] Decoupled Knowledge Distillation https://arxiv.org/abs/2203.08679

有关知识蒸馏的详细讨论,可参考:

知识蒸馏(Knowledge Distillation)

如上图所示,DKD通过将网络Classification Head预测的概率分布、解耦为目标分布与非目标分布,并分别计算二者的蒸馏Loss(Teacher的预测输出亦作相同解耦),然后进行加权求和获得新的蒸馏Loss。

DKD可改善传统得分蒸馏(Hinton KD)的知识迁移效果,其解耦改进的具体原理如下所述:

  • 多类目预测得分的概率分布(The multi-class prediction probability),可拆分为目标分布与非目标分布,如下所示:

  • 基于目标分布与非目标分布,传统得分蒸馏的损失函数,可推导为TCKD与NCKD的加权求和(加权系数为Teacher的目标概率):

  • 对于多类目分类任务,传统KD loss中Teacher的目标概率越高,NCKD越被抑制;然而,单独使用TCKD鲜有收益,而在某些场景下单独使用NCKD、可获得比TCKD更好的效果(详见论文的Ablation分析);并且,TCKD主要迁移难例相关的知识,NCKD则能够真正反映暗知识(Dark knowledge)。因此,为充分体现TCKD与NCKD的作用,通过引入二者的平衡系数,可重新构造获得新的损失函数(DKD Loss):

def dkd_loss(logits_student, logits_teacher, target, alpha, beta, temperature):gt_mask = _get_gt_mask(logits_student, target)other_mask = _get_other_mask(logits_student, target)pred_student = F.softmax(logits_student / temperature, dim=1)pred_teacher = F.softmax(logits_teacher / temperature, dim=1)pred_student = cat_mask(pred_student, gt_mask, other_mask)pred_teacher = cat_mask(pred_teacher, gt_mask, other_mask)log_pred_student = torch.log(pred_student)tckd_loss = (F.kl_div(log_pred_student, pred_teacher, size_average=False)* (temperature**2)/ target.shape[0])pred_teacher_part2 = F.softmax(logits_teacher / temperature - 1000.0 * gt_mask, dim=1)log_pred_student_part2 = F.log_softmax(logits_student / temperature - 1000.0 * gt_mask, dim=1)nckd_loss = (F.kl_div(log_pred_student_part2, pred_teacher_part2, size_average=False)* (temperature**2)/ target.shape[0])return alpha * tckd_loss + beta * nckd_loss

http://chatgpt.dhexx.cn/article/DDn0A1g9.shtml

相关文章

【GCN-CTR】DC-GNN: Decoupled GNN for Improving and Accelerating Large-Scale E-commerce Retrieval WWW22

《DC-GNN: Decoupled Graph Neural Networks for Improving and Accelerating Large-Scale E-commerce Retrieval》(WWW’22) 在工业场景中,数百亿节点和数千亿的边直接端到端的GNN-based CTR模型开销太大,文章把整个GNN框架解耦成三阶段:预…

(2019.01, iclr) Decoupled Weight Decay Regularization

code: https://github.com/loshchil/AdamW-and-SGDW 除了纯SGD, L2 ! weight_decay 背景知识: sgd with momentum和adam,详见《深度学习》: L2 regulization and weight decay: https://benihime91.github.io/blog/machinelearning/deeplearning/python3…

Decoupled Novel Object Captioner

Decoupled Novel Object Captioner AbstractIntroductionMethodsPreliminariesZero-Shot Novel Object Captioning.Sequence Model with the PlaceholderKey-Value Object MemoryFramework OverviewTraining Reference Reference[原文]: Joselynzhao.top & 夏木青 | Decoup…

Video Anomaly Detection by Solving Decoupled Spatio-Temp

Video Anomaly Detection by Solving Decoupled Spatio-Temp 什么是SSL? Self-Supervised Learning,又称为自监督学习什么是多标签分类问题: 一个数据有多个标签pretext 任务: 简单的来说,通过另一个任务简介完成主任务 比如,要训…

魔改YOLOv5/YOLOv7高阶版——改进之结合解耦头Decoupled_Detect

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨

Distilling Object Detectors via Decoupled Features

Abstract 相比于图像分类而言&#xff0c;目标检测器更加复杂&#xff0c;具有多个损失函数。而目前的的检测中&#xff0c;其主要将注意力集中在对象的区域中&#xff0c;但本文指出&#xff0c;从背景中提取的特征信息对于学生模型的学习也是必不可少的。且由于目标区域和背…

Decoupled Attention Network for Text Recognition

摘要&#xff1a; 最流行的文字检测的方法是注意力机制&#xff0c;但是大多数的注意力机制方法由于循环的对齐操作会导致严重的对齐问题。因为对齐操作依赖于历史解码信息。 本文提出的DAN将对齐操作与历史解码信息解耦。 原理&#xff1a; Connectionist temporal classifi…

涨点技巧:Detect系列---Yolov5/Yolov7加入解耦头Decoupled_Detect,涨点明显

目录 1. Decoupled Head介绍 2.Yolov5加入Decoupled_Detect 2.1 DecoupledHead加入common.py中&#xff1a; 2.2 Decoupled_Detect加入yolo.py中&#xff1a; 2.3修改yolov5s_decoupled.yaml 3.数据集下验证性能 &#x1f3c6; &#x1f3c6;&#x1f3c6;&#x1f3c6;&…

Decoupled Contrastive Learning 论文解读和感想

本文首先提出了当前对比学习的三大痛点&#xff1a; 1、当前的sota方法结构都过于复杂 2、对比学习要想取得效果&#xff0c;必须要用大batch 3、超参敏感(个人认为这里说的超参是指数据增强方式) 然后本文以SimCLR为例&#xff0c;通过对对比损失的梯度进行分析&#xff0c;发…

DECOUPLED WEIGHT DECAY REGULARIZATION

引言 Adam作为一个常用的深度学习优化方法&#xff0c;提出来的时候论文里的数据表现都非常好&#xff0c;但实际在使用中发现了不少问题&#xff0c;在许多数据集上表现都不如SGDM这类方法。 后续有许多工作针对Adam做了研究&#xff0c;之前整理过关于优化算法的发展历程&am…

Decoupled Dynamic Filter Networks

转载自:https://www.cnblogs.com/liuyangcode/p/14755924.html 对depth-wise的改进&#xff0c;将卷积核的参数改为根据输入变化的方式 Introduction 卷积缺点在于&#xff1a;内容不变&#xff0c;计算量高动态filter可以根据内容自适应&#xff0c;但是会提高计算量。depth…

Analyzing and Leveraging Decoupled L1 Caches in GPUs

introduction 我们都知道L1/L2/L3cache解决了内存墙的问题&#xff0c;但是作者分析出现有的缓存架构有着天然缺陷&#xff0c; 作者列出的many to few communication&#xff0c;也就是L1ache中大量的数据传输到L2cache中&#xff0c;可能对于L1cache的带宽使用率不是很高&a…

Decoupled network

Decoupled network https://zhuanlan.zhihu.com/p/37598903 神经网络机制存在的缺陷&#xff1f; 过拟合&#xff0c;梯度消失或者是膨胀&#xff0c;训练依靠大量样本&#xff0c;对网络初始化及其敏感记忆协迁移等等。 Decupled network是对operator的改进 现在的卷积操作…

Decoupled Knowledge Distillation论文阅读+代码解析

本文来自2022年CVPR的文章&#xff0c;论文地址点这里 一. 介绍 知识蒸馏&#xff08;KD&#xff09;的通过最小化师生预测对数之间的KL-Divergence来传递知识(下图a)。目前大部分的研究注意力都被吸引到从中间层的深层特征中提取知识。与基于logit的精馏方法相比&#xff0c…

令牌桶算法

一 算法 令牌桶算法和漏桶算法不同的是&#xff0c;有时后端能够处理一定的突发情况&#xff0c;只是为了系统稳定&#xff0c;一般不会让请求超过正常情况的60%&#xff0c;给容灾留有余地。但漏桶算法中后端处理速度是固定的&#xff0c;对于短时的突发情况&#xff0c;后端…

动态分区分配算法(1、首次适应算法 2、最佳适应算法 3、最坏适应算法 4、邻近适应算法)

文章目录 前言知识总览1、首次适应算法2、最佳适应算法3、最坏适应算法4、邻近适应算法知识回顾与重要考点 前言 此篇文章是我在B站学习时所做的笔记&#xff0c;大部分图片都是课件老师的PPT&#xff0c;方便复习用。此篇文章仅供学习参考。 提示&#xff1a;以下是本篇文章…

《算法4》读书笔记(一)

写在前面&#xff1a;配套网站algs4.cs.princeton.edu&#xff0c;可以把这个网站作为编程的时候的参考资料。这本书比较实用&#xff08;某瓣评分9.3&#xff09;&#xff0c;但没有动态规划部分&#xff0c;作为两三年没怎么碰过算法和数据结构的菜狗&#xff0c;看了《图解算…

《算法4》深入理解红黑树

红黑树是一种性能非常优秀的数据结构&#xff0c;关键在于它能保证最坏的性能也是对数的&#xff0c;主要是因为它是一种平衡的树&#xff0c;所以也叫平衡查找树。要理解红黑树&#xff0c;最好先看看我的上一篇博客《算法4》符号表以及二叉查找树&#xff0c;了解二叉查找树以…

【算法4总结】第四章:图

目录备份 第四章&#xff1a;图 概述 图可以根据是否有向和带权分成以下四种&#xff1a; 无向图 &#xff08;无向不带权&#xff09;有向图 &#xff08;有向不带权&#xff09;加权无向图&#xff08;无向带权&#xff09;加权有向图&#xff08;有向带权&#xff09; …

算法4(一、递归学习)

每次用递归都感觉有点难&#xff0c;这个趁着恶补基础知识的时候&#xff0c;专门看了一遍递归&#xff0c;算法4的。 1.1 递归介绍 方法可以调用自己&#xff0c;例如&#xff1a;下面给出了bin_search的二分查找的一种实现。&#xff08;算法4中使用的是Java&#xff0c;但…