目的:

label smoothing常用于分类任务,防止模型在训练中过拟合,提高模型的泛化能力。


意义:

对于分类问题,我们通常使用one-hot编码,“非黑即白”,标签向量的目标类别概率为1,非目标类别概率为0:

神经网络在分类任务中会输出当前输入对应每个类别的置信度分数,通过softmax对这些分数进行归一化处理,最终可以得到当前输入数据对应每一个类别的概率。

然后计算交叉熵损失函数:

这就会导致真实标签与其他标签之间的关系被忽略,模型无法学到更多的东西;这样训练得到的模型泛化能力会很差;处理样本相似度较高、数据噪声较大的数据集等分类问题时,模型容易受到影响。

针对这些问题,研究学者提出了label smoothing方法。


label smoothig(标签平滑):

label smoothing的提出很好的解决了上述问题,主要是通过减少实际样本标签的类别在计算损失函数时的权重,来抑制过拟合问题。

增加标签平滑后的概率分布就变为:

交叉熵损失函数就变为:


优缺点:

label smoothing优点:

一定程度上缓解了模型过于绝对的问题(‘非黑即白’);

增强了模型的泛化能力;

体现了训练数据中类别之间的亲疏关系。

label smoothing缺点:

随机噪声的添加并不能完全反映label之间的关系,甚至会导致模型欠拟合。

参考文献:

C. -B. Zhang et al. , Delving Deep Into Label Smoothing.

代码实现:

import torch.nn.functional as Fdef linear_combination(x, y, epsilon):return epsilon * x + (1 - epsilon) * ydef reduce_loss(loss, reduction='mean'):return loss.mean() if reduction == 'mean' else loss.sum() if reduction == 'sum' else lossclass LabelSmoothingCrossEntropy(nn.Module):def __init__(self, epsilon: float = 0.1, reduction='mean'):super().__init__()self.epsilon = epsilonself.reduction = reductiondef forward(self, preds, target):n = preds.size()[-1]log_preds = F.log_softmax(preds, dim=-1)loss = reduce_loss(-log_preds.sum(dim=-1), self.reduction)nll = F.nll_loss(log_preds, target, reduction=self.reduction)return linear_combination(loss / n, nll, self.epsilon)

关于label smoothing(标签平滑)相关推荐

  1. Label Smoothing 标签平滑 (Label smooth regularization, LSR)

    Lable Smoothing 是分类问题中错误标注的一种解决方法.是一种正则化方法, 为了降低模型过拟合(overfitting) 出自inception v3,Transformer中就用到了 我 ...

  2. [轻笔记] label smoothing(标签平滑)

    看google AI最新的开源代码,发现有个技巧--label smoothing,网上查到的公式与代码中的公式不一样,于是做个笔记,并对见到的觉得有问题的关于label smoothing的博客也列 ...

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

    目录 简介 从提出Label Smoothing的论文出发 不使用LS时的情况 不使用LS时可能带来的问题 LS作为正则化的一种方式 具体操作 为何LS可以避免偏激的输出 对LS的另一个角度理解 Py ...

  4. label smooth标签平滑【ConvE(知识图谱补全-链接预测)中使用到】

    今天我们来聊一聊label smooth这个tricks,标签平滑已经成为众所周知的机器学习或者说深度学习的正则化技巧.标签平滑--label smooth regularization作为一种简单的 ...

  5. label smooth标签平滑的理解

    今天我们来聊一聊label smooth这个tricks,标签平滑已经成为众所周知的机器学习或者说深度学习的正则化技巧.标签平滑--label smooth regularization作为一种简单的 ...

  6. 目标检测的Tricks | 【Trick1】Label Smoothing

    如有错误,恳请指出. 文章目录 1. Label Smoothing理论概要 2. Label Smoothing实现代码 1. Label Smoothing理论概要 假设我们的分类只有两个,一个是 ...

  7. label smoothing(标签平滑)

    label smoothing是一种在分类问题中,防止过拟合的方法. label smoothing(标签平滑) 交叉熵损失函数在多分类任务中存在的问题 label smoothing(标签平滑) 参 ...

  8. 标签平滑论文笔记:2020《When Does Label Smoothing Help?》

    标签平滑 介绍 实验1:标签平滑作用 实验2:针对ECE与温度缩放进行对比(作用相近) 实验3:标签平滑对知识蒸馏影响(变差) 实验3知识蒸馏:互信息I(X;Y) 链接 介绍   看成距离:   这里 ...

  9. 标签平滑 label smoothing

    文章目录 简介 什么是label smoothing label smoothing作用 torch实现label smoothing 简介 label smoothing其实是机器学习和深度学习上比 ...

最新文章

  1. 曾获Jolt大奖,“Python之父”龟叔推荐的书,又双叒叕更新了
  2. python面试-Python面试中常见的3个问题
  3. 计算机网络OSI架构详细图
  4. Qt中消息的机制原理
  5. QPW 行政区划字典表(td_area)
  6. java placeholder_java – 如何在JTextfield中设置像Placeholder一样的文本
  7. 修改环境变量后,导致一些常用命令失效,如ll,ls,vi不能用
  8. 程序布置到服务器上速度慢_百战程序员python面试题总结---高级语法(4)
  9. 常用排序算法(六)——希尔排序
  10. 如何用常量代替session_如何用Python代替Visual Basic应用程序并节省了很多时间
  11. H5与客户端交互的方式有哪些? 怎么做?
  12. roundcube邮箱手机端_在手机上使用便签软件敬业签怎么将便签内容导出到邮箱?...
  13. pdf怎么添加水印?
  14. 技能学习:学习使用golang(gin框架) + vue.js,开发前端全栈网站-1.工具和本地环境
  15. Deep Neural Networks are Easily Fooled: High Confidence Predictions for Unrecognizable Images
  16. day01-初识计算机
  17. 手电筒安卓_iPhone手电筒只能照明?这两个隐藏技巧一定要会,事半功倍!
  18. 微积分入门书籍(二)
  19. Gm如何修改服务器时间,GM怎么修改传奇版本的活动时间脚本
  20. 获取手机联系人,并通过拼音字母快速查询

热门文章

  1. 闭区间套定理证明实数集不可列
  2. Mate 40,华为的最后一颗子弹?
  3. Transformer和RNN区别
  4. Visual Studio 输出窗口有乱码
  5. android安装应用程序的命令,使用adb命令给安卓手机安装软件
  6. 阿里云产品 ECS、RDS、CDN、OCS、OSS、ACE、SLB介绍
  7. 轻松把玩HttpClient之封装HttpClient工具类(三),插件式配置Header
  8. 标准C++复数运算类详解及使用例程
  9. 中国鱼胶原蛋白肽市场趋势报告、技术动态创新及市场预测
  10. javascript二——事件