标签平滑(label smoothing)

文章目录

1.标签平滑

在进行多分类时,很多时候采用one-hot标签进行计算交叉熵损失,而单纯的交叉熵损失,只考虑到了正确标签的位置的损失,而忽略了错误标签位置的损失。这样导致模型可能会在训练集上拟合的非常好,但由于其错误标签位置的损失没有计算,导致预测的时候,预测错误的概率比较大,也就是常说的过拟合。

此外,标签平滑也能够防止模型在训练过程中过于相信真实标签,从而提高模型在未知数据上的泛化能力。 比如: 在分类任务中,对猫和狗的图像进行分类。如果预测一只狗的照片,那么真实标签中:1代表狗,0代表猫。在训练CNN时,模型预测值会尽量往1和0两个方向移动。这就使得模型对所要预测的图像过于自信,降低了模型的泛化能力。同时,数据集中通常会包含错误标签的数据。这就意味着,模型应该对正确的标签持 ”怀疑态度“。因此,对于1的标签,可以设置为1 - smoothing(平滑系数),例如0.9。此时,意味着对于所要预测的图像,有0.9的概率是狗,0.1的概率是猫。


标签平滑可以在一定程度上防止过拟合、降低自信程度、提升泛化能力

2. 传统的交叉熵损失计算

Step1: softmax多分类
在这里插入图片描述
Step2: 交叉熵损失计算公式:
在这里插入图片描述
实例:
假设一批样本,样本类别的总数n=5, 其中一个样本的one-hot标签为[0,0,0,1,0],假设通过模型(如全连接等)的logit进行softmax后的概率矩阵p为:

p=[0.1,0.1,0.1,0.36,0.34]

将其带入到上面的公式,即可计算出单个样本的loss为:
loss=−(0∗log0.1+0∗log0.1+0∗log0.1+1∗log0.36+0∗log0.34)=−log0.36=1.47

3.带有标签平滑的交叉熵损失的计算

同样是上面的例子:一批样本,样本类别的总数n=5, 其中一个样本的one-hot标签为[0,0,0,1,0],假设通过模型(如全连接等)的logit进行softmax后的概率矩p为:

p=[0.1,0.1,0.1,0.36,0.34]

设:标签的平滑因子ϵ = 0.1 ,平滑的计算步骤如下

y1=(1−ϵ)∗[0,0,0,1,0]=[0,0,0,0.9,0]

y2=ϵ∗[1,1,1,1,1]/5=[0.1,0.1,0.1,0.1,0.1]/5=[0.02,0.02,0.02,0.02,0.02]

y=y1+y2=[0.02,0.02,0.02,0.92,0.02]

y即是平滑后的新标签,然后按照传统的交叉熵损失计算步骤即可,如:
loss=−y∗logp=−[0.02,0.02,0.02,0.92,0.02]∗log([0.1,0.1,0.1,0.36,0.34])=2.63

4.标签平滑与传统的交叉熵损失的比较与分析

有上面实例可以看出,带有标签平滑的损失要比传统交叉熵损失要更大。换言之,带有标签平滑的损失要想下降到传统交叉熵损失的程度,就要学习的更好,迫使模型往正确分类的方向走。

5. 标签平滑的应用场景

只要用到的是交叉熵损失(cross loss),都可以采取标签平滑处理。

6.Label Smoothing 优劣

优点:

  • 一定程度上,可以缓解模型过于武断的问题,也有一定的抗噪能力
  • 弥补了简单分类中监督信号不足(信息熵比较少)的问题,增加了信息量;
  • 提供了训练数据中类别之间的关系(数据增强);
  • 可能增强了模型泛化能力
  • 降低feature norm (feature normalization)从而让每个类别的样本聚拢的效果
  • 产生更好的校准网络,从而更好地泛化,最终对不可见的生产数据产生更准确的预测。

缺点:

  • 单纯地添加随机噪音,也无法反映标签之间的关系,因此对模型的提升有限,甚至有欠拟合的风险。
  • 它对构建将来作为教师的网络没有用处,hard 目标训练将产生一个更好的教师神经网络。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值