Distilling Knowledge via Knowledge Review 中文版

Distilling Knowledge via Knowledge Review: 通过知识回顾提炼知识

摘要

知识蒸馏将知识从教师网络传输到学生网络,旨在极大提高学生网络的性能。先前的方法大多集中在提出特征转换和损失函数,用于同一级别特征之间的改进效果。我们不同地研究了教师网络和学生网络之间跨级连接路径的因素,并揭示了其重要性。在知识蒸馏中,我们首次提出了跨阶段连接路径。我们的新的评估机制既有效又结构简单。我们最终设计的嵌套和紧凑框架需要极少的计算开销,在各种任务中表现优于其他方法。我们将我们的方法应用于分类、目标检测和实例分割任务。所有这些任务都显著见证了学生网络性能的提升。代码可在 https://github.com/Jia-Research-Lab/ReviewKD 上获取。

1.介绍

深度卷积神经网络(CNNs)在各种计算机视觉任务中取得了显著的成功。然而,CNN的成功通常伴随着相当大的计算和内存消耗,这使得将其应用于资源有限的设备成为一个具有挑战性的话题。已经有一些技术用于训练快速和紧凑的神经网络,包括设计新的架构 [10, 2, 11, 26],网络剪枝 [20, 15, 34, 4, 19],量化 [13] 和知识蒸馏 [9, 25]。

本文专注于知识蒸馏,考虑到它的实用性、效率以及最重要的潜力。它形成了一个非常通用的线路,几乎适用于所有网络架构,并且可以与许多其他策略结合,例如网络剪枝和量化 [32],以进一步改善网络设计。

知识蒸馏最初是在文献[9]中提出的。该过程是在一个更大的网络(即教师)的监督下训练一个较小的网络(即学生)。在文献[9]中,知识是通过教师的logit进行蒸馏的,这意味着学生既受到地面真实标签的监督,也受到教师的logits监督。最近,已经有努力改进蒸馏的有效性。FitNet [25]通过中间特征进行知识蒸馏。AT [38]进一步优化了FitNet,并使用特征的注意力图来传递知识。PKT [23]将教师的知识建模为概率分布,而CRD [28]则使用对比目标来传递知识。所有这些解决方案都集中在转换和损失函数上。

我们在本文中从一个新的角度解决这个具有挑战性的问题,关注教师和学生之间的连接路径。为了简要了解我们的想法,我们首先展示了先前的工作如何处理这些路径。如图1(a)-©所示,所有先前的方法只使用相同级别的信息来指导学生。例如,当监督学生的第四阶段输出时,总是利用教师的第四阶段信息。这个过程看起来直观且易于构建。但我们有趣地发现,事实上这实际上是整个知识蒸馏框架中的一个瓶颈 - 结构的快速更新出人意料地显著改善了许多任务的整体性能。

我们调查了在知识蒸馏中先前被忽视的设计连接路径的重要性,并据此提出了一个新的有效框架。关键修改是使用教师网络中的低级特征来监督学生的更深层次特征,这导致整体性能大大提高。

我们进一步分析了网络结构,并发现学生的高层阶段有能力从教师的低层特征中学习有用的信息。更多的分析见第4.4节。这个过程类似于人类的学习曲线 [35],在那里一个年幼的孩子只能理解所教授的一小部分知识。在成长过程中,越来越多来自过去年份的知识可能逐渐被理解并作为经验记住。

在这里插入图片描述
图1. (a)-© 先前的知识蒸馏框架。它们仅在相同级别之间传递知识。(d)我们提出的“知识审查”机制。我们利用教师的多层来监督学生的一层。因此,在不同级别之间产生了知识传递。

基于这些发现,我们提出利用教师的多级信息来指导学生网络的单级学习。我们的新型流程如图1(d)所示,我们称之为“知识审查”。审查机制是利用先前(更浅层次的)特征来指导当前特征。这意味着学生必须始终检查之前学习过的内容,以更新对“旧知识”的理解和背景。这在我们人类的学习中是一个常见的做法,用来连接在学习期间不同阶段教授的知识。

