【深度学习基础】系列博客为学习Coursera上吴恩达深度学习课程所做的课程笔记。
本文为原创文章,未经本人允许,禁止转载。转载请注明出处。
1.Adam优化算法
Adam优化算法(Adaptive Moment Estimation)和RMSprop、Momentum梯度下降法是被广泛应用并且经受了大量考验的优化算法,适用于不同的深度学习结构。
Adam优化算法实际上就是将RMSprop和Momentum结合在一起。
接下来看下Adam优化算法的详细步骤:
- 初始化:$V_{dw}=0,S_{dw}=0,V_{db}=0,S_{db}=0$
- On iteration t:
- Compute $dw,db$ using current mini-batch
- \[V_{dw}=\beta _1 V_{dw}+(1-\beta_1)dw;V_{db}=\beta _1 V_{db}+(1-\beta_1)db\]
- \[S_{dw}=\beta_2 S_{dw}+(1-\beta_2)(dw)^2;S_{db}=\beta_2 S_{db}+(1-\beta_2)(db)^2\]
- \[V^{corrected}_{dw}=V_{dw}/(1-\beta _1^t);V^{corrected}_{db}=V_{db}/(1-\beta_1 ^t)\]
- \[S^{corrected}_{dw}=S_{dw}/(1-\beta _2^t);S^{corrected}_{db}=S_{db}/(1-\beta_2 ^t)\]
- \[w:=w-\alpha \frac{V^{corrected}_{dw}}{\sqrt{S^{corrected}_{dw}}+\epsilon};b:=b-\alpha \frac{V^{corrected}_{db}}{\sqrt{S^{corrected}_{db}}+\epsilon}\]
Adam算法涉及很多超参数:
- $\alpha$:学习率,需要自行尝试得到合适的值。
- $\beta_1$:常用的值是0.9。
- $\beta_2$:Adam算法的发明者推荐使用0.999。
- $\epsilon$:Adam算法的发明者建议为$10^{-8}$。
其中超参数$\beta_1,\beta_2,\epsilon$通常使用推荐值即可,没有调整的必要,对结果影响不大。
后续提出的AdamW则可用来解决Adam优化器中L2正则化失效的问题。Adam算法参数更新的计算公式如下(和上面是一样的,只是换了种表示方式):
\[t=t+1\] \[moment\_1\_out = \beta _1 * moment\_1 + (1-\beta _1) * grad\] \[moment\_2\_out = \beta_2 * moment\_2 + (1-\beta_2) * grad * grad\] \[learning\_rate = learning\_rate * \frac{\sqrt{1-\beta_2^t}}{1-\beta_1^t}\] \[param\_out = param - learning\_rate * \frac{moment\_1}{\sqrt{moment\_2} + \epsilon}\]AdamW算法参数更新的计算公式如下:
\[t =t +1\] \[moment\_1\_out = \beta_1 * moment\_1 + (1 - \beta_1) * grad\] \[moment\_2\_out = \beta_2 * moment\_2 + (1-\beta_2) * grad * grad\] \[learning\_rate = learning\_rate * \frac{\sqrt{1-\beta_2^t}}{1-\beta_1^t}\] \[param\_out = param - learning\_rate * ( \frac{moment\_1}{\sqrt{moment\_2} + \epsilon} + \lambda * param )\]