目录
博客:blog.shinelee.me | 博客园 | CSDN
梯度是微积分中的基本概念,也是机器学习解优化问题经常使用的数学工具(梯度下降算法),虽然常说常听常见,但其细节、物理意义以及几何解释还是值得深挖一下,这些不清楚,梯度就成了“熟悉的陌生人”,仅仅“记住就完了”在用时难免会感觉不踏实,为了“用得放心”,本文将尝试直观地回答以下几个问题,
闲话少说,书归正传。在全篇“作用域”内,假定函数可导。
在博文《单变量微分、导数与链式法则 博客园 | CSDN | blog.shinelee.me》中,我们回顾了常见初等函数的导数,概括地说,
导数是一元函数的变化率(斜率)。导数也是函数,是函数的变化率与位置的关系。
如果是多元函数呢?则为偏导数。
偏导数是多元函数“退化”成一元函数时的导数,这里“退化”的意思是固定其他变量的值,只保留一个变量,依次保留每个变量,则(N)元函数有(N)个偏导数。以二元函数为例,令(z=f(x,y))
,绘制在3维坐标系如下图所示,
由上可知,一个变量对应一个坐标轴,偏导数为函数在每个位置处沿着自变量坐标轴方向上的导数(切线斜率)。
如果是方向不是沿着坐标轴方向,而是任意方向呢?则为方向导数。如下图所示,点(P)位置处红色箭头方向的方向导数为黑色切线的斜率,来自链接Directional Derivative
方向导数为函数在某一个方向上的导数,具体地,定义xy平面上一点(a, b)以及单位向量vec u = (cos theta ,sin theta ),在曲面z=f(x, y)上,从点(a,b, f(a,b))出发,沿vec u = (cos theta ,sin theta )方向走t单位长度后,函数值z为F(t)=f(a+t cos theta, b + t sin theta),则点(a,b)处vec u = (cos theta ,sin theta )方向的方向导数为:
上面推导中使用了链式法则。其中,f_x (a, b)和f_y (a, b)分别为函数在(a, b)位置的偏导数。由上面的推导可知:
该位置处,任意方向的方向导数为偏导数的线性组合,系数为该方向的单位向量。当该方向与坐标轴正方向一致时,方向导数即偏导数,换句话说,偏导数为坐标轴方向上的方向导数,其他方向的方向导数为偏导数的合成。
写成向量形式,偏导数构成的向量为nabla f(a, b) = (f_x (a, b), f_y (a, b)),称之为梯度。
梯度,写作nabla f,二元时为(frac{part{z}}{part{x}}, frac{part{z}}{part{y}}),多元时为(frac{part{z}}{part{x}, frac{part{z}}{part{y}},dots))。我们继续上面方向导数的推导,(a,b)处theta方向上的方向导数为
其中,phi为nabla f(a,b)与vec u的夹角,显然,当phi = 0即vec u与梯度nabla f(a,b)同向时,方向导数取得最大值,最大值为梯度的模|nabla f(a,b)|,当phi = pi即vec u与梯度nabla f(a,b)反向时,方向导数取得最小值,最小值为梯度模的相反数。此外,根据上面方向导数的公式可知,在夹角phi < frac{pi}{2}时方向导数为正,表示vec u方向函数值上升,phi > frac{pi}{2}时方向导数为负,表示该方向函数值下降。
至此,方才有了梯度的几何意义:
在讲解各种优化算法时,我们经常看到目标函数的等高线图示意图,如下图所示,来自链接Applet: Gradient and directional derivative on a mountain,
图中,红点为当前位置,红色箭头为梯度,绿色箭头为其他方向,其与梯度的夹角为theta。将左图中z=f(x, y)
曲面上的等高线投影到xy平面,得到右图的等高线图。
梯度与等高线垂直。为什么呢?
等高线,顾名思义,即这条线上的点高度(函数值)相同,令某一条等高线为z=f(x,y)=C,C为常数,两边同时全微分,如下所示
至此,文章开篇几个问题的答案就不难得出了,
以上。