然而,如何从教师的多级信息中提取有用信息,并将其传递给学生是一个开放且具有挑战性的问题。为了解决这些问题,我们提出了一个残差学习框架,使学习过程更稳定和高效。此外,设计了一种新颖的基于注意力的融合(ABF)模块和分层上下文损失(HCL)函数来提升性能。我们提出的框架显著提高了学生网络的学习效果。

通过应用这个想法,我们在许多计算机视觉任务中取得了更好的性能。在第4节的广泛实验证明了我们提出的知识审查策略的巨大优势。

主要贡献:

  • 我们在知识蒸馏中提出了一个新的审查机制,利用教师的多级信息来指导学生网络的单级学习。
  • 我们提出了一个残差学习框架,更好地实现了审查机制的学习过程。
  • 为了进一步改善知识审查机制,我们提出了基于注意力的融合(ABF)模块和分层上下文损失(HCL)函数。
  • 通过应用我们的蒸馏框架,我们在多个计算机视觉任务中实现了许多紧凑模型的最先进性能。

2. Related Work

在文献[9]中提出了知识蒸馏的概念,其中学生网络同时从地面真实标签和教师提供的软标签中学习。FitNet [25]通过一个阶段的中间特征进行知识蒸馏。FitNet的想法很简单,即学生网络特征经过卷积层转换成与教师相同形状的特征。使用L2距离来衡量它们之间的距离。

许多方法都遵循FitNet,并使用单个阶段的特征来进行知识蒸馏。PKT [23]将教师的知识建模为概率分布,并使用KL散度来衡量距离。RKD [22]使用多个示例关系来引导学生的学习。CRD [28]结合了对比学习和知识蒸馏,并使用对比目标来传递知识。

还有一些方法使用多个阶段的信息来传递知识。AT [38]使用多层注意力图来传递知识。FSP [36]从层特征生成FSP矩阵,并使用该矩阵来指导学生。SP [29]进一步改进了AT。SP不使用单一输入信息,而是使用示例之间的相似性来指导学生。OFD [8]包含一个新的距离函数,用于通过边缘ReLU在教师和学生之间蒸馏主要信息。

所有先前的方法都没有讨论“审查知识”的可能性,然而,我们的工作发现“审查知识”对快速提高系统性能非常有效。

3. Our Method

我们首先对知识蒸馏过程和审查机制进行形式化。然后,我们提出了一个新颖的框架,并介绍了基于注意力的融合模块和分层上下文损失函数。

3.1. 审查机制

给定输入图像 X 和学生网络 S,我们让 Ys = S(X) 表示学生的输出logit。S 可以分成不同的部分(S1, S2, · · · , Sn, Sc),其中 Sc 是分类器,S1, · · · , Sn 是由下采样层分隔的不同阶段。因此,生成输出 Ys 的过程可以表示为:
在这里插入图片描述
我们将“◦”表示为函数的嵌套,其中 g ◦ f(x) = g(f(x))。Ys 是学生的输出,中间特征是 (F1s, · · · , Fns)。第 i 个特征的计算如下所示:
在这里插入图片描述

对于教师网络 T,该过程几乎相同,我们省略了细节。遵循先前的符号表示:

在这里插入图片描述

图2. (a) 根据审查机制监督学生单层的架构。 (b) 从一个层面直接推广到多个层面。这个过程很直接但代价很高。 © 使用融合模块优化了图(b)中的架构,以获得一个紧凑的框架。 (d) 我们进一步以渐进的方式改进了该过程,并将残差学习作为我们的最终架构。ABF和HCL的结构见图3。此图在彩色显示下效果最佳。

待更新

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

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

相关文章

第二十一章 网络通信

21.1 网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。 局域网与互联网 服务器是指提供信息的计算机或程序,客户机是指请求信息的计算机或程序。网络用于连接服务器与客户机,实现两者间的相互通信。 网络协议 网络协议规定了计算…

集成开发环境PyCharm的使用【侯小啾python基础领航计划 系列(三)】

集成开发环境 PyCharm 的使用【侯小啾python基础领航计划 系列(三)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹…

企业如何结合数字化技术实现精益生产

企业要想长远良性发展,就必须不断追求生产效率的极致,才能不断对抗各方各面带来的压力。结合国家大环境趋势,绿色生产已然成为了国家关注的重点,所以老旧耗能的企业生产模式注定会被时代所淘汰。企业只有紧跟国家的发展步伐&#…

QScrollArea的使用

参考&#xff1a; QT的自动滚动区QScrollArea的用法&#xff0c;图文详解-CSDN博客 demo: QScrollArea *scrollArea new QScrollArea;QWidget *pWgt new QWidget();QHBoxLayout *pLayout new QHBoxLayout();for(int i 0; i < 100; i){QPushButton *pBtn new QPushB…

【hacker送书第9期】算法训练营(入门篇)

第9期图书推荐 内容简介作者简介精彩书评图书目录概述参与方式 内容简介 本书以海量图解的形式&#xff0c;详细讲解常用的数据结构与算法&#xff0c;又融入大量的竞赛实例和解题技巧。通过对本书的学习&#xff0c;读者可掌握12种初级数据结构、15种常用STL函数、10种二叉树和…

java基础之循环

Java中有三种主要的循环结构&#xff1a; while 循环do…while 循环for 循环 1、while循环 1.1、结构 while( 布尔表达式 ) { //循环内容 } 1.2、实例 public class TestWhile {public static void main(String[] args) {int x 1;while (x<10){System.out.println("…

面试官:说说webpack的构建流程?

面试官&#xff1a;说说webpack的构建流程? 一、运行流程 webpack 的运行流程是一个串行的过程&#xff0c;它的工作流程就是将各个插件串联起来 在运行过程中会广播事件&#xff0c;插件只需要监听它所关心的事件&#xff0c;就能加入到这条webpack机制中&#xff0c;去改变…

万兆单模光模块SFP-XG-LX:高速长距离数据传输利器

随着企业和个人对高速数据传输的需求不断增加&#xff0c;网络设备需要不断更新换代&#xff0c;以满足更高速、更远距离的传输要求。万兆单模光模块SFP-XG-LX作为一种基于光纤传输的高速网络模块&#xff0c;适用于长距离的数据传输。本文将介绍万兆单模光模块SFP-XG-LX的特点…

CSS单位vmin、vmax

在前端项目中使用到图片或者一些其他的需要适应视口宽度的地方时候&#xff0c;我们可以使用vmin或者vmax这两个属性。我们来看一下这两个属性在MDN上面的定义 实例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">…

婴儿专用洗衣机有必要吗?宝宝洗衣机洗衣服

相信各位宝爸宝妈都有同样的苦恼&#xff0c;那就是宝宝的衣服该怎么来洗宝宝每天都有一大堆衣物和各种巾要洗&#xff0c;如果单纯用手洗&#xff0c;真的是一个很大的工程&#xff0c;将宝宝的衣服丢进去家庭用的洗衣机&#xff0c;宝宝稚嫩的皮肤又怕会被细jun感染到&#x…

04_W5500_TCP_Server

上一节我们完成了TCP_Client实验&#xff0c;这节使用W5500作为服务端与TCP客户端进行通信。 目录 1.W5500服务端要做的&#xff1a; 2.代码分析&#xff1a; 3.测试&#xff1a; 1.W5500服务端要做的&#xff1a; 服务端只需要打开socket&#xff0c;然后监听端口即可。 2…

uniapp中解决swiper高度自适应内容高度

