什么是单边标签平滑(One-Sided Label Smoothing)?——深度学习中降低过拟合与防止过度自信的技巧
一、背景:为什么需要标签平滑(Label Smoothing)?
在分类任务中,模型的目标通常是根据输入预测正确的类别。我们一般使用 one-hot 标签进行监督训练,例如:
-
正确类别的标签是 1
-
其他类别的标签是 0
但这种方式存在两个问题:
-
数据集标签可能存在错误(尤其是人工标注数据)。
-
模型很容易对标签“过度自信”——即预测分布趋近于完全确定(概率接近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替换为0.9。
-
将负例样本的标签从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、鲁棒性、过拟合控制