当前位置: 首页 > 编程日记 > 正文

Hinton等人最新研究:大幅提升模型准确率,标签平滑技术到底怎么用?

640?wx_fmt=jpeg


作者 | Rafael Müller , Simon Kornblith, Geoffrey Hinton

译者 | Rachel

责编 | Jane

出品 | AI科技大本营(ID: rgznai100)


【导读】损失函数对神经网络的训练有显著影响,也有很多学者人一直在探讨并寻找可以和损失函数一样使模型效果更好的函数。后来,Szegedy 等学者提出了标签平滑方法,该方法通过计算数据集中 hard target 的加权平均以及平均分布来计算交叉熵,有效提升了模型的准确率。近日,Hinton 团队等人在新研究论文《When Does Label Smoothing Help?》中,就尝试对标签平滑技术对神经网络的影响进行分析,并对相关网络的特性进行了描述。

 

在开始今天的论文解读之前,我们先快速了解研究中的主角和相关知识的概念:

 

  • 什么是 soft target?计算方法是什么?

 

使用 soft target,多分类神经网络的泛化能力和学习速度往往能够得到大幅度提高。文本中使用的soft target 是通过计算hard target 的加权平均和标签的均匀分布得到的,而这一步骤称为标签平滑。

 

  • 标签平滑技术有什么作用?

 

标签平滑技术能够有效防止模型过拟合,且在很多最新的模型中都得到了应用,比如图片分类、机器翻译和语音识别。

 

  • Hinton 的这个研究想说明什么问题?

 

本文通过实验证明,标签平滑不仅能够提升模型的泛化能力,还能够提升模型的修正能力,并进一步提高模型的集束搜索能力。但在本文的实验中还发现,如果在teacher model 中进行标签平滑,对student model 的知识蒸馏效果会出现下降。

 

  • 研究中如何解释发现的现象?

 

为了对这一现象进行解释,本文对标签平滑对网络倒数第二层表示的影响进行了可视化,发现标签平滑使同一类训练实例表示倾向于聚合为紧密的分组。这导致了不同类的实例表示中相似性的信息丢失,但对模型的泛化能力和修正能力影响并不明显。

 

640?wx_fmt=png

 

1、介绍


损失函数对神经网络的训练有显著影响。在 Rumelhart 等人提出使用平方损失函数进行反向传播的方法后,很多学者都提出,通过使用梯度下降方法最小化交叉熵,能获得更好的分类效果。但是学者对损失函数对讨论从未停止,人们认为仍有其他的函数能够代替交叉熵以取得更好的效果。随后,Szegedy等学者提出了标签平滑方法,该方法通过计算数据集中hard target 的加权平均以及平均分布来计算交叉熵,有效提升了模型的准确率。

 

标签平滑技术在图片分类、语音识别、机器翻译等多个领域的深度学习模型中都取得了很好的效果,如表1所示。在图片分类中,标签平滑最初被用于提升 ImageNet 数据集上Inception-v2 的效果,并在许多最新的研究中得到了应用。在语音识别中,一些学者通过标签平滑技术降低了 WDJ 数据集上的单词错误率。在机器翻译中,标签平滑帮助小幅度提升了 BLEU 分数。

 

640?wx_fmt=png

表1 标签平滑技术在三种监督学习任务中的应用

 

尽管标签平滑技术已经得到了有效应用,但现有研究对其原理及应用场景的适用性讨论较少。

 

Hinton 等人的这篇论文就尝试对标签平滑技术对神经网络的影响进行分析,并对相关网络的特性进行了描述。本文贡献如下:

 

  • 基于对网络倒数第二层激活情况的线性映射提出了一个全新的可视化方法;

  • 阐释了标签平滑对模型修正的影响,并指出网络预测结果的可信度更多取决于模型的准确率;

  • 展示了标签平滑对蒸馏的影响,并指出该影响会导致部分信息丢失。


1.1 预备知识


这一部分提供了标签平滑的数学描述。假设将神经网络的预测结果表示为倒数第二层的激活函数,公式如下:

 

640?wx_fmt=png

 

其中 pk 表示模型分类结果为第 k 类的可能性,wk 表示网络最末层的权重和偏置,x 是包括网络倒数第二层激活函数的向量。在使用hard target 对网络进行训练时,我们使用真实的标签 yk 和网络的输出 pk 最小化交叉熵,公式如下:

 

640?wx_fmt=png

 

其中当分类为正确时, yk 值为1,否则为0。对于使用参数 a 进行标签平滑后的网络,则在训练时使用调整后的标签 640?wx_fmt=png和网络的输出 pk 计算并最小化交叉熵,其中,

 

640?wx_fmt=png

 

2、倒数第二层的表示


对于使用参数 a 对网络进行标签平滑后的神经网络,其正确和错误分类的 logit 值之间的差会增大,改变程度与 a 的值相关。在使用硬标签对网络进行训练时,正确分类的 logit 值会远大于错误分类,且不同错误分类的值之间差异也较大。一般而言,第 k 个类别的 logit 值可以看作网络倒数第二层的激活函数 x 和标准 wk 之间的欧式距离的平方,表示如下:

 

640?wx_fmt=png

 

因此,标签平滑会使倒数第二层的激活函数与正确分类间的差值减小,并使其与正确和错误分类的距离等同。为了对标签平滑的这一属性进行观察,本文依照以下步骤提出了一个新的可视化方式:(1)选择三个类别;(2)找到这三个分类的一个标准正交平面,(3)把实例在倒数第二层的激活函数投射在该平面上。

 

图 1 展示了本文在 CIFAR-10, CIFAR-100 和 ImageNet 三个数据集上进行图片分类任务时,网络倒数第二层的激活函数的情况,训练使用的网络架构包括 AlexNet, ResNet-56 和 Inception-v4 。其中,前两列的模型未进行标签平滑处理,后两列使用了标签平滑技术。表2展示了标签平滑对模型准确率的影响。

 

640?wx_fmt=png

图 1 图片分类任务可视化情况

 

640?wx_fmt=png

表2 使用和未使用标签平滑技术的模型的最高准确率

 

第一行可视化使用的数据集为 CIFAR-10 ,标签平滑的参数值为 0.1 ,三个图片分类分别为“airplane”,“automobil”和“bird”。这些模型的准确率基本相同。可以发现,在使用标签平滑的网络中,聚类更加紧凑。

 

第二行可视化使用的数据集为 CIFAR-100,模型为 ResNet-56 ,选择的图片分类为“beaver”,“dolphin”,“otter”。在这次实验中,使用标签平滑技术的网络获得了更高的准确率。

 

最后,本文使用 Inception-v4 在 ImageNet 数据集上进行了实验,并使用具有和不具有语义相似性的分类分别进行了实验。其中,第三行使用的分类不具有语义相似性,分别为“tench”,“meerkat”和“cleaver”。第四行使用了的两个具有语义相似性的分类“toy poodle”和‘miniature poodle“以及另一个不同的分类“tench, in blue”。对于语义相似的类别而言,即使是在训练集上都很难进行区分,但标签平滑较好地解决了这一问题。

 

从上述实验结果可以发现,标签平滑技术对模型表示的影响与网络结构、数据集和准确率无关。


3、隐式模型修正


标签平滑能够有效防止模型过拟合。在本部分,论文尝试探讨该技术是否能通过提升模型预测的准确性改善模型修正能力。为衡量模型的修正能力,本文计算了预期修正误差(expected calibration error, ECE)。本文发现,标签平滑技术能够有效降低 ECE ,并可用于模型修正过程。

 

图片分类


