Label Smoothing 有什么作用?
简化版
Label Smoothing 把 one-hot 标签的少量概率质量分给其他类别,抑制过度自信并改善部分任务泛化。它不是纠正错误标签;平滑过强会削弱类间边界,且可能降低概率校准或知识蒸馏中的暗知识质量。
详细版
-
K 类常把目标写成
(1-ε)与ε/K的混合。 -
它限制正确类与错误类 logit 无限拉开,起到目标层正则化。
-
训练准确率和最低可达交叉熵会改变,不能沿用硬标签 loss 预期。
-
padding/ignore 类不应参与概率分配,序列任务需正确 mask。
-
是否改善校准取决于模型与数据,应实测 reliability diagram。
完整版教学
一、软目标限制了无意义的无限置信度
硬标签交叉熵在数据可分时会持续推动正确类 logit 增大,即使分类已经正确。
平滑标签让目标分布不在概率单纯形顶点,梯度在高置信时更早平衡。
均匀分给其他类隐含“错误类别等可能”的先验。
若类别具有层级或相似度,更合理的非均匀软标签可能优于统一平滑。
二、底层机制与公式
q_k = (1-epsilon)*1[k=y] + epsilon/K
loss = -sum_k q_k * log p_k
三、带数字的推演
K=5、ε=0.1 时,正确类目标为 0.9+0.02=0.92,其余每类 0.02,总和为 1。
若采用只分给错误类的约定,则会是 0.9 与 0.025,必须说明实现定义。
四、方案对比
| 方案/对象 | 核心特点 | 代价或边界 |
|---|---|---|
| 硬标签 | 边界信号最强 | 易产生极端置信度 |
| 均匀平滑 | 简单正则化 | 忽略类别相似性 |
| 教师软标签 | 携带类间结构 | 依赖教师质量与温度 |
五、执行流程
确认框架 ε 定义 -> 排除 ignore 类 -> 扫描小范围 ε
-> 比较准确率/NLL/校准 -> 检查少数类与蒸馏场景 -> 固化目标构造
六、边界条件与工程代价
类别极不均衡时,把概率均匀分给大量错误类可能不合适;需结合类别先验和成本做实验。
Label smoothing 会让教师输出更平,蒸馏时可能减少错误类之间的相对信息;教师训练与学生训练不一定使用同一 ε。
记忆钩子:记忆重点不是“标签从 1 变 0.9”,而是目标从顶点移向分布内部。
七、常见误区与追问
-
误区:ε=0.1 就表示正确类一定是 0.9。 是否含
ε/K取决于框架定义。 -
追问:为什么能抑制过度自信? 目标不要求正确类概率无限接近 1。
-
误区:平滑可以修复错误标注。 它统一软化目标,不能识别哪条标签错了。
-
追问:ignore index 如何处理? 该位置不计算损失,也不能参与类别平滑归一化。
-
追问:为什么要检查校准? 置信度下降不等于预测概率与真实频率更一致。
八、加强记忆
记忆重点不是“标签从 1 变 0.9”,而是目标从顶点移向分布内部。
先说明 ε 的两种实现,再谈泛化收益、边界削弱和校准实测。