参考博客:深度学习最常用的算法,一文看懂各种神经网络优化算法:从梯度下降到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)为梯度的第二时刻非中心方差值。
1)确定参数α、β1、β2 和随机目标函数 f(θ)
2)初始化参数向量、一阶矩向量m0、二阶矩向量v0和时间步 t :
3)当参数θ没有收敛时,循环迭代地更新各个部分。即:
·时间步 t加1
·更新目标函数在该时间步上对参数θ所求的梯度 gt
·更新偏差的一阶矩估计 mt (根据过往已计算的参数梯度来修改学习率) 和二阶原始矩估计 vt
·计算偏差修正的一阶矩估计和偏差修正的二阶矩估计
·更新模型的参数θ。
3、评价
其收敛速度更快,学习效果更为有效,而且可以纠正其他优化技术中存在的问题,如学习率消失、收敛过慢或是高方差的参数更新导致损失函数波动较大等问题。