博客:blog.shinelee.me | 博客园 | 优快云
写在前面
梯度是微积分中的基本概念,也是机器学习解优化问题经常使用的数学工具(梯度下降算法),虽然常说常听常见,但其细节、物理意义以及几何解释还是值得深挖一下,这些不清楚,梯度就成了“熟悉的陌生人”,仅仅“记住就完了”在用时难免会感觉不踏实,为了“用得放心”,本文将尝试直观地回答以下几个问题,
- 梯度与偏导数的关系?
- 梯度与方向导数的关系?
- 为什么说梯度方向是上升最快的方向,负梯度方向为下降最快的方向?
- 梯度的模有什么物理意义?
- 等高线图中绘制的梯度为什么垂直于等高线?
- 全微分与隐函数的梯度有什么关系?
- 梯度为什么有时又成了法向量?
闲话少说,书归正传。在全篇“作用域”内,假定函数可导。
偏导数
在博文《单变量微分、导数与链式法则 博客园 | 优快云 | blog.shinelee.me》中,我们回顾了常见初等函数的导数,概括地说,
导数是一元函数的变化率(斜率)。导数也是函数,是函数的变化率与位置的关系。
如果是多元函数呢?则为偏导数。
偏导数是多元函数“退化”成一元函数时的导数,这里“退化”的意思是固定其他变量的值,只保留一个变量,依次保留每个变量,则 N N N元函数有 N N N个偏导数。
以二元函数为例,令 z = f ( x , y ) z=f(x,y) z=f(x,y),绘制在3维坐标系如下图所示,

在分别固定 y y y和 x x x的取值后得到下图中的黑色曲线——“退化”为一元函数,二维坐标系中的曲线——则偏导数 ∂ z ∂ x \frac{\partial {z}}{\partial {x}} ∂x∂z和 ∂ z ∂ y \frac{\partial z}{\partial y} ∂y∂z分别为曲线的导数(切线斜率)。


由上可知,一个变量对应一个坐标轴,偏导数为函数在每个位置处沿着自变量坐标轴方向上的导数(切线斜率)。

方向导数
如果是方向不是沿着坐标轴方向,而是任意方向呢?则为方向导数。如下图所示,点 P P P位置处红色箭头方向的方向导数为黑色切线的斜率,来自链接Directional Derivative
方向导数为函数在某一个方向上的导数,具体地,定义
x
y
xy
xy平面上一点
(
a
,
b
)
(a, b)
(a,b)以及单位向量
u
⃗
=
(
cos
θ
,
sin
θ
)
\vec u = (\cos \theta ,\sin \theta )
u=(cosθ,sinθ),在曲面
z
=
f
(
x
,
y
)
z=f(x, y)
z=f(x,y)上,从点
(
a
,
b
,
f
(
a
,
b
)
)
(a,b, f(a,b))
(a,b,f(a,b))出发,沿
u
⃗
=
(
cos
θ
,
sin
θ
)
\vec u = (\cos \theta ,\sin \theta )
u=(cosθ,sinθ)方向走
t
t
t单位长度后,函数值
z
z
z为
F
(
t
)
=
f
(
a
+
t
cos
θ
,
b
+
t
sin
θ
)
F(t)=f(a+t \cos \theta, b + t \sin \theta)
F(t)=f(a+tcosθ,b+tsinθ),则点
(
a
,
b
)
(a,b)
(a,b)处
u
⃗
=
(
cos
θ
,
sin
θ
)
\vec u = (\cos \theta ,\sin \theta )
u=(cosθ,sinθ)方向的方向导数为:
d
d
t
f
(
a
+
t
cos
θ
,
b
+
t
sin
θ
)
∣
t
=
0
=
lim
t
→
0
f
(
a
+
t
cos
θ
,
b
+
t
sin
θ
)
−
f
(
a
,
b
)
t
=
lim
t
→
0
f
(
a
+
t
cos
θ
,
b
+
t
sin
θ
)
−
f
(
a
,
b
+
t
sin
θ
)
t
+
lim
t
→
0
f
(
a
,
b
+
t
sin
θ
)
−
f
(
a
,
b
)
t
=
∂
∂
x
f
(
a
,
b
)
d
x
d
t
+
∂
∂
y
f
(
a
,
b
)
d
y
d
t
=
f
x
(
a
,
b
)
cos
θ
+
f
y
(
a
,
b
)
sin
θ
=
(
f
x
(
a
,
b
)
,
f
y
(
a
,
b
)
)
⋅
(
cos
θ
,
sin
θ
)
\begin{aligned} &\left.\frac{d}{d t} f(a+t \cos \theta, b+t \sin \theta)\right|_{t=0} \\=& \lim _{t \rightarrow 0} \frac{f(a+t \cos \theta, b+t \sin \theta) - f(a, b)}{t} \\=& \lim _{t \rightarrow 0} \frac{f(a+t \cos \theta, b+t \sin \theta) - f(a, b+t \sin \theta)}{t} + \lim _{t \rightarrow 0} \frac{f(a, b+t \sin \theta) - f(a, b)}{t} \\=& \frac{\partial}{\partial x} f(a, b) \frac{d x}{d t}+\frac{\partial}{\partial y} f(a, b) \frac{d y}{d t} \\=& f_x (a, b) \cos \theta+ f_y (a, b) \sin \theta \\=&\left(f_x (a, b), f_y (a, b)\right) \cdot(\cos \theta, \sin \theta) \end{aligned}
=====dtdf(a+tcosθ,b+tsinθ)∣∣∣∣t=0t→0limtf(a+tcosθ,b+tsinθ)−f(a,b)t→0limtf(a+tcosθ,b+tsinθ)−f(a,b+tsinθ)+t→0limtf(a,b+tsinθ)−f(a,b)∂x∂f(a,b)dtdx+∂y∂f(a,b)dtdyfx(a,b)cosθ+fy(a,b)sinθ(fx(a,b),fy(a,b))⋅(cosθ,sinθ)
上面推导中使用了链式法则。其中,
f
x
(
a
,
b
)
f_x (a, b)
fx(a,b)和
f
y
(
a
,
b
)
f_y (a, b)
fy(a,b)分别为函数在
(
a
,
b
)
(a, b)
(a,b)位置的偏导数。由上面的推导可知:
该位置处,任意方向的方向导数为偏导数的线性组合,系数为该方向的单位向量。当该方向与坐标轴正方向一致时,方向导数即偏导数,换句话说,偏导数为坐标轴方向上的方向导数,其他方向的方向导数为偏导数的合成。
写成向量形式,偏导数构成的向量为 ∇ f ( a , b ) = ( f x ( a , b ) , f y ( a , b ) ) \nabla f(a, b) = (f_x (a, b), f_y (a, b)) ∇f(a,b)=(fx(a,b),fy(a,b)),称之为梯度。
梯度
梯度,写作 ∇ f \nabla f ∇f,二元时为 ( ∂ z ∂ x , ∂ z ∂ y ) (\frac{\partial{z}}{\partial{x}}, \frac{\partial{z}}{\partial{y}}) (∂x∂z,∂y∂z),多元时为 ( ∂ z ∂ x , ∂ z ∂ y , … ) (\frac{\partial{z}}{\partial{x}}, \frac{\partial{z}}{\partial{y}},\dots) (∂x∂z,∂y∂z,…)。
我们继续上面方向导数的推导,
(
a
,
b
)
(a,b)
(a,b)处
θ
\theta
θ方向上的方向导数为
(
f
x
(
a
,
b
)
,
f
y
(
a
,
b
)
)
⋅
(
cos
θ
,
sin
θ
)
=
∣
(
(
f
x
(
a
,
b
)
,
f
y
(
a
,
b
)
)
∣
⋅
∣
1
∣
⋅
cos
ϕ
=
∣
∇
f
(
a
,
b
)
∣
⋅
cos
ϕ
\begin{aligned} &\left(f_x (a, b), f_y (a, b)\right) \cdot(\cos \theta, \sin \theta) \\ =& |((f_x (a, b), f_y (a, b))| \cdot |1| \cdot \cos \phi \\=& |\nabla f(a,b)| \cdot \cos \phi \end{aligned}
==(fx(a,b),fy(a,b))⋅(cosθ,sinθ)∣((fx(a,b),fy(a,b))∣⋅∣1∣⋅cosϕ∣∇f(a,b)∣⋅cosϕ
其中,
ϕ
\phi
ϕ为
∇
f
(
a
,
b
)
\nabla f(a,b)
∇f(a,b)与
u
⃗
\vec u
u的夹角,显然,当
ϕ
=
0
\phi = 0
ϕ=0即
u
⃗
\vec u
u与梯度
∇
f
(
a
,
b
)
\nabla f(a,b)
∇f(a,b)同向时,方向导数取得最大值,最大值为梯度的模
∣
∇
f
(
a
,
b
)
∣
|\nabla f(a,b)|
∣∇f(a,b)∣,当
ϕ
=
π
\phi = \pi
ϕ=π即
u
⃗
\vec u
u与梯度
∇
f
(
a
,
b
)
\nabla f(a,b)
∇f(a,b)反向时,方向导数取得最小值,最小值为梯度模的相反数。此外,根据上面方向导数的公式可知,在夹角
ϕ
<
π
2
\phi < \frac{\pi}{2}
ϕ<2π时方向导数为正,表示
u
⃗
\vec u
u方向函数值上升,
ϕ
>
π
2
\phi > \frac{\pi}{2}
ϕ>2π时方向导数为负,表示该方向函数值下降。
至此,方才有了梯度的几何意义:
- 当前位置的梯度方向,为函数在该位置处方向导数最大的方向,也是函数值上升最快的方向,反方向为下降最快的方向;
- 当前位置的梯度长度(模),为最大方向导数的值。
等高线图中的梯度
在讲解各种优化算法时,我们经常看到目标函数的等高线图示意图,如下图所示,来自链接Applet: Gradient and directional derivative on a mountain,

图中,红点为当前位置,红色箭头为梯度,绿色箭头为其他方向,其与梯度的夹角为 θ \theta θ。
将左图中 z = f ( x , y ) z=f(x, y) z=f(x,y)曲面上的等高线投影到 x y xy xy平面,得到右图的等高线图。
梯度与等高线垂直。为什么呢?
等高线,顾名思义,即这条线上的点高度(函数值)相同,令某一条等高线为 z = f ( x , y ) = C z=f(x,y)=C z=f(x,y)=C, C C C为常数,两边同时全微分,如下所示
d z = ∂ f ∂ x d x + ∂ f ∂ y d y = ( ∂ f ∂ x , ∂ f ∂ y ) ⋅ ( d x , d y ) = d C = 0 \begin{aligned} dz = &\frac{\partial f}{\partial x} dx + \frac{\partial f}{\partial y} dy \\=& (\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}) \cdot (dx, dy) \\=& dC = 0\end{aligned} dz===∂x∂fdx+∂y∂fdy(∂x∂f,∂y∂f)⋅(dx,dy)dC=0
这里,两边同时全微分的几何含义是,在当前等高线上挪动任意一个极小单元,等号两侧的变化量相同。 f ( x , y ) f(x, y) f(x,y)的变化量有两个来源,一个由 x x x的变化带来,另一个由 y y y的变化带来,在一阶情况下,由 x x x带来的变化量为 ∂ f ∂ x d x \frac{\partial f}{\partial x} dx ∂x∂fdx,由 y y y带来的变化量为 ∂ f ∂ y d y \frac{\partial f}{\partial y} dy ∂y∂fdy,两者叠加为 z z z的总变化量,等号右侧为常数,因为我们指定在当前等高线上挪动一个极小单元,其变化量为0,左侧等于右侧。进一步拆分成向量内积形式, ( ∂ f ∂ x , ∂ f ∂ y ) (\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}) (∂x∂f,∂y∂f)为梯度, ( d x , d y ) (dx, dy) (dx,dy)为该点指向任意方向的极小向量,因为两者内积为0,所以两者垂直。自然不难得出梯度与等高线垂直的结论。
更进一步地,梯度方向指向函数上升最快的方向,在等高线图中,梯度指向高度更高的等高线。
隐函数的梯度
同理,对于隐函数 f ( x , y ) = 0 f(x,y)=0 f(x,y)=0,也可以看成是一种等高线。二元时,两边同时微分,梯度垂直于曲线;多元时,两边同时微分,梯度垂直于高维曲面。
即,隐函数的梯度为其高维曲面的法向量。
有了法向量,切线或切平面也就不难计算得到了。令曲线 f ( x , y ) f(x , y) f(x,y)上一点为 ( a , b ) (a,b) (a,b),通过全微分得该点的梯度为 ( f x , f y ) (f_x, f_y) (fx,fy),则该点处的切线为 f x ( x − a ) + f y ( y − b ) = 0 f_x (x-a) + f_y (y-b) = 0 fx(x−a)+fy(y−b)=0,相当于将上面的微分向量 ( d x , d y ) (dx, dy) (dx,dy)替换为 ( x − a , y − b ) (x-a, y-b) (x−a,y−b),其几何意义为法向量垂直切平面上的任意向量。
小结
至此,文章开篇几个问题的答案就不难得出了,
- 偏导数构成的向量为梯度;
- 方向导数为梯度在该方向上的合成,系数为该方向的单位向量;
- 梯度方向为方向导数最大的方向,梯度的模为最大的方向导数;
- 微分的结果为梯度与微分向量的内积
- 等高线全微分的结果为0,所以其梯度垂直于等高线,同时指向高度更高的等高线
- 隐函数可以看成是一种等高线,其梯度为高维曲面(曲线)的法向量
以上。
本文深入浅出地探讨了梯度的概念,它与偏导数、方向导数的关系,以及在等高线图中的表现。梯度表示函数上升最快的方向,其模长表示上升速度。在隐函数中,梯度成为高维曲面的法向量。通过理解这些概念,能更好地应用梯度在微积分和机器学习中的优化问题。
1036

被折叠的 条评论
为什么被折叠?



