【转+整理】SDG,动量,Adam优化算法

参考博客:深度学习最常用的算法,一文看懂各种神经网络优化算法:从梯度下降到Adam方法

 

SDG

1、定义:

        随机梯度下降(Stochastic gradient descent,SGD)对每个训练样本进行参数更新,每次执行都进行一次更新,且执行速度更快。

2、公式:

        θ=θ−η⋅∇(θ) × J(θ;x(i);y(i)),其中 η 是学习率,x(i) 和 y(i) 为训练样本。

3、评价:

        每个训练样本中高方差的参数更新会导致损失函数大幅波动,因此我们可能无法获得给出损失函数的最小值。
        一般使用mini-batch的方法改善:对每个批次中的n个训练样本只执行一次更新。

 

动量 momentum

1、定义:

        通过优化相关方向的训练和弱化无关方向的振荡,来加速SGD训练。这里的动量与经典物理学中的动量是一致的,就像从山上投出一个球,在下落过程中收集动量,小球的速度不断增加。

2、公式:

       V(t)=γV(t−1)+η∇(θ).J(θ),动量项γ通常设定为0.9
       θ=θ−V(t)

3、评价:

        当其梯度指向实际移动方向时,动量项γ增大;当梯度与实际移动方向相反时,γ减小。这种方式意味着动量项只对相关样本进行参数更新,减少了不必要的参数更新,从而得到更快且稳定的收敛,也减少了振荡过程。

 

ADAM:自适应时刻估计方法(Adaptive Moment Estimation)

1、定义

         可以替代传统随机梯度下降过程的一阶优化算法,它能基于训练数据迭代地更新神经网络权重

         适用于解决大噪声和稀疏梯度的非稳态(non-stationary)问题

2、算法流程

        m(t)为梯度的第一时刻平均值,v(t)为梯度的第二时刻非中心方差值。

【转+整理】SDG,动量,Adam优化算法_第1张图片

      1)确定参数α、β1、β2 和随机目标函数 f(θ) 
      2)初始化参数向量、一阶矩向量m0、二阶矩向量v0和时间步 t :
      3)当参数θ没有收敛时,循环迭代地更新各个部分。即:
         ·时间步 t加1
         ·更新目标函数在该时间步上对参数θ所求的梯度 gt 
         ·更新偏差的一阶矩估计 mt (根据过往已计算的参数梯度来修改学习率) 和二阶原始矩估计 vt 
         ·计算偏差修正的一阶矩估计和偏差修正的二阶矩估计
         ·更新模型的参数θ。

3、评价

        其收敛速度更快,学习效果更为有效,而且可以纠正其他优化技术中存在的问题,如学习率消失、收敛过慢或是高方差的参数更新导致损失函数波动较大等问题。

你可能感兴趣的:(人工智能)