2.8 Adam 优化算法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
Adam优化算法 (Adam Optimization Algorithm)
在深度学习的历史上,包括许多知名研究者在内,提出了优化算法,并很好地解决了一些问题,但随后这些优化算法被指出并不能一般化,并不适用于多种神经网络,时间久了,深度学习圈子里的人开始多少有些质疑全新的优化算法,很多人都觉得动量(Momentum)梯度下降法很好用,很难再想出更好的优化算法。所以RMSprop以及Adam优化算法(Adam优化算法也是本视频的内容),就是少有的经受住人们考验的两种算法,已被证明适用于不同的深度学习结构,这个算法我会毫不犹豫地推荐给你,因为很多人都试过,并且用它很好地解决了许多问题。
Adam优化算法基本上就是将Momentum和RMSprop结合在一起,那么来看看如何使用Adam算法。
使用Adam算法,首先你要初始化, ,在第 次迭代中,你要计算微分,用当前的mini-batch计算 ,一般你会用mini-batch梯度下降法。接下来计算Momentum指数加权平均数,所以 (使用 ,这样就不会跟超参数 混淆,因为后面RMSprop要用到 ),使用Momentum时我们肯定会用这个公式,但现在不叫它 ,而叫它 。同样 。
接着你用RMSprop进行更新,即用不同的超参数 , ,再说一次,这里是对整个微分 进行平方处理, 。
相当于Momentum更新了超参数 ,RMSprop更新了超参数 。一般使用Adam算法的时候,要计算偏差修正, ,修正也就是在偏差修正之后,
同样,
也使用偏差修正,也就是
最后更新权重,所以 更新后是
(如果你只是用Momentum,使用 或者修正后的 ,但现在我们加入了RMSprop的部分,所以我们要除以修正后 的平方根加上 )。
根据类似的公式更新 值,
所以Adam算法结合了Momentum和RMSprop梯度下降法,并且是一种极其常用的学习算法,被证明能有效适用于不同神经网络,适用于广泛的结构。
本算法中有很多超参数,超参数学习率 很重要,也经常需要调试,你可以尝试一系列值,然后看哪个有效。 常用的缺省值为0.9,这是 的移动平均数,也就是 的加权平均数,这是Momentum涉及的项。至于超参数 ,Adam论文作者,也就是Adam算法的发明者,推荐使用0.999,这是在计算 以及 的移动加权平均值,关于 的选择其实没那么重要,Adam论文的作者建议 为 ,但你并不需要设置它,因为它并不会影响算法表现。但是在使用Adam的时候,人们往往使用缺省值即可, 和 都是如此,我觉得没人会去调整 ,然后尝试不同的 值,看看哪个效果最好。你也可以调整 和 ,但我认识的业内人士很少这么干。
为什么这个算法叫做Adam?Adam代表的是Adaptive Moment Estimation, 用于计算这个微分( ),叫做第一矩, 用来计算平方数的指数加权平均数( ),叫做第二矩,所以Adam的名字由此而来,但是大家都简称Adam权威算法。
顺便提一下,我有一个老朋友兼合作伙伴叫做Adam Coates。据我所知,他跟Adam算法没有任何关系,不过我觉得他偶尔会用到这个算法,不过有时有人会问我这个问题,我想你可能也有相同的疑惑。
这就是关于Adam优化算法的全部内容,有了它,你可以更加快速地训练神经网络,在结束本周课程之前,我们还要讲一下超参数调整,以及更好地理解神经网络的优化问题有哪些。下个视频中,我们将讲讲学习率衰减。