假设我们站在山坡上,想知道怎么下山最快,有一种方法就是在每次下坡都走下坡最快的一步,也就是每一步都走斜率最大的方向,这种方法即为梯度下降法。
山坡图如下:
我们用函数 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轴正向的夹角,如下图所示:
类比导数的定义,我们可以得到 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=t→0limtf(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的方向为梯度方向。
通过以上推导,我们可以知道,梯度的反方向是函数下降最快的方向。
参考自知乎