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到K。
假设 z k z_k zk是类 k k k未经softmax的log概率值,
设x是一个训练input
那么我们的模型给我们的每一个类 k k k的概率就是:
p ( k ∣ x ) = e x p ( z k ) ∑ i = 1 k e x p ( z i ) p(k|x) = \frac{exp(z_k)}{\sum_{i=1}^{k}exp(z_i)} p(kx)=i=1kexp(zi)exp(zk)
假设 q ( k ∣ x ) q(k|x) q(kx)是类 k k k的真实概率标签。

那么此处的Cross Entropy Loss就是(此处省去了条件概率后面的 “ ∣ x |x x”):
l = − ∑ k = 1 K log ⁡ ( p ( k ) ) q ( k ) l = - \sum_{k=1}^{K}\log(p(k)) q(k) l=k=1Klog(p(k))q(k)
这个loss关于 z k z_k zk求导的话:
∂ l ∂ z k = p ( k ) − q ( k ) \frac{\partial l}{\partial z_k} = p(k)-q(k) zkl=p(k)q(k)
这个值是肯定在-1和1之间的


假设K个类别中,只有类别y是正确的。也就是说,只有q(y)=1,
对于其他的q(k),只要 k ≠ y k\neq y k=y, q(k)=0。
此时,使得loss l l l最小,就是要让正确label y的log-likelihood最大。因为把所有的q(k)=0的情况都消掉之后,我们就有
l = − log ⁡ ( p ( y ) ) q ( y ) = − log ⁡ ( p ( y ) ) \begin{aligned} l &= - \log(p(y)) q(y)\\ &= -\log(p(y)) \end{aligned} l=log(p(y))q(y)=log(p(y))
所以当某训练input x的标签是y时,如果模型的输出能够做到
z y ≫ z k z_y \gg z_k zyzk
(for all k ≠ y k\neq y k=y)
那么此时我们就可以让loss达到尽可能小。

不使用LS时可能带来的问题

  1. 可能带来过拟合。模型可能会过度拟合它见过的数据,而运用到其他数据上可能无法泛化。
  2. 会导致 z y z_y zy z k z_k
  • 33
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值