Asymmetric Temperature Scaling(NeurIPS 2022)论文速读

news2024/11/26 14:35:43

paper:Asymmetric Temperature Scaling Makes Larger Networks Teach Well Again

official implementation:https://gitee.com/mindspore/models/tree/master/research/cv/ats

本文的创新点

在知识蒸馏中,一个奇怪的现象是大的教师模型未必教的好,调整温度也无法缓解模型容量不匹配的问题。为了解释这个问题,本文将KD的作用分解为三个部分:correct guidance, smooth regularization, class discriminability。最后一点描述的是在蒸馏中教师模型提供的错误类别概率的区分性,大的教师模型往往会过度自信,传统的温度缩放限制了类别差异的作用,导致错误类别概率的区分度变小。因此,本文提出了不对称温度缩放Asymmetric Temperature Scaling (ATS),对于正确和错误的类别分别应用较高和较低的温度,增大了教师模型预测中错误类别概率的方差,从而使学生模型尽可能的学习到错误类别与目标类别的绝对相关性。

方法介绍

通常蒸馏损失采用KL散度损失并与原本的交叉熵训练损失结合到一起,如下

作者将式(1)中的 \(\lambda \tau ^{2}\) 去掉,并定义 \(e(\mathbf{q}^{T}(\tau))=\frac{1}{C-1} {\textstyle \sum_{j=1,j\ne y}^{C} \mathbf{p}^{T}_{j}(\tau) }\),其中 \(\mathbf{q}^{T}(\tau)=\begin{bmatrix}
\mathbf{p}^{T}_{c}(\tau)
\end{bmatrix}_{c\ne y}\),然后就得到了式(2)

其中第三项class discriminability告诉学生错误类别与目标类别的关系,传递类别相关性给学生一直是KD中"dark knowledge"的主流猜测。理想情况下,一个好的教师应该尽可能有区分度的告诉学生哪些类别和目标类别更相关。

分解的图示如图1 Left,显然一个合适的temperature应该同时考虑到这三项的作用,过高或过低的温度导致更小的类别区分度,使得错误类别之间的差异变小,降低蒸馏的性能。

理论分析

Lemma 4.1 给定logit向量 \(\mathbf{f}\in \mathbb{R}^{C}\) 和softened概率向量 \(\mathbf{p}=SF(\mathbf{f};\tau),\tau \in(0,\infty)\),\(v(\mathbf{p})\) 随着 \(\tau\) 的增大单调减小。但是我们更关注的是非目标类别,其中均值和方差可以更直观的计算和分析。 

Assumption 4.2 目标类别的logit比其它类别的logits大,这个假设是合理的,因为训练好的教师模型在训练集上的精度很高,且大多数训练样本都满足这一要求。

Proposition 4.3 在Assumption 4.2下 \(\mathbf{p}_{y}\) 随着 \(\tau\) 的增大单调减小,\(e(\mathbf{q})\) 随着 \(\tau\) 的增大单调增大,\(\tau \to \infty ,e(\mathbf{q})\to 1/C\)。这意味着温度越大,derived average越大,并增强式(2)中的smooth regularization

