资讯专栏INFORMATION COLUMN

【DL-CV】更高级的参数更新/优化(二)

glumes / 1345人阅读

续【DL-CV】更高级的参数更新(一)

【DL-CV】正则化,Dropout<前篇---后篇>【DL-CV】浅谈GoogLeNet(咕咕net)

Adagrad

全名 Adaptive gradient algorithm ,翻译过来就是“适应梯度算法”,该算法能根据梯度中偏导数的大小给不同的偏导数以不同的学习率,偏导数大(小)的给个小(大)的学习率,以此来减少参数更新时的摆动。

其核心是引入一个参数对历次的梯度的平方进行累加,在更新阶段,基础学习率将除以这个参数的开方。这样大梯度会因为积累大而分得小的学习率,小梯度因为积累小而分得较大的学习率
$$s_{t+1} = s_{t}+ abla_x L(x_t)^2$$
$$x_{t+1}=x_t-{alphaover sqrt {s_{t+1}}+epsilon} abla_x L(x_t)$$
其中$epsilon$是一个很小的数,为了防止除法时分母出现零,一般设为1e-4到1e-8之间。下面是代码实现


缺点:梯度平方的累计值在训练过程中不断增大,作为分母被除了以后学习率衰减过快,更新变慢

RMSprop

RMSprop 是 Geoff Hinton 提出的一种自适应学习率方法,目的是为了解决 Adagrad 学习率急剧下降的问题。其在对梯度平方进行累加时会进行衰减处理(其实是指数加权平均),解决学习率急降的问题的同时又保留了 Adagrad 调节学习率的优点
$$s_{t+1} = eta s_t +(1-eta) abla_x L(x_t)^2$$
$$x_{t+1}= x_t-{alphaover sqrt {s_{y+1}+}epsilon}$$
$gamma$ 通常为0.9/0.99


以上两种方法解决了SGD的问题2️⃣

Adam

两种动量方法通过引入“速度”解决了问题1️⃣;Adagrad 和 RMSprop 通过引入“梯度平方”解决了问题2️⃣,各有千秋。为何不把两者结合起来然后一次满足两个愿望呢?这么一想,Adam就出来了。

Adam 相当于 RMSprop + Momentum,他除了像 RMSprop 一样存储了过去梯度平方的指数衰减平均值 ,也像 momentum 一样保持了过去梯度的指数衰减平均值:
$$v_{t+1} = eta_1v_t + (1-eta_1) abla_x L(x_t)$$
$$s_{t+1} = eta_2s_t + (1-eta_2) abla_x L(x_t)^2$$
如果 v 和 s 被初始化为 0 向量,那它们就会向 0 偏置,所以还需要偏差校正来抵消这些偏差:
$$hat v_{t+1} = {v_{t+1}over 1-eta_1^{t+1}}$$
$$hat s_{t+1} = {s_{t+1}over 1-eta_2^{t+1}}$$
最后的更新就是:
$$x_{t+1}=x_t-{alpha hat v_{t+1}oversqrt{hat s_{t+1}}+epsilon}$$
推荐值$eta_1=0.9$,$eta_2=0.99$,$alpha=10^{-3}/5·10^{-4}$代码实现:


Adam真的是一个非常棒的算法,实践表明,Adam 比其他适应性学习方法效果要好,几乎成为标配默认的算法啦。所以长篇大论了这么久之后的结论是——推荐首选Adam

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/20378.html

相关文章

  • DL-CV高级参数新/优化

    续【DL-CV】更高级的参数更新(一) 【DL-CV】正则化,Dropout【DL-CV】浅谈GoogLeNet(咕咕net) Adagrad 全名 Adaptive gradient algorithm ,翻译过来就是适应梯度算法,该算法能根据梯度中偏导数的大小给不同的偏导数以不同的学习率,偏导数大(小)的给个小(大)的学习率,以此来减少参数更新时的摆动。 其核心是引入一个参数对历次的梯度的平方...

    jone5679 评论0 收藏0
  • DL-CV高级参数新/优化

    续【DL-CV】更高级的参数更新(一) 【DL-CV】正则化,Dropout【DL-CV】浅谈GoogLeNet(咕咕net) Adagrad 全名 Adaptive gradient algorithm ,翻译过来就是适应梯度算法,该算法能根据梯度中偏导数的大小给不同的偏导数以不同的学习率,偏导数大(小)的给个小(大)的学习率,以此来减少参数更新时的摆动。 其核心是引入一个参数对历次的梯度的平方...

    Big_fat_cat 评论0 收藏0
  • DL-CV高级参数新/优化

    续【DL-CV】更高级的参数更新(一) 【DL-CV】正则化,Dropout【DL-CV】浅谈GoogLeNet(咕咕net) Adagrad 全名 Adaptive gradient algorithm ,翻译过来就是适应梯度算法,该算法能根据梯度中偏导数的大小给不同的偏导数以不同的学习率,偏导数大(小)的给个小(大)的学习率,以此来减少参数更新时的摆动。 其核心是引入一个参数对历次的梯度的平方...

    lemon 评论0 收藏0
  • DL-CV高级参数新/优化(一)

    摘要:对所有参数更新时应用同样的学习率梯度由许多偏导数组成,对应着各个参数的更新。对于偏导数大的,我们希望配个小的学习率给他对于偏导数小的,我们希望配个大的学习率给他,这样各个参数都能获得大致相同的更新幅度,提高网络的健壮性。 后续【DL-CV】更高级的参数更新/优化(二) 【DL-CV】正则化,Dropout【DL-CV】浅谈GoogLeNet(咕咕net) 原版SGD的问题 原味版的S...

    tinyq 评论0 收藏0
  • DL-CV高级参数新/优化(一)

    摘要:对所有参数更新时应用同样的学习率梯度由许多偏导数组成,对应着各个参数的更新。对于偏导数大的,我们希望配个小的学习率给他对于偏导数小的,我们希望配个大的学习率给他,这样各个参数都能获得大致相同的更新幅度,提高网络的健壮性。 后续【DL-CV】更高级的参数更新/优化(二) 【DL-CV】正则化,Dropout【DL-CV】浅谈GoogLeNet(咕咕net) 原版SGD的问题 原味版的S...

    SmallBoyO 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<