Bag of Tricks for Image Classification with Convolutional Neural Networks

——列举在ImageNet数据集上提高分类性能的训练技巧

——以ResNet-50为例,将top-1准确率从75.3%提高的79.29%

Baseline

训练

1、随机采样图片,将其编码为[0,255]之间的32位浮点数

2、随机裁剪,长宽比例为[3/4,4/3],面积比例为[8%,100%],然后将裁剪区域resize为224*224

3、以0.5的概率水平翻转

4、使用服从[0.6,1.4]之间均匀分布的系数缩放色调,饱和度和亮度

5、添加采样系数服从高斯分布N(0,0.1)的PCA噪声

6、对RGB三通道,分别减去123.68,116.779,103.939,除以58.393,57.12,57.375

验证

将每张图片的短边变为256像素,同时保证长宽比例,从中心裁剪出224*224的图像,同时进行归一化,不进行随机数据扩张。

卷积层和全连接层的参数以Xavier进行随机初始化,所有偏置初始化为0,对于BN,初始化为1,初始化为0。

使用NAG(Nesterov Accelerated Gradient)作为优化算法,在8块NVIDIA V100显卡上训练120轮,0-30轮,学习率0.1,30-60轮,学习率0.01,60-90轮,学习率0.001,90-120轮,学习率0.0001。

Tricks

Large-batch training

对于凸优化问题,收敛概率随着batch_size的增大而下降,在神经网络的训练中,当训练相同的轮数时,大batch_size的验证性能不如小batch_size。以下方法可以改善这个问题:

Linear scaling learning rate

大batch_size不会提高随机梯度下降的期望,但是会降低梯度的方差(噪声),因此可能需要提高学习率来在梯度反方向上进行更大程度的下降,随着batch_size变化线性增大学习率在ResNet50上是可行的。batch_size = 256,lr = 0.1,当batch_size = b时,lr = b/256。

Learning rate warmup

在训练初期,所有的参数都是随机初始化的,偏离最终收敛的状态很远,因此如果使用较大的学习率将会导致数值不稳定,warmup首先使用很小的学习率,当训练过程稳定之后再恢复到初始学习率。设置warmup_step = m,假设初始学习率为,对于第个batch,设置学习率为。

Zero 

BN层将输入归一化为,这两个参数都是学习的,且分别被初始化为,Zero gamma策略就是将所有在残差块(residual block)最后一层的BN层初始化为0,使网络在初始化阶段更容易训练。

No bias decay

weight decay 通常同时应用到权重和偏置上,L2正则化使得参数变得稀疏,有文章提出只对权重使用正则化来一直抑制拟合,no bias decay借鉴这个思路,只对卷积层和全连接层的权重进行weight decay,其余参数,如BN层参数都不进行正则化。

Low precision training

神经网络通常以32位浮点数进行训练,但是,有的新硬件可能具有增强的算术逻辑单元,用于较低精度的数据类型。进行低精度训练将加快训练速度。以FP16进行梯度计算,但是所有参数都有着FP32的备份用于参数更新,另外,给loss乘以一个标量以更好地将梯度范围与FP16对齐也是一种实用的解决方案。

Exp

ResNet-50的结构:

ResNet-50

在ResNet-50的第四个阶段中(stage 4),进行下采样的残差块结构为:

Dowm Sampling

模型调整(Model Tweaks):

模型调整

B:调整卷积核步长,减少信息损失

C:将网络初始阶段的7*7卷积变为3个3*3卷积,(卷积计算量与卷积核大小的平方成正比)

D:在短路连接中增加AvgPool(2*2,s=2),并将1*1卷积步长变为1,避免使用步长为2的1*1卷积

Training Refinements

Cosine Learning Rate Decay

之前的方法有step_decay,cosine lr_decay的策略是假设总的batch数量为(暂不考虑warm_up),在batch为时,学习率,其中是初始学习率。

使用Cosine Learning Rate Decay 策略

Label Smoothing

在分类网络的最后一层,一般是全连接层,隐层单元个数为K,对于给定图片,某一类别的预测概率为

给定标注,交叉熵损失定义为:

那么,,优化的结果将是趋于无穷,其余项很小,它鼓励不同类别的输出得分有着非常显著的区别,这可能导致过拟合。

label smoothing的策略是将实际标注变为:

是很小的常数。

则优化之后的概率分布为

最优的预测概率分布

是任意实数

Knowledge Distillation

teacher model有更高精度,帮助训练student model,student model通过模仿teacher model,在保证模型复杂度的前提下提高模型精度。例如用ResNet-152作为teacher model,来帮助训练ResNet-50。添加蒸馏损失来惩罚teacher model 的softmax输出与student model之间的差异。假设p是标注,z和r代表student model和teacher model最后一层全连接层的输出,因此最后的loss变为:

loss

T是超参,使得softmax的输出更加平滑,对teacher model的预测概率分布进行蒸馏。

Mixup 

你可能感兴趣的:(Bag of Tricks for Image Classification with Convolutional Neural Networks)