什么是梯度下降

梯度下降(Gradient Descent GD)简朴来说就是一种寻找目的函数最小化的方式,它行使梯度信息,通过不停迭代调整参数来寻找合适的目的值。 本文将先容它的原理和实现。

什么是梯度?

关于梯度的引入,可以分为四个观点:导数 -》偏导数 -》偏向导数 -》 梯度。

导数:当函数界说域和取值都在实数域中的时刻,导数可以示意函数曲线上的切线斜率。

什么是梯度下降

偏导数:偏导实在就是多元函数一个多变量的函数的偏导数是它关于其中一个变量的导数,而保持其他变量恒定。由于曲面上的每一点都有无限多条切线,形貌这种函数的导数相当难题。偏导数就是选择其中一条切线,并求出它的斜率 。几何意义是示意牢固面上一点的切线斜率。

多元函数降维时刻的转变,好比二元函数牢固y,只让x单独转变,从而看成是关于x的一元函数的转变来研究。

什么是梯度下降指的是函数在y偏向稳定,函数值沿着x轴偏向的转变率

什么是梯度下降指的是函数在x偏向稳定,函数值沿着y轴偏向的转变率

什么是梯度下降

然则偏导数有一个瑕玷,就是只能示意多元函数沿坐标轴偏向的转变率,然则许多时刻要思量多元函数沿随便偏向的转变率,于是就有了偏向导数。

偏向导数:某个偏向的导数,本质就是函数在A点上无数个切线的斜率的界说,每个切线都代表一个偏向,每个偏向都是有偏向导数的。

什么是梯度下降

梯度:梯度是一个矢量,在其偏向上的偏向导数最大,也就是函数在该点处沿着梯度的偏向转变最快,转变率最大。

那么在机械学习中逐步迫近、迭代求解最优化时,经常会使用到梯度,沿着梯度向量的偏向是函数增添的最快,更容易找到函数的最大值,反过来,沿着梯度向量相反的地方,梯度削减的最快,更容易找到最小值。

什么是梯度下降

举个常见的例子:你站在山上某处,想要尽快下山,于是决议走一步算一步,也就是每走到一个位置时,求解当前位置的梯度,沿着梯度的负偏向,也就是当前最陡峭的位置向下走,这样一直走下去,很可能走不到山脚,而是某个局部的山峰最低处。如下图所示:

什么是梯度下降

以上,我们可以总结一下:梯度下降法就是沿着梯度下降的偏向求解极小值,沿着梯度上升的偏向可以求得最大值,这种方式叫梯度上升。

从上图可以看到:受到起始点和目的函数特征的影响,梯度下降不一定找到的是全局最优解,可能只是局部最优解,那么什么时刻能找到全局最优解呢?这个与损失函数有关,当损失函数是凸函数的话,可以找到全局最优。

一些主要观点

凭据上述梯度下降的求解原理,我们需要领会如下几个梯度下降相关的主要观点:

计算机网络 – 数据链路层

步长(Learning rate):每一步梯度下降时向目的偏向前行的长度,用上面下山的例子,步长就是在当前这一步所在位置沿着最陡峭最易下山的位置走的那一步的长度。

假设函数(hypothesis function) 在监视学习中,为了拟合输入样本,而使用的假设函数,常用h()示意,对于线性回归模子,假设函数就是函数
\[ Y = W_0 + W_1X1 + W_2X2 + … + W_nX_n \]
损失函数(loss function): 常用J()示意,为了评估模子的利害,通常用损失函数来器量拟合的水平。损失函数最小化,意味着拟合水平最好,对应的模子参数即为最优参数。每个机械学习模子都有一个损失函数,学习的目的就是将损失函数最小化,

算法详解

梯度下降的详细算法实现历程是:

  1. 确定模子的假设函数和损失函数
  2. 相关参数的初始化,包罗:参数、算法终止距离和步长
  3. 确定当前位置损失函数的梯度
  4. 用步长乘以梯度,获得当前位置下降的距离
  5. 确定是否所有参数梯度下降的距离都小于算法终止距离,若是小于则算法终止,否则举行下一步
  6. 更新所有参数,更新完毕转到步骤1

面临的问题

梯度下降会遇到所有最优化问题中常见的两个问题:局部最小值和鞍点。

局部最小值

这是梯度下降法最常遇到的一个问题,当一个函数存在多个局部最小值,很可能梯度下降法只是找到其中的一个局部最小值而住手。

怎么制止呢?

下山的例子中,我们看到初始值差别,获得的最小值可能差别,以是规避局部最小值最简朴的方式可以多次用差别的初始值执行算法,选择损失函数最小的初始值。

鞍点

鞍点是最优化问题中常遇到的一个征象,鞍点的数学寄义是:目的函数在此点的梯度为0,但从该点出发的一个偏向存在函数极大值点,而另一个偏向是函数的极小值点。典型的鞍点函数是典型的鞍点是函数 f(x)=x^3 中的(0,0),函数 z=x^2-y^2 的 多个鞍点 (0,0,0),(1,1,0),(2,2,0)) 。

什么是梯度下降

在高度非凸空间中,存在大量的鞍点,这使得梯度下降法有时会失灵,虽然不是极小值,然则看起来确是收敛的。

调优

从算法的执行步骤来看,需要调优的地方包罗:

  1. 步长:差别的场景中步长的选择需要实验和权衡,步长越长,迭代越快,有可能错过最优解,步长太小,迭代速率太慢,很长时间算法都不能竣事。以是算法的步长需要多次运行后才气获得一个较为优的值。
  2. 初始值:初始值差别,最终获得的最小值有可能差别,可能获得的只是局部最小值;固然若是损失函数是凸函数则一定是最优解。需要多次用差别初始值运行算法,选择损失函数最小化的初值。

常见的梯度下降法

批量梯度下降(Batch Gradient Descent BGD)

上面所先容的算法实在就是批量梯度下降。需要首先盘算所有数据上的损失值,然后再举行梯度下降,详细的操作步骤是:遍历所有数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度。这种方式每更新一次参数,都要把数据集里的所有样本盘算一遍,盘算量大,盘算速率慢,不支持在线学习。

随机梯度下降(Stochastic Gradient Descent SGD)

不使用全量的样原本盘算梯度,而使用单一样原本近似估量梯度,可以极大地削减盘算量,提高盘算效率。详细的操作步骤是:每次从训练集中随机选择一个样本,盘算其对应的损失和梯度,举行参数更新,频频迭代。

这种方式在数据规模比较大时可以削减盘算复杂度,从概率意义上来说的单个样本的梯度是对整个数据聚集梯度的无偏估量,然则它存在着一定的不确定性,因此收敛速率比批梯度下降得更慢。

小批量梯度下降(Mini-batch Gradient Descent)

为了战胜上面两种方式的瑕玷,接纳的一种折中手段:将数据分为若干批次,按批次更新参数,每一批次中的一组数据配合决议了本次梯度的偏向,下降起来就不容易跑偏,削减了随机性,另一方面,由于批的样本数比整个数据集少了许多,盘算量也不是很大。

每次使用多个样原本估量梯度,这样可以削减不确定性,提高收敛速率,其中每次迭代选取的样本数目称为批巨细(batch size)。

参考:

什么是梯度下降法

为什么梯度反偏向是函数值局部下降最快的偏向?

梯度下降小结

原创文章,作者:dddof新闻网,如若转载,请注明出处:https://www.dddof.com/archives/1369.html