梯度与梯度下降

本篇系列地介绍了导数、偏导数、方向导数、梯度和梯度下降算法。
导数 梯度与梯度下降
文章图片
图1 导数的定义:

导数反映的是函数在某一点处沿正方向的变化率(即变化的趋势和猛烈程度),表明函数在点处沿正方向有增加的趋势,表明函数在点处沿正方向有减小的趋势;的绝对值越大,表明函数在点处增加或者减小的趋势越猛烈(也就是函数切线越陡峭)。
某一点的导数值还能说是这一点处切线的斜率
【梯度与梯度下降】符号解释:
(1) : 的变化量,是实实在在的值(比如是0.001)
(2) : ,是函数值的增量,也是可以计算出来的实实在在的值(比如是2.5 - 2.3 = 0.2)
(3)和是两个无穷小量
(4): 的变化量趋近于0时,将这个很小很小的记作
(5) 虽然我不确定与是否相等,但与肯定不想等,只能是近似相等
和差多少?
在极限微分学中,先有导数定义,所以我们从导数定义开始,
由导数定义可得,,所以得到,
当,,其中,
所以,,是的主要部分,二者相差(这应该是个高阶无穷小)
偏导数 导数与偏导数的区别:导数是一元函数里的概念,偏导数是二元及多元函数里的概念
偏导数定义:
梯度与梯度下降
文章图片

偏导数本质上与导数一致,是固定其他自变量,只沿着某一个自变量方向的导数,称之为该自变量的偏导数。
以为例(该函数表示空间中的一个平面),计算点处的偏导数,该函数总共有两个自变量和,则有两个偏导数:1)固定其他自变量(即另)求沿着方向的偏导数;2)固定其他自变量(即另)求沿着方向的偏导数

梯度与梯度下降
文章图片
图2

  • 多元函数中某一点的偏导数,就是函数沿着某个自变量方向的导数
  • 偏导数就是函数在某个自变量方向的切线斜率(这与一元函数中导数的切线意义是一样的)
  • 同样,偏导数也反映了函数在某个自变量方向的变化率
偏导数并没有什么独特的神奇之处,就是一元函数导数在多元函数上的扩充。一元函数因为只有一个自变量(比如),只能在这一个方向上求导;多元函数因为有两个或者两个以上的自变量(比如),所以就需要在多个方向上求导,起了个新名字,就是偏导数,仅此而已。
方向导数 梯度与梯度下降
文章图片
图3 以为例,现在我不仅想要函数在某一点处沿着x轴和沿着y轴的导数(这两个导数叫做偏导数),我还想求函数在其他任意方向的导数,毕竟除了两个自变量轴的方向,还有其他无数个方向。这就是方向导数。
梯度与梯度下降
文章图片
图4 假设为一个曲面,为定义域中的一个点,单位向量(不仅沿着x方向、y方向有单位向量,其他方向也是可以有单位向量的),其中是此方向向量与轴正方向的夹角,显然,随着夹角的变化,可以表示任意方向。
那我们接着求函数在方向上的导数(也能叫做新名字 “方向导数”吧),如果下列的极限值存在,

则该极限值被称为函数在方向上的方向导数,记为。
由全微分定义:

另,则有

结合式(3)和式(5),得到

式(6)说明,任意方向的导数(即方向导数)可以通过偏导数和方向角来表示。
梯度 函数在某一点处具有无数个方向导数,这些方向导数描述了函数所有方向上的变化率,那么自然会有一个问题:函数在哪个方向导数上变化率最大(即变化最快)呢?显然这会是个很重要的性质。
  • 将变化率最大的那个方向导数叫做梯度。
  • 最大方向导数的方向叫做梯度方向。
  • 函数沿着梯度方向变化率最大,变化最快,切线斜率最大
那么这个最大的方向导数是哪个方向呢?
由公式(6),另,,是两个向量,则有

其中表示向量与向量之间的夹角
由公式(7)可知,当,即时,方向导数取得最大值,也就是说当向量与向量方向一致时,具有最大的方向导数,即梯度方向。
  • 梯度是一个向量
  • 梯度的方向就是偏导数组成的向量的方向,虽然在不停变化,但只有变化到与偏导数向量的方向一致时,才是最大方向导数的方向,即梯度方向。
  • 二元函数的梯度可以表示为
  • 多元函数的梯度可以表示为
总之,梯度是一个向量,可表示为,函数沿着梯度方向多元函数变化率最大,切线斜率最大,函数图像最陡峭。
梯度下降 讲清楚梯度的概念,梯度下降不再是问题,梯度下降是指函数沿着梯度方向(这里是梯度的反方向)下降。
梯度与梯度下降
文章图片
图5 梯度与梯度下降
文章图片
图6 图5表示函数的曲面,图6表示曲面上各点的梯度,蓝色箭头的长度和方向分别表示当前点的梯度大小和梯度方向。
显然发现,在函数的谷底到峰顶的过程中,梯度值比较大,因为这里的曲面很陡峭;而在谷底附近和峰顶附近,由于曲面相对比较平缓,所以梯度值小;而且蓝色箭头的方向(梯度方向)是函数曲面增长的方向,这就说明梯度这个概念是可以有效表示这些性质的。
梯度下降算法的求解:
(1) 梯度下降算法的表达式为:

其中,为向量,例如
(2) 假设目标函数为:

(3) 那么,根据梯度公式,参数更新过程为:
() := () -
或者分开求解:


这样参数得以更新,需要注意的是:
  • 梯度方向是函数增长的方向,由于我们希望沿着函数下降的方向移动,所以这里使用“减号”
  • 梯度值是变化率,而不是函数值的变化,需要乘以一个,才算是函数值的变化。类似于,梯度值相当于,相当于,我们希望减去,而不是减去,所以这里需要。
参考文献 导数、微分、偏导数、全微分、方向导数、梯度的定义与关系
动画带你理解偏导数和梯度
Gradient Descent Derivation

    推荐阅读