内容简介:在深度学习的发展过程中出现过很多优化算法,但是有些优化算法并不能被非常广泛地使用,因此出现了一些质疑优化算法的声音。但是当有人尝试将动量梯度下降和 RMSprop 结合起来后,人们发现这种新的优化算法效果非常好而且在很多问题上的表现都不错,后来便广泛地使用了起来。Adam 算法本质上是将动量梯度下降算法和 RMSprop 结合了起来。如果读过前几篇文章,那么对下面的算法描述一定不陌生:
在深度学习的发展过程中出现过很多优化算法,但是有些优化算法并不能被非常广泛地使用,因此出现了一些质疑优化算法的声音。但是当有人尝试将动量梯度下降和 RMSprop 结合起来后,人们发现这种新的优化算法效果非常好而且在很多问题上的表现都不错,后来便广泛地使用了起来。
Adam 算法本质上是将动量梯度下降算法和 RMSprop 结合了起来。
如果读过前几篇文章,那么对下面的算法描述一定不陌生:
第 t 次迭代:
①. 在当前的 mini-batch 上计算 dW, db
②. \(v_{dW} = β_1 · v_{dW} + (1 - β) · dW\),\(v_{db} = β_1 · v_{db} + (1 - β) · db\)
③. \(s_{dW} = β_2 · s_{dW} + (1 - β) · dW^2\),\(s_{db} = β_2 · s_{db} + (1 - β) · db^2\)
④. \(v^{corrected}_{dW} = \cfrac{v_{dW}}{1 - \beta_1^t}\),\(v^{corrected}_{db} = \cfrac{v_{db}}{1 - \beta_1^t}\)
⑤. \(s^{corrected}_{dW} = \cfrac{s_{dW}}{1 - \beta_1^t}\),\(s^{corrected}_{db} = \cfrac{s_{db}}{1 - \beta_1^t}\)
⑥. \(W := W - α · \cfrac{v_{dW}^{corrected}}{\sqrt{s_{dW}^{corredted}} + \epsilon}\)
⑦. \(b := b - α · \cfrac{v_{db}^{corrected}}{\sqrt{s_{db}^{corredted}} + \epsilon}\)
这实际上就是将前面几篇文章里的算法放在了一起,其中为了区分清楚,动量梯度下降中的参数 \(\beta\) 替换成了 \(\beta_1\),即上面的 ②;RMSprop 中的参数 \(\beta\) 替换成了 \(\beta_2\),即上面的 ③。
另外,④、⑤ 两步的目的是消除偏差,可以参考 指数加权平均 这篇文章。
⑥、⑦ 两步中的 \(\epsilon\) 是一个非常小的数,其目的是防止分子除以 0,因此加上了一个非常小的数以防止这种情况出现。
这个算法中有很多超参数:
- \(\beta_1\):动量梯度下降中的参数,通常取 0.9
- \(\beta_2\):RMSprop 中的参数,通常取 0.999
- \(\alpha\):学习率,这个参数需要在实践中调整
- \(\epsilon\):防止分母为 0 的参数,通常取 \(10^{-8}\)
Adam 算法这个名字的由来是 Adaptive Moment Estimation,即自适应矩估计,因为动量梯度下降计算的是导数的粗略平均值,即一阶矩,而 RMSprop 计算的是导数平方的粗略平均值,即二阶矩,这就是 Adam 优化算法名字的由来。
以上就是对 Adam 优化算法的简要介绍,Adam 在很多场合都可以使用,它被嵌入在了许多深度学习框架之中,可以直接使用。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 通俗易懂--决策树算法、随机森林算法讲解(算法+案例)
- 限流算法之漏桶算法、令牌桶算法
- 什么是Paxos算法?Paxos算法是区块链核心算法之一
- 一文读懂对称加密算法、非对称加密算法和Hash算法
- 算法(六):图解贪婪算法
- 算法篇03:排序算法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Impractical Python Projects
Lee Vaughan / No Starch Press / 2018-11 / USD 29.95
Impractical Python Projects picks up where the complete beginner books leave off, expanding on existing concepts and introducing new tools that you’ll use every day. And to keep things interesting, ea......一起来看看 《Impractical Python Projects》 这本书的介绍吧!