Coursera Deeplearning.ai「深度学习」课程笔记L2.W2优化算法

1. Mini-batch梯度下降 (Mini-batch gradient descent)

mini-batch梯度下降大小选择

  • 如果训练集较小,直接使用 batch 梯度下降法,一般小于 2000 个样本
  • 如果样本数目较大,一般的 mini-batch 大小为 64 到 512,即 2 n 2^n 2n大小

2. 指数加权平均数 (exponentially weighted averages)

v t = β v t − 1 + ( 1 − β ) θ t {{v}_{t}}=\beta {{v}_{t-1}}+(1-\beta ){{\theta }_{t}} vt=βvt1+(1β)θt
温度的指数加权平均数显示

3. 动量梯度下降法 (Gradient descent with Momentum)

动量梯度下降法可以加快梯度下降速度,常被使用

在第 t t t次迭代中:

  • 在当前的mini-batch中计算 d W dW dW d b db db
  • v d W = β v d W + ( 1 − β ) d W v_{dW}=\beta v_{dW}+(1-\beta)dW vdW=βvdW+(1β)dW
  • v d b = β v d b + ( 1 − β ) d b v_{db}=\beta v_{db}+(1-\beta)db vdb=βvdb+(1β)db
  • W = W − α v d W , b = b − α v d b W=W-\alpha v_{dW}, b=b-\alpha v_{db} W=WαvdW,b=bαvdb

超参数: α , β \alpha, \beta α,β,其中 β \beta β常用值是 β = 0.9 \beta=0.9 β=0.9

v d W v_{{dW}} vdW初始值是0,要注意到这是和 d W dW dW拥有相同维数的零矩阵,也就是跟 W W W拥有相同的维数, v d b v_{db} vdb的初始值也是向量零,所以和 d b db db拥有相同的维数,也就是和 b b b是同一维数。

4. RMSprop (root mean square prop)

可以加速梯度下降速度

在第 t t t次迭代中:

  • 计算当下mini-batch的微分 d W dW dW d b db db
  • S d W = β S d W + ( 1 − β ) d W 2 S_{dW}= \beta S_{dW} + (1 -\beta) {dW}^{2} SdW=βSdW+(1β)dW2,(平方是针对这一整个符号操作的)
  • S d b = β S d b + ( 1 − β ) d b 2 S_{db}= \beta S_{db} + (1 - \beta){db}^{2} Sdb=βSdb+(1β)db2,(平方是针对整个符号的操作的)
  • 更新参数值, W : = W − a d W S d W W:= W -a\frac{dW}{\sqrt{S_{dW}}} W:=WaSdW dW b : = b − α d b S d b b:=b -\alpha\frac{db}{\sqrt{S_{db}}} b:=bαSdb db

要确保你的算法不会除以0,如果 S d W S_{dW} SdW的平方根趋近于0怎么办?为了确保数值稳定,在实际操练的时候,你要在分母上加上一个很小很小的 ε \varepsilon ε 1 0 − 8 10^{-8} 108是个不错的选择

5. Adam优化算法 (Adam optimization algorithm)

初始化, v d W = 0 v_{dW} = 0 vdW=0 S d W = 0 S_{dW} =0 SdW=0 v d b = 0 v_{db} = 0 vdb=0 S d b = 0 S_{db} =0 Sdb=0
在第 t t t次迭代中:

  • 用当前的mini-batch计算 d W dW dW d b db db
  • v d W = β 1 v d W + ( 1 − β 1 ) d W v_{dW}= \beta_{1}v_{dW} + ( 1 - \beta_{1})dW vdW=β1vdW+(1β1)dW v d b = β 1 v d b + ( 1 − β 1 ) d b v_{db}= \beta_{1}v_{db} + ( 1 -\beta_{1} ){db} vdb=β1vdb+(1β1)db
  • S d W = β 2 S d W + ( 1 − β 2 ) ( d W ) 2 S_{dW}=\beta_{2}S_{dW} + ( 1 - \beta_{2}){(dW)}^{2} SdW=β2SdW+(1β2)(dW)2 S d b = β 2 S d b + ( 1 − β 2 ) ( d b ) 2 S_{db} =\beta_{2}S_{db} + \left( 1 - \beta_{2} \right){(db)}^{2} Sdb=β2Sdb+(1β2)(db)2
  • v d W corrected = v d W 1 − β 1 t v_{dW}^{\text{corrected}}= \frac{v_{dW}}{1 - \beta_{1}^{t}} vdWcorrected=1β1tvdW v d b corrected = v d b 1 − β 1 t v_{db}^{\text{corrected}} =\frac{v_{db}}{1 -\beta_{1}^{t}} vdbcorrected=1β1tvdb (偏差修正)
  • S d W corrected = S d W 1 − β 2 t S_{dW}^{\text{corrected}} =\frac{S_{dW}}{1 - \beta_{2}^{t}} SdWcorrected=1β2tSdW S d b corrected = S d b 1 − β 2 t S_{db}^{\text{corrected}} =\frac{S_{db}}{1 - \beta_{2}^{t}} Sdbcorrected=1β2tSdb (偏差修正)
  • W : = W − a v d W corrected S d W corrected + ε W:= W - \frac{a v_{dW}^{\text{corrected}}}{\sqrt{S_{dW}^{\text{corrected}}} +\varepsilon} W:=WSdWcorrected +εavdWcorrected
  • b : = b − α v db corrected S db corrected + ε b:=b - \frac{\alpha v_{\text{db}}^{\text{corrected}}}{\sqrt{S_{\text{db}}^{\text{corrected}}} +\varepsilon} b:=bSdbcorrected +εαvdbcorrected

超参数的选择:

  • α \alpha α:需要调试
  • β 1 = 0.9 \beta_{1}=0.9 β1=0.9 (缺省值),是 d W dW dW d b db db的指数加权平均数,是Momentum涉及的项
  • β 2 = 0 、 999 \beta_{2}=0、999 β2=0999 (缺省值),是 ( d W ) 2 {(dW)}^{2} (dW)2 ( d b ) 2 {(db)}^{2} (db)2的指数加权平均值,是RMSprop涉及的项
  • ε = 1 0 − 8 \varepsilon =10^{-8} ε=108 (缺省值)

6. 学习率衰减 (Learning rate decay)

拆分成不同的 mini-batch,第一次遍历训练集叫做第一代,第二次就是第二代,以此类推。
学习率衰减有以下几种:

  • a = 1 1 + d e c a y _ r a t e ∗ e p o c h _ n u m a 0 a= \frac{1}{1 + {decay\_rate} * {epoch\_num}}a_{0} a=1+decay_rateepoch_num1a0 ( d e c a y _ r a t e {decay\_rate} decay_rate称为衰减率, e p o c h _ n u m {epoch\_num} epoch_num为代数, α 0 \alpha_{0} α0为初始学习率)
  • a = 0.95 epoch-num a 0 a ={0.95}^{\text{epoch-num}} a_{0} a=0.95epoch-numa0 (指数衰减)
  • a = k epoch-num a 0 a =\frac{k}{\sqrt{\text{epoch-num}}}a_{0} a=epoch-num ka0 或者 a = k t a 0 a =\frac{k}{\sqrt{t}}a_{0} a=t ka0 t t t为mini-batch的数字)
  • 离散下降(discrete stair cease),即某个步骤有某个学习率,一会之后,学习率减少了一半,一会儿减少一半,一会儿又一半
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值