Label Smoothing分析

article/2025/8/19 3:08:29

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

作者丨王峰@知乎

来源丨https://zhuanlan.zhihu.com/p/302843504

编辑丨极市平台

转自 | 极市平台

导读

 

Label Smoothing在图像识别中能稳定涨点,但在人脸的loss里加上Label Smoothing却是掉点的,本文作者详细分析了该方法的问题,Label Smoothing起到的作用实际上是抑制了feature norm,此时只能控制角度,起到反向优化的作用,因此在人脸loss上加Label Smoothing效果会变差。 

有挺多人问过我一个问题:Label Smoothing在图像识别中能稳定涨点,在人脸的loss里加上Label Smoothing是否有用呢?

我挺早之前就注意到了这件事,当时也做了实验,发现直接应用在人脸相关的loss上,是掉点的。其实DL发展到现在,可以说如果你想到了一个非常简单的排列组合式idea,而经过survey没见过别人这么做,那大概率这个方法是不work的...

但这事到这当然不算完,我们得分析一下它为啥不work。

要引出Label Smoothing,首先我们要知道,Softmax Cross Entropy不仅可以做分类任务(目标为one-hot label),还可以做回归任务(目标为soft label)。设网络输出的softmax prob为p,soft label为q,那Softmax Cross Entropy定义为:

outside_default.png

而Label Smoothing虽然仍是做分类任务,但其目标q从one-hot label变为soft label了,原来是1的位置变为 outside_default.png ,其他的原来是0的位置变为 outside_default.png , outside_default.png 通常取0.1。

假设一个6分类任务,之前的 outside_default.png 就变成了 outside_default.png ,直观上看,这个目标还是很奇怪的,如果一个样本网络非常确认其类别,给了个0.99的置信度,难道经过Label Smoothing,还要反向优化不成?

这个问题其实在概率层面上是没法解释的,从概率上看,确实会有发生反向优化的情况,但为什么这样可以涨点呢?

看看Hinton组对Label Smoothing的分析文章[1],里面有一张图比较有意思:

9724c5d6d2d7a0717e3453182f2ac32a.png

熟悉人脸识别loss的人会发现,这个Label Smoothing得到的特征分布,怎么跟人脸loss的效果这么像?竟然都可以起到让每个类别的样本聚拢的效果。

而少数细心的朋友可能会发现这里的玄机:不做Label Smoothing(标注为w/o LS)的feature norm,普遍比做了LS(标注为w/ LS)的要大很多!w/o LS时最大可以达到1.6,而w/ LS时只有0.4。

回顾之前的文章,减小feature norm实际上等效于降低s,较低的s会使softmax prob的最大值降低,如下图所示(来自于zhuanlan.zhihu.com/p/52 ):

3ea8dd06562d0d8e17090f2852ea6a20.png

可以看到,在较低的s的作用下,任何一个点,都不可能达到0.9以上的概率。也就是说,我们之前所担心的反向优化问题,实际上根本不会发生!即使优化到最好,也只能接近0.9,而到不了1。

但同时要注意到,Label Smoothing也并不要求p优化到1,而是优化到0.9即可。Softmax Cross Entropy 的loss曲线其实跟sigmoid类似,越靠近1的时候,loss曲线会越平缓:

3bb87ebd71350cdde69f5310aab89c85.png

sigmoid曲线

而在设置了 outside_default.png 后,我们只会用到sigmoid曲线上中间的一段,平缓的区域基本上不存在了,样本的移动几乎永不终止,因此特征会比不加LS更加聚拢。

但是在人脸识别的loss里,s通常是固定住的,而且会固定在一个比较大的值上(例如32、64),这样Label Smoothing就无法让s降低来使最大概率降低,于是反向优化在人脸的loss上就成了真的会发生的事情:p>0.9后,loss会把特征往回拉,直至落在p=0.9附近震荡。理论上特征会在类中心周围形成一个环形的分布(我懒得做实验了,有兴趣的朋友可以做一个看看)。

总结一下,Label Smoothing起到的作用实际上是抑制了feature norm,此时softmax prob永远无法达到设定的 outside_default.png ,loss曲面上不再存在平缓区域,处处都有较大的梯度指向各个类中心,所以特征会更加聚拢。而之所以人脸上不work,是因为我们通常会使用固定的s,此时Label Smoothing无法控制feature norm,只能控制角度,就会起到反向优化的作用,因此在人脸loss上加Label Smoothing效果会变差。

参考

When Does Label Smoothing Help? https://arxiv.org/pdf/1906.02629.pdf

下载1:OpenCV-Contrib扩展模块中文版教程在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。交流群欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

http://chatgpt.dhexx.cn/article/rLmRIBvo.shtml

相关文章

label smoothing

label smoothing 背景:当我们将交叉熵损失函数用于分类任务的时候,我们期望真实的标签为1,而其他虚假的标签为0。换句话来说,我们认为原始数据的标注是准确无误的。但是,真实情况并不是这样,在某些领域,或者使用一些数据增强的方法时,都会存…

标签平滑(Label Smoothing)详解

一、什么是label smoothing? 标签平滑(Label smoothing),像L1、L2和dropout一样,是机器学习领域的一种正则化方法,通常用于分类问题,目的是防止模型在训练时过于自信地预测标签,改善…

标签平滑Label Smoothing

