训练一个图像分类模型,测试集准确率达到95%。随机抽取一个样本,模型输出预测概率:[0.999, 0.001, 0.000, …]。看起来模型对这个预测非常自信——99.9%的置信度。但这个置信度真的可靠吗?

问题在于,神经网络天生就有"过度自信"的倾向。一个在训练集上达到99%准确率的模型,可能在测试集上输出99.9%的置信度,即使它的实际准确率远低于此。这种现象被称为校准误差——模型输出的概率值与其真实准确率不匹配。

这种不匹配带来的问题远不止于"数字看起来不对"。在医疗诊断场景中,医生需要根据模型的置信度决定是否进行进一步检查;在自动驾驶中,系统需要根据置信度决定是继续行驶还是请求人工接管。如果模型"嘴上说很确定,实际上经常出错",后果可能是灾难性的。

2016年,Christian Szegedy等人在研究Inception架构时提出了一个简单而优雅的解决方案:不要让模型学到"非此即彼"的绝对判断,而是让它学会保留一点点"不确定性"。这个方法就是标签平滑(Label Smoothing)

核心原理:从硬标签到软标签

在传统分类任务中,我们使用one-hot编码表示标签。假设一个三分类问题,类别1的正确标签是[1, 0, 0]。这意味着模型被期望学习到:属于类别1的概率是100%,属于其他类别的概率是0%。

标签平滑的核心思想是:把这种"绝对"的标签变得稍微"软"一点。具体来说,对于一个$K$分类问题,原始one-hot标签$y$经过平滑处理后变为$y'$:

$$y'_k = (1-\varepsilon) \cdot y_k + \frac{\varepsilon}{K}$$

其中$\varepsilon$是平滑参数(通常取0.1),$K$是类别总数。

用一个具体例子说明:假设有一个三分类问题,真实标签是类别0。原始one-hot编码为$[1, 0, 0]$。如果使用$\varepsilon=0.1$的标签平滑,平滑后的标签变成:

$$[0.9 + 0.1/3, 0 + 0.1/3, 0 + 0.1/3] = [0.933, 0.033, 0.033]$$
graph LR
    A[原始标签<br/>1, 0, 0] -->|标签平滑| B[平滑标签<br/>0.933, 0.033, 0.033]
    B --> C[模型学习<br/>不再追求绝对确定]
    C --> D[输出概率更合理]

这个看似简单的变化,背后的数学原理是什么呢?

从交叉熵损失的角度理解

标准交叉熵损失定义为:

$$\mathcal{L}_{CE} = -\sum_{k=1}^{K} y_k \log(p_k)$$

其中$y_k$是真实标签,$p_k$是模型预测概率。当$y$是one-hot编码时,损失简化为$-\log(p_{true})$——只要模型对真实类别的预测概率越高,损失就越小。

引入标签平滑后,损失变为:

$$\mathcal{L}_{LS} = -\sum_{k=1}^{K} y'_k \log(p_k)$$

可以将其展开为:

$$\mathcal{L}_{LS} = (1-\varepsilon)\mathcal{L}_{CE} + \varepsilon \cdot \mathcal{H}(u, p)$$

这里$\mathcal{H}(u, p)$是预测分布与均匀分布之间的交叉熵。这意味着标签平滑实际上在原始损失之外,额外加入了一项:惩罚预测分布与均匀分布的差异

换言之,模型不仅要正确分类,还被要求"不要太过于确定"。

从KL散度的角度理解

另一个理解角度是将标签平滑视为对目标分布的修改。设$q$为真实分布(one-hot),$u$为均匀分布,标签平滑后的目标分布为:

$$q' = (1-\varepsilon)q + \varepsilon u$$

训练目标变为最小化$KL(q' || p)$。由于KL散度可以分解为:

$$KL(q' || p) = H(q') - H(q'; p)$$

其中$H(q')$是常数,最小化KL散度等价于最小化交叉熵$H(q'; p)$。

这个视角揭示了标签平滑的一个关键特性:它改变了优化的目标分布,从"绝对确定"变成"保留不确定性"。

为什么有效:三重视角

视角一:正则化效应

从损失函数的展开式可以看出,标签平滑引入了一个正则化项:

$$\mathcal{L}_{LS} = (1-\varepsilon)\mathcal{L}_{CE} + \frac{\varepsilon}{K}\sum_{k=1}^{K} \log(p_k)$$

第二项鼓励模型对所有类别都保持一定的"关注度",而不是完全忽略非目标类别。这类似于L2正则化鼓励权重变小,标签平滑鼓励预测概率分布更加"平缓"。

Lukasik等人在2020年的研究中证明,对于线性模型,标签平滑的效果类似于权重的L2收缩。这意味着它可以通过增加决策边界的margin来提高泛化能力。

视角二:特征空间聚类

Müller、Kornblith和Hinton在2019年NeurIPS发表的论文"When Does Label Smoothing Help?“中,通过可视化倒数第二层的特征表示,发现了一个有趣的现象:

不使用标签平滑时,同一类别的样本在特征空间中形成紧密的簇,不同类别之间界限分明。

使用标签平滑后,同一类别的样本簇变得更加"松散”,但不同类别之间的界限仍然清晰。

graph TD
    A[不用标签平滑] --> B[特征聚类紧密<br/>类别间界限分明]
    C[使用标签平滑] --> D[特征聚类松散<br/>仍保持可分性]
    B --> E[可能过度拟合<br/>对噪声敏感]
    D --> F[泛化能力更强<br/>抗噪声能力提升]

这种"松散但不混淆"的特性,正是标签平滑能够提高泛化能力的关键。研究者还发现了一个更微妙的现象:标签平滑会"擦除"logits中关于样本相似性的相对信息。这对知识蒸馏有重要影响,我们后面会详细讨论。

视角三:隐式模型集成

标签平滑还可以从模型集成的角度理解。每个样本的平滑标签可以看作是对多个"虚拟样本"的期望标签。具体来说:

$$y' = (1-\varepsilon)y_{true} + \varepsilon \cdot \frac{1}{K}\sum_{k=1}^{K}y_k^{uniform}$$

这相当于告诉模型:“这个样本有$(1-\varepsilon)$的概率属于真实类别,有$\varepsilon$的概率可能是任何类别”。这种"不确定性注入"天然带有正则化效果。

模型校准:从自信到可靠

模型校准衡量的是预测概率与实际准确率的一致性。一个良好校准的模型,如果它输出80%的置信度,那么在所有输出80%置信度的预测中,应该有大约80%是正确的。

衡量校准质量的常用指标是期望校准误差(Expected Calibration Error, ECE),定义为:

$$ECE = \sum_{m=1}^{M} \frac{|B_m|}{n} |acc(B_m) - conf(B_m)|$$

其中将预测按置信度分成$M$个区间,$B_m$是第$m$个区间内的样本集合,$acc(B_m)$是该区间内的实际准确率,$conf(B_m)$是平均置信度。

graph LR
    A[模型输出概率] --> B[按置信度分桶]
    B --> C[计算每桶准确率]
    C --> D[与置信度对比]
    D --> E[ECE指标]

Müller等人的研究表明,标签平滑可以显著降低ECE。在他们实验中,使用$\alpha=0.1$的标签平滑,可以将ImageNet/Inception-v4的ECE从0.071降低到0.035——这意味着模型的置信度更加可靠。

更有趣的是,他们发现标签平滑可以达到与**温度缩放(Temperature Scaling)**相当的校准效果,而且不需要额外的后处理步骤。温度缩放是一种常用的校准方法,需要在验证集上学习一个温度参数。标签平滑则是在训练过程中直接实现校准,是一种"一次性"的解决方案。

下表展示了不同方法对ECE的影响:

方法 数据集/架构 ECE
基线(无处理) CIFAR-100/ResNet-56 0.150
温度缩放 CIFAR-100/ResNet-56 0.021
标签平滑($\alpha=0.05$) CIFAR-100/ResNet-56 0.024
基线(无处理) ImageNet/Inception-v4 0.071
温度缩放 ImageNet/Inception-v4 0.022
标签平滑($\alpha=0.1$) ImageNet/Inception-v4 0.035

数据来源:Müller et al., NeurIPS 2019

应用历史:从Inception到Transformer

标签平滑最早由Szegedy等人在2016年提出,用于改进Inception架构在ImageNet上的表现。原文描述简洁:

“We propose to incorporate a smoothing term in the cross-entropy loss… This prevents the network from becoming overconfident.”

实验结果显示,使用$\varepsilon=0.1$的标签平滑,ImageNet top-1准确率提升了约0.2%。虽然提升幅度不大,但考虑到这只是损失函数的一个微小改动,这个结果相当可观。具体来说,Inception-v2的top-1错误率从23.1%降低到22.8%。

真正让标签平滑"出圈"的,是2017年的Transformer论文"Attention Is All You Need"。论文明确写道:

“During training, we employed label smoothing of value $\varepsilon_{ls}=0.1$.”

这是少数在论文中明确提到使用的训练技巧之一。之后,标签平滑成为许多大型模型的标配:BERT、GPT系列、Vision Transformer等,几乎都在训练中采用了标签平滑。

timeline
    title 标签平滑发展历程
    2016 : Szegedy等人提出<br/>Inception-v2使用
    2017 : Transformer论文<br/>明确使用ε=0.1
    2019 : Müller等人系统研究<br/>揭示校准和蒸馏影响
    2020 : Lukasik等人发现<br/>噪声标签处理效果
    2025 : ICLR论文揭示<br/>选择性分类局限性

值得注意的是,Transformer论文中的标签平滑参数选择$\varepsilon=0.1$,这个值后来成为业界共识,大多数实现都默认使用这个值。

与知识蒸馏的复杂关系

知识蒸馏是一种模型压缩技术,通过让"学生"模型学习"教师"模型的软标签来传递知识。直觉上,教师模型的软标签包含比one-hot标签更丰富的信息。

然而,Müller等人在2019年发现了一个"反直觉"的现象:如果教师模型使用了标签平滑训练,反而会损害学生模型的性能

为什么会这样?

研究者发现,标签平滑会"抹平"教师模型的logits中的相对信息。具体来说,不使用标签平滑的教师模型,其logits在非目标类别之间存在可区分的差异,这些差异包含关于样本相似性的信息。使用标签平滑后,这些信息被"擦除"了。

用一个例子说明:假设有一个鸟类分类任务,图片是一只麻雀。不使用标签平滑的教师模型可能输出[0.95, 0.02, 0.02, 0.005, 0.005],其中"燕子"和"知更鸟"的分数略高于"猫"和"狗"。这些细微差异告诉学生模型:“这个样本和燕子、知更鸟比较相似”。使用标签平滑后,输出可能变成[0.93, 0.02, 0.02, 0.015, 0.015],相对信息被模糊化了。

研究者通过计算互信息来量化这种信息擦除。他们发现,随着训练进行,使用标签平滑的模型的互信息显著降低,最终趋近于$\log(2)$——这对应于极端情况,即所有训练样本只保留了一个比特的信息:属于哪个类别。

graph TD
    A[教师模型训练] --> B{是否使用标签平滑?}
    B -->|是| C[logits信息被擦除]
    B -->|否| D[保留样本相似性信息]
    C --> E[学生模型学到更少]
    D --> F[学生模型学到更多]

但是,Lukasik等人在2020年的研究发现了另一种情况:当训练数据存在标签噪声时,对教师模型使用标签平滑反而有益

原因在于,噪声标签会导致教师模型对错误标签产生过度自信。标签平滑可以"平抑"这种过度自信,传递给学生模型的是更加"谨慎"的知识。在噪声数据场景下,这种谨慎反而是正确的。

这个发现揭示了机器学习中一个普遍规律:没有放之四海而皆准的技巧,适用性取决于具体场景。

噪声标签的意外收获

标签平滑与噪声标签的关系,可以从两个看似矛盾的角度理解:

角度一:标签平滑像是"注入噪声"

如果训练数据本就包含噪声标签,再进行标签平滑,岂不是"错上加错"?数学上,标签平滑确实等价于向标签中注入对称噪声。

角度二:标签平滑具有"去噪"效果

实验结果出乎意料:标签平滑不仅没有加剧噪声问题,反而提升了模型在噪声数据上的表现。

Lukasik等人的实验数据清晰展示了这一效果:

噪声率 不用标签平滑 用标签平滑($\alpha=0.2$) 提升
20% 70.86% 71.55% +0.69%
40% 50.67% 55.90% +5.23%
60% 37.58% 42.39% +4.81%

数据来源:CIFAR-100,ResNet-32,Lukasik et al., ICML 2020

为什么会有这种"去噪"效果?研究者从正则化角度给出了解释。标签平滑作为一种L2正则化,会促使权重向零收缩。在线性分类器中,这意味着决策边界会远离被噪声影响的样本,从而降低噪声的影响。

更重要的是,标签平滑降低了模型对任何单个标签的"执着"。当模型不再追求100%的置信度时,它对噪声标签的敏感度也会降低。这是一种"不求绝对正确,但求整体稳健"的策略。

研究者还发现,在噪声数据场景下进行知识蒸馏时,对教师模型使用标签平滑是有益的——这与干净数据下的结论相反。这再次说明,理解数据特性是正确应用技术的关键。

局限性:什么时候不该用?

标签平滑并非万能良药。2025年ICLR的一项研究揭示了一个重要的局限性:标签平滑会损害选择性分类任务(Selective Classification)的性能

选择性分类指的是模型可以选择"拒绝预测"的场景。例如,在医疗诊断中,如果模型对某个样本不够确定,可以选择"拒绝诊断"并转交人工。这需要模型输出的置信度能够可靠地反映预测的可靠性。

研究发现,标签平滑会"压缩"模型输出的logits分布,使得正确预测和错误预测的置信度差异变小。结果就是,基于置信度的拒绝策略效果下降。

具体来说,研究者观察到:

  • 标签平滑使得正确预测的最大logit值下降
  • 同时错误预测的logit值相对上升
  • 两者的差异变小,导致选择性分类性能下降

论文中提出的解决方案是使用Margin-based Label Smoothing,只在分类边界的样本上应用平滑,而不是对所有样本一视同仁。这提醒我们:在使用标签平滑时,需要考虑具体的任务需求。

另一个需要谨慎的场景是类别不平衡问题。当某些类别的样本数量远少于其他类别时,均匀分布的平滑可能不是最佳选择。有研究者提出了类别感知的标签平滑(Class-aware Label Smoothing),对少数类别使用更小的平滑参数。

graph TD
    A[标签平滑适用性分析] --> B{任务类型?}
    B -->|标准分类| C[推荐使用]
    B -->|知识蒸馏<br/>教师训练| D[谨慎/避免使用]
    B -->|选择性分类| E[可能有害]
    B -->|噪声标签数据| F[强烈推荐]
    C --> G[ε=0.1为默认值]
    D --> H[会擦除相对信息]
    E --> I[考虑margin-based变体]
    F --> J[ε=0.1-0.2效果更佳]

实现细节:PyTorch中的标签平滑

在PyTorch 1.10及以上版本,CrossEntropyLoss直接支持标签平滑参数:

import torch
import torch.nn as nn

# 使用标签平滑,alpha=0.1
criterion = nn.CrossEntropyLoss(label_smoothing=0.1)

# 训练循环中正常使用
for inputs, targets in dataloader:
    outputs = model(inputs)
    loss = criterion(outputs, targets)
    loss.backward()
    optimizer.step()

对于使用旧版本PyTorch的用户,可以手动实现标签平滑:

def label_smoothing_cross_entropy(logits, targets, epsilon=0.1):
    """
    手动实现带标签平滑的交叉熵损失
    
    Args:
        logits: 模型输出,shape为[batch_size, num_classes]
        targets: 真实标签,shape为[batch_size]
        epsilon: 平滑参数
    """
    num_classes = logits.size(-1)
    
    # 将one-hot标签转换为平滑标签
    smooth_targets = torch.zeros_like(logits)
    smooth_targets.fill_(epsilon / (num_classes - 1))
    smooth_targets.scatter_(1, targets.unsqueeze(1), 1.0 - epsilon)
    
    # 计算交叉熵
    log_probs = torch.log_softmax(logits, dim=-1)
    loss = -torch.sum(smooth_targets * log_probs, dim=-1)
    
    return loss.mean()

需要注意的是,手动实现时平滑标签的计算方式略有不同。PyTorch官方实现使用的是:

$$y'_{smooth} = (1-\varepsilon)y_{onehot} + \frac{\varepsilon}{K}$$

而上面的手动实现使用的是:

$$y'_{smooth} = (1-\varepsilon)y_{onehot} + \frac{\varepsilon}{K-1}(1-y_{onehot})$$

两种方式在实践中差异很小,但理解这一点有助于调试。

参数选择建议

关于平滑参数$\varepsilon$的选择,基于实践经验和研究文献,有以下建议:

场景 建议值 理由
通用分类任务 0.1 Transformer论文的选择,业界共识
数据量较小 0.05-0.1 防止过度正则化
噪声标签数据 0.1-0.2 更强的去噪效果
知识蒸馏(教师) 0 避免擦除相对信息
选择性分类 慎用或用变体 考虑margin-based方法
类别不平衡 类别感知平滑 少数类用更小的$\varepsilon$

一个值得注意的细节:$\varepsilon$不应该设置得太大。当$\varepsilon$接近$1/K$时,平滑后的标签接近均匀分布,模型将难以学到有意义的模式。Szegedy等人在原始论文中指出,$\varepsilon=0.1$对于ImageNet(1000类)是一个合理的选择,因为平滑后的目标标签仍然保留了足够强的信号。

graph LR
    A[选择ε值] --> B{数据量大小?}
    B -->|大量数据| C[ε=0.1]
    B -->|中小数据量| D[ε=0.05-0.1]
    C --> E{标签噪声?}
    D --> E
    E -->|有噪声| F[可尝试ε=0.15-0.2]
    E -->|无噪声| G[保持默认]
    F --> H[验证集调优]
    G --> H

理论分析:为什么0.1成为默认值?

Szegedy等人在选择$\varepsilon=0.1$时,给出了一个简洁的直觉:这个值足够小,不会显著改变模型的训练目标;但又足够大,能够有效防止过度自信。

从信息论角度,标签平滑可以看作是在目标分布中注入了一定的"熵"。对于$K=1000$类的ImageNet分类任务:

  • 原始one-hot标签的熵:$H(y) = 0$
  • 平滑后标签的熵:$H(y') = -\sum_k y'_k \log y'_k$

对于$\varepsilon=0.1$,$K=1000$的情况:

$$H(y') \approx -(0.9 \log 0.9 + 0.1 \times 999 \times \frac{0.1}{1000} \log \frac{0.1}{1000}) \approx 0.39$$

这个熵值相对较小,意味着目标分布仍然相当"尖锐"。但这个小变化足以改变梯度行为,阻止logits无限增大。

从优化角度看,标签平滑改变了最优解的性质。不使用标签平滑时,最优解要求$z_{true} \to \infty$(对数几率无限大)。使用标签平滑后,最优解变为一个有限值:

$$z^*_{true} - z^*_{other} = \log\frac{(1-\varepsilon) + \varepsilon/K}{\varepsilon/K} \approx \log\frac{K(1-\varepsilon)}{\varepsilon}$$

对于$\varepsilon=0.1$,$K=1000$,这个值约为$\log(9000) \approx 9.1$。这意味着模型学到的logits会被限制在一个合理的范围内,而不是无限增大。

总结

标签平滑是一个"小而美"的正则化技术。它通过一个简单的数学变换,将绝对的one-hot标签变成"保留不确定性"的软标签,从而解决神经网络过度自信的问题。

从实践角度看,标签平滑在以下场景特别有效:

  • 大规模分类任务(如ImageNet)
  • 需要良好校准的应用场景
  • 训练数据存在噪声标签

但使用时也需要注意:

  • 可能损害知识蒸馏的效果
  • 可能影响选择性分类任务
  • 参数选择需要根据具体场景调整

最后,标签平滑的成功揭示了一个深层次的道理:教模型"知道自己不知道什么",可能比教它"什么都知道"更重要。这种思路在机器学习领域正变得越来越重要,从置信度校准到不确定性估计,都是这一理念的体现。

在深度学习"大力出奇迹"的时代,标签平滑提醒我们:有时候,承认一点不确定性,反而能走得更远。


参考文献

  1. Szegedy, C., Vanhoucke, V., Ioffe, S., Shlens, J., & Wojna, Z. (2016). Rethinking the Inception Architecture for Computer Vision. CVPR 2016.

  2. Müller, R., Kornblith, S., & Hinton, G. E. (2019). When Does Label Smoothing Help? NeurIPS 2019.

  3. Lukasik, M., Bhojanapalli, S., Menon, A. K., & Kumar, S. (2020). Does Label Smoothing Mitigate Label Noise? ICML 2020.

  4. Vaswani, A., Shazeer, N., Parmar, N., et al. (2017). Attention Is All You Need. NeurIPS 2017.

  5. Guo, C., Pleiss, G., Sun, Y., & Weinberger, K. Q. (2017). On Calibration of Modern Neural Networks. ICML 2017.

  6. Pereyra, G., Tucker, G., Chorowski, J., Kaiser, L., & Hinton, G. (2017). Regularizing Neural Networks by Penalizing Confident Output Distributions. ICLR Workshop 2017.

  7. “Towards Understanding Why Label Smoothing Degrades Selective Classification and How to Fix It”, ICLR 2025.