BAT机器学习面试题精选 | 梯度下降法找到的一定是下降最快的方向么?


梯度下降法并不是下降最快的方向,它只是目标函数在当前的点的切平面(当然高维问题不能叫平面)上下降最快的方向。在practical implementation中,牛顿方向(考虑海森矩阵)才一般被认为是下降最快的方向,可以达到superlinear的收敛速度。梯度下降类的算法的收敛速度一般是linear甚至sublinear的(在某些带复杂约束的问题)。by林小溪(https://www.zhihu.com/question ... 89869)。
一般解释梯度下降,会用下山来举例。假设你现在在山顶处,必须抵达山脚下(也就是山谷最低处)的湖泊。但让人头疼的是,你的双眼被蒙上了无法辨别前进方向。换句话说,你不再能够一眼看出哪条路径是最快的下山路径,如下图(图片来源:http://blog.csdn.net/wemedia/details.html?id=45460):
62.1_.png
最好的办法就是走一步算一步,先用脚向四周各个方向都迈出一步,试探一下周围的地势,用脚感觉下哪个方向是下降最大的方向。换言之,每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向(当前最陡峭的位置向下)走一步。就这样,每要走一步都根据上一步所在的位置选择当前最陡峭最快下山的方向走下一步,一步步走下去,一直走到我们感觉已经到了山脚。
当然这样走下去,我们走到的可能并不一定是真正的山脚,而只是走到了某一个局部的山峰低处。换句话说,梯度下降不一定能够找到全局的最优解,也有可能只是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。
62.2_.png
@zbxzc(http://blog.csdn.net/u01456892 ... 56915):更进一步,我们来定义输出误差,即对于任意一组权值向量,那它得到的输出和我们预想的输出之间的误差值。定义误差的方法很多,不同的误差计算方法可以得到不同的权值更新法则,这里我们先用这样的定义:
62.3_.png
上面公式中D代表了所有的输入实例,或者说是样本,d代表了一个样本实例,od表示感知器的输出,td代表我们预想的输出。
这样,我们的目标就明确了,就是想找到一组权值让这个误差的值最小,显然我们用误差对权值求导将是一个很好的选择,导数的意义是提供了一个方向,沿着这个方向改变权值,将会让总的误差变大,更形象的叫它为梯度。
62.4_.png
既然梯度确定了E最陡峭的上升的方向,那么梯度下降的训练法则是:
62.5_.png
梯度上升和梯度下降其实是一个思想,上式中权值更新的+号改为-号也就是梯度上升了。梯度上升用来求函数的最大值,梯度下降求最小值。
这样每次移动的方向确定了,但每次移动的距离却不知道。这个可以由步长(也称学习率)来确定,记为α。这样权值调整可表示为:
62.6_.png
总之,梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为是“最速下降法”。最速下降法越接近目标值,步长越小,前进越慢。梯度下降法的搜索迭代示意图如下图所示:
62.7_.png
正因为梯度度下降法在接近最优解的区域收敛速度明显变慢,所以利用梯度下降法求解需要很多次的迭代。在机器学习中,基于基本的梯度下降法发展了两种梯度下降方法,分别为随机梯度下降法和批量梯度下降法。by@wtq1993,http://blog.csdn.net/wtq1993/a ... 07040

随机梯度下降
普通的梯度下降算法在更新回归系数时要遍历整个数据集,是一种批处理方法,这样训练数据特别忙庞大时,可能出现如下问题:
1)收敛过程可能非常慢;
2)如果误差曲面上有多个局极小值,那么不能保证这个过程会找到全局最小值。
为了解决上面的问题,实际中我们应用的是梯度下降的一种变体被称为随机梯度下降。
上面公式中的误差是针对于所有训练样本而得到的,而随机梯度下降的思想是根据每个单独的训练样本来更新权值,这样我们上面的梯度公式就变成了:
62.8_.png
经过推导后,我们就可以得到最终的权值更新的公式:
62.9_.png
有了上面权重的更新公式后,我们就可以通过输入大量的实例样本,来根据我们预期的结果不断地调整权值,从而最终得到一组权值使得我们的算法能够对一个新的样本输入得到正确的或无限接近的结果。
这里做一个对比
设代价函数为
62.10_.png
批量梯度下降
62.11_.png
参数更新为:
62.12_.png
i是样本编号下标,j是样本维数下标,m为样例数目,n为特征数目。所以更新一个θj需要遍历整个样本集
62.13_.png

随机梯度下降
参数更新为:
62.14_.png
i是样本编号下标,j是样本维数下标,m为样例数目,n为特征数目。所以更新一个θj只需要一个样本就可以。
62.15_.png
下面两幅图可以很形象的对比各种优化方法(图来源:http://sebastianruder.com/opti ... cent/):
62.16_.gif
SGD各优化方法在损失曲面上的表现
从上图可以看出, Adagrad、Adadelta与RMSprop在损失曲面上能够立即转移到正确的移动方向上达到快速的收敛。而Momentum 与NAG会导致偏离(off-track)。同时NAG能够在偏离之后快速修正其路线,因为其根据梯度修正来提高响应性。
62.17_.gif
SGD各优化方法在损失曲面鞍点处上的表现
已邀请:

要回复问题请先登录注册

返回顶部