图2左侧展示了 ResNet-56 在 CIFAR-100 数据集上训练后得到的一个可靠性图表,其中虚线表示理想的模型修正情况。可以发现,使用硬标签的模型出现了过拟合的情况。如果需要对模型进行调整,可以将 softmax 的 temperature 调至1.9,或者使用标签平滑技术进行调整。如图中绿线所示,当使用 a = 0.05 进行标签平滑处理时,能够得到相似的模型修正效果。这两种方法都能够有效降低 ECE 值。

 

本文在 ImageNet 上也进行了实验,如图2右侧所示。使用硬标签的模型仍然出现过拟合情况 ,ECE 高达0.071。通过使用温度缩放技术(T = 1.4),可将 ECE 降低至0.022, 如蓝线所示。当使用 a = 0.1 的标签平滑时,能够将 ECE 降低至0.035。

 

640?wx_fmt=png

图2 可信度图表

 

机器翻译


本部分对使用 Transformer 架构的网络的调整进行了实验,使用的评测任务为英译徳。与图片分类任务不同,在机器翻译中,网络的输出会作为集束搜索算法的输入,这意味着模型的调整将对准确率产生影响。

 

本文首先比较了使用硬标签的模型和经过标签平滑(a = 0.1)的模型的可信度,如图3所示。可以发现,使用标签平滑的网络的调整情况优于使用硬标签的网络。

 

640?wx_fmt=png

图3 基于英译徳任务训练的Transformer 架构的可信度图表

 

尽管标签平滑能够获得更佳的模型调优和更高的 BLEU 值,其也会导致负对数似然函数(negative log-likelihoods, NLL)的值变差。图4展示了标签平滑技术对 BLEU 和 NLL 的影响,蓝线代表 BLEU 值,红线代表 NLL 值。其中,最左侧的图为使用硬标签训练的模型的情况,中间的图为使用标签平滑技术训练的模型的情况,右侧的图则展示了两种模型的 NLL 值变化情况。可以发现,标签平滑在提高 BLEU 分数的同时,也导致了 NLL 的降低。

 

640?wx_fmt=png

图4 Transformer 网络调优对 BLEU 和 NLL 的影响


4、知识蒸馏


本部分研究了在teacher model 对student model 的知识蒸馏中标签平滑的影响。本文发现,尽管标签平滑能够提升teacher model 的准确性,但使用标签平滑技术的teacher model 所产生的student model 相比于未使用标签平滑技术的网络效果较差。

 

本文在 CIFAR-10 数据集上进行了实验。作者训练了一个 ResNet-56 的teacher model ,并对于一个使用 AlexNet 结构的student model 进行了知识蒸馏。作者重点关注了4项内容:


  • teacher model 的准确度

  • student model 的基线准确度

  • 经过知识蒸馏后student model 的准确度,其中teacher model 使用硬标签训练,且用于蒸馏的标签经过温度缩放进行调整

  • 使用固定温度进行蒸馏后的student model 的准确度,其中 T = 1.0 ,teacher model 训练使用了标签平滑技术


图5展示了这一部分实验的结果。作者首先比较了未进行蒸馏的teacher model 和student model 的效果,在实验中,提高 a 的值能够提升teacher model 的准确度,但会轻微降低student model 的效果。

 

640?wx_fmt=png

图5 基于 CIFAR-10 数据集从 ResNet-56 向 AlexNet 进行蒸馏的效果

 

之后,作者使用硬标签训练了teacher model 并基于不同温度进行蒸馏,且分别计算了不同温度下的 y 值,用红色虚线表示。实验发现,所有未使用标签平滑技术的模型效果都优于使用标签平滑技术的模型效果。最后,作者将使用标签平滑技术训练的具有更高准确度的teacher model 的知识蒸馏入student model ,并用蓝色虚线进行了表示。可以发现,模型效果并未得到显著提升,甚至有所降低。


5、结论和未来展望


