首页 > 技术文章 > 【转】Batch Size设置过大时,对神经网络性能的影响情况

zb-ml 2020-08-07 15:27 原文

之前的一片博文写了Batch Size的作用和应该如何设置比较合适,同时还有Batch Size大小,与学习率lrlr、训练次数epochepoch之间的关系。里面提及Batch Size越大,梯度的方向越准确。

上述的说法是没错的,梯度方向准确,最后网络收敛情况好,但是收敛情况好并不意味网络的性能就好,网络收敛好意味着对训练数据作出了较好的拟合,但是并不意味着就会对测试数据作出很好的拟合。这存在的一个“泛化”的问题。

ON LARGE-BATCH TRAINING FOR DEEP LEARNING:GENERALIZATION GAP AND SHARP MINIMA 论文发现了使用large-batch训练得到的网络具有较差的泛化能力。使用large-batch的情况下容易收敛成“sharp minimizers”,使其的泛化能力差。而相对使用“small-batch”训练的最终会收敛到“flat minimizers”,这是因为在“small-batch”中在梯度计算中固有噪声的存在,使得网络的最终收敛成“flat minimizers”
论文中提及了使用“large-batch”造成泛化能力差的原因可能是网络直接收敛到初始值附近。同时,论文尝试提出几种方法,如数据增强,“conservative training”和“robust optimization”,但好像也没什么效果。另一种补救方法包括使用动态抽样,在这种情况下,随着迭代的进行,批大小逐渐增大。

 

https://blog.csdn.net/qq_34886403/article/details/82597558

 

感想:batch size从64下降到6,发现平均准确率提升0.4%左右。我的ResNet最佳层数为6.

推荐阅读