[转载]深度学习 优化技巧---label smoothing 标签平滑 理解实例。

一个小例子搞懂transformer中的label smoothing(标签平滑) 我们知道transformer中的正则化除了使用常见的dropout,还使用了label smoothing,也就是标签平滑。关于标签平滑的机制,我在网上也看了一些帖子,总觉得说的不是很透彻,所以自己琢磨了一下,打算以二分类的逻辑回归为例,说明一下具体的标签平滑是如何做的。 标签平滑既然作为正则化的一种方式,目的肯定是为了防止模型过拟合。我个人的理解是,加入了标签平滑后可以使得模型不至于过度学习,因为就算一个样本分到某类的概率为十分接近1,目标函数仍然会增加一定的损失,这就减轻了模型过度学习的动力。 下面我 阅读详情

深度学习 优化技巧---label smoothing 标签平滑 理解实例。

https://blog.csdn.net/neveer/article/details/91646657

  • 问题背景

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

    简单地说,就是对于多分类向量,计算机中往往用[0, 1, 3]等此类离散的、随机的而非有序(连续)的向量表示,而one-hot vector 对应的向量便可表示为[0, 1, 0],即对于长度为n 的数组,只有一个元素是1,其余都为0。因此表征我们已知样本属于某一类别的概率是为1的确定事件,属于其他类别的概率则均为0。

one-hot 带来的问题:

对于损失函数,我们需要用预测概率去拟合真实概率,而拟合one-hot的真实概率函数会带来两个问题:

1)无法保证模型的泛化能力,容易造成过拟合;

2) 全概率和0概率鼓励所属类别和其他类别之间的差距尽可能加大,而由梯度有界可知,这种情况很难adapt。会造成模型过于相信预测的类别。

  • 解决方法

使用下面的 label smoothing 可以缓解这个问题:

 

原理:对于以Dirac函数分布的真实标签,我们将它变成分为两部分获得(替换)

    1) 第一部分:将原本Dirac分布的标签变量替换为(1 - ϵ)的Dirac函数;

    2) 第二部分:以概率 ϵ ,在u(k)u(k) 中份分布的随机变量。

代码对应:

    def label_smoothing(inputs, epsilon=0.1):
        K = inputs.get_shape().as_list()[-1]    # number of channels
        return ((1-epsilon) * inputs) + (epsilon / K)

代码的第一行是取Y的channel数也就是类别数

第二行就是对应公式了。

  • 举例说明

下面用一个例子理解一下:

假设我做一个蛋白质二级结构分类,是三分类,那么K=3;

假如一个真实标签是[0, 0, 1],取epsilon = 0.1,

新标签就变成了 (1 - 0.1)× [0, 0, 1] + (0.1 / 3) = [0, 0, 0.9] + [0.0333, 0.0333, 0.0333]

= [0.0333, 0.0333, 0.9333]

实际上分了一点概率给其他两类(均匀分),让标签没有那么绝对化,留给学习一点泛化的空间。

从而能够提升整体的效果。

 

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

Rethinking the Inception Architecture for Computer Vision

https://arxiv.org/abs/1512.00567

 

 

标签平滑Label Smoothing)详解 标签平滑Label smoothing),像L1、L2和dropout一样,是机器学习领域的一种正则化方法,通常用于分类问题,目的是防止模型在训练时过于自信地预测标签,改善泛化能力差的问题。 阅读详情

相关推荐

深度学习在细胞分类与染色质环预测中的应用

深度学习技术通过卷积神经网络(CNN)和图神经网络(GNN)等模型,在生物信息学领域展现出强大的数据处理能力。CNN擅长从显微图像中提取层次化特征,适用于细胞分类任务;GNN则能有效处理染色质交互网络的拓扑关系,用于预测染色质三维结构中的环状相互作用。这些技术在单细胞多组学研究中尤为重要,能够帮助科学家理解细胞异质性和基因调控机制。结合ResNet-50和DNABERT等预训练模型,可以实现端到端的解决方案,涵盖从数据预处理到模型部署的全流程。这些方法不仅提高了分类和预测的准确性,还通过轻量化方案优化了部署

weixin_34090562的博客 399

Label Smoothing Regularization理论和代码分析

文章目录理论代码 理论 优化策略5 Label Smoothing Regularization_LSR原理分析 代码 我选择的transformer的代码 class LabelSmoothing(nn.Module): "Implement label smoothing." def __init__(self, size, padding_idx, smoothing=0.0...

得克特 905

深度学习中的标签平滑正则化(Label Smoothing Regularization)方法原理详解

论文:https://arxiv.org/pdf/1512.00567.pdf (一)、为什么有标签平滑正则化(Label Smoothing Regularization, LSR)的方法? 在深度学习样本训练的过程中,我们采用one-hot标签去进行计算交叉熵损失时,只考虑到训练样本中正确的标签位置(one-hot标签为1的位置)的损失,而忽略了错误标签位置(one-hot标签为0的位置)的损...

sinat_36618660的博客 1万+

label smoothing(标签平滑)学习笔记

label smoothing是一种在分类问题中,防止过拟合的方法。 交叉熵损失函数在多分类任务中存在的问题 多分类任务中,神经网络会输出一个当前数据对应于各个类别的置信度分数,将这些分数通过softmax进行归一化处理,最终会得到当前数据属于每个类别的概率。 然后计算交叉熵损失函数: 训练神经网络时,最小化预测概率和标签真实概率之间的交叉熵,从而得到最优的预测概率分布。最优的预测概率分布是: 神经网络会促使自身往正确标签和错误标签差值最大的方向学习,在训练数据较少,不足以表征所有的样

taoqick的专栏 1518

标签平滑LabelSmoothing)介绍与代码实现

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

