前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习笔记4-模型优化算法

深度学习笔记4-模型优化算法

作者头像
caoqi95
发布2019-03-27 17:37:32
6020
发布2019-03-27 17:37:32
举报
文章被收录于专栏:caoqi95的记录日志

「这里记录的是吴恩达Andrew Ng在深度学习课程中提到过的优化算法,以及其他受推荐的优化算法。以及日常感谢Andrew Ng的视频」

梯度下降的优化

1.指数加权平均
  • 引入概念 在讲下面几个优化算法之前,先引出指数加权平均的概念。指数加权平均是一种简称,概念引自统计学中的指数加权移动平均EWMA(Exponentially Weighted Moving Average)。

上面这张图是伦敦某一年的气温图,这张图看起来很凌乱,如果要计算趋势,也就是气温的局部平均值,或者说移动平均值,就需要这样做:先设定v0=0,然后在后一天的计算中,v0 乘以0.9的加权数再加上(1-0.9)乘以当天温度θ1,即:v1=0.9v0+(1-0.9)θ1,同理v2=0.9v1+(1-0.9)θ2, v3=0.9v2+(1-0.9)θ3,......,vt=0.9vt-1+(1-0.9)θt,如此计算,用红线作图的话就能得到下图结果,这样就得到了气温的趋势,即移动平均值。

引入一个参数β,计算公式可以表示为:vt = βvt-1+(1-β)θt 当β=0.9的时候,得到的是平均过去1/(1-β)=10天的气温值,如下图红线所示;极端一点,当β=0.98时,平均的是过去1/(1-β)=50天的气温值,如下图绿色所示;再取另一个极端,当β=0.5时,平均的是过去1/(1-β)=2天的气温值,如下图黄色线所示。

从图中可以看出绿色的线比较平滑,因为它多平均了几天的气温,波动就会比较小;缺点就是曲线较之前发生了平移,这是因为给了前一天很高的加权值,而后一天的加权值就相对较小了。从图中可以看出黄色的线波动很大,这是因为它才平均了两天的气温值,存在很大的噪音。

  • 理解指数加权平均 1)列举几个式子: v100 = 0.9v99 + 0.1θ100 v99 = 0.9v98 + 0.1θ99 v98 = 0.9v97 + 0.1θ98 ... 2)层层带入后,得到下面的式子: v100 = 0.1 θ100 + 0.1×0.9 θ99 + 0.1×0.92 θ98 + 0.1×0.93 θ97 + ... 这样的结果就相当于是拿每一天的气温数据和一个衰减的指数函数对应的每个元素相乘再相加的结果。其中每项气温数据前的系数是成指数衰减的,所以称为指数加权平均,且每项气温数据前的系数之和接近于1。之前的计算平均的气温天数的公式为1/(1-β),是从β1/(1-β)≈1/e这个式子中得出的。也就是说,当β取0.9的时候,10天之后加权系数下降到最先系数的三分之一(1/e ,e≈2.7)
  • 指数加权平均的偏差修正 在实际计算过程中,会得到如下图紫色的加权平均线,在曲线的初期阶段会和绿色的线存在偏差。可以用公式vt / (1 - βt)来修正。
2.Momentum

Momentum,也称为Momentum梯度下降法,是一种快于标准梯度下降法的一种算法。Momentum所采用的方法就是应用上面提到的的指数加权平均来计算梯度的指数加权平均,并利用这个梯度来更新权重和偏置。

在上面这张图中,椭圆形状代表损失函数,中间的红点表示最小值,标准的梯度下降(如蓝线所示),一步步更新上下摆动到接近于最小值,正是因为这样的上下摆动拖慢了到达最小值附近的速度,也防止我们应用较大的学习速率。如果采用较大的学习速率,摆动就会超出函数的范围(如紫色线所示)。所以要采取的策略就是使垂直方向上的学习速度减慢,使水平方向上的学习速度加快。Momentum就是这样的一种策略。

具体做法是:

  • 初始化vdw=0,vdb=0(维数与w,b保持一致) 在t次迭代中:
    • 计算dw,db;
    • 然后应用上面的指数加权平均的公式计算vdw=βvdw+(1-β)dw,也就是dw的平均数;同理计算db的平均数vdb=βvdb+(1-β)db
    • 最后更新权重w = w-αvdw和偏置b = b-αvdb ,这里不需要使用偏差修正。

采用Momentum能够使垂直方向上的学习变慢的原因是计算上下摆动的平均值,平均过程中垂直方向上正负值抵消,最后可以使平均值接近于0。能够说明水平方向上加快是因为计算的所有的微分都指向水平方向的右侧,结果计算的横轴的平均值依然很大。最后在几次迭代后就能够快速的到达最小值附近(如上图红线所示)

3.RMSprop

还有一个算法叫做RMSprop,全称是root mean square prop,也是一种能加快梯度下降的算法。策略也是在垂直方向上减慢学习速度,在水平方向上则加快学习速度。实行过程与Momentum相似,但有一点差异。

具体做法是:

  • 初始化sdw=0,sdb=0(维数与w,b保持一致) 在t次迭代中:在t次迭代中:
    • 计算dw,db;
    • 应用上面的指数加权平均的公式计算sdw=βsdw+(1-β)dw2;同理计算sdb=βsdb+(1-β)db2
    • 最后更新权重w = w-αdw/sqrt(sdw+ε)和偏置b = b-αdb/sqrt(sdb+ε) (常用ε=10-8,加上ε是防止分母为零的情况出现)
4.Adam

Adam基本上就是结合了Momentum和RMSprop这两种算法。全称是Adaptive Moment Estimation。

具体做法是:

  • 初始化vdw=0,vdb=0,sdw=0,sdb=0(维数与w,b保持一致) 在t次迭代中:
    • 计算dw,db;
    • 计算vdw=β1vdw+(1-β1)dwvdb=β1vdb+(1-β1)db
    • 计算sdw=β2sdw+(1-β2)dw2sdb=β2sdb+(1-β2)db2
    • 对vdw,vdb进行偏差修正: vdwcorrected=vdw/(1-β1)vdbcorrected=vdb/(1-β1)
    • 对sdw,sdb进行偏差修正: sdwcorrected=vdw/(1-β2)sdbcorrected=sdb/(1-β2)
    • 最后更新权重和偏置: w = w-αdw/sqrt(sdwcorrected+ε)b = b-αdb/sqrt(sdbcorrected+ε) (常用ε=10-8,加上ε是防止分母为零的情况出现)

对于超参数的选择:

  • α:学习速率一直很重要,需要不断地调试
  • β1:一般使用0.9,当做缺省值使用
  • β1:Adam论文的作者推荐使用0.999,当做缺省值使用
  • ε:不是特别重要的参数,并不会影响算法的结果,也不用去调试它,Adam论文的作者建议使用10-8。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.02.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 梯度下降的优化
    • 1.指数加权平均
      • 2.Momentum
        • 3.RMSprop
          • 4.Adam
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档