改善深层神经网络:超参数调整、正则化以及优化——2.8 Adam算法(Adaptive Moment Estimation)

Adam算法是Momentum和RMSprop结合在一起得到的。使用Adam算法,首先要初始化Vdw=0,Sdw=0,Vdb=0,Sdb=0V_{dw}=0,S_{dw}=0,V_{db}=0,S_{db}=0。在第t次迭代中,要计算微分,用当前的mini-batch计算dW,dbdW,db,一般会用mini-batch梯度下降法,接下来计算momentum指数加权平均数:Vdw=β1Vdw+(1β1)dWV_{dw}=\beta_1*V_{dw}+(1-\beta_1)*d_WVdb=β1Vdb+(1β1)dbV_{db}=\beta_1*V_{db}+(1-\beta_1)*db接着用RMSprop进行更新Sdw=β2Sdw+(1β2)(dw)2S_{dw}=\beta_2*S_{dw}+(1-\beta_2)*(dw)^2Sdb=β2Sdb+(1β2)(db)2S_{db}=\beta_2*S_{db}+(1-\beta_2)*(db)^2一般使用Adam算法的时候,要计算偏差修正:Vdwcorrected=Vdw1β1tV_{dw}^{corrected}=\frac{V_{dw}}{1-\beta_1^t}Vdbcorrected=Vdb1β1tV_{db}^{corrected}=\frac{V_{db}}{1-\beta_1^t}Sdwcorrected=Sdw1β2tS_{dw}^{corrected}=\frac{S_{dw}}{1-\beta_2^t}Sdbcorrected=Sdb1β2tS_{db}^{corrected}=\frac{S_{db}}{1-\beta_2^t}最后更新权重W=WαVdwcorrectedSdwcorrected+εW=W-\alpha\frac{V_{dw}^{corrected}}{\sqrt{S_{dw}^{corrected}}+\varepsilon}b=bαVdbcorrectedSdbcorrected+εb=b-\alpha\frac{V_{db}^{corrected}}{\sqrt{S_{db}^{corrected}}+\varepsilon}所以Adam算法结合了Momentum和RMSprop梯度下降法,并且是一种及其常见的学习算法,被证明能有效适用于不同的神经网络。该算法有很多很重要的超参数,超参数学习率α\alpha很重要,也经常需要调试,可以尝试一系列值,然后看哪个有效。β1\beta-1常用的缺省值为0.9,这是dWdW的移动平均数,也就是dWdW的加权平均数,这是Momentum涉及的项。至于超参数β2\beta_2,Adam算法的发明者推荐使用0.999,这是在计算(dW)2(dW)^2以及(db)2(db)^2的移动加权平均值。关于ε\varepsilon的选择其实没有很重要,Adam论文的作者建议ε\varepsilon10810^{-8}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章