梯度下降算法及其改进

1.梯度和梯度值

一个函数f(x,y,z),求其在x,y,z上的偏导\frac{\partial f}{\partial x},\frac{\partial f}{\partial y},\frac{\partial f}{\partial z},比如要求其在M(a,b,c)上的梯度,则将a,b,c带入(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y},\frac{\partial f}{\partial z})中,可以得到一个新的向量(A,B,C),那么这个新的向量就是梯度。梯度值就是这个向量的模,即\sqrt{A^{2}+B^{2}+C^{2}}


2.梯度下降算法

给定f(x)和初始点x_{0}

重复执行以下过程直到满足条件

\Delta x_{t}=-\bigtriangledown f(x_{t})       这里的\bigtriangledown f(x_{t})就是求x_{t}的梯度

x_{t+1}=xt+\eta \Delta x_{t}       \eta是学习率

普通梯度下降容易陷入局部最优,所以需要改进。


3.基于冲量的梯度下降算法

冲量其实叫动量更合适,加了一个冲量,也许可以冲出局部最优点。

给定f(x)、初始点x_{0}和初始动量v_{0}

重复执行以下过程直到满足条件

\Delta x_{t}=-\bigtriangledown f(x_{t})       这里的\bigtriangledown f(x_{t})就是求x_{t}的梯度

v_{t+1}=\gamma v_{t}+\eta \Delta x_{t}      其实就是在这里加了一个动量

x_{t+1}=xt+v_{t}       


4.NAG改进

这个是对基于冲量的梯度下降的改进算法。在基本梯度下降和冲量梯度下降中,都是在x_{t}处计算梯度,要是我们能够在x_{t}附近探索一下,找到一个好一点的新的点计算梯度,会更好吧?所以NAG改进就是基于这个思路来的。

给定f(x)、初始点x_{0}和初始动量v_{0}

重复执行以下过程直到满足条件

\Delta x_{t}=-\bigtriangledown f(x_{t}+\gamma v_{t})       这里的\bigtriangledown f(x_{t})就是求x_{t}的梯度

v_{t+1}=\gamma v_{t}+\eta \Delta x_{t}      其实就是在这里加了一个动量

x_{t+1}=xt+v_{t}       

你可能感兴趣的:(深度学习,数学基础,梯度下降)