美文网首页
神经网络和深度学习 - Chapter6 优化算法

神经网络和深度学习 - Chapter6 优化算法

作者: nlpming | 来源:发表于2021-09-22 17:36 被阅读0次

    Batch vs Mini-batch 梯度下降算法

    • 批梯度下降法表示,在计算网络参数的梯度时每次使用所有的训练样本。而mini-batch梯度下降法,每次计算网络参数的梯度时使用的是mini-batch个训练样本,比如batch_size设置为1000;Mini-batch梯度下降法,在处理大量的训练数据的时候会比batch梯度下降法快很多。
    batch vs min-batch梯度下降法.png
    Mini-batch梯度下降法.png

    随机梯度下降法 vs 批梯度下降法 vs Mini-batch梯度下降法

    • 随机梯度下降法,每次梯度下降更新网络参数使用一个训练样本;批梯度下降法使用所有的训练集;Mini-batch梯度下降法介于它们之间,使用batch size个训练样本执行一次梯度下降过程。
    • 批梯度下降法,每次执行梯度下降更新网络参数后,损失函数每次都是下降的;但是Mini-batch梯度下降法,损失函数是波动的并不一定每次都是下降的。
    • batch size一般设置为2的幂次方。例如64,128,256,512等;
    image.png
    image.png

    指数加权平均

    • 下图中的\theta_t代表某一天的温度值。假设v_0 = 0,则v_t计算公式如下:
      v_t = \beta v_{t-1} + (1-\beta) \theta_t

    • 假设\beta取值为0.9,则最终的曲线为如下图红色曲线所示;如果增大\beta的值相当于使用了更多天的数据做移动平均,曲线变得更加平缓。减小\beta的值,使用更少天的数据做移动平均。注意v_t的取值约等于 \frac{1}{1-\beta}天的数据做平均的结果。

      image.png
      image.png
    • 指数加权平均的理解;
      v_{100} = 0.1 \times \theta_{100} + 0.1 \times 0.9 \times \theta_{99} + 0.1 \times 0.9^2 \times \theta_{98} + 0.1 \times 0.9^3 \times \theta_{97} + ...

    image.png
    • 指数加权平均,在初期的时候计算误差较大;实际呈现的是紫色的线条,为了缓解这个问题可以在v_t的基础上乘以\frac{1}{1 - \beta^t}
      image.png

    动量法(Momentum)

    • 动量法采用指数加权平均,将历史的梯度做指数加权平均,使得学习速度更快。原始参数更新公式 w := w - \alpha \times dw,动量法将dw替换成V_{dw}用于参数更新。\beta的取值一般为0.9;
      V_{dw} = \beta V_{dw} + (1 - \beta) dw
      w := w - \alpha \times V_{dw}
    Momentum优化算法.png

    RMSprop优化算法

    • RMSprop也是为了解决梯度更新过程中的摆动,使得梯度大的参数更新的更慢点,梯度小的参数更新的更快点。具体实现也是使用指数加权平均法,公式如下。其中\epsilon是一个很小的值,防止除以0;\beta的取值一般为0.9。
      S_{dw} = \beta S_{dw} + (1 - \beta) \times dw^2
      S_{db} = \beta S_{db} + (1 - \beta) \times db^2
      w := w - \alpha \times \frac{dw}{\sqrt{S_{dw} + \epsilon }}
      b := b - \alpha \times \frac{db}{\sqrt{S_{db} + \epsilon }}
    RMSprop优化算法.png

    Adam优化算法

    • Adam优化算法将Momentum、RMSprop算法进行结合。具体公式如下;所以对于Adam优化算法有以下几个参数:\beta_1 = 0.9, \beta_2 = 0.999, \epsilon = 10^{-8}
      V_{dw} = \beta_1 V_{dw} + (1 - \beta_1) \times dw
      S_{dw} = \beta_2 S_{dw} + (1 - \beta_2) \times dw^2
      V_{dw}^{correct} = \frac{V_{ dw}}{1 - \beta_1^t}
      S_{dw}^{correct} = \frac{S_{dw}}{1 - \beta_2^t}
      w := w - \alpha \times \frac{V_{ dw}^{correct}}{\sqrt{ S_{dw}^{correct} + \epsilon }}
    Adam优化算法.png

    学习率衰减

    • 在刚开始训练的时候,学习率应该设置的大点。使得训练过程更快点,然后学习率需要不断的减小,使得模型趋近于局部最优值附近。
    • 学习率衰减的方法有很多,常见的是跟epoch_num成反比,然后再加上一个衰减系数decay_rate。
    • 另外一种常用的学习率衰减策略,就是在warmup_steps内学习率先线性递增;之后再指数衰减。

    \alpha = \frac{1}{1 + decay\_rate * epoch \_num} \times \alpha_0
    \alpha = 0.95^{epoch\_num} \times \alpha_0

    学习率衰减.png
    image.png 带warmup的学习率衰减策略.png

    深度学习中局部最优值问题

    • 深度学习的优化问题一般是一个非凸的优化问题,所以梯度下降可能找到的是一个局部最优值。模型优化的过程中最怕碰到的是 鞍点问题,因为鞍点的导数为0,使得模型迭代的会很慢。
    鞍点问题
    平原问题.png

    相关文章

      网友评论

          本文标题:神经网络和深度学习 - Chapter6 优化算法

          本文链接:https://www.haomeiwen.com/subject/lplggltx.html