标签平滑标签平滑label smoothing是机器学习中广泛使用的一种正则化技术用于提高模型的泛化能力并防止过拟合。在训练神经网络时目标通常是最小化预测结果与真实标签之间的误差。然而如果模型对其预测变得过于自信——为单个类别分配接近 100% 的概率——它往往会开始死记硬背训练数据中的特定噪声而不是学习稳健的模式。这种现象被称为过拟合会降低模型在新的、未见过的样本上的性能。标签平滑通过阻止模型以绝对的确定性进行预测来解决这个问题本质上是告诉网络总会存在一个小幅度的误差容忍空间。为了理解标签平滑的工作原理将其与标准的“硬”标签进行对比会很有帮助。在传统的监督学习中分类标签通常通过独热编码来表示。例如在一个区分猫和狗的任务中“狗”图像的目标向量将是 [0, 1]。为了完美匹配这一点模型会将其内部得分称为logits推向无穷大这可能导致不稳定的梯度和无法适应新情况。标签平滑将这些死板的 1 和 0 替换为“软”目标。目标概率不再是 1.0而是为正确类别分配 0.9同时将剩余的概率质量0.1均匀分配给不正确的类别。这种微妙的转变修改了损失函数例如交叉熵的目标防止激活函数通常是Softmax饱和。其结果是一个能够学会在特征空间中形成更紧密类别聚类的模型并产生更好的模型校准这意味着预测概率能更准确地反映出正确性的真实可能性。label smoothing数学定义举例子实现label smoothinglabel smoothing代码实操importnumpyasnpdeflabel_smoothing(one_hot_labels,epsilon,num_classes):# 计算平滑后的标签smoothed_labelsone_hot_labels*(1-epsilon)epsilon/num_classesreturnsmoothed_labels# 示例数据one_hot_labelsnp.array([[0,0,1],[1,0,0],[0,1,0]])# 标签平滑值epsilon0.1# 类别数num_classes3# 应用标签平滑smoothed_labelslabel_smoothing(one_hot_labels,epsilon,num_classes)print(smoothed_labels)