Adam优化算法

Adam Optimization Algorithm.

Adam refer to Adaptive Moment estimation.

要看懂这篇博文,你需要先看懂:

整理并翻译自吴恩达深度学习系列视频:
https://mooc.study.163.com/learn/2001281003?tid=2001391036#/learn/content?type=detail&id=2001701052&cid=2001694315

RMSprop and the Adam optimization algorithm, is one of those rare algorithms that has really stood up, and has been shown to work well across a wide range of deep learning architectures.
And the Adam optimization algorithm is basically taking momentum and RMSprop and putting them together.

Adam优化算法

基本思想是把动量梯度下降RMSprop放在一起使用。

算法描述

这个算法描述来自花书《deep learning》,与下面的计算公式不共享参数记号。
在这里插入图片描述

Adam优化算法计算方法

动量梯度下降部分:
v d w = β 1 v d w + ( 1 − β 1 ) d W v_{dw}=\beta_1 v_{dw}+(1-\beta_1)dW vdw=β1vdw+(1β1)dW 即指数加权平均,下同。
v d b = β 1 v d b + ( 1 − β 1 ) d b v_{db}=\beta_1 v_{db}+(1-\beta_1)db vdb=β1vdb+(1β1)db

RMSprop部分:
S d w = β 2 S d w + ( 1 − β 2 ) d W 2 S_{dw}=\beta_2S_{dw}+(1-\beta_2)dW^2 Sdw=β2Sdw+(1β2)dW2<- element-wise 即平方版本的指数加权平均,下同
S d b = β 2 S d b + ( 1 − β 2 ) d b 2 S_{db}=\beta_2S_{db}+(1-\beta_2)db^2 Sdb=β2Sdb+(1β2)db2 <- element-wise

起始bias修正:
v d w c o r r e c t = v d w 1 − β 1 t v_{dw}^{correct}=\frac{v_{dw}}{1-\beta_1^t} vdwcorrect=1β1tvdw
v d b c o r r e c t = v d b 1 − β 1 t v_{db}^{correct}=\frac{v_{db}}{1-\beta_1^t} vdbcorrect=1β1tvdb
S d w c o r r e c t = S d w 1 − β 2 t S_{dw}^{correct}=\frac{S_{dw}}{1-\beta_2^t} Sdwcorrect=1β2tSdw
S d b c o r r e c t = S d b 1 − β 2 t S_{db}^{correct}=\frac{S_{db}}{1-\beta_2^t} Sdbcorrect=1β2tSdb

更新parameter变成:
W = W − α v d w c o r r e c t ∗ d W S d w c o r r e c t + ϵ W = W-\alpha \frac{v_{dw}^{correct}*dW}{\sqrt{S_{dw}^{correct}+\epsilon}} W=WαSdwcorrect+ϵ vdwcorrectdW 分子来自动量梯度下降 分母来自RMSprop 下同
b = b − α v d b c o r r e c t ∗ d b S d b c o r r e c t + ϵ b = b-\alpha \frac{v_{db}^{correct}*db}{\sqrt{S_{db}^{correct}+\epsilon}} b=bαSdbcorrect+ϵ vdbcorrectdb

解释说明

Adam = adaptive moment estimation,自适应性炬估计。
β 1 \beta_1 β1计算的是导数的均值(使用加权指数平均)。这称为第一炬(the first moment)。
β 2 \beta_2 β2计算的是平方版本的指数加权平均。这称为第二炬(the second moment)。

这是Adam名称的由来,大家一般称之为:Adam Authorization Algorithm(Adam权威算法)。

默认参数值选取

  • α \alpha α
    学习速率是你需要是调参的。
  • β 1 = 0.9 \beta_1=0.9 β1=0.9
    -> ( d w ) (dw) (dw) moving average, weighted average. momentum light term.
  • β 2 = 0.999 \beta_2=0.999 β2=0.999 -> d w 2 dw^2 dw2
    -> ( d w 2 ) (dw^2) (dw2) RMSprop term. 0.999出自Adam paper,即该算法提出者。
  • ϵ = 1 0 − 8 \epsilon=10^{-8} ϵ=108
    几乎没有人去调试这个值,大家都使用 1 0 − 8 10^{-8} 108
### 关于Adam优化算法 #### Adam优化算法简介 Adam是一种用于随机优化的方法,在机器学习特别是深度学习领域广泛应用。该方法结合了AdaGrad能够有效处理稀疏梯度的优点以及RMSProp应对在线问题的能力[^1]。 #### 工作原理 Adam通过计算梯度的一阶矩估计(均值)和二阶矩估计(未中心化的方差),来动态调整每个参数的学习率。具体来说,对于时间步$t$处的参数更新规则如下: - 计算一阶矩估计$m_t$ - 计算二阶矩估计$v_t$ 其中,$\beta_1,\ \beta_2\in[0,1)$分别是控制指数衰减率的超参数,默认设置通常为$(\beta_1=0.9,\ \beta_2=0.999)$;而$\epsilon>0$是为了防止除零错误的小常数项,一般取值为$1e^{-8}$。最终参数更新表达式可以写作: ```python m_t = beta1 * m_{t-1} + (1 - beta1) * g_t v_t = beta2 * v_{t-1} + (1 - beta2) * (g_t ** 2) # 偏置校正 m_hat = m_t / (1 - beta1**t) v_hat = v_t / (1 - beta2**t) theta_t = theta_{t-1} - alpha * m_hat / (sqrt(v_hat) + epsilon) ``` 这里`alpha`代表基础学习速率,`g_t`表示当前时刻的目标函数相对于模型参数的梯度向量。 #### 应用场景 由于其良好的收敛性能和较低内存消耗特性,使得Adam非常适合应用于大规模数据集上的神经网络训练过程之中。此外,它也适用于非稳态目标环境下的最优化求解任务。 #### 解读与理解 建立可解释的基础线性或逻辑回归作为对比基准有助于加深对更复杂模型的理解并指导特征工程方向的选择。因此,在实际应用中先尝试简单的基线模型再逐步过渡到像Adam这样的高级技术不失为一种明智的做法[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值