起因&#xff1a;uniapp中swiper组件swiper 标签存在默认高度是 height: 150px &#xff1b;高度无法实现由内容撑开&#xff0c;在默认情况下&#xff0c;swiper盒子高度显示总是 150px 解决办法思路&#xff1a; 动态设置swiper盒子的高度&#xff0c;故需要获取swiper-item盒…

您距离一个成熟安全的 DevOps 平台,只差一个迁移

目录 功能丰富&#xff0c;开箱即用 安全保障&#xff0c;质效并行 私有部署&#xff0c;自主可控 月度发版&#xff0c;持续迭代 本土化团队&#xff0c;企业级支持 迁移指南 从 Gitee 迁移到极狐GitLab 从 SVN 迁移到极狐GitLab 从 GitHub 迁移到极狐GitLab 历经 14…

2024最新电脑系统清理软件哪个好用?

基本上&#xff0c;不管是win版还是Mac版的电脑&#xff0c;其装机必备就是一款电脑系统清理软件&#xff0c;就比如Mac&#xff0c;目前在市面上&#xff0c;电脑系统清理软件是非常多的。 对于不熟悉系统的用户来说&#xff0c;使用一些小众工具&#xff0c;往往很多用户都不…

家用超声波清洗机哪个牌子好?一起来看、值得推荐超声波清洗机

家用超声波清洗机可以干嘛呢&#xff1f;最常见的就是来清洗眼镜。眼镜党朋友应该经常接触超声波清洗机&#xff0c;它常出现在眼镜店中&#xff0c;眼镜店老板帮顾客清洗眼镜&#xff1b;也会出现在工业领域、医疗领域等&#xff0c;超声波清洗机使用范围还是挺广的&#xff0…

【SpringCloud】通过Redis手动更新Ribbon缓存来解决Eureka微服务架构中服务下线感知的问题

文章目录 前言1.第一次尝试1.1服务被调用方更新1.2压测第一次尝试1.3 问题分析1.4 同步的不是最新列表 2.第二次尝试2.1调用方过滤下线服务2.2压测第二次尝试2.3优化 写到最后 前言 在上文的基础上&#xff0c;通过压测的结果可以看出&#xff0c;使用DiscoveryManager下线服务…

基于c++版本链栈改-Python思维总结

##栈部分-&#xff08;叠猫猫&#xff09; ##抽象数据类型栈的定义&#xff1a;是一种遵循先入后出的逻辑的线性数据结构。 ##栈的链式表示 使用链表实现栈时&#xff0c;我们可以将链表的头结点视为栈顶&#xff0c;尾结点视为栈底。 在进行插入元素的时候我们只需要把结点…

逆水行舟!浅谈24届双非本科秋招

逆水行舟&#xff01;浅谈24届双非本科的秋招 逆水行舟&#xff01;浅谈24届双非本科的秋招0、背景 -- 写下本文的初衷1、实习 -- 秋招的预备战役1.1 科大讯飞1.2 三七互娱 2、秋招 -- 一场没有硝烟的战争3、总结 -- 做好自己想做的事情 0、背景 – 写下本文的初衷 如题&#…

使用 React 和 ECharts 创建地球模拟扩散和飞线效果

在本博客中&#xff0c;我们将学习如何使用 React 和 ECharts 创建一个酷炫的地球模拟扩散效果。我们将使用 ECharts 作为可视化库&#xff0c;以及 React 来构建我们的应用。地球贴图在文章的结尾。 最终效果 准备工作 首先&#xff0c;确保你已经安装了 React&#xff0c;并…

Linux简单部署Yearning并结合内网穿透工具发布至公网可访问

目录 前言 1. Linux 部署Yearning 2. 本地访问Yearning 3. Linux 安装cpolar 4. 配置Yearning公网访问地址 5. 公网远程访问Yearning管理界面 6. 固定Yearning公网地址 前言 Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具&#xff0c;为DBA与开发…