【漫话机器学习系列】193.单边标签平滑(One-Sided Label Smoothing)

什么是单边标签平滑(One-Sided Label Smoothing)?——深度学习中降低过拟合与防止过度自信的技巧

一、背景:为什么需要标签平滑(Label Smoothing)?

在分类任务中,模型的目标通常是根据输入预测正确的类别。我们一般使用 one-hot 标签进行监督训练,例如:

  • 正确类别的标签是 1

  • 其他类别的标签是 0

但这种方式存在两个问题:

  1. 数据集标签可能存在错误(尤其是人工标注数据)。

  2. 模型很容易对标签“过度自信”——即预测分布趋近于完全确定(概率接近1或0),从而导致模型的泛化能力变差、容易过拟合。

解决这两个问题的方法之一,就是标签平滑(Label Smoothing)。


二、什么是标签平滑(Label Smoothing)

标签平滑是一种训练策略,它的核心思想是:

故意让标签不那么极端,而是加入一点“不确定性”。

通常做法是:

  • 原来标签是 1,修改为 0.9

  • 原来标签是 0,修改为 0.1(或更低)

这种策略能让模型:

  • 不那么自信

  • 更好地处理错误标签

  • 减少过拟合

  • 提升泛化能力


三、什么是“单边标签平滑”(One-Sided Label Smoothing)

本图介绍的重点是“单边标签平滑(One-Sided Label Smoothing)”,它是标签平滑的一种特殊形式。

区别在于:

方式 1的标签处理 0的标签处理
普通标签平滑 1 → 0.9;0 → 0.1 两边都平滑
单边标签平滑 只对正样本(标签=1)平滑 1 → 0.9;0保持不变(或稍微调整)

四、图片内容解读

单边标签平滑(One-Sided Label Smoothing)

主要思想:

  1. 通常数据集是会存在错误的。

  2. 标签平滑可以减少判别器的自信。

  3. 将正例样本的标签从1替换为0.9。

  4. 将负例样本的标签从0替换为0.1。

特点:

  • 降低正样本的置信度(防止模型死死记住标签)

  • 允许一定程度的错误

  • 增强模型的鲁棒性和容错性

  • 常用于 GAN、分类、对抗样本防御等场景


五、单边标签平滑的公式实现(举例)

假设原标签 y:

真实标签 y 平滑后标签 y'
1 0.9
0 0.1

伪代码:

def one_sided_label_smoothing(y, positive_smooth=0.9, negative_smooth=0.1):
    return y * positive_smooth + (1 - y) * negative_smooth


六、应用场景

应用方向 说明
GAN判别器 防止判别器过强或过度自信
分类模型 降低过拟合,增加容错性
图像识别 应对标签噪声
对抗样本防御 增加鲁棒性

七、与普通标签平滑的对比

对比点 普通Label Smoothing 单边Label Smoothing
处理对象 正负样本都平滑 仅对正样本平滑
目的 降低所有标签极端性 降低正样本极端性
典型应用 分类任务 GAN、对抗任务

八、总结

单边标签平滑(One-Sided Label Smoothing)是一种简单但实用的技术,特别适用于需要控制模型置信度、增强模型鲁棒性的场景。

核心作用:

  • 防止模型过拟合

  • 降低对错误标签的敏感性

  • 提高泛化能力

  • 适合GAN等对抗性任务

最佳实践:

  • 正样本标签:1 → 0.9

  • 负样本标签:0 → 0.1(或保持0)


参考来源

  • 图片出处:Chris Albon

  • 相关知识点:Label Smoothing、GAN、鲁棒性、过拟合控制