典型常见的知识蒸馏方法总结一

来源:https://github.com/HobbitLong/RepDistiller收录的方法

NeurIPS2015: Distilling the Knowledge in a Neural Network

在这里插入图片描述

知识蒸馏开山之作,从logits中蒸馏知识,KL散度损失

ICLR2015:FitNets: Hints for Thin Deep Nets

A hint is defined as the output of a teacher’s hidden layer responsible for guiding the student’s learning process,

we choose a hidden layer of the student, the guided layer, to learn from the teacher’s hint layer

Similarly, we choose the guided layer to be the middle layer of the student network

在这里插入图片描述
与输出的logits概率分布不同,hints最小化教师与学生之间的特征距离,采用L2距离。
在这里插入图片描述

ICLR2017:Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer

在这里插入图片描述

propose attention as a mechanism of transferring knowledge from one network to another 提出将注意力机制作为知识蒸馏的一种方式
propose the use of both activation-based and gradient-based spatial attention maps 提出同时使用基于激活和基于梯度的空间注意力图
show experimentally that our approach provides significant improvements across a variety of datasets and deep network architectures, including both residual and non-residual networks 实验展示了好的效果
show that activation-based attention transfer gives better improvements than full activation transfer, and can be combined with knowledge distillation 基于激活的注意力转移方式优于完全激活的转移
基于激活的注意力图

论文中定义了三种spatial attention的计算方式
在这里插入图片描述

在这里插入图片描述

并给出L1或者L2标准化之后的attention蒸馏损失,还强调it is worth emphasizing that normalization of attention maps is important for the success of the student training

基于梯度的注意力图

在这里插入图片描述

ICCV 2019:Similarity-Preserving Knowledge Distillation

在本文中,我们提出了一种新形式的知识蒸馏损失,其灵感源于这样一个观察结果:语义相似的输入往往会在经过训练的网络中引发相似的激活模式。
保持相似性的知识蒸馏会引导学生网络的训练,使得在教师网络中能产生相似(不相似)激活情况的输入对,在学生网络中也能产生相似(不相似)的激活情况。与以往的蒸馏方法不同,学生网络不需要去模仿教师网络的表示空间,而是要在其自身的表示空间中保持成对的相似性。

在这里插入图片描述
在这里插入图片描述

本文提出了余弦自相似性表示矩阵,和Frobenius 范数来作为蒸馏损失

ICCV 2019:Correlation Congruence for Knowledge Distillation

1. propose a new framework named correlation congruence for knowledge distillation (CCKD), which transfers not only the instance-level information but also the correlation between instances.

在这里插入图片描述

2. a generalized kernel method based on Taylor series expansion is proposed to better capture the correlation between instances.

在这里插入图片描述

CVPR 2019:Variational Information Distillation for Knowledge Transfer

提出了variational information distillation,借助于最大化教师学生之间的互信息

mutual information between two networks based on the variational information maximization

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

CVPR 2019:Relational Knowledge Distillation

在这里插入图片描述

RKD aims at transferring structural knowledge using mutual relations of data examples

定义了两种relation,一种是基于距离的2个样本之间的relation,另一种是三个样本之间的余弦角度relation

Distance-wise

在这里插入图片描述
在这里插入图片描述

Angle-wise Distillation

在这里插入图片描述

ECCV 2018:Learning Deep Representations with Probabilistic Knowledge Transfer

在这里插入图片描述

本文提出一个 基于概率的知识转移 (probabilistic knowledge transfer) 的方法。通过概率分布来建模数据的关系,然后通过最大化互信息,将teacher的概率分布知识传递给学生。

使用Teacher的数据之间的条件概率分布,作为知识的载体,传递给Student。

核心思想就是,建模 Teacher和Student的输出之间分布。通过Kernel Density Estimation可以将两个样本i与j之间的概率表示为
在这里插入图片描述

考虑到概率和为1,可以构造成:
在这里插入图片描述
在这里插入图片描述
利用KL散度来最小化教师与学生模型之间概率分布的差异
在这里插入图片描述

可以参考知乎

AAAI 2019:Knowledge Transfer via Distillation of Activation Boundaries Formed by Hidden Neurons

在介绍方法之前,本文首先定义了两种feature-based的知识蒸馏方法。

第一种是在学生神经网络学习对输入图像进行分类的过程中传递神经元响应,在这种情况下,交叉熵损失和传递损失会结合起来,形成一个单一的综合损失,用于整个训练过程。

第二种方法是在用标签训练学生之前,通过传递教师神经元响应来初始化学生网络。在基于蒸馏损失完成网络初始化后,再依据交叉熵损失对学生网络进行分类训练。

本文讨论第二种feature-based的知识蒸馏方法,即将这种知识蒸馏用于学生网络的初始化学习或者预训练。

