第八讲_Optimization
Optimization
注意偏导和梯度的区别:
这里讲模型的第四个部分:优化算法,相较于传统的梯度下降优化算法,有很多改进的版本,虽然没有跳脱出梯度下降的框架,但是在传统算法的基础上进行了改进优化,更加好用
梯度下降算法的缺点
- 梯度消失 saddle point
- 局部最优 local minimum
- 各参数尺度不一 different scale
GDM (GD with momentum)
通过在梯度下降过程中加入一个“动量”项,该算法能够累积过去梯度的方向,从而帮助算法更快地穿越平坦区域,并减少振荡
更新梯度的公式:
\[w_t = w_{t-1} - \alpha V_{t}\]
在原来设置了学习率的基础上,还丰富了下面的部分:
\[V_{t} = \beta V_{t-1} + (1- \beta)\frac{\partial J}{\partial w_t}\]
\[\beta \in [0,1]\]
\[V_{0} = 0\]
\[\beta = 0.9\]
这样既能保存过去的梯度信息,也不至于产生过大的影响
指数滑动平均
AdaGrad (Adaptive Gradient)
AdaGrad算法通过自适应地调整学习率,使得学习率随着迭代次数的增加而减小,从而避免了梯度消失和梯度爆炸的问题
公式:
\[ W_{t+1} = W_{t} - \frac{\alpha}{\sqrt{S_{t}+\epsilon}}\frac{\partial J}{\partial w_t} \]
\[ S_{t} = S_{t-1} + (\frac{\partial J}{\partial w_t})^2 \]
\[ S_{0} = 0 \]
\[
\epsilon = 10^{-7}
\]
作用:防止除 0
偏导可以间接表明下降坡度的大小
- 偏导大坡度大,需要设置一个较小的学习率
- 偏导小坡度小,需要设置一个较大的学习率
但是会出现一个问题,S会越来越大,导致后面出现学不动的情况
RMSProp (Root Mean Square Propagation)
本质是在 AdaGrad 基础上引入了指数滑动平均防止S越加越大的问题
\[W_{t+1} = W_{t} - \frac{\alpha}{\sqrt{S_{t}+\epsilon}}\frac{\partial J}{\partial w_t}\]
\[S_{t} = \beta S_{t-1} + (1-\beta)(\frac{\partial J}{\partial w_t})^2\]
Adam (Adaptive Moment Estimation)
Adam算法通过引入两个指数滑动平均来修正AdaGrad算法中的学习率,从而避免了学习率过大的问题
公式:
\[W_{t+1} = W_{t} - \frac{\alpha}{\sqrt{\hat S_{t}}+\epsilon}\hat V_{t}\]
\[\hat V_{t} = \frac{V_{t}}{1-\beta_1^t}\]
\[\hat S_{t} = \frac{S_{t}}{1-\beta_2^t}\]
\[V_{t} = \beta_1 V_{t-1} + (1-\beta_1)\frac{\partial J}{\partial w_t}\]
\[S_{t} = \beta_2 S_{t-1} + (1-\beta_2)(\frac{\partial J}{\partial w_t})^2\]
该算法能够解决一些存在的缺点,例如:V和S在刚开始迭代时会非常小,不利于算法更新
随机梯度下降
从另一个角度(训练数据)来解决优化问题
内容可以看第二讲,已经记录过了
小批量梯度下降
第二讲也有记录