Adam 优化算法(Adam optimization algorithm)
在深度学习的历史上,包括许多知名研究者在内,提出了优化算法,并很好地解决了一些问题,但随后这些优化算法被指出并不能一般化,并不适用于多种神经网络,时间久了,深度学习圈子里的人开始多少有些质疑全新的优化算法,很多人都觉得动量(Momentum)梯度下降法很好用,很难再想出更好的优化算法。
所以RMSprop以及Adam优化算法,就是少有的经受住人们考验的两种算法,已被证明适用于不同的深度学习结构,这个算法我会毫不犹豫地推荐给你,因为很多人都试过,并且用它很好地解决了许多问题。
Adam优化算法基本上就是将Momentum和RMSprop结合在一起,那么来看看如何使用Adam算法。
使用Adam算法,首先你要初始化,v_dW=0,S_dW=0,v_db=0,S_db=0,在第t次迭代中,你要计算微分,用当前的mini-batch计算dW,db,一般你会用mini-batch梯度下降法。
接下来计算Momentum指数加权平均数,所以v_dW=β_1 v_dW+(1-β_1)dW(使用β_1,这样就不会跟超参数β_2混淆,因为后面RMSprop要用到β_2),使用Momentum时我们肯定会用这个公式,但现在不叫它β,而叫它β_1。同样v_db=β_1 v_db+(1-β_1)db。
接着你用RMSprop进行更新,即用不同的超参数β_2,S_dW=β_2 S_dW+(1-β_2)(dW)^2,再说一次,这里是对整个微分dW进行平方处理,S_db=β_2 S_db+(1-β_2 ) (db)^2。
相当于Momentum更新了超参数β_1,RMSprop更新了超参数β_2。
一般使用Adam算法的时候,要计算偏差修正,v_dW^corrected,修正也就是在偏