Lable Smoothing 是分类问题中错误标注的一种解决方法。 对于分类问题,特别是多分类问题,常常把向量转换成one-hot-vector(独热向量) one-hot带来的问题:(对于独热的简单解释:https://blog.csd…

模型优化之Label Smoothing

1. 引言 Label Smoothing 又被称之为标签平滑,常常被用在分类网络中来作为防止过拟合的一种手段,整体方案简单易用,在小数据集上可以取得非常好的效果。 Label Smoothing 做为一种简单的训练trick,可以通过很少的代价&#xff08…

Smoothing

文章目录 返回主目录Add-one SmoothingAdd-K SmoothingInterpolationGood-Turning Smoothing 返回主目录 这是一个系列的文章,点击返回综合目录页 Add-one Smoothing P A d d − 1 ( W i ∣ W i − 1 ) C ( W i − 1 , W i ) 1 C ( W i ) V P_{Add-1}(W_i|W_{i-…

分类任务中常用的Label smoothing

目录 1.Label smoothing的原理 2.pytorh中如何使用Label smoothing 3.适用场景 1.Label smoothing的原理 交叉熵损失(softmax cross Entropy)中,常用公式: yi: 表示样本i的label,正类为1,负类为0; pi:…

平滑(smoothing)

1 问题的提出 由于在现实生活中,我们的观察尺度有限,我们的样本(输入)很可能没有办法包含所有可能的情况,那么我们怎么去处理先前看不见的事件呢? 举个例子,莎士比亚使用了30000个双连词(bigra…

【简单理解】自然语言处理-平滑方法(Smoothing)

【简单理解】自然语言处理-平滑方法(Smoothing) 简单介绍平滑策略 平滑策略的引入,主要使为了解决语言模型计算过程中出现的零概率问题。零概率问题又会对语言模型中N-gram模型的Perplexity评估带来困难。 零概率问题,就是在计算实例的概率时&#xf…

二十二、动网格Smoothing Spring方法及实例

1 概念介绍 最近一直忙着其他的事情,好久都没有更新,让各位家人们久等了。 今天我们接着聊一聊动网格问题,我们在文章二十一中介绍了动网格的Layering方法,但是Layering方法的局限性很高,只能对四边形网格或六面体网格…

numpy安装

1.以管理员的形式打开cmd 2.安装numpy插件 pip install numpy 3.安装成功后,输入pip list 命令查看是否安装成功 pip list 3.创建 #使用array创建一维数组 list01 [1,2,3,4] np01 np.array(list01) print(np01) print(type(np01)) #使用array创建二维数组 …

Matplotlib安装

安装matplotlib 使用python中pip命令安装 使用python中pip命令安装 第一步:使用winR输入cmd命令打开命令窗口,找到python安装目录下的Scripts目录,使用python -m pip install matplotlib命令 如果出现以下错误或警告,则需按照指示…

node安装

1、进入node官网,下载长期支持版,安装 2、输入node -v,能查询到版本号即为安装成功 3、为方便管理,修改默认的缓存和模块存放路径(C:\Users\Administrator\AppData\Roaming\npm),在nodede 安装文…

如何安装仿宋GB2312字体

步骤: 一、下载仿宋_GB2312.zip压缩包并解压缩; 百度网盘:https://pan.baidu.com/s/1L7yYKhoDmUw1RpNXVS5KDQ 提取码:eclz 阿里云盘:https://www.aliyundrive.com/s/ih3kDDidcGa 二、双击打开字体文件,…

安装Matplotlib

文章目录 一、pip安装二、conda安装1、anaconda navigator安装2、condan命令安装 一、pip安装 运行如下的命令即可 pip install matplotlib二、conda安装 Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等。conda是一个开源的…

cnpm安装

1.将node安装到D:\Program Files\nodejs目录。 2.设置npm全局安装路径与缓存路径 npm config set prefix "D:\Program Files\nodejs\node_global" npm config set cache "D:\Program Files\nodejs\node_cache" 3.安装cnpm npm install -g cnpm --regis…

torch安装

第n次安装了,每次都得结合很多篇才能安装成功,这次直接自己写一个。 一、安装anaconda 这个自己搜吧,挺简单的。 二、安装pytorch 进入anaconda prompt 创建一个虚拟环境(就不用再安装python了,创建之后直接就是用…

pytorch安装

(一)安装Anaconda 1、详细步骤这里不多说。anaconda安装时会自带安装相应的python版本。 安装完成后,可以运行cmd,使用conda --version查看anaconda的版本;用conda list查看安装的包,这里面也包含了python…

halcon21.11安装教程详解

文章目录 1.软件下载2.安装过程 halcon21.11安装教程详解 1.软件下载 a 官网:https://www.mvtec.com/cn b 百度网盘下载 链接:https://pan.baidu.com/s/1-Bdz1l54PQWxbDBkSlILlA 提取码:a5yg 2.安装过程 解压之后,双击som.exe…

安装TensorFlow

文章目录 1.准备工作2.安装TensorFlow3.激活tensorflow 1.准备工作 在安装TensorFlow之前得先安装Anaconda如果还没有进行安装,可以看我主页安装Anaconda教程 2.安装TensorFlow 我们打开Anaconda Prompt 输入python -m pip install -U pip,按回车等待…

Nodejs安装教程

目录 一、安装环境 二、安装步骤 三、验证安装 四、修改全局模块下载路径 五、更换npm源为淘宝镜像 六、全局安装基于淘宝源的cnpm 总结 一、安装环境 本教程演示的环境:win 10 64位node.js下载官网: nodejs官网. 点击选中图标下载到电脑本地即可。 二、安…