这可以说是机器学习中一个最基础的问题,曾一度困扰我。查过很多次,每次都感觉自己懂了但又很快忘记,于是决定花一些时间把这个问题的答案整理在这里。
本文主要参考:
知乎-姚远:梯度的方向为什么是函数值增加最快的方向?
作者已经写得非常清晰,我这里主要是择其重点进行摘录,以供自己日后参考。在此对作者表示感谢!
多元函数的偏导数就是函数在一点处沿着某一坐标轴方向的变化率。
以二元函数 z = f ( x , y ) z=f(x,y) z=f(x,y)为例:
多元函数的图像是一个曲面。因为过曲面上一点可以作出无数条切线,所以函数在一点也具有无数个变化率。
偏导数仅仅描述了函数在一点处沿着某一坐标轴方向的变化率。为了求出函数沿任一方向的变化率,我们需要按照变化率的定义,即函数的增量与自变量沿着某一方向增量比值的极限。
仍以二元函数 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 的夹角。
根据上式,可得出如下结论:
由于向量 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)) 的方向为函数值增加最快的方向,为便于表述,人们为其取了一个名字—梯度。
换言之,多元函数在某一点的梯度是一个非常特殊的向量,其由多元函数对每个变量的偏导数组成,其方向为函数在该点增加最快的方向,大小为函数在该点的最大变化率。