【深度学习】第二阶段 —— 第二课


声明: 此笔记为吴恩达(Andrew Ng)的深度学习课程学习后的总结,会根据自己的学习进度更新。

优化算法

  1. Mini-batch梯度下降法

    • 巨大数据集中一个个数据迭代费事太久,将数据集分为更多的小组(例如:500百万个数据分为5000组一组一千个),对每个组进行迭代
    • 梯度下降中cost的变化图如下:
      在这里插入图片描述
    • 如何去选择你的mini-batch的大小:
      ① 当你的mini-batch大小等于样本总数“m”时,相当于只有一组
      ② 当你的mini-batch大小等于“1”的 时候,相当于有m组。
      其训练迭代图如下:
      在这里插入图片描述
      ③ 自然而然,选取应该在中间不太大的值
  2. 指数加权平均

    • 以London一年的温度分布为例,如图:
      在这里插入图片描述
      线条就是按照加权平均来计算的温度值:

      V t = β V t − 1 + ( 1 − β ) θ t V_t = \beta V_{t-1} + (1-\beta)\theta_t Vt=βVt1+(1β)θt

      其中 β \beta β的值在实际总一般取0.98,实际上就是绿线,此时就是 V 0 V_0 V0的值为实际记录值

    • 偏差修正(Bias Correction)
      实际上,在用公式推导的时候 V 0 = 0 V_0=0 V0=0,那么就是利用偏差修正进行前期的误差修正,使其达到更吻合的绿线。
      计算表达下: V t 1 − β t \frac{V_t}{1-\beta^t} 1βtVt t = 2 : 1 − β t = 1 − ( 0.098 ) 2 = 0.0396 t=2:1-\beta^t = 1- (0.098)^2=0.0396 t=2:1βt=1(0.098)2=0.0396,这样计算出来的 V t V_t Vt在前期会更接近实际值
    • 在实际情况中,大多数人宁愿熬过初始时期,拿到偏差的估测继续计算下去,因为后面的拟合度也不差
  3. 其他加速梯度下降法

    • 动量梯度
      梯度下降示意图:
      在这里插入图片描述
      在纵向上,需要尽可能的缩小摆动,横向上,尽可能加快速度,这反映到公式上如下
      On iteration t:
      Compute dW,db on current mini-batch

      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 w b + ( 1 − β ) d b V_{db} = \beta V_{dwb} + (1-\beta)db Vdb=βVdwb+(1β)db

    W = W − α V d w W =W - \alpha V_{dw} W=WαVdw

    b = b − α V d b b = b - \alpha V_{db} b=bαVdb

    Hyperparrameters: α   β \alpha \ \beta α β,在实际中 β \beta β的值多为0.9,而一般也不用取修正偏差,因为迭代增加到10后,影响不大了,有些参考资料中会删去 1 − β 1-\beta 1β,然后修改学习率的值来调节,Andrew Ng更偏向于不删,效果差不多的。

    • RMSProp(均方根)
      还是看上图,假设在纵轴是b,横轴是W(这样假设的理由是,只要b减小,上下的摆动就会减小,而只要W增大,梯度下降的速度也就增快了)
      On iteration t:
      Compute dW,db on current mini-batch

      S d w = β S d w + ( 1 − β ) d W 2 S_{dw} = \beta S_{dw} + (1-\beta)dW^2 Sdw=βSdw+(1β)dW2

      V d b = β V d w b + ( 1 − β ) d b 2 V_{db} = \beta V_{dwb} + (1-\beta)db^2 Vdb=βVdwb+(1β)db2

      W = W − α d w S d w W =W - \alpha \frac{dw}{ \sqrt{S_{dw}}} W=WαSdw dw

      b = b − α d b S d b b = b - \alpha \frac{db}{\sqrt{S_{db}}} b=bαSdb db

    其中dw变小,相应最后W变大,而db相反,这样就减小了摆动,而在实际操作中为了防止分母趋于0,会加上一个很小的数: S d w + ϵ \sqrt{S_{dw}+\epsilon} Sdw+ϵ 其中 ϵ = 1 0 − 8 \epsilon = 10^{-8} ϵ=108

    • Adam优化算法
      相当于结合了Momentun和RMSProp
      On iteration t:
      Compute dW,db on current mini-batch

      V d w = 0 , S d w = 0 , V d b = 0 , S d b = 0 V_{dw} = 0,S_{dw}=0,V_{db}=0,S_{db}=0 Vdw=0,Sdw=0,Vdb=0,Sdb=0

      V d w = β 1 V d w + ( 1 − β 1 ) d W   , V d b = β 1 V d b + 1 − β 1 d b (momentun) V_{dw} = \beta_1 V_{dw} + (1-\beta_1) dW \ , V_{db} = \beta_1 V_{db} +{1-\beta_1} db \tag{momentun} Vdw=β1Vdw+(1β1)dW ,Vdb=β1Vdb+1β1db(momentun)

      S d w = β 2 S d w + ( 1 − β 2 ) d W 2 , S d b = β 2 S d b + ( 1 − β 2 ) d b 2 (RMSProp) S_dw = \beta_2 S_{dw} + (1-\beta_2)dW^2, S_db = \beta_2 S_{db} + (1- \beta_2)db^2 \tag{RMSProp} Sdw=β2Sdw+(1β2)dW2,Sdb=β2Sdb+(1β2)db2(RMSProp)

      W = W − α V d w c o r r e c t S d w c o r r e c t + ϵ   , b = b − α V d b c o r r e c t S d b c o r r e c t + ϵ W = W -\alpha \frac{V^{correct}_{dw}}{\sqrt{S^{correct}_{dw}}+\epsilon} \ , b = b -\alpha \frac{V^{correct}_{db}}{\sqrt{S^{correct}_{db}}+\epsilon} W=WαSdwcorrect +ϵVdwcorrect ,b=bαSdbcorrect +ϵVdbcorrect

    Hyperparameters chice:
    α \alpha α:needs to be tune
    β 1 \beta_1 β1:0.9 (dw)
    β 2 \beta_2 β2:0.9 ( d w 2 dw^2 dw2)
    ϵ \epsilon ϵ:1e-8

  4. 学习衰减率

    • 为何要用到学习衰减率?
      当你在训练的过程中,大的“步伐”会在最优值附近大幅度的“徘徊”,在训练的后期,小的学习率有利于减小这一幅度,如图(绿线运用了学习衰减率):
      在这里插入图片描述

    • 实现方法:

      α = 1 1 + d e c a y R a t e ⋅ e p o c h N u m ⋅ α i \alpha = \frac{1}{1 + decayRate \cdot epochNum} \cdot \alpha_i α=1+decayRateepochNum1αi

    还有其他的更多的方法来实现,效果也不同

  5. 局部最优问题
    在这里插入图片描述
    总结:好马!


第二阶段第一周编程作业附上 (非本人撰写) :优化算法实战
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值