方向导数
郝伟 2020/01/15
在一维空间的变化率就是 dydx,也就是 f′(x)。在二维空间中,同样有导数,梯度是二维空间的导数,是某一点的变化情况。一维空间的导数只有大小,而二维空间有 x,y两个维度,所以在二维平面上就会形成一个方向。函数 z=f(x,y) 在点 (x0,y0)的方向导数表示为:
∂l∂f=∂x∂fi+∂y∂fj
函数 z=f(x,y) 在点 (x0,y0)的梯度表示为:
∇f(x0,y0)=(∂x∂f)2+(∂y∂f)2
举例来说,设函数y=f(x,y)=e−x2−y2,其在点 P(x0,y0) 方向导数可以表示如下:
∂l∂f=−2x0e−x02−y02i−2y0e−x02−y02j
其中 i 方向的系数由 f 对 x 的偏导数决定。类似的,j 方向的系数由 f 对 y 的偏导数决定。这样我们就可以求得点P在任意方向上的方向导数。其几何含义就是 f 在点P所有方向的变化速率。
梯度的几何意义如如下图所示。

比如,当x=0,y=0 时,其方向导数为 0j+0j;而当 x=1,y=1 时,−2e−2j+−2e−2j。
当曲面不是平面的时候,每个方向上的变化率是不一样的。如下图所示,在点P,其梯度就是在各个方向的变化。
再看另外的一个示例[2,3],在这个示例中,如果要到达两个最低点(如下图所示),可以有两条不同的路径。这两条路径是最短路径,条件就是路径上的每点都是方向导数最小的点。

另外,发现Wikipedia上用来说明梯度的图片特别典型,说明非常形象,所以引来供大家学习。
设函数 f(x,y)=−(cos2x+cos2y)2,则 ∇f 可以描述为在底部平面上的矢量投影,如下图所示。

根据图片所示,每个点的梯度是一个矢量,其长度代表了这点的变化速度,而方向表示了其变化速率最快的方向。所以通过这张图,我们可以很清楚地看到。在矢量长的地方,f 的变化就明显,而其方向代表了增长最快的方向。
结合方向导数,我们可以很容易理解梯度其实就是指明函数在指定点的变量率最快的方向和大小。
[1] 西安建筑科技大学、第七节 方向导数与梯度,http://netedu.xauat.edu.cn/jpkc/netedu/jpkc/gdsx/homepage/5jxsd/51/513/5308/530807.htm
[2] Pablo J. Villacorta,Introduction to Deep Learning Part 1: Neural Networks,https://www.stratio.com/blog/deep-learning-neural-networks-1,2017/09.
[3] 没名字的蓝猫,深度解读机器学习“梯度下降”,https://www.jianshu.com/p/17191c57d7e9,2018/02.