所提出的知识传递方法的概念。所提方法聚焦于神经元的激活情况,而非神经元响应的幅度。这种聚焦能够实现对激活边界更精准的传递。
所提出的知识传递方法的概念。所提方法聚焦于神经元的激活情况,而非神经元响应的幅度。这种聚焦能够实现对激活边界更精准的传递。

普通的特征激活蒸馏损失函数

在这里插入图片描述

论文所提出的基于激活边界的蒸馏损失函数

用 max(0,1)来取代ReLU,用L1来取代L2

在这里插入图片描述
但是max(0,1)不连续可微,因此公式(3)中的损失函数不可导,所以不能作为可微分的损失函数

激活传递损失适用于激活边界的传递。然而,由于max(0,1)是一个离散函数,激活传递损失无法通过梯度下降法来最小化。因此,我们提出了一种可通过梯度下降法最小化的替代损失。
最小化激活传递损失与学习一个二元分类器类似。教师神经元的激活情况对应着类别标签。如果教师神经元处于激活状态,那么学生神经元的响应应该大于 0;如果教师神经元处于未激活状态,那么学生神经元的响应应该小于 0。受这种相似性的启发,该替代损失的设计与支持向量机(SVM)(科尔特斯(Cortes)和瓦普尼克(Vapnik)1995 年)中使用的合页损失the hinge loss(罗萨斯科(Rosasco)等人 2004 年)类似。
在这里插入图片描述
将所提出的损失应用于H*W的特征图蒸馏,损失函数可以定义为H和W维度的累加
在这里插入图片描述

NeurIPS 2018:Paraphrasing Complex Network: Network Compression via Factor Transfer

在本文中,我们提出了一种新颖的知识迁移方法,该方法运用卷积操作对教师的知识进行释义,并将其转化以便学生网络使用。这一过程通过两个卷积模块来实现,它们分别被称作 “释义器” 和 “转换器”。“释义器” 通过无监督的方式进行训练,以提取 “教师因子”,“教师因子” 被定义为教师网络的释义信息。位于学生网络的 “转换器” 会提取 “学生因子”,并通过模仿 “教师因子” 来帮助实现对其的转化。
我们观察到,采用我们所提出的因子迁移方法训练的学生网络,其性能优于采用传统知识迁移方法训练的学生网络。
在这里插入图片描述在这里插入图片描述

常言道,如果一个人完全理解某样事物,那么他 / 她应该能够自行对其作出解释。相应地,如果学生网络能够通过训练来复制所提取的信息,这就意味着该学生网络很好地掌握了相关知识。
在本节中,我们将释义器中间层的输出定义为教师网络的 “教师因子”,而对于学生网络,我们利用由若干卷积层构成的转换器来生成 “学生因子”,并训练这些 “学生因子” 去复制 “教师因子”,如图 1 所示。借助这些模块,我们的知识迁移过程主要包含以下两个步骤:

第一步,通过重建损失对释义器进行训练。然后,利用释义器从教师网络中提取 “教师因子”。

在这里插入图片描述
x是教师网络的特征,P是paraphraser的函数,类似于auto-encoder的自监督重建损失。

第二步,将这些 “教师因子” 迁移转化为 “学生因子”,以便学生网络从中学习。

第二步,教师网络和教师的paraphraser权重冻结,利用FT蒸馏损失和交叉熵损失来训练学生网络
在这里插入图片描述
在这里插入图片描述

蒸馏损失为 将教师网络paraphraser输出的特征和学生网络translator输出的特征进行L2归一化之后,最小化他们之间的L1距离损失

CVPR 2017: A gift from knowledge distillation: Fast optimization, network minimization and transfer learning

我们引入了一种新颖的知识迁移技术,在该技术中,来自预训练深度神经网络(DNN)的知识会被提炼出来并迁移至另一个深度神经网络。由于深度神经网络是通过依次经过多个层将输入空间映射到输出空间的,我们将待迁移的提炼知识依据层间的 “流” 来进行定义,这种 “流” 是通过计算来自两层的特征之间的内积来得出的
当我们将学生深度神经网络与和其规模相同但未经教师网络训练的原始网络进行对比时,所提出的将提炼知识作为两层之间的 “流” 进行迁移的方法呈现出三个重要现象:(1)学习了提炼知识的学生深度神经网络的优化速度比原始模型快得多;(2)学生深度神经网络的性能优于原始深度神经网络;(3)学生深度神经网络能够从针对不同任务训练的教师深度神经网络那里学习提炼知识,而且其性能优于从头开始训练的原始深度神经网络。

通过内积计算两个特征层的FSP矩阵

在这里插入图片描述

第一步,计算两个特征F1和F2之间的FSP矩阵G

在这里插入图片描述

第二步,对教师和学生网络的FSP矩阵进行蒸馏损失计算,损失为均方L2损失

在这里插入图片描述

