梯度下降法

来自testwiki
跳转到导航 跳转到搜索

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

描述

梯度下降法的描述。

梯度下降方法基于以下的观察:如果实值函数F(𝐱)在点𝐚可微且有定义,那么函数F(𝐱)𝐚点沿着梯度相反的方向 F(𝐚) 下降最多。

因而,如果

𝐛=𝐚γF(𝐚)

对于一個足够小数值γ>0時成立,那么F(𝐚)F(𝐛)

考虑到这一点,我们可以从函数F的局部极小值的初始估计𝐱0出发,并考虑如下序列 𝐱0,𝐱1,𝐱2,使得

𝐱n+1=𝐱nγnF(𝐱n), n0

因此可得到

F(𝐱0)F(𝐱1)F(𝐱2),

如果顺利的话序列(𝐱n)收敛到期望的局部极小值。注意每次迭代步长γ可以改变。

右侧的图片示例了这一过程,这里假设F定义在平面上,并且函数图像是一个形。蓝色的曲线是等高线水平集),即函数F为常数的集合构成的曲线。红色的箭头指向该点梯度的反方向。(一点处的梯度方向与通过该点的等高线垂直)。沿着梯度下降方向,将最终到达碗底,即函数F局部極小值的点。

例子

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

f(x,y)=(1x)2+100(yx2)2.

其最小值在(x,y)=(1,1)处,数值为f(x,y)=0。但是此函数具有狭窄弯曲的山谷,最小值(x,y)=(1,1)就在这些山谷之中,并且谷底很平。优化过程是之字形的向极小值点靠近,速度非常缓慢。

下面这个例子也鲜明的示例了"之字"的上升(非下降),这个例子用梯度上升(非梯度下降)法求F(x,y)=sin(12x214y2+3)cos(2x+1ey)局部极大值(非局部极小值)。

The gradient descent algorithm in action.(1: contour) The gradient descent algorithm in action.(2: surface) |}

缺点

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

  • 靠近局部極小值时速度减慢。
  • 直線搜索可能會產生一些問題。
  • 可能會“之字型”地下降。

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

参阅

Template:Col-begin Template:Col-break

Template:Col-break

Template:Col-end

参考文献

Template:Reflist

  • Mordecai Avriel (2003). Nonlinear Programming: Analysis and Methods. Dover Publishing. ISBN 0-486-43227-0.
  • Jan A. Snyman (2005). Practical Mathematical Optimization: An Introduction to Basic Optimization Theory and Classical and New Gradient-Based Algorithms. Springer Publishing. ISBN 0-387-24348-8

外部链接

Template:Differentiable computing