——列举在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的第四个阶段中(stage 4),进行下采样的残差块结构为:
模型调整(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为时,学习率,其中是初始学习率。
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变为:
T是超参,使得softmax的输出更加平滑,对teacher model的预测概率分布进行蒸馏。