当前位置: 首页 > news >正文

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。此图在彩色显示下效果最佳。

待更新

相关文章:

  • 封装PoiExcelUtils
  • GPT-Crawler一键爬虫构建GPTs知识库
  • 吉他初学者学习网站搭建系列(5)——如何做一个在线节拍器
  • Android:BackStackRecord
  • error转string
  • uniapp使用vue-i18n国际化多国语言
  • 记录 | CUDA编程中使用#ifdef指令控制生成CPU和GPU代码
  • [足式机器人]Part2 Dr. CAN学习笔记-数学基础Ch0-3线性化Linearization
  • CoreDNS实战(九)-性能压测
  • IDEA连接Redis注意事项
  • Arduino项目式编程教学第三章——红外遥控灯
  • CSS单位vmin、vmax
  • 【JMeter】BeanShell了解基础知识
  • C/C++---------------LeetCode第118. 杨辉三角
  • RT-Thread Studio文件消失不见或被排除构建
  • exports和module.exports
  • Flannel解读
  • GraphQL学习过程应该是这样的
  • JavaScript异步流程控制的前世今生
  • Shell编程
  • spark本地环境的搭建到运行第一个spark程序
  • TypeScript迭代器
  • 代理模式
  • 对超线程几个不同角度的解释
  • 给新手的新浪微博 SDK 集成教程【一】
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 前端面试之闭包
  • 什么是Javascript函数节流?
  • 使用common-codec进行md5加密
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 一道闭包题引发的思考
  • 1.Ext JS 建立web开发工程
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • (AngularJS)Angular 控制器之间通信初探
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (ibm)Java 语言的 XPath API
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (规划)24届春招和25届暑假实习路线准备规划
  • (六)Hibernate的二级缓存
  • (算法二)滑动窗口
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • ./configure,make,make install的作用
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .net6Api后台+uniapp导出Excel
  • .netcore如何运行环境安装到Linux服务器
  • .net开发时的诡异问题,button的onclick事件无效
  • .net与java建立WebService再互相调用
  • .net中应用SQL缓存(实例使用)
  • /usr/bin/env: node: No such file or directory
  • [Android]常见的数据传递方式
  • [C++]AVL树怎么转
  • [CC-FNCS]Chef and Churu