蒸馏整体架构,多个特征阶段的FSP损失传递

在这里插入图片描述

训练过程,分为两个阶段,第一阶段通过蒸馏损失只优化教师与学生之间的FSP矩阵进行预训练,第二阶段通过标签优化学生的任务损失

在这里插入图片描述

arXiv 2017:Like what you like: Knowledge distill via neuron selectivity transfer

In this paper, we propose a novel knowledge transfer method by treating it as a distribution matching problem. 在本文中,我们提出了一种新颖的知识迁移方法,将其视为一个分布匹配问题来处理。具体而言,我们对教师网络和学生网络之间神经元选择性模式的分布进行匹配。为实现这一目标,我们通过最小化这些分布之间的最大均值差异(MMD)度量设计了一种新的知识迁移(KT)损失函数。将其与原始损失函数相结合,我们的方法能够显著提升学生网络的性能。

我们在多个数据集上验证了该方法的有效性,并进一步将其与其他知识迁移方法相结合,以探索最佳可能的结果。最后但同样重要的是,我们针对诸如目标检测等其他任务对模型进行微调。所得结果同样令人鼓舞,这证实了所学特征的可迁移性。

在这里插入图片描述

学生网络不仅依据真实标签进行训练,而且还会模仿教师网络中间层激活情况的分布。图中的每个圆点或三角形都代表其相应的滤波器激活图。
最大均值差异MMD损失的介绍

在这里插入图片描述

Minimizing the MMD loss is equivalent to transferring neuron selectivity knowledge from teacher to student

在这里插入图片描述
在这里插入图片描述

Linear 形式:

在这里插入图片描述

Polynomial形式

在这里插入图片描述

本文核心思想,就是让学生的中间特征与教师的中间特征之间的分布尽可能接近,采用MMD损失对将两者进行匹配,可视化结果为:

在这里插入图片描述
在这里插入图片描述

CVPR 2018: Deep mutual learning

Large scale distributed neural network training through online distillation

Training shallow and thin networks for acceleration via knowledge distillation with conditional adversarial networks

Improving knowledge distillation with supporting adversarial samples

Knowledge distillation with adversarial samples supporting decision boundary

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

挑战用React封装100个组件【010】

Hello,大家好,今天我挑战的组件是这样的! 今天这个组件是一个打卡成功,或者获得徽章后的组件。点击按钮后,会弹出礼花。项目中的勋章是我通过AI生成的,还是很厉害的哈!稍微抠图直接使用。最后面…

【Liunx篇】基础开发工具 - yum

文章目录 🌵一.Liunx下安装软件的方案🐾1.源代码安装🐾2.rpm包安装🐾3.包管理器进行安装 🌵二.软件包管理器-yum🌵三.yum的具体操作🐾1.查看软件包🐾2.安装软件包🐾3.卸载…

MongoDB的简单使用

MongoDB(文档数据库)的简单使用 MongoDB最好的学习资料就是他的官方文档:SQL 到 MongoDB 的映射图表 - MongoDB 手册 v8.0 1.MongoDB CRUD操作 1.1Insert操作 基本方法: db.collection.insertOne() 将单个文档(document)插入集合中 db.collectio…

【射频IC进阶实践教程】2.6 LNA版图设计及DRC/LVS验证

射频集成电路的版图设计非常关键,他对寄生参数非常敏感,需要使其最小化。还需要注意相互耦合的方式本次课程主要介绍射频IC的一些相关布局和连线方面的考虑。 一、版图设计 1. 版图的元件布局 首先打开对应的原理图 点击进行版图设计 由于已经有做好的…

go语言的sdk项目搭建与git 操作标签tag并推送至远程仓库

在搭建 SDK 项目并结合 Git 操作标签(Tag)时,通常会涉及项目初始化、版本管理、Git 标签的创建与管理等内容。以下是一个完整的步骤指南,帮助您搭建 SDK 项目并学习如何使用 Git 标签。 ### 1. **搭建 SDK 项目** 首先&#xff…

超融合承载 PostgreSQL 数据库和 AI 系统的性能评测|金融行业实践

随着人工智能技术的日渐成熟,不少金融用户也开发了自己的 AI 应用系统,协助实际业务中诸如文字识别、图像转换、信息录入等工作,提升业务效率。不过,AI 应用系统普遍依赖 GPU 提供强大算力,对底层存储的性能也有较高的…

数据结构代码归纳

