标签平滑label smoothing

逃离我推掉我的手 2023-06-12 09:50 74阅读 0赞

lable smoothing是分类问题中错误标注的一种解决方法。
对于分类问题,特别是多分类问题,常常把向量转换成one-hot-vector
one-hot带来的问题:
对于损失函数,我们需要用预测概率去拟合真实概率,而拟合one-hot的真实概率函数会带来两个问题:
1)无法保证模型的泛化能力,容易造成过拟合;
2) 全概率和0概率鼓励所属类别和其他类别之间的差距尽可能加大,而由梯度有界可知,这种情况很难适应。会造成模型过于相信训练数据的类别。
使用下面的 label smoothing 可以缓解这个问题:
在这里插入图片描述
代码实现如下:

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

交叉熵(Cross-Entropy)损失函数是分类模型中的一种非常重要的目标函数。以二分类问题为例,交叉熵损失函数的形式如下:
在这里插入图片描述
如果分类准确,交叉熵损失函数的结果是0(即上式中p和y一致的情况),否则交叉熵为无穷大。也就是说交叉熵对分类正确给的是最大激励。换句话说,对于标注数据来说,这个时候我们认为其标注结果是准确的(不然这个结果就没意义了)。但实际上,有一些标注数据并不一定是准确的。那么这时候,使用交叉熵损失函数作为目标函数并不一定是最优的。
Label Smoothing在很多问题上对模型都有一定的提升。
在Tensorflow中使用方法时候只要在损失函数中加上label_smoothing的值即可,如下:

  1. tf.losses.softmax_cross_entropy(
  2. onehot_labels,
  3. logits,
  4. weights=1.0,
  5. label_smoothing=0,
  6. scope=None,
  7. loss_collection=tf.GraphKeys.LOSSES,
  8. reduction=Reduction.SUM_BY_NONZERO_WEIGHTS
  9. )

发表评论

表情:
评论列表 (有 0 条评论,74人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Label 标签

     Label 标签: 有的时候你是否发现点击一些表单的旁边的姓名...并没有点击到输入框也可以对输入框进行聚焦,其实运用到的就是label标签就可以达到这个效果。

    相关 label标签

    label标签 目标: label标签主要目的是为了提高用户体验。 为用户提高最优秀的服务。 概念: label 标签为 input 元素定义标注(标签)。 作

    相关 HTML <label> 标签

    此标签可以为`<input>`元素添加标注;与`<input>`元素关联起来,实现体验更佳的鼠标操作。 比如checkbox复选框,默认直接点击复选框才能实现选中和取消选...