梯度下降法(英语:Gradientdescent)是一个一阶最优化算法,通常也称为最陡下降法。
要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。
如果相反地向梯度正方向迭代进行搜索,则会接近函数的局部极大值点;这个过程则被称为梯度上升法。梯度下降一般归功于柯西,他在1847年首次提出它。Hadamard在1907年独立提出了类似的方法。
HaskellCurry在1944年首先研究了它对非线性优化问题的收敛性,随着该方法在接下来的几十年中得到越来越多的研究和使用,通常也称为最速下降。
梯度下降适用于任意维数的空间,甚至是无限维的空间。在后一种情况下,搜索空间通常是一个函数空间,并且计算要最小化的函数的Fréchet导数以确定下降方向。
梯度下降适用于任意数量的维度(至少是有限数量)可以看作是柯西-施瓦茨不等式的结果。那篇文章证明了任意维度的两个向量的内(点)积的大小在它们共线时最大化。
在梯度下降的情况下,当自变量调整的向量与偏导数的梯度向量成正比时。
修改为了打破梯度下降的锯齿形模式,动量或重球方法使用动量项,类似于重球在被最小化的函数值的表面上滑动,或牛顿动力学中的质量运动在保守力场中通过粘性介质。
具有动量的梯度下降记住每次迭代时的解更新,并将下一次更新确定为梯度和前一次更新的线性组合。对于无约束二次极小化,重球法的理论收敛速度界与最优共轭梯度法的理论收敛速度界渐近相同。
该技术用于随机梯度下降,并作为用于训练人工神经网络的反向传播算法的扩展。
谷歌人工智能写作项目:神经网络伪原创
梯度下降是通过迭代搜索一个函数极小值的优化算法。使用梯度下降,寻找一个函数的局部极小值的过程起始于一个随机点,并向该函数在当前点梯度(或近似梯度)的反方向移动。
梯度下降算法是一种非常经典的求极小值的算法。
比如逻辑回归可以用梯度下降进行优化,因为这两个算法的损失函数都是严格意义上的凸函数,即存在全局唯一极小值,较小的学习率和足够的迭代次数,一定可以达到最小值附近,满足精度要求是完全没有问题的。
并且随着特征数目的增多,梯度下降的效率将远高于去解析标准方程的逆矩阵。常用的梯度下降法有3种不同的形式:(1)批量梯度下降法,简称BGD,使用所有样本,比较耗时。
(2)随机梯度下降法,简称SGD,随机选择一个样本,简单高效。(3)小批量梯度下降法,简称MBGD,使用少量的样本,这是一个折中的办法。机梯度下降法优点:1、更容易跳出局部最优解。
2、具有更快的运行速度。
梯度下降法是一个一阶最优化算法,通常也称为最陡下降法,但是不该与近似积分的最陡下降法(英语:Methodofsteepestdescent)混淆。
梯度下降算法使用当前位置的梯度迭代计算下一个点,然后对其进行缩放(按学习率)并从当前位置减去获得的值(迈出一步)。它减去该值,因为我们想要最小化函数(最大化它会增加)。
注意事项从数学上的角度来看,梯度的方向是函数增长速度最快的方向,那么梯度的反方向就是函数减少最快的方向。那么,如果想计算一个函数的最小值,就可以使用梯度下降法的思想来做。
注意得到的函数临界点,临界点并不一定是全局最大值或者全局最小值,甚至不是局部的最大值或者局部最小值。
梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。
在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(GradientDescent)是最常采用的方法之一,另一种常用的方法是最小二乘法。
在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。反过来,如果需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。
在机器学习中,基于基本的梯度下降法发展了两种梯度下降方法,分别为随机梯度下降法和批量梯度下降法。缺点:(1)靠近极小值时收敛速度减慢。(2)直线搜索时可能会产生一些问题。(3)可能会“之字形”地下降。
还有很多,一步正割算法,拟牛顿算法,量化共轭梯度法,弹性梯度下降法等等。
具体可以在MATLAB的help文件训练函数中查看,路径是:NeuralNetworkToolbox>Functions>TrainingFunctions,可以看到各种算法的函数及详细介绍。