When Does Label Smoothing Help?

这篇论文是Hinton大神19年发表在NIPS的论文,主要是从实验的角度论证Label Smoothing这种机制的影响,理论证明不多。

什么是Label Smoothing?

Label Smoothing 是分类中一种常用的trick。

在多分类任务中,常使用交叉熵作为模型的损失函数。损失函数可以表示为:

其中,K表示类别的数量。在正常的损失中,标签对应的y_k 的值一般取1,其他y_k 取值为0。

而在Label Smoothing中,标签对应的y_k 是一个0到1之间的数,这里记为α。然后所有的y_k ,平分1-α。

本文的结论

由于本文是一个用实验角度论证的文章,所以我们可以结合着结论与实验一起来看。

结论一: LS可以使得不同分类的样本cluster变得更紧密。

Label smoothing encourages the activations of the penultimate layer to be close to the template of the correct class and equally distant to the templates of the incorrect classes.

为了更好的展示 LS 给模型的倒数第二层输出x 带来的变化,作者选取了3个数据集,并在每个数据集中选择了一些类别,对这些类别中样本对应的x进行了可视化处理。在下图中,4行对应4个数据集&类别:

CIFAR-10数据集,飞机、车、鸟

CIFAR-100数据集,海狸、海豚、水獭

ImageNet数据集,某种鱼、狐獴、某种刀,这三个类别相差很大

ImageNet数据集,某种贵宾犬、另一种贵宾犬、某种鱼,其中前两个类别很相似

四列分别对应的是:训练集不加LS,验证集不加LS,训练集加LS,验证集加LS。

可以看到,LS 会让每个类别的cluster变得更加紧密。同时作者还附上了三个数据集上增加LS之后的效果变化,可以看出CIFAR-10和CIFAR-100两个数据集上都提升了ACC,而ImageNet数据集上ACC没有变化。

结论二: LS可以提升calibration

标签平滑可以降低ECE(estimated expected calibration error),可以在不使用temperature scaling的情况下校准网络。

图2左边表示ResNet-56预测的可靠性示意图:中间虚线表示理想的模型,准确率等于置信度。蓝色实线表示在hard-targes上训练,不使用temperature scaling的情况,可以看到这个模型明显过拟合了,因为准确率低于置信度。蓝色带十字架的实现表示在hard-targes上训练,使用temperature scaling(1.9)的情况,可以看到斜率接近于1。绿色实现表示在soft-targets上训练,不使用temperature scaling的情况,可以看出来,对比使用temperature scaling,可以取得类似的模型校准的效果。

结论三: 如果在teacher model中增加LS的优化,teacher model的效果会变好,但是蒸馏的student的模型反而会变差。

这一块不是很感兴趣,略去

你可能感兴趣的:(When Does Label Smoothing Help?)