标签平滑Label Smoothing
Lable Smoothing 是分类问题中错误标注的一种解决方法。 对于分类问题,特别是多分类问题,常常把向量转换成one-hot-vector(独热向量) one-hot带来的问题:(对于独热的简单解释:https://blog.csdn.net/qq_43211132/article/details/96141409) 对于损失函数,我们需要用预测概率去拟合真实概率,而拟合one-hot的真实概率函数会带来两个问题: 1)无法保证模型的泛化能力,容易造成过拟合; 2) 全概率和0概率鼓励所属类别和其他类别之间的差距尽可能加大,而由梯度有界可知,这种情况很难适应。会造成模型过于相信预测的类别。 使用下面的 label smoothing 可以缓解这个问题: 原理:对于以Dirac函数分布的真实标签,我们将它变成分为两部分获得(替换)。 第一部分:将原本Dirac分布的标签变量替换为(1 - ϵ)的Dirac函数; 第二部分:以概率 ϵ ,在u(k) 中份分布的随机变量(u(k)是类别分之一) 代码: def label_smoothing(inputs, epsilon=0.1): K = inputs.get_shape().as_list()[-1] # number of channels return ((1-epsilon) * inputs) + (epsilon