论文全称:《Bag of Tricks for Image Classification with Convolutional Neural Networks》
论文地址:https://arxiv.org/pdf/1812.01187.pdf
这篇文章主要讨论最近这些训练神经网络的tricks,这些tricks大部分都只是在以前的论文轻描淡写地一笔带过,有些只能在源代码里找到,但这一部分可能很重要。令人惊讶的是对这些tricks作对照实验结果还能优于一些后来提出的网络,真的不知道是tricks厉害还是提出网络的结构的贡献了。见下图。
整篇论文围绕不同的tricks阐述,并且对他们做了一系列的实验。通过将这些改进结合在一起,能够显著改进各种CNN模型。例如,将ResNet-50在ImageNet上的top-1验证精度从75.3%提高到79.29%。论文还证明了,图像分类精度的提高,可以在目标检测和语义分割等其他应用领域带来更好的转移学习性能。
关于训练
线性比例缩放learning rate
随着批量大小线性增加学习率是有效的。
learning rate热身
线性地将学习率从0增加到初始学习率。
Zero γ
初始化所有BN层的γ= 0,因此,所有residual的块只返回它们的输入,模拟的网络层数较少,而且在初始阶段更容易训练。
没有bias的衰变
将权值衰减应用于卷积层和全连通层的权值。其他参数,包括偏见和γ和βBN层都不衰变。
低精度训练:因为新的硬件增强了用于较低精度数据类型的算术逻辑单元。使用FP16代替FP32,训练速度会更快。
对于ResNet的微调
右边是对应左边的微调,这些结构的调整都曾经在别的论文的源代码上出现。
调整后的结果:
训练改进
余弦学习速率衰减
与阶跃衰减相比,余弦衰减从一开始学习就开始衰减,但一直保持较大,直到阶跃衰减使学习速率降低10x,这可能会提高训练进度。
标签平滑
采用标签平滑法,使分布中心在理论值处平滑,极值较少。
知识蒸馏
在知识精馏[中,我们使用教师模型来帮助训练当前的模型,即学生模型。教师模型通常是一个准确率较高的预训练模型,通过模仿,学生模型可以在保持模型复杂度不变的情况下提高自身的准确率。
混合训练
通过对这两个例子的加权线性插值得到一个新的例子,用于训练。
此外还介绍了如何迁移学习至不同的任务,包括目标检测和语义分割。