年少的勇气已经用完,剩下的就是三思而后行 2544

深度学习面试题28:标签平滑(Label smoothing)

目录   产生背景   工作原理   参考资料 产生背景 假设选用softmax交叉熵训练一个三分类模型,某样本经过网络最后一层的输出为向量x=(1.0, 5.0, 4.0),对x进行softmax转换输出为: 假设该样本y=[0, 1, 0],那损失loss: 按softmax交叉熵优化时,针对这个样本而言,会让0.721越来越接近...

weixin_30345055的博客 1920

SoftLabel

来从标签平滑和知识蒸馏理解,先探讨一下hard label和soft label之间的关系,然后介绍一下如何用可靠的方法得到蕴含更多信息的soft label,其中主要包含标签平滑和知识蒸馏两种经典方法。深度学习领域中,通常将数据标注为hard label,但事实上同一个数据包含不同类别的信息,直接标注为hard labe...

weixin_41481797的博客 114

标签平滑Label Smoothing

标签平滑 Label Smoothing

AZ_CHEN的博客 8060

标签平滑label smoothing

标签平滑labelsmoothing)出自GoogleNetv3。

Billie使劲学的博客 2807

深度学习标签平滑Label Smoothing Regularization)

文章目录1.标签平滑的作用—防止过拟合2. 传统的交叉熵损失计算3.带有标签平滑的交叉熵损失的计算4.标签平滑与传统的交叉熵损失的比较与分析5. 标签平滑的应用场景 1.标签平滑的作用—防止过拟合 在进行多分类时,很多时候采用one-hot标签进行计算交叉熵损失,而单纯的交叉熵损失时,只考虑到了正确标签的位置的损失,而忽略了错误标签位置的损失。这样导致模型可能会在训练集上拟合的非常好,但由于其错误标签位置的损失没有计算,导致预测的时候,预测错误的概率比较大,也就是常说的过拟合。 标签平滑可以在一定程度上防止

qq_41915623的博客 6104

标签平滑(label smoothing)

在常见的多分类问题中,先经过softmax处理后进行交叉熵计算,原理很简单可以将计算loss理解为,为了使得网络对测试集预测的概率分布和其真实分布接近,常用的做法是使用one-hot对真实标签进行编码,然后用预测概率去拟合one-hot的真实概率。但是这样会带来两个问题: 无法保证模型的泛化能力,使网络过于自信会导致过拟合; 全概率和0概率鼓励所属类别和其他类别之间的差距尽可能加大,而由梯度有界可知,这种情况很难adapt。会造成模型过于相信预测的类别。 标签平滑可以缓解这个问题,可以有两个角度理解这件

qq_40176087的博客 9622

label smooth标签平滑理解

标签平滑的原理和作用 标签平滑的实现——训练过程中loss函数的使用 实践效果对比

HUSTHY的博客 1万+

标签平滑 Label Smoothing

it=sigmoid(Wiixt+bii+Whiht−1+bhi) ft=sigmoid(Wifxt+bif+Whfht−1+bhf) ot=sigmoid(Wioxt+bio+Whoht−1+bho) gt=tanh(Wigxt+big+Whght−1+bhg) ct=ftct−1+itgt ht=ot∗tanh(ct)weightihl[k] \begin{aligned} i_t &= sigmoid(W_{ii}x_t+b_{ii}+W_

weixin_42756682的博客 1158

Label Smoothing标签平滑详解+Pytorch保姆级实际操作

简介 Label Smoothing是一个帮助多分类模型进行正则化的操作。 从提出Label Smoothing的论文出发 "When Does Label Smoothing Help? "这篇文章指出Szegedy et al.提出了Label Smoothing. 因此我们就从Szegedy et al.的文章入手。在这里我们简称Label Smoothing为LS。 标签平滑也可以被简称为LSR(Label-Smoothing Regularization)。 不使用LS时的情况 假设我们有一个K分

狗狗狗大王的博客 1万+

Pytorch:交叉熵损失(CrossEntropyLoss)以及标签平滑(LabelSmoothing)的实现

一般情况下我们都是直接调用Pytorch自带的交叉熵损失函数计算loss,但涉及到魔改以及优化时,我们需要自己动手实现loss function,在这个过程中如果能对交叉熵损失的代码实现有一定的了解会帮助我们写出更优美的代码。其次是标签平滑这个trick通常简单有效,只需要改改损失函数既可带来性能上的提升,通常与交叉熵配合食用。因此,本文基于这两个出发点,介绍基于Pytorch框架下的交叉熵损失实现以及标签平滑的实现。

weixin_43960370的博客 2446
上一篇: [转载]从零开始,了解元学习
下一篇: 目标跟踪相关的论文和代码汇总
机器视觉-zjuer
博客等级 码龄12年 177粉丝 105原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值