在分析class discriminability项之前,先定义 \({\tilde{\mathbf{q}} } (\tau)\) 为在温度 \(\tau\) 下只对错误logits应用softmax的结果,即 \({\tilde{q} } (\tau)=SF(\mathbf{g};\tau)\)。对于 \(\mathbf{q}\) 的元素索引 \(c'\),有

\({\tilde{\mathbf{q}} }\) 和 \(\mathbf{q}\) 不一样,前者满足 \( {\textstyle \sum_{c'}^{}}{\tilde{\mathbf{q}} }_{c'} =1\),后者的和 \( {\textstyle \sum_{c\ne y}^{}}{\mathbf{p}}_{c} =1-\mathbf{p}_{y}\),前者不依赖正确类别的logit而后者依赖。作者将 \(v(\tilde{\mathbf{q}})\) 称为 \(Inherent\; Variance(IV)\) 因为它依赖错误类别的logits。

Proposition 4.4 (Derived Variance vs. Inherent Variance) derived variance取决于derived average的平方和inherent variance

当 \(\tau\) 变大,\(e(\mathbf{q})\) 增大(Proposition 4.3)而 \(v(\tilde{\mathbf{q}})\) 减小(Lemma 4.1),因此不好判断 \(v(\mathbf{q})\) 相对于 \(\tau\) 的单调性。从图7可以看到derived variance先增大后减小,符合图1中所示的class discriminability的变化。

我们可以使用Proposition 4.4来清楚地分析为什么更大的教师无法教的更好。在这之前,我们再给出另外两个性质和一个推论

这个推论解释了为什么一个更大的老师不能更好地教学。因为更大的教师往往过于自信,目标logit \(\mathbf{f}_{y}\) 可能更大或错误logits的方差 \(v(\mathbf{g})\) 可能更小,这个结果如图1所示并在图4中进行了验证。

然后derived variance \(v(\mathbf{q})\) 可能变小,限制了式(2)中class discriminability的作用,验证结果如图(7)。

值得注意的是,作者专注于分析错误类概率的方差,而不是所有类。最大化所有类的概率的方差并不意味着最大化错误类的方差。例如,虽然一个非常低的温度可以最大限度地提高所有类别的概率的方差,但生成的教师标签是单一的,在错误类别之间没有区别。换句话说,KD的有效性应该更多地与错误类之间的差异相关,而不是所有类。然而,传统的温度缩放对所有类都采用统一的温度值,不能单独处理错误的类。

Asymmetric Temperature Scaling

我们得出上述分析:如果一个更大的老师做出了一个过度自信的预测,它提供的错误类别的概率可能没有足够的差异性。利用统一的温度并不能在目标类logit的干扰下(如图7的中间)尽可能地增大derived variance。好在根据式(2)中的分解,correct guidance项的作用类似于交叉熵损失,因此我们可以单独处理它。作者提出了一种新的温度缩放方法

其中 \(\tau_{1}>\tau_{2}>0\)。这个方法叫做不对称温度缩放(ATS)因为对正确和错误类别的logits应用了不同的温度。根据式(4)当教师过于自信时ATS的作用如下

  • 如果教师正确类别输出一个更大的logit \(\mathbf{f}_{y}\),一个相对更大的 \(\tau_{1}\) 可以将其减小到一个合理的范围,即减小 \(\mathbf{p}_{y}\) 增大 \(e(\mathbf{q})\),并最终增大derived variance \(v(\mathbf{q})\)
  • 如果教师对所有错误类别输出变化较小的logits,一个相对较小的温度 \(\tau_{2}\) 可以使它们的差异更大,即增大 \(v(\tilde{\mathbf{q}})\),最终增大derived variance \(v(\mathbf{q})\)

ATS在增大derived variance上更加灵活(如图7右所示),即它在教学时可以给出更差异化的蒸馏指导。

实验结果

以往的研究发现,精度更高的教师不一定教得好,如图9所示,尽管在{1.0, 2.0, 4.0, 8.0, 16.0}中调整了温度,更大的教师在传统温度缩放(实线)下的教学结果更差,但使用ATS(虚线)可以使更大的教师教的更好。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络原理(5)--HTTPS是如何进行加密的

💕"Echo"💕 作者:Mylvzi 文章主要内容:网络原理(5)–HTTPS是如何进行加密的 在网络原理(4)中介绍了HTTP协议的相关内容,HTTP协议在传输的过程中存在着安全问题,实际上现在的网络中基本不再使用HTTP,而是使用一种更加安…

记录setData报错TypeError: [object Array] is not a function

小程序调用setData控制台显示报错.但是功能正常 同样的各个地方调setData都报错,经过一轮排除法后发现是自定义组件写法有问题 修改正确之后就没问题了

穷人沉迷多巴胺,富人追求内啡肽

奶头乐理论 1995年,美国旧金山召开了一场由500位富豪和政治家组成的精英会议。 会议认为,全球化的发展将使贫富差距迅速拉大、阶层矛盾日益激烈。 如何让穷人安分守己?他们想出了一个办法: 只需要像喂婴儿奶嘴一样&#xff0c…

服务运行时动态挂载JavaAgent和插件——Sermant热插拔能力解析

作者:华为云高级软件工程师 栾文飞 一、概述 Sermant是基于Java字节码增强技术的无代理服务网格,其利用Java字节码增强技术,为宿主应用程序提供服务治理功能,以解决大规模微服务场景中的服务治理问题,通过Java字节码…

uniapp H5唤起手机App 中间下载页

我这里直接是打开中间下载页,在下载页判断手机是否已存在App,有则唤起App,没有则可点击下载按钮下载app。 唤起App的关键语句是:window.location.href scheme Scheme链接格式样式: [scheme]://[host]/[path]?[que…

Backend - Django SimpleUI(美化 Django Admin )

目录 一、作用 二、安装 & 配置 (一)安装依赖 (二)配置 (三)运行 三、基础设定 (一)创建用户 (二)设置标题 (三)设置登录…

算法刷题:找到字符串中所有的字母异位词

找到字符串中所有的字母异位词 .题目链接题目详情题目解析算法原理滑动窗口流程图定义指针及变量进窗口判断出窗口更新结果 我的答案 . 题目链接 找到字符串中所有的字母异位词 题目详情 题目解析 所谓的异位词,就是一个单词中的字母,打乱顺序,重新排列得到的单词 如:abc-&g…

爬虫入门一

文章目录 一、什么是爬虫?二、爬虫基本流程三、requests模块介绍四、requests模块发送Get请求五、Get请求携带参数六、携带请求头七、发送post请求八、携带cookie方式一:放在请求头中方式二:放在cookie参数中 九、post请求携带参数十、模拟登…

使用IDEA配置GO的开发环境备忘录

1. 安装GO 1.1 下载&安装 进入GO的官网下载对应的GO,本人环境为mac选择最新的1.22.0版本,在本地安装即可 1.2 配置相关环境变量 修改~/.bash_profile,添加如下的配置 GOPATH/Users/kevin/go/src GOBIN/Users/kevin/go/go/bin GOROOT/…

【Redis快速入门】深入解读哨兵模式

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

贪心算法之合并区间

“任世界多宽广,停泊在这港口~” 区间问题,涉及到最多的就是 取交集 和 并集的概念。我们使用C排序算法后,其默认规则就是按照 “左排序”进行的。因而,我们实质上注意的是每一个区间的 右端点,根据题目要求&#xff…

如何使用Docker部署Drupal并结合cpolar实现固定公网地址访问

文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal6. 固定Drupal 公网地址 前言 Dupal是一个强大的CMS,适用于各种不同的网站项目,从小型个人博客到大型企业级门户网站。它的学习…

C++ Webserver从零开始:配置环境(九)——下载github的项目进行测试

前言 大家好,我又来更新Webserver的博客了。上一次更新这个专栏时2024.2.5号,离现在已经13天了。非常抱歉,中间隔了那么久。一方面是基础知识学完之后,就要开始自己写代码了。看基础知识和写代码是两回事,理论和实践的…

Python Selenium实现自动化测试及Chrome驱动使用

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站零基础入门的AI学习网站~。 目录 ​编辑 前言 Selenium简介 安装Selenium库 编写自动化测试脚本 1 打开浏览器并访问网页 2 查找页面元…

如何低成本实现商场室内导航地图制作

商场地图导航可提升顾客服务体验,促进商场信息化建设。蜂鸟视图提供两种低成本的商场导航实现方式,以满足不同需求。 一、模拟导航 用户可选用“模拟导航”:将商场CAD图纸导入蜂鸟视图地图编辑器,通过简单操作生成室内3D地图&…

深入理解 Vue3 中的 setup 函数

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

迁移SVN和GIT的云端数据

在新服务器搭建GIT仓库 教程很多,大致的流程是: 1. 新建linux用户密码专用于git操作 2. 新建git库的存放文件夹并在此初始化git 3. 配置git库所在目录权限 *只需要有一个库和有一个用户,与在windows上建库是一样的。不需要搭建类似gitla…

一文彻底搞懂什么是类加载器

文章目录 1. 类加载器简介2. 类加载器的种类3. 类加载执行过程3.1 加载3.2 验证3.3 准备3.4 解析3.5 初始化3.6 使用3.7 卸载 1. 类加载器简介 类加载器(Class Loader)是 Java 虚拟机(JVM)的一部分,JVM只会运行二进制…

C语言------一种思路解决实际问题

1.比赛名次问题 ABCDE参加比赛&#xff0c;那么每个人的名次都有5种可能&#xff0c;即1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff1b; int main() {int a 0;int b 0;int c 0;int d 0;int e 0;for (a 1; a < 5; a){for (b 1; b < 5; b){for…