神经网络优化——梯度下降常用算法:min-batch、随机梯度下降(SGD)、批量梯度下降、Momentum、move average、RMSprop、Adma

简介

  • 梯度下降算法是应用于神经网络反向传播过程的计算梯度,然后更新参数,最终找到最优的位置。本博客主要介绍随机梯度下降、批处理梯度下降、Momentum、move average、RMSprop、Adma。也是对Andrew NG 的deeplearning.ai 课程的部分内容进行总结。
    神经网络优化——梯度下降常用算法:随机梯度下降、批处理梯度下降、Moment、move average、RMSprop、Adma

算法原理

  • 1、 随机梯度下降和批量梯度下降都是基于min-batch的,他们区别是 batch size大小不一样。

    • min-batch就是把数据分为numbersminbatch\frac{numbers}{min-batch}组, numbersnumbers代表样本总数目,每组里有minbatchmin-batch个样本,随机梯度下降就是 min-batch size = 1。批处理是m-batch size >1,正常是2n2^n(64 128 256 512 1024 …),假设loss是Cross Entrophy, Cross Entrophy 公式里的mm就是等于min-batch size。按批次的计算梯度和loss,而不是所有样本处理完再计算,这样会加快训练速度.
      神经网络优化——梯度下降常用算法:随机梯度下降、批处理梯度下降、Moment、move average、RMSprop、Adma
      上图左边图像就是没采用mini-batch策略的loss图,右侧是采用mini-batch策略,可以看出来右边曲线上下抖动,那是因为参数可能对有些batcn里面数据效果比较好或差,不过只要有下降趋势,效果还是比左侧图好并训练速度更快。
  • 2、 move average
    move average也称为指数加权平均算法。用前面一个优化后的值和当前值进行加权计算,优化当前值,让曲线更加平滑。
    神经网络优化——梯度下降常用算法:随机梯度下降、批处理梯度下降、Moment、move average、RMSprop、Adma
    vt=βvt1+(1β)θt(1)v_t = \beta v_{t-1} + (1-\beta) \theta_t \qquad(1)
    vtv_t:代表tt时刻优化后的vv,上图就是tt时刻优化后温度
    vt1v_{t-1}:代表t1t-1时刻优化后的温度。
    β\beta:代表权重,正常取0.8-0.999,正常取0.9.
    θt\theta_t:代表tt时刻的值,上图就是tt时刻的温度
    利用vt1βθtv_{t-1}、 \beta、\theta_t优化vtv_{t},优化后的曲线。
    神经网络优化——梯度下降常用算法:随机梯度下降、批处理梯度下降、Moment、move average、RMSprop、Adma

    • move average 偏差纠正,由于v0v0=0v_0初始时候 v_0=0,所以v1=βv0+(1β)θ1=(1β)θ1v_1 = \beta v_0 + (1- \beta)\theta_1 = (1-\beta)\theta_1会造成刚开始时候vtv_t较小,很偏离θt\theta_t,所以要进行偏差纠正。用公式(1)计算完后,再对vtv_t纠正偏差。
      vt=vt1βt(2)v_t = \frac{vt}{1-\beta^t}\qquad(2)
  • 3、Momentum 梯度下降算法是结合move average的。在神经网络中,主要计算梯度dW,dbdW,db,α\alpha代表学习速率。这里就举例这两个。moment就是对dW,dbdW,db进行优化。vdWvdb0,WbvdW、vdb初始化为0,维度和W、b 相同
    vdW=βvdW+(1β)dW(3)vdW = \beta *vdW + (1-\beta)dW \qquad (3)
    vdb=βvdb+(1β)db(4)vdb = \beta *vdb + (1-\beta)db \qquad(4)
    W:=WαvdW(5)W := W - \alpha*vdW \qquad(5)
    b:=bαvdb(6)b := b - \alpha*vdb\qquad(6)

  • 4、RMSprop梯度下降优化算法
    RMSprop和momentum区别就是对dWdbdW db取平方,是整个矩阵平方。
    sdW=βsdW+(1β)dW2(7)sdW = \beta *sdW + (1-\beta)dW^2 \qquad (7)
    sdb=βsdb+(1β)db2(8)sdb = \beta *sdb + (1-\beta)db^2 \qquad(8)
    W:=WαdWsdW(9)W := W - \alpha*\frac{dW}{\sqrt {sdW}} \qquad(9)
    b:=bαdbsdb(10)b := b - \alpha*\frac{db}{\sqrt{sdb}}\qquad(10)

  • 5、Adam*梯度优化算法
    Adam是把momentum和RMSprop结合起来,有个特点就是他的超参比较多。β1β2α\beta_1、\beta_2、\alpha,主要是调节参数α\alpha
    vdW=β1vdW+(1β1)dW(11)vdW = \beta_1 *vdW + (1-\beta_1)dW \qquad (11)
    vdb=β1vdb+(1β1)db(12)vdb = \beta_1 *vdb + (1-\beta_1)db \qquad(12)
    sdW=β2sdW+(1β2)dW2(13)sdW = \beta_2 *sdW + (1-\beta_2)dW^2 \qquad (13)
    sdb=β2sdb+(1β2)db2(14)sdb = \beta_2 *sdb + (1-\beta_2)db^2 \qquad(14)
    W:=WαvdWsdW(15)W := W - \alpha*\frac{vdW}{\sqrt {sdW}} \qquad(15)
    b:=bαvdbsdb(16)b := b - \alpha*\frac{vdb}{\sqrt{sdb}}\qquad(16)

总结

  • 利用指数加权平均可以让梯度在纵轴方向上下抖动减小,加快训练和收敛。
    神经网络优化——梯度下降常用算法:随机梯度下降、批处理梯度下降、Moment、move average、RMSprop、Adma

相关文章: