作家
登录

如何理解深度学习分布式训练中的large batch size与learning rate的关系?

作者: 来源: 2017-10-26 06:19:31 阅读 我要评论

沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散!


实验1:只增长并行worker数(也就相当于增大年夜batch size),lr为baseline的lr0保持不变

若何懂得深度进修分布式练习中的large batch size与learning rate的关系?

本文源自谭旭在知乎问题【若何懂得深度进修分布式练习中的large batch size与learning rate的关系?】下的答复。

问题详情:

在深度进修进行分布式练习时,经常采取同步数据并行的方法,也就是采取大年夜的batch size进行练习,但large batch一般较于小的baseline的batch size机能更差,请问若何懂得调试learning rate能使large batch达到small batch同样的收敛精度和速度?

分别比较baseline和k个worker的large batch的更新公式[7],如下:

答复:

比来在进行多GPU分布式练习时,也碰到了large batch与learning rate的懂得调试问题,比拟baseline的batch size,多机同步并行(之前有谜底是介绍同步并行的通信框架NCCL(谭旭:若何懂得Nvidia英伟达的Multi-GPU多卡通信框架NCCL?),有兴趣可以查看)等价于增大年夜batch size,如不雅一向行精细的设计,large batch往往收敛效不雅会差于baseline的小batch size。是以将本身的懂得以及实验总结如下,重要分为三个方面来介绍:(1)懂得SGD、minibatch-SGD和GD,(2)large batch与learning rate的调试关系,(3)我们的实验。

(1)懂得SGD、minibatch-SGD和GD

在机械进修优化算法中,GD(gradient descent)是最常用的办法之一,简单来说就是在全部练习集上钩算当前的梯度,选定一个步长进行更新。GD的长处是,基于全部数据集获得的梯度,梯度估计相对较准,更新过程更精确。但也有几个缺点,一个是当练习集较大年夜时,GD的梯度计算较为耗时,二是现代深度进修收集的loss function往往长短凸的,基于凸优化理论的优化算法只能收敛到local minima,是以应用GD练习深度神经收集,最终收敛点很轻易落在初始点邻近的一个local minima,不太轻易达到较好的收敛机能。

另一个极端是SGD(stochastic gradient descent),每次计算梯度只用一个样本,如许做的好处是计算快,并且很合适online-learning数据流式达到的场景,但缺点是单个sample产生的梯度估计往往很不准,所以得采取很小的learning rate,并且因为现代的计算框架CPU/GPU的多线程工作,单个sample往往很难占满CPU/GPU的应用率,导致计算资本浪费。

关于增大年夜batch size对于梯度估计精确度的影响,分析如下:

假设batch size为m,对于一个minibatch,loss为:

因为每个样本

梯度

全部minibatch的梯度方差为:

是随机大年夜练习样本集sample获得的,知足i.i.d.假设,是以样本梯度的方差相等,为

等价于SGD的梯度方差,可以看到batch size增大年夜m倍,相当于将梯度的方差削减m倍,是以梯度加倍精确。

如不雅要保持方差和本来SGD一样,相当于给定了这么大年夜的方差带宽容量,那么就可以增大年夜lr,充分应用这个方差容量,在上式中添加lr,同时应用方差的变更公式,获得等式

是以可将lr增长sqrt(m)倍,以进步练习速度,这也是在linear scaling rule之前很多人常用的增大年夜lr的方法[4]。下一末节将具体介绍增大年夜lr的问题。

(2)large batch与learning rate

在分布式练习中,batch size 跟着数据并行的worker增长而增大年夜,假设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使梯度估计相较于badeline的梯度加倍精确,噪音削减,更轻易收敛到邻近的local minima,类似于GD的效不雅。

为懂得决这个问题,一个办法就是增大年夜lr,因为batch变大年夜梯度估计更准,理应比baseline的梯度更确信一些,所以增大年夜lr,应用更精确的梯度多走一点,进步收敛速度。同时增大年夜lr,让每次走的幅度尽量大年夜一些,如不雅碰到了sharp local minima[8](sharp minima的说法如今还有争议,暂且引用这个说法),还有可能逃出收敛到更好的处所。

然则lr不克不及无穷制的增大年夜,原因分析如下。深度神经收集的loss surface往往是高维高度非线性的,可以懂得为loss surface外面凹凸不平,坑坑洼洼,不像y=x^2曲线如许滑腻,是以基于当前weight计算出来的梯度,往前更新的learing rate很大年夜的时刻,沿着loss surface的切线就走了很大年夜一步,有可能大年夜大年夜偏于原有的loss surface,示例如下图(a)所示,虚线是当前梯度的偏向,也就是当前loss surface的切线偏向,如不雅learning rate过大年夜,那这一步沿切线偏向就走了很大年夜一步,如不雅一向持续如许,那很可能就走向了一个缺点的loss surface,如图(b)所示。如不雅是较小的learning rate,每次只沿切线偏向走一小步,固然有些误差,依然能大年夜致沿着loss sourface steepest descent曲线向降低,最终收敛到一个不错的local minima,如图(c)所示。


  推荐阅读

  谷歌又有新动作 开源量子计算软件OpenFermion

沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 谷歌表示,此次开放的是OpenFermion的源代码,可供用户免费应用,化学家和材料学家可以应用谷歌软件改编算法>>>详细阅读


本文标题:如何理解深度学习分布式训练中的large batch size与learning rate的关系?

地址:http://www.17bianji.com/lsqh/38215.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)