梯度上升与梯度降低

 梯度降低法是机器学习和神经网络学科中咱们最先接触的算法之一。可是对于初学者,咱们对于这个算法是如何迭代运行的从而达到目的有些迷惑。在这里给出我对这个算法的几何理解,有不对的地方请批评指正!算法

        梯度降低法定义

        (维基百科)梯度降低法,基于这样的观察:若是实值函数 F(\mathbf{x}) 在点 \mathbf{a} 处可微且有定义,那么函数 F(\mathbf{x})在 \mathbf{a} 点沿着梯度相反的方向 -\nabla F(\mathbf{a}) 降低最快。网络

        于是,若是机器学习

                         \mathbf{b}=\mathbf{a}-\gamma\nabla F(\mathbf{a})

        对于 \gamma>0 为一个够小数值时成立,那么 F(\mathbf{a})\geq F(\mathbf{b})函数

        考虑到这一点,咱们能够从函数 F 的局部极小值的初始估计 \mathbf{x}_0 出发,并考虑以下序列 \mathbf{x}_0, \mathbf{x}_1, \mathbf{x}_2, \dots 使得学习

                        \mathbf{x}_{n+1}=\mathbf{x}_n-\gamma_n \nabla F(\mathbf{x}_n),\ n \ge 0.

        所以可获得图片

   F(\mathbf{x}_0)\ge F(\mathbf{x}_1)\ge F(\mathbf{x}_2)\ge \cdots,

       若是顺利的话序列 (\mathbf{x}_n) 收敛到指望的极值。注意每次迭代步长 \gamma 能够改变。ip

        下面图片示例了这一过程,这里假设 F 定义在平面上,而且函数图像是一个形。蓝色的曲线是等高线(水平集),即函数 F 为常数的集合构成的曲线。红色的箭头指向该点梯度的反方向。(一点处的梯度方向与经过该点的等高线垂直)。沿着梯度降低方向,将最终到达碗底,即函数 F 值最小的点。get

梯度降低法几何解释:

       因为咱们的任务是求得经验损失函数的最小值,因此上图的过程其实是一个“下坡”的过程。在每个点上,咱们但愿往下走一步(假设一步为固定值0.5米),使得降低的高度最大,那么咱们就要选择坡度变化率最大的方向往下走,这个方向就是经验损失函数在这一点梯度的反方向。每走一步,咱们都要从新计算函数在当前点的梯度,而后选择梯度的反方向做为走下去的方向。随着每一步迭代,梯度不断地减少,到最后减少为零。这就是为何叫“梯度降低法”。it

       那么,为何梯度的方向恰好是咱们下坡的反方向呢?为何咱们不是沿着梯度的方向下坡呢?这是由于,只有沿着梯度的反方向,咱们才能下坡,不然就是上坡了……举个例子,在y=f(x)的二维平面上,规定好x轴和y轴的方向后,若是曲线f(x)的值是随着x的增长上升的,那么它在某一点的切线的数值必定是正的。反之,若曲线f(x)的值是随着x的增长降低的,则它在降低的某一点的切线的数值必定是负数。梯度是方向导数在某一点的最大值,因此其值必然是正数。若是沿着梯度方向走,经验损失函数的值是增长的……因此,咱们要下坡,就必须沿着梯度方向的反方向了。class

 

梯度上升法几何解释:

       相对于梯度降低法,还有梯度上升法。(注意减号变成加号了)

                                   

       其基本原理与降低法一致,区别在于:梯度上升法是求函数的局部最大值。所以,对比梯度降低法,其几何意义和很好理解,那就是:算法的迭代过程是一个“上坡”的过程,每一步选择坡度变化率最大的方向往上走,这个方向就是函数在这一点梯度方向(注意不是反方向了)。最后随着迭代的进行,梯度仍是不断减少,最后趋近与零。

 

       有一点我是这样认为的:所谓的梯度“上升”和“降低”,一方面指的是你要计算的结果是函数的极大值仍是极小值。计算极小值,就用梯度降低,计算极大值,就是梯度上升;另外一方面,运用上升法的时候参数是不断增长的,降低法是参数是不断减少的。可是,在这个过程当中,“梯度”自己都是降低的。

相关文章
相关标签/搜索