《吴恩达深度学习》02改善深层神经网络:超参数调优、正则化以及优化(第2周优化算法)

02. 改善深层神经网络:超参数调优、正则化以及优化

第二周 优化算法

2.1 Mini-Batch 梯度下降法

  1. Batch 与 mini-batch 梯度下降
    (1) 向量化能够高效地处理m个样本
    (2) 将原有大规模数据集切割为同等大小的若干小规模子集,构成mini-batch
  2. mini-batch 梯度下降法

2.2 理解mini-batch 梯度下降法

  1. mini-batch梯度下降训练
    (1) Batch梯度下降与Mini-batch梯度下降对比
    《吴恩达深度学习》02改善深层神经网络:超参数调优、正则化以及优化(第2周优化算法)
  2. 选择Mini-batch规模
    (1) 若规模为m(原数据集规模),则为Batch梯度下降
    (2) 若规模为1,则为随机梯度下降(缺点:失去向量化带来的加速)
    《吴恩达深度学习》02改善深层神经网络:超参数调优、正则化以及优化(第2周优化算法)

2.3 指数加权平均

  1. 举例:伦敦气温
    《吴恩达深度学习》02改善深层神经网络:超参数调优、正则化以及优化(第2周优化算法)
  2. 指数加权平均

2.4 理解指数加权平均

  1. 指数加权平均公式
    vt=βvt1+(1β)θtv_t = \beta v_{t-1}+(1-\beta)\theta_t
    举例:v100=0.1θ100+0.1×0.9θ99+0.1×(0.9)2θ98+v_{100} = 0.1\theta_{100}+0.1\times0.9\theta_{99}+0.1\times(0.9)^2\theta_{98}+\cdots

2.5 指数加权平均的偏差修正

  1. 偏差修正

    《吴恩达深度学习》02改善深层神经网络:超参数调优、正则化以及优化(第2周优化算法)
    红色线:β=0.9\beta=0.9
    绿色线:β=0.98\beta=0.98预期线
    紫色线:β=0.98\beta=0.98实际线

  2. 为了精确估计,尤其是在初期,用vt1βt\frac{v_t}{1-\beta^t}代替vtv_t

2.6 动量梯度下降法

  1. 梯度下降法举例
    《吴恩达深度学习》02改善深层神经网络:超参数调优、正则化以及优化(第2周优化算法)
    波动的学习进程导致学习效率降低
  2. 动量法
    在第t代中:
    计算dwdwdbdb在相应的mini-batch上
    vdw=βvdw+(1β)dwv_{dw}=\beta v_{dw}+(1-\beta)dw
    vdb=βvdb+(1β)dbv_{db}=\beta v_{db}+(1-\beta)db
    w=wαvdww = w-\alpha v_{dw}
    b=bαvdbb= b-\alpha v_{db}
  3. 实现细节
    《吴恩达深度学习》02改善深层神经网络:超参数调优、正则化以及优化(第2周优化算法)
    β\beta常用值为0.9

2.7 RMSprop

  1. RMSprop:root mean square prop
    在第t代中:
    计算dwdwdbdb在相应mini-batch上
    Sdw=βSdw+(1β)dw2S_{dw}=\beta S_{dw}+(1-\beta)dw^2
    Sdb=βSdb+(1β)db2S_{db}=\beta S_{db}+(1-\beta)db^2
    w=wαdwSdww = w - \alpha\frac{dw}{\sqrt{S_{dw}}}
    b=bαdbSdbb = b - \alpha\frac{db}{\sqrt{S_{db}}}
    实践中,通常在根号内加一个很小的数值,如10810^{-8},以防除以非常小的数。

2.8 Adam优化算法

  1. Adam优化算法
    初始化:vdw=0,Sdw=0,vdb=0,Sdb=0v_{dw} = 0, S_{dw}=0, v_{db} = 0, S_{db}=0
    在第t代中:
    计算dw,dbdw, db在相应的mini-batch上
    vdw=β1vdw+(1β1)dwv_{dw}=\beta_1v_{dw}+(1-\beta_1)dw
    vdb=β1vdb+(1β1)dbv_{db}=\beta_1v_{db}+(1-\beta_1)db
    Sdw=β2Sdw+(1β2)dw2S_{dw}=\beta_2S_{dw}+(1-\beta_2)dw^2
    Sdb=β2Sdb+(1β2)db2S_{db}=\beta_2S_{db}+(1-\beta_2)db^2
    vdwcorrected=vdw1β1tv_{dw}^{corrected}=\frac{v_{dw}}{1-\beta_1^t}
    vdbcorrected=vdb1β1tv_{db}^{corrected}=\frac{v_{db}}{1-\beta_1^t}
    Sdwcorrected=Sdw1β2tS_{dw}^{corrected}=\frac{S_{dw}}{1-\beta_2^t}
    Sdbcorrected=Sdb1β2tS_{db}^{corrected}=\frac{S_{db}}{1-\beta_2^t}
    w=wαvdwcorrectedSdwcorrectedn+ϵw = w- \alpha\frac{v_{dw}^{corrected}}{\sqrt{S_{dw}^{corrected}n}+\epsilon}
    b=bαvdbcorrectedSdbcorrectedn+ϵb = b- \alpha\frac{v_{db}^{corrected}}{\sqrt{S_{db}^{corrected}n}+\epsilon}
  2. 超参选择
    α\alpha:需要进行调试
    β1\beta_1:0.9
    β2\beta_2:0.999
    ϵ\epsilon10810^{-8}

2.9 学习率衰减

  1. 学习率衰减
    避免在学习后期步幅较大,导致在最优值附近震荡
  2. 学习率衰减
    α=11+decayrate×epochnum\alpha = \frac{1}{1+decayrate \times epochnum}
  3. 其他学习率衰减方法
    α=0.95epochnumα0\alpha = 0.95^{epochnum}\alpha_0
    α=constepochnumα0\alpha = \frac{const}{\sqrt{epochnum}}\alpha_0

2.10 局部优化的问题

  1. 神经网络中的局部最优值
    (1)示意图
    《吴恩达深度学习》02改善深层神经网络:超参数调优、正则化以及优化(第2周优化算法)
    (2)鞍点
    《吴恩达深度学习》02改善深层神经网络:超参数调优、正则化以及优化(第2周优化算法)
    (3)从低维空间得到的直觉,不能直接用到高维空间。
  2. 平稳段的问题
    (1)梯度接近0,学习速率降低。
    (2)解决方法:动量法,RMSprop