图像分类任务的trick总结

针对图像分类,提升准确率的方法有两个:1.修改模型;2.各种数据处理和训练的技巧
图像分类中的技巧对于目标检测,图像分割也有很好的作用

Warmup

warm up是resnet论文中提到的一种学习率预热的方法。由于刚开始训练模型的权重是随机初始化的,这里权重不能全部置为零,置为零的话,网络中的每个神经元都计算相同的输出,那么它们在反向传播时也会计算相同的梯度,并经历完全相同的参数更新。如果随机初始化的模型参数使用一个较大的学习率的话,会带来模型的不稳定。学习率预热就是在刚开始训练的时候选用一个较小的学习率,等模型稳定之后再修改为预先设置的学习率进行训练。但是如果突然从小学习率变成大学习率会导致训练误差突然变大,所以又提出了gradual warmup来解决这个问题:每个iteration增大一点,直到最初设置的比较大的学习率。

Linear scaling learning rate

这是针对较大batch size提出的方法。
在凸优化问题中,随着批量的增加,收敛速度会降低,神经网络也有类似的实证结果。随着batch size的增大,处理相同数据量的速度会越来越快,但是达到相同精度所需要的epoch数量会越来越多:一个epoch表示迭代完全部数据集,batch size越大,迭代完一个epoch所需的iteration就越小,梯度更新的速度也越小。所以相同epoch,大batch size的模型比小batch size模型的验证准确率小。
gradual warmup可以解决此问题,另外linear scaling learning rate也是有效的方法。在mini-batch SGD训练时,梯度下降的值是随机的,因为每一个batch的数据是随机选择的。增大batch size不会改变梯度的期望,但是会降低它的方差。也就是说,大batch size会降低梯度中的噪声,所以可以增大学习率来加快收敛。
具体做法很简单,eg. resnet中batch size为256时选择的学习率是0.1,batchsize增大为b时,学习率变为0.1× b/256

Label-smoothing

在分类问题中,一般最后一层是全连接层,然后对应one-hot编码,这种编码方式和通过降低交叉熵损失来调整参数的方式结合起来,会有一些问题。这种方式鼓励模型对不同类别的输出分数差异非常大,或者说模型过分相信他的判断,但是由于人工标注信息可能会出现一些错误。模型对标签的过分相信会导致过拟合。
标签平滑可以有效解决该问题,它的具体思想是降低我们对于标签的信任,例如我们可以将损失的目标值从1稍微降到0.9,或者将从0稍微升到0.1。他将那真实的概率改造为:
图像分类任务的trick总结
其中,εε是一个小的常数,K是类别的数目,y是图片的真正的标签,i代表第i个类别,qiq_{i}是图片为第i类的概率。总的来说,LSR是一种通过在标签y中加入噪声,实现对模型约束,降低模型过拟合程度的一种正则化方法。

Random image cropping and patching

这应该是适用于多标签分类。Random image cropping and patching (RICAP)[7]方法随机裁剪四个图片的中部分,然后把它们拼接为一个图片,同时混合这四个图片的标签。
图像分类任务的trick总结

如下图所示,Ix, Iy是原始图片的宽和高。w和h称为boundary position,它决定了四个裁剪得到的小图片的尺寸。w和h从beta分布Beta(β, β)中随机生成,β也是RICAP的超参数。最终拼接的图片尺寸和原图片尺寸保持一致。
图像分类任务的trick总结

Knowledge Distillation(知识蒸馏)

提高几乎所有机器学习算法性能的一种非常简单的方法是在相同的数据上训练许多不同的模型,然后对它们的预测进行平均。但是使用所有模型集成进行预测比较麻烦,并且可能计算量太大而无法部署到大量用户,知识蒸馏方法就是应对这种问题的有效方法之一。
在知识蒸馏方法中,我们使用一个老师模型来帮助当前的模型(学生模型)训练。教师模型是一个较高准确率的预训练模型。因此学生模型可以在保持模型复杂度不变的情况下提升准确率。比如,可以使用ResNet-152作为教师模型来帮助学生模型ResNet-50训练。在训练过程中,我们会加一个蒸馏损失来惩罚学生模型和教师模型的输出之间的差异。
给定输入,假定p是真正的概率分布,z和r分别是学生模型和教师模型最后一个全连接层的输出。之前我们会用交叉熵损失l(p,softmax(z))来度量p和z之间的差异,这里的蒸馏损失同样用交叉熵。所以,使用知识蒸馏方法总的损失函数是
图像分类任务的trick总结
上式中,第一项还是原来的损失函数,第二项是添加的用来惩罚学生模型和教师模型输出差异的蒸馏损失。其中,T是一个温度超参数,用来使softmax的输出更加平滑的。实验证明,用ResNet-152作为教师模型来训练ResNet-50,可以提高后者的准确率。