美文网首页
神经网络和深度学习 - 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 优化算法

    Batch vs Mini-batch 梯度下降算法 批梯度下降法表示,在计算网络参数的梯度时每次使用所有的训练样...

  • 神经网络BP算法及其Caffe实现

    大名鼎鼎的BackPropagation算法,是如今神经网络/深度学习的基础优化算法。其实在1974年Paul W...

  • 入门卷积神经网络

    “ 深度学习是在多层神经网络上运用各种机器学习算法,解决文本、图像问题的算法集合。其中卷积神经网络是深度学习的代表...

  • tensorflow命令行参数

    深度学习神经网络往往有过多的Hyperparameter需要调优,优化算法、学习率、卷积核尺寸等很多参数都需要不断...

  • 机器学习之优化算法学习总结

    优化算法演化历程 机器学习和深度学习中使用到的优化算法的演化历程如下:SGD --> Momentum --> N...

  • 深度学习之卷积神经网络

    深度学习是指多层神经网络上运用各种机器学习算法解决图像,文本等各种问题的算法集合。深度学习从大类上可以归入神经网络...

  • 深度学习之外的人工智能——概率图模型

    神经网络是理解深度表征的模型,深度学习是训练深度神经网络的算法,两者是一脉相承的关系。本质上讲,神经网络和...

  • [tensorflow](二)DNN

    20181125 qzd 深度学习与深层神经网络 损失函数定义 神经网络优化 进一步优化

  • 梯度下降优化方法概述

    梯度下降是优化神经网络和机器机器学习算法的首选优化方法。本文重度参考SEBASTIAN RUDER[https:/...

  • 2019-07-25 深度学习

    机器学习 - 神经网络 - 深度学习 图像 文本 语音 深度学习算法比机器学习都要好很多bp算法:多层感知器的误差...

网友评论

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

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