Label Smoothing
标签平滑会将每个 one-hot 训练目标与均匀分布混合,从而抑制过度自信并提升分类器的校准效果。
标签平滑是一种用于深度学习分类模型的正则化技术,它会将训练数据中的硬独热目标替换为平滑后的版本:大部分概率仍分配给正确类别,而由平滑因子 ε 指定的一小部分概率则均匀分配给所有类别。使用这些软目标进行训练,可以防止神经网络为了达到 100% 的置信度而将logits推向极端值,从而减少过拟合,并生成校准效果更好的概率。Szegedy 等人在 Inception-v3 论文中介绍了这项技术,并在 1,000 个 ImageNet类别上使用 ε = 0.1。如今,标签平滑已成为训练图像分类、翻译和语音模型时的常用选项。
标签平滑的工作原理#
对于 K 个类别和平滑因子 ε,每个目标会变为 (1 − ε) · y + ε / K,其中 y 是独热标签。对于三个类别且 ε = 0.1 的情况,标签 [1, 0, 0] 会变为约 [0.933, 0.033, 0.033]。使用硬目标时,随着正确类别的 logit 继续拉开与其他类别的差距,交叉熵会不断下降,因此损失函数会奖励越来越大的 logit 差距,而 softmax输出则会饱和。使用平滑目标时,损失会在有限的 logit 差距 ln((1 − ε + ε / K) / (ε / K)) 处达到最低值,在这个例子中约为 3.3;超过该值后,损失会再次上升,因此梯度会将过度自信的预测拉回到更适度的水平。Ultralytics YOLO26检测模型使用相关的软目标来训练类别预测:任务对齐分配器会根据每个正锚框的预测分数和边界框与物体的对齐程度缩放类别目标,因此大多数目标值都低于 1。
PyTorch 的 CrossEntropyLoss通过 label_smoothing 参数应用该公式:
import torch
from torch import nn
# The correct class is index 0 of three; hard and smoothed versions of the same loss
target = torch.tensor([0])
hard_loss = nn.CrossEntropyLoss()
smooth_loss = nn.CrossEntropyLoss(label_smoothing=0.1)
# Score the correct class increasingly far above the other two
for gap in [1.0, 3.0, 6.0, 12.0]:
logits = torch.tensor([[gap, 0.0, 0.0]])
hard = hard_loss(logits, target).item()
smooth = smooth_loss(logits, target).item()
print(f"Logit gap {gap:>4}: hard loss {hard:.3f}, smoothed loss {smooth:.3f}")随着差距增大,硬标签损失会从 0.551 降至 0.000;平滑标签损失则会在差距约为 3 时降至最低值 0.295,之后又会在差距为 12 时回升至 0.800,因此极端自信所付出的代价现在高于适度自信。
对校准和已学习特征的影响#
Müller、Kornblith 和 Hinton发现,标签平滑可以改善模型校准,也就是让预测概率反映预测实际正确的频率。他们还发现,标签平滑会将每个类别在倒数第二层的特征压缩成紧密且间距均匀的簇。这种压缩会抹去图像与哪些错误类别相似的信息;通过标签平滑训练的教师模型,也无法通过知识蒸馏有效地将知识迁移给学生模型。
实际应用#
当标签存在噪声、含义模糊或类别数量很多时,标签平滑最有帮助。
- ImageNet 规模的分类:ImageNet 中包含标签错误的图像,以及存在多个有效目标的照片。卷积网络和视觉 Transformer(包括 DeiT)的训练方案会使用 ε = 0.1,避免模型对有疑问的标签表现出十足的确信。
- 机器翻译:原始 Transformer 使用了 ε = 0.1 的标签平滑。作者报告称,由于模型学会降低确信度,困惑度有所上升,但准确率和 BLEU 分数得到提升。
- 医学图像分析:专家标注者经常对难以判断的扫描图像意见不一。平滑目标可以避免诊断分类器将每个有争议的标签视为确定无疑,而校准更好的分数则能让临床分诊阈值更可靠。
标签平滑与相关技术的比较#
- 知识蒸馏:蒸馏也会使用软目标进行训练,这些目标来自教师模型的预测,因此能够记录不同类别之间的相似程度。标签平滑的目标则会为所有错误类别分配相同的小比例。
- 温度缩放:温度缩放会在训练完成后通过一个学习得到的常数除以 logits 来校准模型,不会改变权重。
- Dropout 层:Dropout 会在训练过程中将随机激活值置零,以正则化网络;标签平滑则通过训练目标进行正则化。
- CutMix:CutMix 和 mixup 都是数据增强方法,会混合两张训练图像,并按相同比例混合它们的标签,因此软目标来自输入数据本身。CutMix 根据粘贴区域所覆盖的面积为各标签赋权,而 mixup 则使用从 Beta 分布中抽取的单个因子,同时为像素和标签赋权。










