梯度下降法(gradient dectent)

梯度下降法(英语:Gradient descent)是一个一阶最优化算法,通常也称为最速下降法。要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。如果相反地向梯度正方向迭代进行搜索,则会接近函数的局部极大值点;这个过程则被称为梯度上升法


梯度下降方法基于以下的观察:如果实值函数

在点{\displaystyle \mathbf {a} }


可微且有定义,那么函数{\displaystyle F(\mathbf {x} )}

在{\displaystyle \mathbf {a} }

点沿着梯度相反的方向{\displaystyle -\nabla F(\mathbf {a} )}

下降最快。

因而,如果

{\displaystyle \mathbf {b} =\mathbf {a} -\gamma \nabla F(\mathbf {a} )}

对于{\displaystyle \gamma >0}

为一个够小数值时成立,那么{\displaystyle F(\mathbf {a} )\geq F(\mathbf {b} )}

考虑到这一点,我们可以从函数{\displaystyle F}

的局部极小值的初始估计{\displaystyle \mathbf {x} _{0}}

出发,并考虑如下序列{\displaystyle \mathbf {x} _{0},\mathbf {x} _{1},\mathbf {x} _{2},\dots }

使得

{\displaystyle \mathbf {x} _{n+1}=\mathbf {x} _{n}-\gamma _{n}\nabla F(\mathbf {x} _{n}),\ n\geq 0}

因此可得到

{\displaystyle F(\mathbf {x} _{0})\geq F(\mathbf {x} _{1})\geq F(\mathbf {x} _{2})\geq \cdots ,}

如果顺利的话序列{\displaystyle (\mathbf {x} _{n})}

收敛到期望的极值。注意每次迭代步长{\displaystyle \gamma }

可以改变。

右侧的图片示例了这一过程,这里假设{\displaystyle F}

定义在平面上,并且函数图像是一个形。蓝色的曲线是等高线水平集),即函数{\displaystyle F}

为常数的集合构成的曲线。红色的箭头指向该点梯度的反方向。(一点处的梯度方向与通过该点的等高线垂直)。沿着梯度下降方向,将最终到达碗底,即函数{\displaystyle F}

值最小的点。

例子[编辑]

梯度下降法处理一些复杂的非线性函数会出现问题,例如Rosenbrock函数

{\displaystyle f(x,y)=(1-x)^{2}+100(y-x^{2})^{2}.\quad }

其最小值在{\displaystyle (x,y)=(1,1)}

处,数值为{\displaystyle f(x,y)=0}

。但是此函数具有狭窄弯曲的山谷,最小值{\displaystyle (x,y)=(1,1)}

就在这些山谷之中,并且谷底很平。优化过程是之字形的向极小值点靠近,速度非常缓慢。

下面这个例子也鲜明的示例了"之字"的上升(非下降),这个例子用梯度上升(非梯度下降)法求{\displaystyle F(x,y)=\sin \left({\frac {1}{2}}x^{2}-{\frac {1}{4}}y^{2}+3\right)\cos(2x+1-e^{y})}

极大值(非极小值,实际是局部极大值)。

缺点[编辑]

梯度下降法的缺点包括:[1]

靠近极小值时速度减慢。

直线搜索可能会产生一些问题。

可能会“之字型”地下降。

上述例子也已体现出了这些缺点。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容