[轻笔记] label smoothing(标签平滑)
看google AI最新的开源代码,发现有个技巧——label smoothing,网上查到的公式与代码中的公式不一样,于是做个笔记,并对见到的觉得有问题的关于label smoothing的博客也列在文未,供大家评论交流。
一、代码中的label smoothing
对于K分类来说,假设一个样本x xx属于第2类,那么实际上用来训练模型(或者说用来计算损失函数)的标签是一个独热编码,具体为[0,0,1,0], 即在位置为2处数值为1(代表属于第2类(从第0类开始计数))。此时标签平滑的具体步骤为:
1)定义一个小的扰动常 量ϵ\epsilonϵ;
2)将one-hot编码的标签中的0替换为ϵ/K\epsilon/Kϵ/K;
3)将one-hot编码的标签中的1替换为1−ϵ+ϵ/K1-\epsilon+\epsilon/K1−ϵ+ϵ/K。
注意:smoothing之后的编码各维加起来等于1。
由于在现实数据集中,并不是所有标签都是正确标注的,所以直接最大化logp(y∣x)\log p(y|x)logp(y∣x)即过于自信的把其中一个候选类对应的digit置为1,将其余类的digit置为零), 反而是有害的。这种过于自信的做法不仅仅会使得模型过拟合,而且有可能拟合到错误的例子上去。一些实验已经证明,标签平滑能够增加模型的泛化能力(Müller et al., 2020)。
python实现
def apply_label_smoothing(one_hot_targets, label_smoothing):"""Apply label smoothing to the one-hot targets.Applies label smoothing such that the on-values are transformed from 1.0 to`1.0 - label_smoothing + label_smoothing / num_classes`, and the off-valuesare transformed from 0.0 to `label_smoothing / num_classes`.https://arxiv.org/abs/1512.00567Note that another way of performing label smoothing (which we don't use here)is to take `label_smoothing` mass from the on-values and distribute it to theoff-values; in other words, transform the on-values to `1.0 - label_smoothing`and the off-values to `label_smoothing / (num_classes - 1)`.http://jmlr.org/papers/v20/18-789.htmlArgs:one_hot_targets: One-hot targets for an example, a [batch, ..., num_classes]float array.label_smoothing: float; A scalar in [0, 1] used to smooth the labels.Returns:A float array of the same shape as `one_hot_targets` with smoothed labelvalues."""on_value = 1.0 - label_smoothingnum_classes = one_hot_targets.shape[-1]off_value = label_smoothing / num_classesone_hot_targets = one_hot_targets * on_value + off_valuereturn one_hot_targets
测试:
label = np.array([0, 0, 1, 0])
epsilon = 0.1
print("origin label:",label)
print("smoothing label:",apply_label_smoothing(label, epsilon))
二、其它博客中的错误公式不完全列举
- CSDN/InceptionZ/标签平滑(label smoothing)把label smoothing公式简化成如下形式,很容易让人迷惑,无法获得3类以上的分类问题的准确公式。
- 51CTO博客/AI算法与图像处理/标签平滑 - Label Smoothing概述 ,根据文中几个例子的smoothing结果就知道文中用于计算的公式错了,如下例子,你能知道他用的smoothing参数是多少吗?另外,smoothing后的label各维加起来等于1.08,不等于1。本身就不是一个标准的分类标签。
3.标签平滑Label Smoothing技巧总结一看公式就错,因为加起来不等于1。
从而不难想象后面给的例子计算出的smoothing label都不对。
这个例子对应的正确smoothing label如下:
不过博主的经验分享挺干货的,可以借鉴:
4. CSDN/JacksonKim/Label Smoothing介绍及其代码实现也是计算公式错误:
根据以上公式,计算的label各维加起来不等于1。
[轻笔记] label smoothing(标签平滑)相关推荐
- 关于label smoothing(标签平滑)
目的: label smoothing常用于分类任务,防止模型在训练中过拟合,提高模型的泛化能力. 意义: 对于分类问题,我们通常使用one-hot编码,"非黑即白",标签向量的目 ...
- Label Smoothing 标签平滑 (Label smooth regularization, LSR)
Lable Smoothing 是分类问题中错误标注的一种解决方法.是一种正则化方法, 为了降低模型过拟合(overfitting) 出自inception v3,Transformer中就用到了 我 ...
- Label Smoothing标签平滑详解+Pytorch保姆级实际操作
目录 简介 从提出Label Smoothing的论文出发 不使用LS时的情况 不使用LS时可能带来的问题 LS作为正则化的一种方式 具体操作 为何LS可以避免偏激的输出 对LS的另一个角度理解 Py ...
- label smooth标签平滑【ConvE(知识图谱补全-链接预测)中使用到】
今天我们来聊一聊label smooth这个tricks,标签平滑已经成为众所周知的机器学习或者说深度学习的正则化技巧.标签平滑--label smooth regularization作为一种简单的 ...
- label smooth标签平滑的理解
今天我们来聊一聊label smooth这个tricks,标签平滑已经成为众所周知的机器学习或者说深度学习的正则化技巧.标签平滑--label smooth regularization作为一种简单的 ...
- 目标检测的Tricks | 【Trick1】Label Smoothing
如有错误,恳请指出. 文章目录 1. Label Smoothing理论概要 2. Label Smoothing实现代码 1. Label Smoothing理论概要 假设我们的分类只有两个,一个是 ...
- 标签平滑论文笔记:2020《When Does Label Smoothing Help?》
标签平滑 介绍 实验1:标签平滑作用 实验2:针对ECE与温度缩放进行对比(作用相近) 实验3:标签平滑对知识蒸馏影响(变差) 实验3知识蒸馏:互信息I(X;Y) 链接 介绍 看成距离: 这里 ...
- label smoothing(标签平滑)
label smoothing是一种在分类问题中,防止过拟合的方法. label smoothing(标签平滑) 交叉熵损失函数在多分类任务中存在的问题 label smoothing(标签平滑) 参 ...
- 标签平滑 label smoothing
文章目录 简介 什么是label smoothing label smoothing作用 torch实现label smoothing 简介 label smoothing其实是机器学习和深度学习上比 ...
最新文章
- ffmpeg 常用命令
- mysql权限的误操作的恢复
- LeetCode之Hamming Distance
- linux安装mysql和使用c语言操作数据库的方法 c语言连接mysql
- 第十二单元 打包,压缩,主机传送文件
- weblogic 文件打开数_WebLogic任意文件上传漏洞(CVE20192618)复现
- 高中计算机网络技术专业的自我鉴定,计算机网络技术专业的自我鉴定(精选5篇)...
- numpy 常用产生随机数方法
- L - Finding the Bases(KMP+dp)
- 软件测试固态硬盘健康状态良好,别被忽悠!3分钟教你搞懂SSD性能测试各项数据!...
- 设备发现[Airplay投屏应用]-mdns协议简介
- 数学基础task08 二重积分
- 费用报销与对公付款电子化管理系统:iBox+RPA已形成自动化闭环
- RedHat7.4安装
- Oracle CTAS
- HTML+CSS+JS的基础知识笔记
- 辣鸡公司联动优势,你在毕业季给应届毕业生解约的操作真TM丑陋
- [转载] 罗辑思维的「成功」之道
- 企业建站为何会出问题?责任在谁?
- 固始机器人_固始县耐火砖打包机玄德机器人设计合理
热门文章
- R语言回归分析-回归诊断
- 手把手教你制作docSet文档(用于Dash或zeal)
- mysql sql 备份表_SQL语句之备份表
- CorelDRAW2023最新版矢量设计软件
- 5G无用时代的终结—从iPhone 12系列到vivo 6G应用场景的展望
- python中ljust的意思_python中ljust什么意思
- RuntimeError: CUDA out of memory. Tried to allocate 模型训练 GPU 显存不够报错总结
- 人与人的区别在于八小时之外如何运用
- 淘宝商品详情API接口
- 详谈 UNIX 环境进程异常退出