1. Label Smoothing
Label Smoothing是一种可以有效提神图像分类,语音识别,机器翻译模型准确率的方法,被Szegedy在Rethinking the inception architecture for computer vision 中提出,然后被Hinton等在when Does Label Smoothing Help?中深入探究了为什么和在什么条件下Label Smoothing会起作用。我们可以将Label Smoothing当作一个小trick, 通过应用这个小trick, 可以有效的缓建模型由于过度自信导致的过拟合问题, 同时可以起到对模型预测的置信分数进行修正提升置信分数和模型准确率的匹配度。
Label Smoothing是为了提升图像分类的准确率作为一种正则化的方法被提出的。Label Smoothing通过软化标签调整了多分类问题中损失函数的计算方式以此来regularize模型。那常规的多分类任务训练过程中存在什么问题呢,我们来看一下。
2. 常规多分类任务的问题
在多分类任务中,神经网络模型会根据当前数据输出一个列表包含各个类别的置信度分数,然后将这些分数传入softmax得到另外一个列表代表的是当前数据属于各个类别的概率。softmax的计算公式如下:
K是总的类别数,通过计算我们可以得到:
然后根据计算cross entropy loss函数:
其中 表示多类中的某一类。 具体意思是在多分类任务的训练中,label smoothing处理之前每一个样本的标签是一个one hot向量,向量中元素的个数是总的类别数,而且只有正确的类别是1,其余都是0. 每一个元素可以看作权重和每一个类别的输出概率带入上面的公式计算得到损失值。 因为只有一个等于1参与计算, 所以. 当我们需要最小化Loss的时候,模型会最大化, 也就是最大化. 所以在训练过程中模型会促使自身往正确标签和错误标签差值最大化的方向学习,在训练数据量较小的情况下,无法表征所有样本特征的情况下, 会导致模型过于自信而导致过拟合,同样的模型输出的置信分数和概率并不能跟模型的准确度相契合。
3. Label Smoothing的使用
在了解了多分类任务的问题之后,一个很直觉的想法就是,让所有的标签都参与到损失函数的计算过程中来而不只是正确的标签。这样模型训练过程中需要开始考虑如何给错误标签一个合适的置信分数而不是漫无目的的最大化正确标签和错误标签的差值。所以Label Smoothing的做法就是通过soft one-hot来加入噪声,减少真实样本标签在计算损失函数时的权重,同时也将错误标签引入到损失函数的计算中。使用label smoothing后这样变化:
=====================>
K是类别的总个数, is a small constant. 通过Label Smoothing给标签加入噪声带来最核心的变化是为了最小化损失函数所需的最优方案从
变成了:
在这种情况下,对正确标签预测的置信分数就被限制住了, 而不是一味的最大化正确标签和错误标签的差值,这样模型就不会过于自信,从而达到预防过拟合的效果。