zoukankan      html  css  js  c++  java
  • Deep Learning 梯度下降

    主要解决求最小值问题,其基本思想在于不断地逼近最优点,每一步的优化方向就是梯度的方向

    (1)随机梯度下降法:
    每次随机从样本集中抽取一个样本对进行更新

    如果要遍历整个样本集的话需要迭代很多次,且每次更新并不是向着最优的方向进行,所以每走一步都要“很小心”,也就是说随机梯度下降法的学习率α不能设置太大,不然容易出现在最优解附近“震荡”,但始终无法更接近最优解的现象。
    但从另一个角度来看,这种“来回震荡”的优化路线在损失函数局部极小值较多时,能够有效避免模型陷入局部最优解。

    (2)标准梯度下降法:
    计算样本集中损失函数的总和之后再对参数进行更新

    在遍历了整个样本集之后才对参数进行更新,因此它的下降方向是最优的方向,所以它就可以很理直气壮的走每一步。
    因此,这种算法的学习率一般要比随机梯度下降法的大。但这种优化方法的缺点在于它每更新一次都需要遍历整个样本集,效率比较低,因为在很多时候整个样本集计算出的梯度和部分样本集计算出的梯度相差并不多。
    (3)批梯度下降法:
    每次随机从样本集中抽取M(batch_size)个样本进行迭代

    相比前两种来说,既能提高模型的准确度,又能提高算法的运行速度。
    (4)Momentum梯度下降法:
    又称被为动量梯度下降法,基本思想是:损失函数求最优解的过程可以看作小球从求解面(损失函数值在坐标系中呈现出的面)某处沿着该面下落直至该面最低处的过程,损失函数的梯度可以看作是施加给小球的力,通过力的作用有了速度,通过速度可以改变小球的位置。

    其中,是动量系数,值的大小,可以通过trian-and-error来确定,实践中常常设为0.9。
    不会立刻改变梯度优化的方向,而是每一次计算后的方向为前一次优化的方向与本次计算得到的值的加权和,即梯度优化的方向是通过积累一点点改变的,而且越积累越大。这种优化方式的好处在于通过不同训练样本求得梯度时,始终都会增大最优方向上的梯度值,因此可以减少许多震荡。
    (5)Nesterov Momentum梯度下降法:
    对Momentum梯度下降法的一个改进

    已经求出了,那么可以再“向前看一步”,不是求解当前位置的梯度,而是求解处的梯度。这个位置虽然不正确,但是要优于当前位置θ。

    (6)AdaGrad梯度下降法:
    AdaGrad能够自适应不同的学习率

    RMSProp优化算法是AdaGrad算法的一种改进,核心思想在于使用指数衰减滑动平均以丢弃遥远过去的历史。
    (7)Adam梯度下降法
    Adam考虑了梯度以及梯度的平方,具有AdaGrad和RMSprop的优点。Adam根据梯度的一阶估计和二阶估计,动态调整学习率。

    为梯度的第一时刻平均值,为梯度的第二时刻非中心方差值,一般设为0.9,一般设为0.9999,一般设为10-8。

    这个方法不仅存储了AdaDelta先前平方梯度的指数衰减平均值,而且保持了先前梯度M(t)的指数衰减平均值,这一点与动量类似。

    学习率(learning rate),控制模型的学习进度

    刚开始训练时:学习率以 0.01 ~ 0.001 为宜。
    一定轮数过后:逐渐减缓。
    接近训练结束:学习速率的衰减应该在100倍以上。

  • 相关阅读:
    P1092 虫食算
    P1040 加分二叉树
    cfER76 abcd
    cf599 div2 a/b1/b2/c
    AtCoder Contest 144 DE
    Round G 2019
    luogu3084 Photo 单调队列优化DP
    luogu4234 最小差值生成树
    luogu1373 小a和uim之大逃离
    luogu1070 道路游戏 单调队列
  • 原文地址:https://www.cnblogs.com/hello-bug/p/12524805.html
Copyright © 2011-2022 走看看