梯度下降算法【从简单的数学的角度理解】Gradient Descent、偏导数、多元函数微分学

本篇博文,从简单的微积分作为切入点,介绍梯度下降的一些数学的基础理论。

本篇文章适合已经有了部分梯度下降算法的了解或者应用,想要从简单的数学基础去更深入学习该算法的童鞋

前置知识:微积分(多元函数微分、偏导数)

在正式进入主题之前,先补充一点微积分的基础知识

偏导数

定义:设函数  \small z = f(x,y) 在区间 \small (x_{0},y_{0}) 的某一领域内有定义,当 y 固定在 y_{0}时,而 x 在 x_{0} 处有增量 \bigtriangleup x 时,相应的函数有增量:

\large f(x_{0}+\bigtriangleup x,y_{0})-f(x_{0},y_{0})

如果:

\large \lim_{\bigtriangleup x\rightarrow 0}\frac{f(x_{0}+\bigtriangleup x)-f(x_{0},y_{0})}{\bigtriangleup x}  极限存在,那么就称此极限为 函数 \large z=f(x,y) 在点 \large (x_{0},y_{0}) 对 \large x 的偏导数

偏导数记作:

                           \large \frac{\partial z }{\partial x}        或      \LARGE f_x

借一张图,解释偏导数的几何意义:

梯度下降算法【从简单的数学的角度理解】Gradient Descent、偏导数、多元函数微分学_第1张图片

通过上面的这一张图,可以这么理解偏导数:有一个三维的坐标系 \large x,y,z,其中 \large x,y 是自变量, \large z 是因变量。

即 \large z = f(x,y) ,那么:\large \frac{\partial z}{\partial x} 意为 在固定 \large y(上图是y=1)值的情况下,自变量 \large x 增加 \large \bigtriangleup x (此处的\large \bigtriangleup x是一个非常小的值,无限的趋近于0) 此时函数 \large z = f(x,y) 的增量就是所谓的偏导数。

关于偏导数是否存在:这里不做过多的讨论,记住常见的场景:如果函数不连续那么偏导数不存在。但是反过来:偏导数存在函数不一定连续。这里不予以证明,想要了解更多的细节可以参考《微积分》

如何计算?

通过前面的一些知识铺垫,现在可以通过几个例子了解偏导数的计算

1. \large z = x^{3}y - y^{3}x , 求函数分别关于 \large x\large y 的偏导数

2.求 \large r = \sqrt{x^{2}+y^{2}+z^{2}} 的偏导数

当对某一变量求偏导数时,只需要把其他的变量看出常数,然后求导即可

1.   关于 \large x 的偏导数: \large \frac{\partial z}{\partial x}=3yx^{2}-y^{3} , 关于 \large y 的偏导数:   \large \frac{\partial z}{\partial y} = x^{3}-3xy^{2}

求关于 \large x 的偏导数时只需要把 \large y 看出常数,然后求导即可,同理即可求关于 \large y 的偏导数。

 

2、如果没有指明要关于哪一个自变量的偏导数,那么就是要求关于全部自变量的偏导数

像这样的复合函数求偏导数,可以先用变量 \large u = \large x^{2}+y^{2}+z^{2}  替代,所以有:

\large \frac{\partial r}{\partial x} = \large {u^{\frac{1}{2}}}'      先对 \large u 求导,然后乘以 \large u 对 \large x 的偏导数。ps 如果这里看不懂可能是基础弱,建议看看高中的导数>>>复合函数求导有的地方也叫链式求导。

\large \frac{\partial r}{\partial x} =\frac{1}{2\cdot u^{\frac{1}{2}}}\cdot \frac{\partial u}{\partial x}     

\large \frac{\partial r}{\partial x} = \frac{x}{\sqrt{x^2+y^2+z^2}}   ,  又    \large r = \sqrt{x^{2}+y^{2}+z^{2}}  

最终:\large \frac{\partial r}{\partial x} = \frac{x}{r} ,

根据上面的计算流程同理可以计算出:

\large \frac{\partial r}{\partial y} = \frac{y}{r}

\large \frac{\partial r}{\partial z} = \frac{z}{r}

这里有函数对称性的定义,就说如果函数表达式中任意两个自变量对调后,任然是原来的函数那么这个函数就是对称的,对不同的自变量求偏导数的结果是一致的,只需要替换对应的变量符合,可以参考上面一题的结果。

通过上面的例子计算,相信童鞋们可以去试着推导一下,线性回归算法中应用梯度下降所求的梯度

关于方向导数和梯度

了解完了偏导数和简单的偏导数计算,终于可以进入主题了.......

偏导数反应的是函数沿着坐标轴方向的变化率,但实际工程应用中,我们仅考虑坐标轴的变化率显然是不够的,因此我们有必要来讨论函数沿着特定方向的变化率问题,也就是所谓的 “方向导数“

设直线方程 \large l 是平面 \large x\LARGE o\large y 上以点 \large P(x,y) 为起点的一条射线,\large e = (cos \alpha , cos \beta ) 是与这条射线同方向的单位向量,如下图所示:

梯度下降算法【从简单的数学的角度理解】Gradient Descent、偏导数、多元函数微分学_第2张图片

那么我们已经知道 \large e 就是 直线方程 \large l 的方向向量,根据>>>>>>>向量代数与空间解析几何>>>>>直线的对称方程或点向式方程可以得:

                                                                 \LARGE \frac{x-x_{0}}{cos \alpha } = \frac{y-y_{0}}{cos \beta} = t  

