这可以说是机器学习中一个最基础的问题,曾一度困扰我。查过很多次,每次都感觉自己懂了但又很快忘记,于是决定花一些时间把这个问题的答案整理在这里。
本文主要参考:
知乎-姚远:梯度的方向为什么是函数值增加最快的方向?
作者已经写得非常清晰,我这里主要是择其重点进行摘录,以供自己日后参考。在此对作者表示感谢!
多元函数的偏导数
多元函数的偏导数就是函数在一点处沿着某一坐标轴方向的变化率。
以二元函数 z = f ( x , y ) z=f(x,y) z=f(x,y)为例:
- 当自变量 y y y 固定在 y 0 y_0 y0,函数关于自变量 x x x 在 x 0 x_0 x0 处的变化率称为函数在点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0) 处对 x x x 的偏导数,记作 f x ( x 0 , y 0 ) f_x(x_0,y_0) fx(x0,y0)。
- 当自变量 x x x 固定在 x 0 x_0 x0,函数关于自变量 y y y 在 y 0 y_0 y0 处的变化率称为函数在点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0) 处对 y y y 的偏导数,记作 f y ( x 0 , y 0 ) f_y(x_0,y_0) fy(x0,y0)。
多元函数的方向导数
多元函数的图像是一个曲面。因为过曲面上一点可以作出无数条切线,所以函数在一点也具有无数个变化率。
偏导数仅仅描述了函数在一点处沿着某一坐标轴方向的变化率。为了求出函数沿任一方向的变化率,我们需要按照变化率的定义,即函数的增量与自变量沿着某一方向增量比值的极限。
仍以二元函数
z
=
f
(
x
,
y
)
z=f(x,y)
z=f(x,y)为例:
假设某一方向的单位向量为
e
l
=
(
c
o
s
α
,
s
i
n
α
)
\mathbf{e}_l=(cos\alpha,sin\alpha)
el=(cosα,sinα) ,
α
\alpha
α 为此向量与x轴正向夹角。显然根据
α
\alpha
α 的不同,此向量可以表示任意方向的单位向量。
当点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0) 沿着该方向产生一个增量 t t t 到达点 ( x 0 + t c o s α , y 0 + t s i n α ) (x_0+t cos\alpha,y_0+t sin\alpha) (x0+tcosα,y0+tsinα)时,函数 z z z 也会产生一个增量 Δ z = f ( x 0 + t c o s α , y 0 + t s i n α ) − f ( x 0 , y 0 ) \Delta z=f(x_0+t cos\alpha,y_0+t sin\alpha)-f(x_0,y_0) Δz=f(x0+tcosα,y0+tsinα)−f(x0,y0)。
此时,函数沿此方向的变化率为:
lim
t
→
0
+
f
(
x
0
+
t
cos
α
,
y
0
+
t
sin
α
)
−
f
(
x
0
,
y
0
)
t
=
f
x
(
x
0
,
y
0
)
cos
α
+
f
y
(
x
0
,
y
0
)
sin
α
\lim _{t \rightarrow 0^{+}} \frac{f\left(x_{0}+t \cos \alpha, y_{0}+t \sin \alpha\right)-f\left(x_{0}, y_{0}\right)}{t}=f_{x}\left(x_{0}, y_{0}\right) \cos \alpha+f_{y}\left(x_{0}, y_{0}\right) \sin \alpha
t→0+limtf(x0+tcosα,y0+tsinα)−f(x0,y0)=fx(x0,y0)cosα+fy(x0,y0)sinα
多元函数的梯度
上面我们已经求得函数沿某一方向的变化率为 f x ( x 0 , y 0 ) cos α + f y ( x 0 , y 0 ) sin α f_{x}\left(x_{0}, y_{0}\right) \cos \alpha+f_{y}\left(x_{0}, y_{0}\right) \sin \alpha fx(x0,y0)cosα+fy(x0,y0)sinα,下面我们只需求 α \alpha α 取何值时上式达到最大值。
由于上式可以看成两个向量的内积,令 g = ( f x ( x 0 , y 0 ) , f y ( x 0 , y 0 ) ) \mathbf{g}=\left(f_{x}\left(x_{0}, y_{0}\right), f_{y}\left(x_{0}, y_{0}\right)\right) g=(fx(x0,y0),fy(x0,y0)), e l = ( c o s α , s i n α ) \mathbf{e}_l=(cos\alpha,sin\alpha) el=(cosα,sinα),则:
f
x
(
x
0
,
y
0
)
cos
α
+
f
y
(
x
0
,
y
0
)
sin
α
=
g
⋅
e
l
=
∣
g
∣
∣
e
l
∣
cos
θ
=
∣
g
∣
cos
θ
f_{x}\left(x_{0}, y_{0}\right) \cos \alpha+f_{y}\left(x_{0}, y_{0}\right) \sin \alpha=\mathbf{g} \cdot \mathbf{e}_{l}=|\mathbf{g}|\left|\mathbf{e}_{l}\right| \cos \theta=|\mathbf{g}| \cos \theta
fx(x0,y0)cosα+fy(x0,y0)sinα=g⋅el=∣g∣∣el∣cosθ=∣g∣cosθ
其中
θ
\theta
θ 为
g
\mathbf{g}
g 和
e
l
\mathbf{e}_l
el 的夹角。
根据上式,可得出如下结论:
- 当 θ = 0 \theta=0 θ=0 时,即 g \mathbf{g} g 和 e l \mathbf{e}_l el 方向相同时,函数变化率最大,且在点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0) 处呈上升趋势;
- 当 θ = π \theta=\pi θ=π 时,即 g \mathbf{g} g 和 e l \mathbf{e}_l el 方向相反时,函数变化率最大,且在点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0) 处呈下降趋势。
由于向量 g = ( f x ( x 0 , y 0 ) , f y ( x 0 , y 0 ) ) \mathbf{g}=\left(f_{x}\left(x_{0}, y_{0}\right), f_{y}\left(x_{0}, y_{0}\right)\right) g=(fx(x0,y0),fy(x0,y0)) 的方向为函数值增加最快的方向,为便于表述,人们为其取了一个名字—梯度。
换言之,多元函数在某一点的梯度是一个非常特殊的向量,其由多元函数对每个变量的偏导数组成,其方向为函数在该点增加最快的方向,大小为函数在该点的最大变化率。