Label-Smoothing

article/2025/8/19 2:44:54

论文:Rethinking the Inception Architecture for Computer Vision        

个人理解:

就是让softmax不那么相信某一类的数据,增强泛化性。主要操作就是,在制作标签的时候,属于那一类就让网络90%相信他,其他10%平均相信其他人。

和focalloss的想法不太一样,focalloss是让分错的东西对网络多做点贡献,学的比较好的就少做点贡献。

今天来进行讨论深度学习中的一种优化方法Label smoothing Regularization(LSR),即“标签平滑归一化”。由名字可以知道,它的优化对象是Label(Train_y)。

对于分类问题,尤其是多类别分类问题中,常常把类别向量做成one-hot vector(独热向量)。

简单地说,就是对于多分类向量,计算机中往往用[0, 1, 3]等此类离散的、随机的而非有序(连续)的向量表示,而one-hot vector 对应的向量便可表示为[0, 1, 0],即对于长度为n 的数组,只有一个元素是1,其余都为0。

 之后在网络的最后一层(全连接层)后加一层softmax层,由于softmax输出是归一化的,所以认为该层的输出就是样本属于某类别的概率。而由于样本label是独热向量,因此表征我们已知样本属于某一类别的概率是为1的确定事件,属于其他类别的概率则均为0。

一、首先明确一些变量的含义

zi:也为logits,未被归一化的对数概率;

p:predicted probability,预测的example的概率;

q:groundtruth probablity,真实的example的label概率;对于one-hot,真实概率为Dirac函数,即​q(k)=δk,y​q(k)=δk,y,其中y是真实类别。

loss:Cross Entropy,采用交叉熵损失。

二、one-hot 带来的问题

  对于损失函数,我们需要用预测概率去拟合真实概率,而拟合one-hot的真实概率函数会带来两个问题:1)无法保证模型的泛化能力,容易造成过拟合;2) 全概率和0概率鼓励所属类别和其他类别之间的差距尽可能加大,而由梯度有界可知,这种情况很难adapt。会造成模型过于相信预测的类别。

三、解决方案

四、优化结果

文章表示,对K = 1000,ϵ = 0.1的优化参数,实验结果有0.2%的性能提升。

五、代码实现

import torch
import torch.nn as nnclass NMTCritierion(nn.Module):"""TODO:1. Add label smoothing"""def __init__(self, label_smoothing=0.0):super(NMTCritierion, self).__init__()self.label_smoothing = label_smoothingself.LogSoftmax = nn.LogSoftmax()if label_smoothing > 0:self.criterion = nn.KLDivLoss(size_average=False)else:self.criterion = nn.NLLLoss(size_average=False, ignore_index=100000)self.confidence = 1.0 - label_smoothingdef _smooth_label(self, num_tokens):# When label smoothing is turned on,# KL-divergence between q_{smoothed ground truth prob.}(w)# and p_{prob. computed by model}(w) is minimized.# If label smoothing value is set to zero, the loss# is equivalent to NLLLoss or CrossEntropyLoss.# All non-true labels are uniformly set to low-confidence.one_hot = torch.randn(1, num_tokens)one_hot.fill_(self.label_smoothing / (num_tokens - 1))return one_hotdef _bottle(self, v):return v.view(-1, v.size(2))def forward(self, dec_outs, labels):scores = self.LogSoftmax(dec_outs)num_tokens = scores.size(-1)# conduct label_smoothing modulegtruth = labels.view(-1)if self.confidence < 1:tdata = gtruth.detach()one_hot = self._smooth_label(num_tokens)  # Do label smoothing, shape is [M]if labels.is_cuda:one_hot = one_hot.cuda()tmp_ = one_hot.repeat(gtruth.size(0), 1)  # [N, M]tmp_.scatter_(1, tdata.unsqueeze(1), self.confidence)  # after tdata.unsqueeze(1) , tdata shape is [N,1]gtruth = tmp_.detach()loss = self.criterion(scores, gtruth)return loss

使用上面这段代码:

criterion = NMTCritierion(0.1)
outputs = net(img)
loss = criterion(outputs, lb)

转自:https://www.cnblogs.com/zyrb/p/9699168.html


http://chatgpt.dhexx.cn/article/9uHhLqZm.shtml

相关文章

MATLAB Smoothing Spline 拟合

参考 The Elements of Statistical Learning (chapter 5.4) MATLAB - Smoothing Splines MATLAB - fit 1. 基础 Smoothing Spline 可以用于离散数据的函数拟合。考虑下面的问题&#xff1a;在所有存在二阶连续导数的函数中寻找拟合函数 f ( x ) f(x) f(x)&#xff0c;可以使…

Label Smoothing分析

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达 作者丨王峰知乎 来源丨https://zhuanlan.zhihu.com/p/302843504 编辑丨极市平台 转自 | 极市平台 导读 Label Smoothing在图像识别中能稳定涨点&#xff0c;但在人脸的…

label smoothing

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

标签平滑(Label Smoothing)详解

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

标签平滑Label Smoothing

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

模型优化之Label Smoothing

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

Smoothing

文章目录 返回主目录Add-one SmoothingAdd-K SmoothingInterpolationGood-Turning Smoothing 返回主目录 这是一个系列的文章&#xff0c;点击返回综合目录页 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的原理 交叉熵损失&#xff08;softmax cross Entropy&#xff09;中&#xff0c;常用公式&#xff1a; yi: 表示样本i的label,正类为1&#xff0c;负类为0&#xff1b; pi:…

平滑(smoothing)

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

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

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

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

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

numpy安装

1.以管理员的形式打开cmd 2.安装numpy插件 pip install numpy 3.安装成功后&#xff0c;输入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命令安装 第一步&#xff1a;使用winR输入cmd命令打开命令窗口&#xff0c;找到python安装目录下的Scripts目录&#xff0c;使用python -m pip install matplotlib命令 如果出现以下错误或警告&#xff0c;则需按照指示…

node安装

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

如何安装仿宋GB2312字体

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

安装Matplotlib

文章目录 一、pip安装二、conda安装1、anaconda navigator安装2、condan命令安装 一、pip安装 运行如下的命令即可 pip install matplotlib二、conda安装 Anaconda包括Conda、Python以及一大堆安装好的工具包&#xff0c;比如&#xff1a;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次安装了&#xff0c;每次都得结合很多篇才能安装成功&#xff0c;这次直接自己写一个。 一、安装anaconda 这个自己搜吧&#xff0c;挺简单的。 二、安装pytorch 进入anaconda prompt 创建一个虚拟环境&#xff08;就不用再安装python了&#xff0c;创建之后直接就是用…

pytorch安装

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

halcon21.11安装教程详解

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