首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

利用DLP探索深度学习(1):Momentum对训练过程的影响

深度学习平台(DLP)软件是一个用于深度学习应用开发的免编程软件平台,致力于为广大深度学习应用开发者打造一个高效并且具备良好用户体验的开发工具。DLP软件可前往DLP官网免费下载:www.ai-dlp.com

从这期开始,笔者将开展一个系列,给大家介绍深度学习中的一些概念和技巧,并通过DLP来进行实验,从而让大家能够更深入直观地体会这些概念和技巧。

本文将重点介绍在深度学习中,Momentum对训练过程的影响。

随机梯度下降(SGD)

随机梯度下降是深度学习中最基础的一个优化算法,是一种梯度下降方法。首先简单介绍一下梯度下降,在深度学习中,我们最终要做的其实就是优化损失函数,即找到它的最小值,常用的方法叫做Gradient Descent (GD),也就是梯度下降法,就是每次沿着当前位置的导数方向走一小步(如下图),更新模型参数,一直走下去就能够到达最优点。SGD就是每次从一堆训练样本中随机抽取一个(或一小批)样本来对损失函数进行优化。

SGD with Momentum

在原始的SGD中,每迭代训练一次,就会根据当前的损失来更新模型的参数。而相对于原始的SGD,Momentum能够加速训练过程,那么Momentum是如何工作的呢?大家可以想象一下,在光滑的冰面上推动一个箱子,只需要轻轻地推动一次,箱子就能滑动很长一段距离。正如在物理学中所阐述的,如果一个物体不受任何阻力,那么它就会沿原先运动的方向一直运动下去。在这个比喻中,由于冰面还是存在一定的摩擦的,箱子还是会慢慢减速,最终停止下来。

SGD without Momentum

现在让我们看不带Momentum的场景,好比在沙地里推箱子,你推多远,箱子就移动多远。在不带Momentum的SGD中,如果想要更新参数,那么就必须要有梯度,梯度就好比施加在箱子上的作用力。

接下来让我们通过数学表达来看待这个问题。

下面是不带Momentum的梯度下降的表达式,当前时刻的参数等于上一时刻的参数减去学习率乘以梯度。如果梯度为0,那么当前时刻的参数不会有任何更新。

当我们用上Momentum之后,情况将会有所不同。在下面的数学表达式中,我们引入了V这个变量,代表速度。当前时刻的速度等于上一时刻的速度乘以一个系数,再减去学习率乘以梯度。V的变化过程跟上面的比喻一致:g(t)项就好比作用在箱子上的力,v(t-1)项就好比箱子持续在冰面上滑动的速度,由于冰面存在摩擦,所以乘以一个系数μ,也就是Momentum项,μ通常取值0.9,0.95,0.99等。如果把μ设为0,那么就是不带Momentum的SGD。从表达式中可以看出,如果当前梯度为0,那么参数还是会按照上一时刻的速度进行更新。每一时刻的速度会不断累加,从而加速了训练的收敛速度。

对比实验

在了解了Momentum的原理和作用之后,接下来让我们通过一个实验来直观地感受一下Momentum的作用。在这个实验中,笔者用了Mnist数据集,如下图所示:

在本实验中,笔者采用LeNet作为基础,在其上稍做修改,最终的神经网络如下图所示:

笔者只改变Solver中的Momentum值,其他不做任何改动。笔者分别尝试了五个不同的Momentum值:0,0.5,0.8,0.9,0.99,0.999。训练过程的曲线对比如下图所示。其中,左上图为训练损失曲线图,右上图为测试损失曲线图,左下图为Top3的测试准确度曲线图,右下图为Top1的测试准确度曲线图。在右侧的“Job Manager”中,从上至下分别对应Momentum从0变化到0.999的训练作业,并且颜色和曲线中的颜色一一对应。

从对比中可以发现,Momentum对训练过程的影响是非常明显的,尤其是当Momentum取值0.99时,整个训练过程收敛非常快,在第50个迭代步,Top3的准确度就达到了90%以上,比μ=0.8的情况要高出10个百分点左右。当Momentum从0.99增加至0.999时,对收敛过程几乎没有促进作用了,因此,一般Momentum的取值为0.9~0.999之间。

总结

通过上述的关于Momentum的介绍和实验对比,相信各位对Momentum的作用有了比较直观的认识。最后,让我们通过下图加深一下对Momentum的理解。假设我们有两个参数需要优化,并且两个参数的梯度变化速度不一样,水平方向的参数梯度变化比垂直方向的急剧。如果不带Momentum,那么最终的收敛速度取决于水平方向参数的梯度变化,训练过程比较缓慢。当带上Momentum之后,由于参数的梯度变化受到历史速度的影响,因此水平方向的梯度变化由于其历史速度的累加而不断加速,从而能够更快地到达最优点,最终加速整个训练过程的收敛。

下期预告:利用DLP探索深度学习(2): Adam、AdaGrad、Nesterov以及Rmsprop之间的对比

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180311G0HV2B00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券