线性表 线性表的顺序表示 定义与初始化 typedef struct SqList{ElemType data[MaxSize];//ElemType *data 开动态数组 int length; }Sqlist; void InitList(SqList &L){L.length0;//若静态数组//若动态数组 //L.data(ElemType*)malloc(sizeof(ElemType)*MaxSize); } …

华为的USG6000为什么不能ping通

前言: 防火墙usg6000v的镜像 链接: https://pan.baidu.com/s/1uLRk0-hnHRTLYLx1Pnplow?pwdtymp 提取码: tymp 看了好多毒文章,感觉写作业更有意思,可以了解新的知识 内容: 首先看毒文章是这样说的,华为的防火墙是…

“量子跃迁与数据织网:深入探索K最近邻算法在高维空间中的优化路径、神经网络融合技术及未来机器学习生态系统的构建“

🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大二学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL&#xff0…

VTK编程指南<三>:基于VTK入门程序解析来理解VTK基础知识

1、VTK入门程序 下面是一个完整的Vtk入门程序&#xff0c;我们基于这个程序来对VTK的基本知识进行一个初步了解。 #include <iostream>#include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL2);// VTK was built with vtkRenderingOpenGL2 VTK_MODULE_INI…

汽车免拆案例 | 2007款宝马650i车发动机偶尔无法起动

故障现象 一辆2007款宝马650i车&#xff0c;搭载N62B48B发动机&#xff0c;累计行驶里程约为26万km。车主反映&#xff0c;发动机偶尔无法起动&#xff0c;故障频率较低&#xff0c;十几天出现1 次&#xff0c;且故障出现时起动机不工作。 故障诊断  接车后试车&#xff0c;…

Kafka单机及集群部署及基础命令

目录 一、 Kafka介绍1、kafka定义2、传统消息队列应用场景3、kafka特点和优势4、kafka角色介绍5、分区和副本的优势6、kafka 写入消息的流程 二、Kafka单机部署1、基础环境2、iptables -L -n配置3、下载并解压kafka部署包至/usr/local/目录4、修改server.properties5、修改/etc…

python中的列表、元组、字典的介绍与使用

目录 一、区别介绍 1.使用场景以及区别图 2.详细介绍 列表 元组 字典 二、例子操作 (一)列表list 1.定义和初始化 2.访问元素&#xff08;下标&#xff09; 3.修改元素&#xff08;下标&#xff09; 4.添加元素&#xff08;append、下标insert&#xff09; 5.删除…

WiFi受限不再愁,电脑无网络快速修复指南

有时在试图连接WiFi时&#xff0c;会发现网络连接受限&#xff0c;或无法正常访问互联网。这种情况不仅影响了工作效率&#xff0c;还可能错过重要的信息。那么&#xff0c;究竟是什么原因导致了电脑WiFi连接受限呢&#xff1f;又该如何解决这一问题呢&#xff1f;小A今天就来教…

【技巧】Mac上如何显示键盘和鼠标操作

在制作视频教程时&#xff0c;将键盘和鼠标的操作在屏幕上显示出来&#xff0c;会帮助观众更容易地理解。 推荐Mac上两款开源的小软件。 1. KeyCastr 这款工具从2009年至今一直在更新中。 https://github.com/keycastr/keycastr 安装的话&#xff0c;可以从Github上下载最…

c++ map对其值排序

无法直接排序,转换成vector<std::pair<string,int>> #include <iostream> #include <map> #include <vector> #include <algorithm>// 用于排序的比较函数 bool compareByValue(const std::pair<std::string, int>& a, const …

调度器、闲逛进程

调度器、闲逛进程 一、调度器/调度程序二、闲逛进程 一、调度器/调度程序 ②、③由调度程序引起&#xff0c;调度程序决定&#xff1a; 让谁运行&#xff1f;-- 调度算法 运行多长时间&#xff1f;-- 时间片大小 调度时机 – 什么事件会触发“调度程序”&#xff1f; ∙ \bull…

第七节(1)、T型加减速转动【51单片机-TB6600驱动器-步进电机教程】

摘要&#xff1a;本节介绍步进电机T型加减速的控制方法&#xff0c;分2个小节&#xff0c;本小节主要内容为该控制方法的推导与计算&#xff0c;第二节对T型加减速进行了简化计算 一.加速阶段计算 1.1 计算时间与步数关系 根据位移公式可得&#xff1a; a n g l e 0 n ∗ s…

利用 360 安全卫士极速版关闭电脑开机自启动软件教程

在使用电脑的过程中&#xff0c;过多的开机自启动软件会严重拖慢电脑的开机速度&#xff0c;影响我们的使用体验。本教程中简鹿办公将详细介绍如何使用 360 安全卫士极速版关闭电脑开机自启动软件&#xff0c;让您的电脑开机更加迅速流畅。 一、打开 360 安全卫士极速版 在电…

车联网安全学习之TBOX

Telematics BOX&#xff0c;简称 T-BOX&#xff0c;也称远程信息处理控制单元&#xff08;Telematics Control Unit, TCU&#xff09;&#xff0c;集成GPS、外部通信接口、电子处理单元、微控制器、移动通信单元和存储器等功能模块。 TBOX 提供的功能有网络接入、OTA、远程控制…