梯度下降算法
【摘要】当前位置的梯度方向,为函数在该位置处方向导数最大的方向,也是函数值上升最快的方向,梯度的反方向为函数值下降最快的方向;
当前位置的梯度的模,为最大方向导数的值。
下山问题
假设处在一个山的半山腰位置,问怎么走,下山最快?
答案
不断沿着梯度的反方向走,下山最快。
解释与证明
导数:对于一元函数,导数表示一元函数的变化率,比如$f\left ( x \right ) =x^{2}$,导数为:$\lim_{t \to 0} \frac{f\left ( x+t \right )-f\left ( x \right ) }{t} =2x$。
偏导数:对于多元函数,用偏导数表示多元函数沿着自变量坐标轴方向的导数,也即函数沿坐标轴方向的切线的斜率。$z=f\left ( x,y \right ) $,对x,y的偏导数分别为:$\frac{\partial z}{\partial x} $和$\frac{\partial z}{\partial y} $。
方向导数:如果方向不是沿着坐标轴方向,而是沿着任意方向呢?则是方向导数,表示多元函数沿某一方向的变化率。
定义$xy$平面上一点$(a,b)$,以及单位向量:$\vec{u} =\left ( \cos \theta ,\sin \theta \right ) $,$\theta$表示该单位向量与x轴的夹角,在曲面$z=f(x,y)$上,从点$(a,b,f(a,b))$出发,沿$\vec{u} $方向走$t$个单位长度后,函数值$z=f\left ( a+\cos \theta ,b+\sin \theta \right ) $,则在点$(a,b)$处$\vec{方向的方向导数:
u} =\left ( \cos \theta ,\sin \theta \right ) $方向的方向导数:
令$x=t\cos \theta, y=t\sin \theta$,则通过链式法则,上式为:
写成向量内积的形式,即:
也就是说,在该点,任意方向的方向导数是偏导数的线性组合,组合系数是该方向的方向向量。
注意内积是标量,所以方向导数是标量。
梯度:偏导数构成的向量为梯度,记作$\bigtriangledown f$,对于二元函数$\bigtriangledown f=(\frac{\partial z}{\partial x},\frac{\partial z}{\partial y} )$,对于多元函数$\bigtriangledown f=(\frac{\partial z}{\partial x},\frac{\partial z}{\partial y},… )$ 。
根据:
其中$\varPhi$为梯度与方向向量$\vec{u} $的夹角,显然当$\varphi = 0$时,即方向向量沿着梯度方向时,方向导数最大,最大值为梯度的模;当$\varphi = \pi$时,即方向向量沿着梯度的反方向时,方向导数最小,最小值为梯度的模的负数。
至此,得到梯度的几何意义:
- 当前位置的额梯度方向,为函数在该位置处方向导数最大的方向,也是函数值上升最快的方向,梯度的反方向为函数值下降最快的方向;
- 当前位置的梯度的模,为最大方向导数的值。