为什么函数下降最快的方向是负梯度方向

假设我们站在山坡上,想知道怎么下山最快,有一种方法就是在每次下坡都走下坡最快的一步,也就是每一步都走斜率最大的方向,这种方法即为梯度下降法。

山坡图如下:
为什么函数下降最快的方向是负梯度方向_第1张图片

我们用函数 z = f ( x , y ) z=f(x,y) z=f(x,y)表示山坡,建立三维坐标系,通过一步步推导,找到斜率最大的方向。

  • 方向导数
    假设下山的方向为 u u u p ( x 0 , y 0 ) p(x_0, y_0) p(x0,y0) z z z定义域上的一个点,单位向量 u = c o s θ i + s i n θ j u=cos\theta i+sin\theta j u=cosθi+sinθj,其中 θ \theta θ为方向 u u u x x x轴正向的夹角,如下图所示:
    为什么函数下降最快的方向是负梯度方向_第2张图片
    类比导数的定义,我们可以得到 u u u方向的斜率:
    D u f = lim ⁡ t → 0 f ( x 0 + t c o s θ , y 0 + t s i n θ ) − f ( x 0 , y 0 ) t D_uf=\lim_{t \to 0} \frac {f(x_0+tcos\theta ,y_0+tsin\theta)-f(x_0,y_0)}{t} Duf=t0limtf(x0+tcosθ,y0+tsinθ)f(x0,y0)
    记为 f f f沿 u u u方向的方向导数。随着 θ \theta θ的不同,我们可以求出任意方向的方向导数。
    方向导数还可以通过偏微分来表示: D u f = f x ( x , y 0 ) c o s θ + f y ( x 0 , y ) s i n θ D_uf=f_x(x,y_0)cos\theta+f_y(x_0,y)sin\theta Duf=fx(x,y0)cosθ+fy(x0,y)sinθ假设 A ⃗ = ( f x ( x , y 0 ) , f y ( x 0 , y ) ) \vec A=(f_x(x,y_0),f_y(x_0,y)) A =(fx(x,y0),fy(x0,y)) I ⃗ = ( c o s θ , s i n θ ) \vec I=(cos\theta,sin\theta) I =(cosθ,sinθ),则可得:
    D u f = A ⃗ ⋅ I ⃗ = ∣ A ⃗ ∣ ∗ ∣ I ⃗ ∣ c o s α D_uf=\vec A\cdot \vec I=\left| \vec A\right|* \left| \vec I\right|cos\alpha Duf=A I =A I cosα其中 α \alpha α为向量 A ⃗ \vec A A 与向量 I ⃗ \vec I I 的夹角。

  • 梯度
    函数增大最快的方向,即为导数最大的方向,反之,函数减小最快的方向即为导数最小的方向。

    根据
    D u f = A ⃗ ⋅ I ⃗ = ∣ A ⃗ ∣ ∗ ∣ I ⃗ ∣ c o s α D_uf=\vec A\cdot \vec I=\left| \vec A\right|* \left| \vec I\right|cos\alpha Duf=A I =A I cosα D u f D_uf Duf取最大值时, α \alpha α为0,向量 A ⃗ \vec A A 与向量 I ⃗ \vec I I 同向,此时函数在这个方向的增加最快。
    D u f D_uf Duf取最小值时, α \alpha α π \pi π,向量 A ⃗ \vec A A 与向量 I ⃗ \vec I I 犯向,此时函数在这个方向的减小最快。

    向量 A ⃗ \vec A A 在点 p ( x 0 , y 0 ) p(x_0, y_0) p(x0,y0)有固定方向,向量 I ⃗ \vec I I 不断变化,因此我们定义向量 A ⃗ \vec A A 的方向为梯度方向。

通过以上推导,我们可以知道,梯度的反方向是函数下降最快的方向。

参考自知乎

你可能感兴趣的:(为什么函数下降最快的方向是负梯度方向)