论文地址:
Scaling SGD Batch Size to32K for ImageNet Training
其他相关的:
224秒训练ImageNet!这次创纪录的是索尼大法
ImageNet/ResNet-50 Training in 224 Seconds
LARGE BATCH OPTIMIZATION FOR DEEP LEARNING: TRAINING BERT IN 76 MINUTES
论文内容介绍
大batch Size在多个GPU上并行训练可以充分利用硬件资源,减少训练时间,但是众所周知,大batch训练是不稳定的,会产生泛化差距,准确度会下降很多。常见的一些缓解大batch Size训练精度下降的方法有linear scaling LR rule,Batch Normalization, warmup schemes。Scaling SGD Batch Size to32K for ImageNet Training这篇文章提出一个新的方法,叫Layer-wise Adaptive Rate Scaling (LARS),分层自适应速率缩放。
作者表示,提出这个方法的原因是发现,不同层的权重和梯度的比值不同。高比值层(权重值大,梯度小)的最佳学习率不适合低比值的层,而SGD通常对所有层使用相同的学习率,导致模型不容易收敛(权重大梯度小时,需要较大学习率才能改得动权重,但是这时权重小梯度大的层就会更新特别多)。作者认为,模型中不同的层应当需要不同的学习率。
下表表示AlexNet模型中各层的权重与梯度的L2范数比值,可以看到相差地特别大。
在通常的训练中,模型权重更新的公式如下:(权重-学习率×梯度)
在加入LARS方法后,公式变成下面这样:(l为缩放系数超参,β是权重衰减系数,||w||2指l2范数,下三角w表示梯度,γ是原学习率)
即先用每一层的权重2范数除以梯度2范数,再乘到原学习率上,因此每一层的学习率都不相同,并且是自适应调整的,这也就是为什么这个方法叫分层自适应速率缩放。
实验结果
在加入LARS方法之后,训练曲线对比图如下,右边两个是加入LARS后的结果,可以看出提升非常明显。
加入LARS之后,Batch Size可以达到32K,并且test准确度只掉了一点点,可见其效果非常棒。
感觉这个东西在小batch Size上面也会有效,可以尝试一下。