尽管很多最新技术都使用了标签平滑方法,该方法的原理和使用情形并未得到充分讨论。本文总结了解释了在多个情形下标签平滑的应用和表现,包括标签平滑如何使得网络倒数第二层激活函数的表示的聚类更加紧密等。为对此问题进行探究,本文提出了一个全新的低纬度可视化方法。

 

标签平滑技术在提升模型效果的同时,也可能对知识蒸馏带来负面的影响。本文认为造成该影响对原因是,标签平滑导致了部分信息的丢失。这一现象可以通过计算模型输入和输出的互信息来进行观察。基于此,本文提出了一个新的研究方向,即标签平滑和信息瓶颈之间的关系。

 

最后,本文针对标签平滑对模型修正的作用进行了实验,提升了模型的可解释性。

 

原文链接: 

https://arxiv.org/pdf/1906.02629.pdf


(*本文为 AI科技大本营编译文章,转载请联系 1092722531


精彩推荐


    640?wx_fmt=png

推荐阅读

  • 阿里90后科学家研发,达摩院开源新一代AI算法模型

  • 正态分布为何如此重要?

  • 智能文本信息抽取算法的进阶

  • 入门必备 | 一文读懂神经架构搜索

  • 印度人才出口:一半美国科技企业CEO是印度裔 | 数据分析中印青年

  • 为什么说“大公司的技术顽疾根本挽救不了”

  • 25 年 IT 老兵零基础写小说,作品堪比《三体》| 人物志

  • 中小企业搭建混合云,服务器如何选?

  • 从0到1 | 文本挖掘的传统与深度学习算法

  • 一览微软在机器阅读理解、推荐系统、人机对话等最新研究进展 | ACL 2019

  • 1.2w星!火爆GitHub的Python学习100天刷爆朋友圈!


640?wx_fmt=png你点的每个“在看”,我都认真当成了喜欢

相关文章:

WaitForSingleObject和WaitForMultipleObjects用法

转自:http://www.360doc.com/content/10/0512/09/1072296_27178529.shtml 等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止。这些等待函数中最常用的是WaitForSingleObject: DWORD WaitForSingleObject(HANDLE hObject, DW…

【面试必问】支撑百万并发的IO多路复用技术你了解吗?

多路复用其实并不是什么新技术,它的作用是在一个通讯连接的基础上可以同时进行多个请求响应处理。对于网络通讯来其实不存在这一说法,因为网络层面只负责数据传输;由于上层应用协议的制订问题,导致了很多传统服务并不能支持多路复…

DllMain already defined in dllmain.obj错误

错误 uafxcw.lib(dllmodul.obj) : error LNK2005: DllMain already defined in dllmain.obj 修改: 去掉宏定义 _USRDLL 转载于:https://blog.51cto.com/co63oc/1122378

典型的数字水印软件

转自:http://blog.csdn.net/pastora/archive/2005/04/15/348413.aspx ---- 目前,数字水印软件既有商品化产品,也有供研究用的免费软件。 商品化软件 ----提供商品化数字水印软件的公司主要有以下一些: ----1.Digimar…

AI、5G、小程序、AIoT纷纷迎来高峰,下一步开发者们要怎么办?

2018 年,上千名开发者与上百名技术专家齐聚一堂,在 CSDN 2018 AI开发者大会上以“AI技术与应用”为核心,深度聚焦人工智能的技术创新与行业应用,真正做到了“只讲技术,拒绝空谈”。今年,在产业智能化的浪潮…

linux第四课

一、配置软件仓库1.yum简介基于rpm软件包的安装部署机制自动解决软件包的依赖关系需要先配置软件仓库2.配置本地的软件仓库a.放入centos7.iso镜像文件到光驱中,确保电源开启b.命令操作# umount /dev/cdrom# ls /mnt# mount /dev/cdrom /mnt# ls /mnt# mkdir -p /rep…

图像处理和图像识别中常用的CxImage函数

1、Load:reads from disk the image in a specific format; 2、Save:saves to disk the image in a specific format; 3、Filter:2D linear filter(图像锐化,可提高图像清晰度); 4、Copy&…

大战三回合:XGBoost、LightGBM和Catboost一决高低 | 程序员硬核算法评测

作者 | LAVANYA译者 | 陆离责编 | Jane出品 | AI科技大本营(ID: rgznai100)【导读】XGBoost、LightGBM 和 Catboost 是三个基于 GBDT(Gradient Boosting Decision Tree)代表性的算法实现,今天,我们将在三轮…

云计算之Docker介绍

1. 百科简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙…

还在纠结垃圾分类问题?带你用Python感受ImageNet冠军模型SENet的强大

作者 | beyondma转载自CSDN博客本月1日起,上海正式开始了“史上最严“垃圾分类的规定,扔错垃圾最高可罚200元。全国其它46个城市也要陆续步入垃圾分类新时代。各种被垃圾分类逼疯的段子在社交媒体上层出不穷。其实从人工智能的角度看垃圾分类就是图像处理…

软件开发流程包含哪些内容

2019独角兽企业重金招聘Python工程师标准>>> 能否开发出一个好的软件,关键是看软件开发前期所做的工作,重点是这个软件有没有一个好的 软件开发流程,因为一个好的软件开发流程关系到到这个软件的成败和最后能达到一个什么的效果&a…

在对话框中应用CScrollView显示图像

1、用vs2008创建一个基于对话框的工程DialogView; 2、添加一个新类CMyDocument,基类为CDocument; 3、添加一个新类CMyView,基类为CScrollView; 4、修改CMyDocument的头文件: #pragma once // CMyDocument …

如何用纯 CSS 创作一个同心圆弧旋转 loader 特效

效果预览 在线演示 按下右侧的“点击预览”按钮在当前页面预览,点击链接全屏预览。 https://codepen.io/zhang-ou/pen/OZmXQX 可交互视频教程 此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。 请用 chrome, safari, edge 打开观看…

Java长见到的面试题,看你能答出几题,就知道自己有多菜了

作者:Java3y前言只有光头才能变强Redis目前还在看,今天来分享一下我在秋招看过(遇到)的一些面试题(相对比较常见的)0、final关键字简要说一下final关键字,final可以用来修饰什么?这题我是在真实的面试中遇到的,当时答得…

数据结构实验之链表一:顺序建立链表

题目描述 输入N个整数,按照输入的顺序建立单链表存储,并遍历所建立的单链表,输出这些数据。输入 第一行输入整数的个数N;第二行依次输入每个整数。输出 输出这组整数。示例输入 8 12 56 4 6 55 15 33 62 示例输出 12 56 4 6 55 15…

深度学习在人脸检测中的应用 | CSDN 博文精选

作者 | 梁志成、刘鹏、陈方杰责编 | 唐小引转载自CSDN(ID:csdnnews)在目标检测领域,可以划分为人脸检测与通用目标检测,往往人脸这方面会有专门的算法(包括人脸检测、人脸识别、人脸其他属性的识别等)&…

vs2008中,在OCX控件中应用doc/view基本步骤

1、利用向导创建一个MFC ActiveX Control控件CMyOCX; 2、在工程中加入ActivDoc头文件和执行文件; class CActiveXDocTemplate : public CSingleDocTemplate { enum { IDR_NOTUSED 0x7FFF }; CWnd* m_pParentWnd; CFrameWnd* m_pFrameWnd; C…

常见存储过程分页PK赛——简单测试分析常见存储过程分页速度

数据的分页是我们再熟悉不过的功能了,各种各样的分页方式层出不穷。今天我把一些常见的存储过程分页列出来,再简单地测一下性能,算是对知识的总结,也是对您好想法的抛钻引玉。废话不多说,开始吧~~ 1.首先建立一张测试表…

YOLOv3模型剪枝,瘦身80%,提速100%,精度基本不变

作者 | CV君转载自我爱计算机视觉(ID: aicvml)如果要在实际应用中部署目标检测,你会想到哪项算法?在52CV目标检测交流群里,被提及最多的,恐怕就是YOLOv3了。虽然新出的一些算法号称“完胜”“吊打”某某某算…

Ubuntu开发用新机安装流程

1.SSH安装 Ubuntu缺省已安装客户端,此处安装服务端 sudo apt-get install openssh-server 确认sshserver是否启动 netstat -tlp | grep ssh 或 ps -e | grep ssh 未启动,选择启动 sudo /etc/init.d/ssh start 2.问题解决:ACPI Error:Method p…

人工智能六十年技术简史

出品 | AI科技大本营(ID:rgznai100)作者:李理,环信人工智能研发中心vp,十多年自然语言处理和人工智能研发经验。主持研发过多款智能硬件的问答和对话系统,负责环信中文语义分析开放平台和环信智能机器人的设…

【Android游戏开发二十五】在Android上的使用《贝赛尔曲线》!

首先对于《赛贝尔曲线》不是很了解的童鞋,请自觉白度百科、google等等... 为了方便偷懒的童鞋,这里给个《贝赛尔曲线》百科地址,以及一段话简述《贝赛尔曲线》: 《贝赛尔曲线》白度百科快速地址:http://baike.baidu.co…

Spring Boot 工程集成全局唯一ID生成器 Vesta

2019独角兽企业重金招聘Python工程师标准>>> 本文内容脑图如下: 文章共 760字,阅读大约需要 2分钟 ! 概 述 在前一篇文章 《Spring Boot工程集成全局唯一ID生成器 UidGenerator》 中给大家推荐了一款由百度开发的基于 Snowflake算…

vs2008中,创建基于对话框的mfc动态库步骤

1、利用MFC Dll向导初始生成一个mfc dll(默认设置); 2、添加一个对话框资源; 3、向工程中添加一个.h、.cpp文件,作为外部的接口; 4、.h头文件的格式仿照于基于控制台的dll的头文件格式; 5、.h头文件中包括资源文件头文…

poj3468 A Simple Problem with Integers

http://acm.hust.edu.cn:8080/judge/problem/viewProblem.action?id14607 题意:题目给你n个数,m个操作,接下来一行给你这n个数,接下的几行给出m个操作,Q a b 表示查询区间[a,b]里的数和和。U a b c 表示把区间[a,b]里的数都加上c…

【Luogu】P1613 跑路

【Luogu】P1613 跑路 一、题目 题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零。可是小A偏偏又有赖床的坏毛病。于是为了保住自己的工资,小A买了一个十分牛B的空间…

matlab图形用户界面设计简介

1、File->New->GUI->Create New GUI->Blank GUI->OK即可打开图形用户界面开发环境。 在里面可以拖放需要的控件,包括pushbutton、slider、radiobutton、togglebutton、checkbox、listbox、popupmenu、edit text、static text、table、axes、panel、…

旷视发布《人工智能应用准则》,倡导AI技术健康可持续发展

2019年7月8日,旷视宣布推出基于企业自身管理标准的《人工智能应用准则》(以下简称《准则》),旨在从人工智能企业自身的角度,规范、引导人工智能技术正确运用和健康发展,并确保其安全可控可靠,促…

Java知识积累——String引用的判断问题

看如下程序 1 public static void main(String[] args) {2 String a new String("abc");3 String b new String("abc");4 System.out.println(a b); 5 6 String c "abc";7 String d "abc";8 …

windows7下vs2008常见错误解决方法汇总

1、fatal error LNK1000:Internal error during IncrBuildImage 解决方法:选中对应工程-->点击右键,选择Properties-->Configuration Properties-->Linker-->General-->选中Enable Incremental Linking:改为No(/INCREMENTAL:NO),原始选项…