内容列表
Lecture 6 Training Neural Networks,Part 2
多种梯度下降优化方式
SGD
本节讨论多种梯度下降的优化方式,之前我们着重讲了随机梯度下降SGD方式,这是一种很容易理解的梯度下降方式,但是,其实SGD方式在某些特定情况会很慢,比如,当数据处于下图这种椭圆形式的梯度时,SGD可能沿浅维度进展非常缓慢,并且沿陡峭方向抖动,虽然下降到了极小值点,但是速度极慢:
还有其他两种情况,SGD都到不了全局极小值点,比如当SGD运行到局部极小值点与鞍点时,梯度下降为0,SGD被卡住,并且其实在多维数据中,鞍点情况极为常见,这里说一下局部极小值点,在越来越多的研究表明,当你的规模越大时,局部极小值与全局极小值会越来越接近,这也是一个对模型设计有益现象:
SGD + Momentum
动量(Momentum)更新是另一个方法,这个方法在深度网络上几乎总能得到更好的收敛速度。该方法可以看成是从物理角度上对于最优化问题得到的启发。损失值可以理解为是山的高度(因此高度势能是 U = m g h U=mgh U=mgh,所以有 U ∝ h U\propto h U∝h)。用随机数字初始化参数等同于在某个位置给质点设定初始速度为0。这样最优化过程可以看做是模拟参数向量(即质点)在地形上滚动的过程。因为作用于质点的力与梯度的潜在能量( F = − ∇ U F=-\nabla U F=−∇U)有关,质点所受的力就是损失函数的(负)梯度。还有,因为 F = m a F=ma F=ma,所以在这个观点下(负)梯度与质点的加速度是成比例的。
注意这个理解和上面的随机梯度下降(SGD)是不同的,在普通版本中,梯度直接影响位置。而在这个版本的更新中,物理观点建议梯度只是影响速度,然后速度再影响位置:
这里将速度初始化为0,还有一个参数rho,这个参数在最优化的过程中被看做动量(一般值设为0.9),但其物理意义与摩擦系数更一致。这个变量有效地抑制了速度,降低了系统的动能,不然质点在山底永远不会停下来。通过交叉验证,这个参数通常设为[0.5,0.9,0.95,0.99]中的一个。这个动量也可以随时间慢慢变化改善效果,一个典型的设置是刚开始将动量设为0.5而在后面的多个周期(epoch)中慢慢提升到0.99。
还有另一种解释方法:在普通的梯度下降法 x = x − V x =x- V x=x−V中,每次 x x x的更新量 V V V为 V = d x ∗ λ V = dx * λ V=dx∗λ;
当使用动量时, V V V考虑为本次的梯度下降量与部分上次更新量的矢量和,即 − d W ∗ λ -dW*λ −dW∗λ与上次 x x x的更新量 V V V乘以一个介于[0, 1]的系数momemtum的和,即: V = d W ∗ λ + V ∗ m o m e m t u m V = dW * λ+ V*momemtum V=dW∗