所以,关于 直线方程 \LARGE l 的参数方程为:

                                                                \LARGE \left\{\begin{matrix} x = x_{0} + tcos \alpha & \\ y = y_{0} + tcos \beta & \end{matrix}\right.

有另外一个点 \large P_{0}(x_{0}+ t cos \alpha,y_{0} + tcos \beta ) 在直线 \large l 上,并且 \large P 与 \large P_{0} 两点直接的距离  \large \begin{vmatrix} PP_{0} \end{vmatrix} = t,如果极限:

                                                \LARGE \lim_{t\rightarrow 0^{+}} \frac{f(x_{1}+tcos \alpha,y_{1} + tcos \beta ) - f(x_{0},y_{0})}{t}

存在,那么就把这个极限称为函数 \large f(x,y) 在 点 \large p 处沿方向 \large l 的方向导数。用符号记作:

                                                                                            \LARGE \frac{\partial f}{\partial l}\left.\begin{matrix} \\ \end{matrix}\right| \small (x_{0},y_{0})

这个符号看起来和求偏导数的符合是一样的,但是注意 这里的 \large l 是函数符号,不是某一个自变量符号。可以看成是函数对函数的偏导数。

方向导数如何计算?

方向导数计算有如下定量(此处不予以证明):

                                                      \LARGE \frac{\partial f}{\partial l} = \frac{\partial f}{\partial x}\cdot cos \alpha + \frac{\partial f}{\partial y}\cdot cos \beta

\LARGE cos \alpha 与 \LARGE cos \beta 就是方向 \LARGE l 的方向余弦

 

1. 求函数 \large z = x\cdot e^{2y} 以点 \large P(1,0) 为起点,移动到点 \large Q(2,-1) 的方向导数 

分析:首先根据公式,首先需要求得 函数 \large z = x\cdot e^{2y}  关于 \large x\large y 的偏导数,然后再求 \large cos \alpha 、\large cos\beta,前面提到过了偏导数的计算方法,相对来说是比较简单的。而  \large cos \alpha 、\large cos\beta 就是单位向量 \large e。根据两个点就可以计算出沿此方向的单位向量,也是高中的数学知识,如果不清楚了度娘问一下。

          \LARGE \frac{\partial z}{\partial x} = e^{2y} |_{(1,0)} = 1                        \LARGE \frac{\partial z}{\partial y} = 2xe^{2y} |_{(1,0)} = 2

单位向量  \LARGE \overline{e} :

 \LARGE \overrightarrow{e}=(2-1,-1-0)=(1,-1)        \LARGE |e| = \sqrt{1^2+(-1)^2} = \sqrt{2}

\LARGE \overline{e} = \frac{\overrightarrow{e}}{|e|} = \frac{(1,-1)}{\sqrt{2}} =(\frac{1}{\sqrt{2}},\frac{-1}{\sqrt{2}})

 \LARGE \therefore cos \alpha = \frac{1}{\sqrt{2}}     \LARGE cos \beta = -\frac{1}{\sqrt{2}}

把上述计算的结果代入到计算方向导数定义公式中,即可得:

\LARGE \therefore \frac{\partial z}{\partial l} = 1\cdot \frac{1}{\sqrt{2}} - 2\cdot \frac{1}{\sqrt{2}}=- \frac{\sqrt{2}}{2}

这就是最终求得的方向导数

梯度

梯度是与方向到时有相关联的,在二元函数的情况下,设函数 f(x,y) 在平面区域内有连续的一阶偏导数,那么对于每一个点 P(x_{0},y_{0}) 都可以定义出一个向量:

                                                  f_{x}(x_{0},y_{0})\cdot i + f_{y}(x_{0},y_{0})\cdot j

这个向量就称为函数 f(x,y) 在点 P(x_{0},y_{0}) 的梯度,记作 \large \mathbf{grad } f(x_{0},y_{0}) 或 \large \mathbf{\bigtriangledown }f(x_{0},y_{0})

可以看出,函数的梯度与函数方向导数定义式非常相接近, 其中 \large \bigtriangledown f = \frac{\partial }{\partial x}\cdot i + \frac{\partial }{\partial y}\cdot j 称作二维函数的向量微分算子或Nabla算子

回忆函数的方向导数定义式:

                                                 \LARGE \frac{\partial f}{\partial l} = \frac{\partial f}{\partial x}\cdot cos \alpha + \frac{\partial f}{\partial y}\cdot cos \beta

因此有:

                                             \large \frac{\partial f}{\partial l} = \textbf{grad} f(x_{0},y_{0})\cdot e_{l} = |\textbf{grad} f(x_{0},y_{0})|\cdot cos \theta         

其中 \large cos\theta = \widehat{(\mathbf{grad}f(x_{0},y_{0}),e_{l})} (这里指的是,函数梯度与单位方向向量夹角的余弦值)

上述结果说明了,当 \large \theta = \pi 时,说明函数梯度与方向相反,此时函数 \large f(x,y) 减少的最快,对应到梯度下降法的下降,这也就是为什么我们更新梯度的时候是 “减”。

函数 \large f(x,y) 的梯度向量是该函数在方向上取得最大值或者最小值,而梯度向量的模就等于方向导数的最大值或者最小值。

 

上述的全部例子都是在二维、三维的基础上进行介绍的,可以推广到多维空间上,定理任然成立。

 

好了,本篇博文就分享到这里,如果有疑问欢迎留言

 

 

 

 

 

你可能感兴趣的:(机器学习,深度学习)