|
|
|
|
移动端

2.5.2 冲量(Momentum)

《深度学习与计算机视觉:算法原理、框架应用与代码实现》本书全面介绍了深度学习及计算机视觉中最基础的知识,并结合最常见的应用场景和大量实例,带领读者进入丰富多彩的计算机视觉领域。作为一本“原理+实践”教程,本书在讲解原理的基础上,通过有趣的实例带领读者一步步亲自动手,不断提高动手能力,而不是枯燥和深奥原理的堆砌。本节为大家介绍冲量(Momentum)。

作者:叶韵来源:机械工业出版社|2017-10-23 16:56

【新品产上线啦】51CTO播客,随时随地,碎片化学习

2.5.2  冲量(Momentum)

1.惯性和冲量

对于梯度下降法存在的难题,也可以从对自然界的物理过程中找到线索。想象一下山谷中的一颗圆形小松果,如果从高处滚动到了一片很平缓的区域,它并不会因为平缓而停止滚动。如果到了一个小的坑里,也会继续滚动,但是否能滚动出小坑继续前进,取决于当前的速度。这两种情况帮助小松果继续前进的是惯性,在梯度下降法中,一个类似的手段也可以帮助改进,就是冲量(momentum)。

其实从物理意义上来看momentum这个词翻译成动量也许更加合适,不过多数中文教材中都翻译成冲量,所以这里也沿用这个翻译。在理解的时候最好还是从动量/惯性的角度来看,加入冲量之后的梯度下降算法改进版如下:

算法2-2  考虑冲量的梯度下降法

给定目标函数f(x)和初始点x0,以及初始动量v0

重复:

△xt  =  -▽f(xt)

Vt+1  =  γvt  +  η△xt

xt+1  =  xt  +  vt+1

停止,如果达到停止标准

在梯度下降算法的基础上,一个代表上一时刻的冲量的项V被加入进来,并且每一次迭代都会乘上一个衰减系数γ。在冲量项的影响下,算法迭代就相当于带上了“惯性”,前次迭代位置前进的方向可以影响到下一次迭代。这样当算法经过鞍点或是停滞区时,就不至于停下来做过于缓慢的迭代,而经过并不是很“深”的极值时,就可以借助冲量项带来的“惯性”冲出极值所在的“坑”。

除此以外因为算法的改变,停止算法的标准也不再是梯度小于一个阈值。停止算法的标准可以是冲量小于某个值,梯度小于某个值,或是用户给定一个次数就停止。

2.Nesterov Accelerated Gradient Descent方法(NAG)

NAG是最基本的冲量梯度下降法的一个改进,其提出者Yurii Nesterov是凸优化领域的一位神级人物。算法如下:

算法2-3  Nesterov冲量梯度下降法

给定目标函数f(x)和初始点x0,以及初始动量v0

重复:

△xt  =  -▽f(xt+γvt)

vt+1  =  γvt  +  η△xt

xt+1  =  xt  +  vt+1

停止,如果达到停止标准

所以和基本的基于加入冲量的梯度下降算法2-2比起来,只是求梯度的位置不再是当前位置,而是假设如果沿着当前冲量乘以衰减系数前进一步之后所在的位置,如图2-48所示。

直观想象一下这个过程,好比骑了一辆山地自行车,向下俯冲。一般的冲量法就像是骑到一个地方,根据当前的坡度,决定车往哪个方向拐。而NAG则是用眼睛看一下前方,判断出坡度,然后根据前方的坡度决定车往哪个方向拐。也就是说,根据预判对当前的路径进行修正,避免走冤枉路。

NAG在凸优化问题中,尤其是对平滑度较高的函数有很好的效果。不过在深度学习的优化问题中,NAG是不是更好就不一定了,还需要尝试。

这里也简单提一句凸优化(Convex Optimization),和深度学习中一般的优化问题比起来,凸优化是一个相对既简单又复杂的领域。简单来说可以认为凸优化就是要求解的函数局部最小就是全局最小。其实是一般优化问题的一个子问题,所以需要考虑的问题就相对简单了。不过比起机器学习中接触的优化手段而言,凸优化也是一个很难的领域,在凸优化的限定下,发展出了很多复杂而严谨的方法,但这些方法被应用到深度学习中的很少,NAG算是一个。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

SQL实用简明教程(第2版)

SQL(结构化查询语言)是数据库系统的通用语言,利用它可以用几乎同样的语句在不同的数据库系统上执行同样的操作,在数据库系统的开发中有着...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