梯度下降法改进过程:从 SGD 到 Adam算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了梯度下降法改进过程:从 SGD 到 Adam算法相关的知识,希望对你有一定的参考价值。

参考技术A

梯度g 指函数的某处的偏导数,指向函数上升方向。因此梯度下降法是指用梯度的负数-g更新参数,从而使下一次计算的结果向函数下降方向逼近,从而得到最小值。其中更新时乘的系数称为 学习率

以所有m个数据作为一个批次,每次计算损失loss值和梯度g(偏导)时为所有数据的累加和,更新每个参数时也都是以所有数据的梯度累加和进行计算更新。
优点: 下降方向为全局最优值 缺点: 计算所有数据的梯度非常耗时

虽然m个数据为一个批次,但是更新参数时仅使用随机一个数据的梯度进行更新。
优点: 很快 缺点: 随机性高,噪声影响严重,不一定向整体最优点下降。

把所有样本分为n个batch(一般是随机的),每次计算损失和梯度时用一个batch的数据进行计算,并更新参数,从而避免了唯一随机性和全局计算的耗时性。
优点: 得到的梯度下降方向是局部最优的,整体速度快。

参考: 知乎专栏-SGD

梯度下降法可能会停滞到 平原、鞍点和局部最优点(在这三个点梯度均为0) ,因此带动量的梯度下降法能依靠之前的梯度值,“冲过平原、鞍点和局部最优点”,提高泛化性。

参考: 知乎专栏-动量 , 简述动量csdn

Adagard 针对不同的变量提供不同的学习率。 当一些变量被优化到最优点,但另外一些变量没到最优点,使用统一的学习率就会影响优化过程,太大或太小都不合适。太大不容易收敛,太小收敛缓慢。
解决方式: 为每一参数建立历史累计梯度值,利用历史累计梯度作为分母,从而使各个参数在训练后期被给予不同的除数,得到自适应参数值

参考: 知乎专栏

Adagard 暴力累加参数之前的所有梯度平方作为分母进行自适应(二阶梯度的梯度下降?),而RMSprop进行历史梯度平方和的加权;
用 来控制衰减程度(通常为0.9),每次不再直接累加,而是一个指数移动平均,即是 用二阶梯度的移动平均代替当前梯度进行更新参数

参考: 知乎专栏-RMSprop

Adam 可以看做 RMSprop 与 Momentum 的结合,使用了一阶梯度的指数移动平均(Momentum)和二阶梯度的指数移动平均(RMSprop)。
优点 :每一次迭代学习率都有一个明确的范围,使得参数变化很平稳.
注意到,在迭代初始阶段, 和 有一个向初值的偏移(过多的偏向了 0)。因此,可以对一阶和二阶动量做偏置校正 (bias correction),

机器学习:SGD随机梯度下降法

1.梯度下降

   1)什么是梯度下降?

         因为梯度下降是一种思想,没有严格的定义,所以用一个比喻来解释什么是梯度下降。

        

        简单来说,梯度下降就是从山顶找一条最短的路走到山脚最低的地方。但是因为选择方向的原因,我们找到的的最低点可能不是真正的最低点。如图所示,黑线标注的路线所指的方向并不是真正的地方。

        既然是选择一个方向下山,那么这个方向怎么选?每次该怎么走?

       先说选方向,在算法中是以随机方式给出的,这也是造成有时候走不到真正最低点的原因。

       如果选定了方向,以后每走一步,都是选择最陡的方向,直到最低点。

       总结起来就一句话:随机选择一个方向,然后每次迈步都选择最陡的方向,直到这个方向上能达到的最低点。

      2)梯度下降是用来做什么的?

       在机器学习算法中,有时候需要对原始的模型构建损失函数,然后通过优化算法对损失函数进行优化,以便寻找到最优的参数,使得损失函数的值最小。而在求解机器学习参数的优化算法中,使用较多的就是基于梯度下降的优化算法(Gradient Des

以上是关于梯度下降法改进过程:从 SGD 到 Adam算法的主要内容,如果未能解决你的问题,请参考以下文章

面试时如何完整精确的回答动量下降法(Momentum)和Adam下降法的原理

梯度优化方法:BGD,SGD,mini_batch, Momentum,AdaGrad,RMSProp,Adam

优化算法梯度下降SGDMomentumAdagradAdam

深度学习笔记:SGDMomentumRMSpropAdam优化算法解析

深度学习笔记:SGDMomentumRMSpropAdam优化算法解析

梯度下降:SGD vs Momentum vs NAG vs Adagrad vs Adadelta vs RMSprop vs Adam