方向导数和梯度

之前用过几次梯度下降算法来求解一些优化问题,但对梯度的具体意义并不是很理解。前一段时间翻了一遍高教的《简明微积分》,对梯度概念总算有了些理解,在这记录一下。

推荐下《简明微积分》这本书,我向来对带有“简明”二字的书抱有极大的好感。偶然的机会在豆瓣上看到有人推荐这本书,作者是龚升先生。龚升先生是中国科技大学教授,师从华罗庚。我个人觉得这本书是我读过的最好的国内的数学教材,结构条理,不拖沓但重点突出,适合快速的回顾微积分课程。

  • 为什么会有方向导数?

在微积分课程中,我们知道函数在某一点的导数(微商)代表了函数在该点的变化率。微分和积分,它们的定义都是建立在极限的基础上。对于单变量函数f(x),它在x0处导数是:当x趋近于x0时,函数的改变量与自变量的改变量的比值的极限,即微商(导数)等于差商的极限

f(x0)=limΔx0f(x0+Δx)f(x0)Δx
对于单变量函数,自变量只有一个,当x趋近于x0时只能在直线上变动,移动的方向只有左右两方。

然而,对于多变量函数,自变量有多个,表示自变量的点在一个区域内变动,不仅可以移动距离,而且可以按任意的方向来移动同一段距离。因此,函数的变化不仅与移动的距离有关,而且与移动的方向有关。因此,函数的变化率是与方向有关的。这也才有了方向导数的定义,即某一点在某一趋近方向上的导数值。假设给定函数u=u(M),取一点M0=(x0,y0,z0),L是由M0出发的任一半直线,则u在M0点L的方向导数定义为

(uL)M0=limMM0MLu(M)u(M0)|MM0|
  • 梯度

上面有了方向导数的定义,我们进一步来推导方向导数的表示,命L的方向余弦为 (cosα,cosβ,cosγ) ,则L上的M可表示为

x=x0+tcosα,y=y0+tcosβ,z=z0+tcosγt=|MM0|
。于是u对L的方向导数为

(ul)M0=limt0Δut=limt0uxΔx+uyΔy+uzΔz+o(t)t=limt0t(uxcosα+uycosβ+uzcosγ)+o(t)t=uxcosα+uycosβ+uzcosγ
注意,在上面的推导中用到了全微分公式。

令向量,L方向可以表示为。因为l是一个单位向量,所以

(uL)M0=nl=|n|cosθ
这表达了L上的方向向量其实是n在L方向上的投影。当L的方向变化,投影量随之改变,也就代表了不同的方向导数。当L与n同向时, (uL)M0 便取得最大值|n|,我们称n为u在该点的梯度。 可以看到梯度即是某一点最大的方向导数,沿梯度方向函数有最大的变化率(正向增加,逆向减少)。

另外还可以证明,在某一点的梯度方向,就是过该点的等值面的切平面的法线方向。但需要注意的是,这并不是定理,只是等值函数的法向量的表达式与函数的梯度的表达式一致而已,并非两者之间必然的存在关系。因此,在某一点沿着梯度看去,等值面分布最密,即达到临近等值面的距离最小。

  • 多变量函数的极值

对于单变量函数,若在某点取得极值,则该点的导数为0。同样对于多变量函数,在某点为极大值或极小值只有当在该点的每个偏导数等于0才有可能,也就是说梯度等于0。因此,在多变量函数中,驻点,也就是导数为0的点,指的是每个偏导数等于0,也就是梯度等于0的点。进而,在求极值时,我们可以先找到梯度为0的驻点,在通过定理(查书呗)判断它是否是极值点,极大值还是极小值。


http://bubblexc.com/y2012/657/

你可能感兴趣的:(算法,优化)