最近读到《Surge Phenomenon in Optimal Learning Rate and Batch Size Scaling》这篇论文,里面通过实验和理论证明了learning rate和batch size之间的关系,觉得很有意思,就简答写个blog记录下。
1. 简介
- 在影响模型训练效果的所有参数中,batch size与learning rate是最为重要的。随着训练数据的增加,为了加快训练效率,batch size变的越来越大,那么如果选择最佳的learning rate就成为了难题。
- 在SGD优化器中,一些研究表明,learning rate与batch size之间有平方根[1],线性关系[2]等。在比较大的batch size下,一些理论和实验表明:
- 在类Adam优化器中,batch size与learning rate之间并没有上面的关系。一开始learning rate随着batch size增大而增大,随后达到一个点后,会随着batch size增加而降低,同时,随着训练不断进行, B n o i s e B_{noise} Bnoise会不断后移。 具体关系可以参考下面的图:
根据empirical model[3],batch size与optimal learning rate之间有下述的关系:
这里的 B n o i s e B_{noise} Bnoise表示数据有效性与训练速度之间的trade-off,当Batch size等于 B n o i s e B_{noise} Bnoise时,optimal learning rate达到局部最大。对于SGD,当B<< B n o i s e B_{noise} Bnoise时,learning rate与batch size呈现线性关系。
对于Adam优化器,则呈现平方根关系。
2. 理论
3. 实验
-
记录在每个batch size下,不同的实际处理的step数S与处理的训练样本数E在达到具体loss的时候对应的optimal learning rate,可以得到:
然后,用不同batch size下的optimal learning rate搜索结果估计出类Adam优化器的最大的optimal learning rate:
类SGD的最大optimal learning rate为:
-
训练参数如上表所示,总共训练了三个模型,分别为5层的CNN,ResNet18及DiltilGPT2.
从上图中可以看出,在达到 B n o i s e B_{noise} Bnoise前,optimal learning rate随着batch size增加而增加,当达到 B n o i s e B_{noise} Bnoise后,optimal learning rate会逐渐降低。同时,随着训练的不断进行, B n o i s e B_{noise} Bnoise会不断的向右偏移。
4. 总结
- 一开始learning rate随着batch size增大而增大,随后达到一个点后,会随着batch size增加而降低,同时,随着训练不断进行, B n o i s e B_{noise} Bnoise会不断后移。
- 为了加速训练进程,可以设计自适应的learning rate和batch size。
5. 参考文献
- [1] One weird trick for parallelizing convolutional neural networks
- [2] Learning rates as a function of batch size: A random matrix theory approach to neural network training
- [3] An empirical model of large-batch training