1.前言

在讲解梯度下降算法时,经常可以看到下面这张图(图片来自Wiki百科):
为什么梯度方向就是等高线的切线的垂直方向
这张图后面一般都会再接一句,梯度下降的方向与等高线的切线方向垂直。
最开始的时候对这句话并没有多想,觉得这理所应当。不过突然有一天回过神来,为什么梯度下降方向与等高线的方向垂直啊?然后开始仔细考虑了一下这个问题。

2.等高线

看到知乎上的一幅图,能比较清楚地看出等高线的绘制过程,在此粘贴过来。
为什么梯度方向就是等高线的切线的垂直方向

3.梯度的定义

梯度的概念是为了解决这么一个问题:
函数在变量空间(变量的维度可能很高)的某一点,沿着那个方向有最大的变化率?
梯度退化到xoy平面的二维空间,其实就是导数的概念。
梯度的定义如下:
gradf(x0,x1,...,x2)=(x0,x1,...,x2)=(fxo,...,fxi,...,fxn)gradf(x0, x_1,...,x_2)=\nabla(x_0, x_1,...,x_2) = (\frac{\partial{f}}{\partial{x_o}}, ..., \frac{\partial{f}}{\partial{x_i}},..., \frac{\partial{f}}{\partial{x_n}})

需要注意如下几点:
1.梯度是一个向量,既有大小又有方向
2.梯度的方向是最大方向导数的方向。
3.梯度的模是方向导数的最大值。

4.梯度方向与等高线切线方向垂直

假设Loss Function为 z=f(x,y)z=f(x,y) 该函数为一个三维曲面。该面被平面z=cz=c 所截的曲线方程为
{z=f(x,y)z=c \begin{cases} z = f(x, y) \\ z =c \end{cases}

该曲线在xoy平面上的投影是一条曲线,假设该曲线为Q,在xoy平面上该曲线的方程为
f(x,y)=c f(x, y) =c
不难看出, xoy平面上的曲线Q即为z=f(x,y)z=f(x,y)的等高线。

等高线f(x,y)=cf(x,y)=c上的任意一点p切线处的斜率为dydx\frac{dy}{dx}
而p点对应的法线的斜率则为:
1dydx=1fxfy=fyfx -\frac{1}{\frac{dy}{dx}} = -\frac{1}{-\frac{f_x}{f_y}} = \frac{f_y}{f_x}

dydx=fxfy\frac{dy}{dx} =-\frac{f_x}{f_y} 可以由隐函数求导公式推导得出。
为什么梯度方向就是等高线的切线的垂直方向

而梯度的表达式为:
fxi+fyj \frac{\partial{f}}{\partial{x}}i+ \frac{\partial{f}}{\partial{y}}j
则梯度的方向为:
fy/fx=fyfx \frac{\partial{f}}{\partial{y}} / \frac{\partial{f}}{\partial{x}} = \frac{f_y}{f_x}

由此可见,梯度的方向与等高线切线的法向量方向是相同的!

参考文献
[1] https://zhuanlan.zhihu.com/p/27731819

相关文章: