batchsize和模型泛化的关系

此文主要是为了说明节点数上升->batch size上升->引起泛化问题,导致训练的精度下降

深度学习的发展得益于大型神经网络和大型数据集。但是更大的网络和更大的数据集会导致计算量和训练时间快速上升,从而阻碍了研发的进展。为了提高训练效率,深度学习在进行分布式训练时,常常采用同步数据并行的方式,也就是采用大的batch size进行训练。但是在早期的研究中[1-2]中发现,过大的 batch size 训练出的模型往往会比小 batch size 训练出的模型差。目前深度学习模型多采用Mini-batch SGD算法进行优化来解决此问题,根据SGD算法原理[3]可知batch size是影响模型性能重要的一种参数,接下来主要分析训练过程batch size对模型泛化能力的影响。

在分布式训练中,batch size 随着数据并行的节点数增加而增大。我们往往直观地认为,增大batch size能够让模型在同一次迭代中训练更多的样本,从而使得学习更加稳定并取得更好的效果,但近年来的各种研究表明事实并非如此。

Smith[4]等人经过一系列实验发现一个经验规律:Bopt∝?N ,即对于一个固定的学习率? ,存在一个最优的batch size能够最大化测试精度,并且这个batch size和训练集的大小程正相关,如图1所示。

图1 batch size 与训练集大小之间的关系。

同时Goyal[5]等人发现,虽然可以通过增大batch size来减少训练时间,但是batch size的继续增大会引起模型的泛化能力下降,从而导致模型的分类准确率下降,如图2所示。

图2 batch size和模型的性能之间的关系。此实验是在ImageNet数据集上研究batch size的大小对ResNet50网络模型性能的影响。

Keskar[6]等人将上一现象称为“泛化差距(generalization gap)”并对此现象的产生进行了分析。即随着batch size的增加,样本整体噪声均值保持不变但是方差减小,而样本的噪声有助于SGD规避局部最优点,从而提高整体的泛化能力,如图3所示。例如,假设baseline的batch size为B,learning rate为lr,训练epoch数为N。如果保持baseline的learning rate,一般不会有较好的收敛速度和精度。因为对于收敛速度,假设k个worker,每次过的sample数量为kB,因此一个epoch下的更新次数为baseline的1/k,而每次更新的lr不变,所以要达到baseline相同的更新次数,则需要增加epoch数量,最大需要增加k*N个epoch,因此收敛加速倍数会远远低于k;对于收敛精度,由于增大了batch size使梯度估计相较于baseline的梯度更加准确,噪音减少,更容易收敛到附近的local minima。因此,小的batch size对模型具有更好地泛化能力。

图3 batch size对模型泛化能力的影响。大的batch size收敛到sharp miminum,而小的batch size收敛到flat mimimum,后者具有更好的泛化能力(主要原因是小的batch size带来的噪声有助于逃离sharp minimum)。

Hoffer[7]等人指出“泛化差距”现象源于相对较少参数的更新,而不是batch size。即batch size增大导致模型性能下降是因为训练时间不够长,即在同样的epochs下参数更新变少了,因此需要更长的迭代次数,如图4所示。

图 4使用不同的大batch size,模型性能保持不变。这意味着问题与batch size无关,而是与更新的参数数量有关。通过对batch size的修改与学习速率的调整相结合,可以完全消除了之前观察到的“泛化差距”。

参考文献

[1] Krizhevsky, A. (2014). One weird trick for parallelizing convolutional neural networks. ArXiv, abs/1404.5997.

[2] LeCun, Y., Bottou, L., Orr, G.B., & Müller, K. (1998). Efficient BackProp. Neural Networks: Tricks of the Trade.

[3] Bottou, L. (2010). Large-Scale Machine Learning with Stochastic Gradient Descent. COMPSTAT.

[4] Smith, S.L., & Le, Q.V. (2018). A Bayesian Perspective on Generalization and Stochastic Gradient Descent. ArXiv, abs/1710.06451.

[5] Goyal, P., Dollár, P., Girshick, R.B., Noordhuis, P., Wesolowski, L., Kyrola, A., Tulloch, A., Jia, Y., & He, K. (2017). Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour. ArXiv, abs/1706.02677.

[6] Keskar, N.S., Mudigere, D., Nocedal, J., Smelyanskiy, M., & Tang, P.T. (2017). On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima. ArXiv, abs/1609.04836.

[7] Hoffer, E., Hubara, I., & Soudry, D. (2017). Train longer, generalize better: closing the generalization gap in large batch training of neural networks. ArXiv, abs/1705.08741.

参考分析:

https://blog.csdn.net/duanyajun987/article/details/93209640

https://zhuanlan.zhihu.com/p/64864995

https://blog.csdn.net/xxiaozr/article/details/80346381

https://zhuanlan.zhihu.com/p/53181893?utm_source=wechat_session

https://www.leiphone.com/news/201710/RIIlL7LdIlT1Mvm8.html