前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用动量的梯度下降法

使用动量的梯度下降法

作者头像
Steve Wang
发布2019-05-26 15:07:13
6400
发布2019-05-26 15:07:13
举报
文章被收录于专栏:从流域到海域从流域到海域

整理自吴恩达深度学习系列视频: https://mooc.study.163.com/learn/2001281003?tid=2001391036#/learn/content?type=detail&id=2001702123 In one sentence, the basic idea is to compute an exponentially weighted average of your gradients, and then use that gradient to update your weights instead 指数加权平均参考前一篇博客:https://cloud.tencent.com/developer/article/1435626

使用动量的梯度下降法

如图所示,普通的梯度下降法如图中蓝色画线所示,它在接近最优值红点时,会上下摆动,导致不能很快的收敛到红点,而且如果摆动的幅度过大还会导致发散(紫色画线所示),这也是为什么不能采用很大的learning_rate来加快学习速度。

所以我们引入了指数加权平均来计算梯度的平均值,这会抵消大部分梯度的垂直方向上的摆动,同时保留水平方向上的前进速度,使其更快收敛。使用动量的梯度下降法,“动量”,来自对它的物理上的解释,相当于在一个碗里丢一个小球,通过赋予小球动量,使其减少在碗壁上的左右摆动,让它更快到达碗底,。

使用动量的梯度下降法计算方法

在每次迭代中,我们计算:

vdw=βvdw+(1−β)dWv_{dw}=\beta v_{dw}+(1-\beta)dWvdw​=βvdw​+(1−β)dW 即指数加权平均,下同。

vdb=βvdb+(1−β)dbv_{db}=\beta v_{db}+(1-\beta)dbvdb​=βvdb​+(1−β)db

注意beta=0beta=0beta=0时,就退化成了普通的梯度下降。

起始bias修正:

因为我们取vdwv_{dw}vdw​和vdbv_{db}vdb​为零,所以一开始计算出的vdwv_{dw}vdw​和vdbv_{db}vdb​将会小于实际值,为了修正起始阶段这个偏差,使用以下计算方法:

vdw=vdw1−βtv_{dw}=\frac{v_{dw}}{1-\beta^t}vdw​=1−βtvdw​​

vdb=vdb1−βtv_{db}=\frac{v_{db}}{1-\beta^t}vdb​=1−βtvdb​​

注意随着t增大1−βt1-\beta^t1−βt越来越接近1,也就是说修正起的作用越来越小,它只在warm up阶段有效。

更新parameters的过程变为:

W=W−αvdwW = W-\alpha v_{dw}W=W−αvdw​,b=b−αvdbb = b-\alpha v_{db}b=b−αvdb​

现在,除了超参数α\alphaα,我们又多出了一个β\betaβ,但β\betaβ一般取0.9,所以你不用担心它的取值问题,你也可以尝试取其他值,但0.9已经被证明很健壮。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年12月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用动量的梯度下降法
    • 使用动量的梯度下降法计算方法
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档