Adam 优化算法

在深度学习的发展过程中出现过很多优化算法,但是有些优化算法并不能被非常广泛地使用,因此出现了一些质疑优化算法的声音。但是当有人尝试将动量梯度下降和 RMSprop 结合起来后,人们发现这种新的优化算法效果非常好而且在很多问题上的表现都不错,后来便广泛地使用了起来。

Adam 算法本质上是将动量梯度下降算法和 RMSprop 结合了起来。

如果读过前几篇文章,那么对下面的算法描述一定不陌生:

第 t 次迭代:
        ①. 在当前的 mini-batch 上计算 dW, db
        ②. v d W = β 1 ⋅ v d W + ( 1 − β ) ⋅ d W v_{dW} = β_1 · v_{dW} + (1 - β) · dW vdW=β1vdW+(1β)dW v d b = β 1 ⋅ v d b + ( 1 − β ) ⋅ d b v_{db} = β_1 · v_{db} + (1 - β) · db vdb=β1vdb+(1β)db
        ③. s d W = β 2 ⋅ s d W + ( 1 − β ) ⋅ d W 2 s_{dW} = β_2 · s_{dW} + (1 - β) · dW^2 sdW=β2sdW+

### 关于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]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值