momentum SGD(动量梯度下降)
转载于:https://blog.****.net/leviopku/article/details/80418672
红色表示SGD的收敛路径,棕色表示梯度下降的收敛路径。普通的GD算法就是计算出每一时刻最陡的下降趋势(梯度),SGD在随机挑选某一分量的梯度方向进行收敛,详细解释可继续往下看。
2. SGD公式理解
注:这一部分引用自知乎用户Qi Qi,原回答链接
随机梯度下降主要用来求解类似于如下求和形式的优化问题:
f(x)=∑i=1nfi(w,xi,yi)f(x)=∑i=1nfi(w,xi,yi)
普通梯度下降算法:
wt+1=wt−ηt+1∇f(wt)=wt−ηt+1∑i=1n∇fi(wt,xi,yi)wt+1=wt−ηt+1∇f(wt)=wt−ηt+1∑i=1n∇fi(wt,xi,yi)
当nn
由于E[∇fik(wt,xik,yik)]E[∇fik(wt,xik,yik)]时,方差趋于0。以上提到的几种变种都能达到线性收敛速度。
3. momentum 动量
“动量”这个概念源自于物理学,解释力在一段时间内作用所产生的物理量。我们没必要往复杂想,其实我们可以将动量约等于惯性。我们对惯性的基本理解就是: 当你跑起来,由于惯性的存在你跑起来会比刚起步加速的时候更轻松,当你跑过头,想调头往回跑,惯性会让你拖着你。
在普通的梯度下降法w=w+vw=w+v的方向相同,则会加速。反之,则会减速。加动量的优势有两点:
1. 加速收敛
2. 提高精度(减少收敛过程中的振荡)