机器学习优化算法中梯度降低,牛顿法和拟牛顿法的优缺点详细介绍

一、梯度降低法web

梯度降低法实现简单,当目标函数是凸函数时,梯度降低法的解是全局解。通常状况下,其解不保证是全局最优解,梯度降低法的速度也未必是最快的。算法

 

梯度降低法的优化思想:用当前位置负梯度方向做为搜索方向,由于该方向为当前位置的最快降低方向,因此也被称为是”最速降低法“。最速降低法越接近目标值,步长越小,前进越慢。app

缺点:机器学习

靠近极小值时收敛速度减慢,求解须要不少次的迭代;函数

直线搜索时可能会产生一些问题;学习

可能会“之字形”地降低。优化

二、牛顿法ip

牛顿法最大的特色就在于它的收敛速度很快。get

优势:二阶收敛,收敛速度快;class

缺点:

牛顿法是一种迭代算法,每一步都须要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂。

牛顿法收敛速度为二阶,对于正定二次函数一步迭代即达最优解。

牛顿法是局部收敛的,当初始点选择不当时,每每致使不收敛;

二阶海塞矩阵必须可逆,不然算法进行困难。

关于牛顿法和梯度降低法的效率对比:

从本质上去看,牛顿法是二阶收敛,梯度降低是一阶收敛,因此牛顿法就更快。若是更通俗地说的话,好比你想找一条最短的路径走到一个盆地的最底部,梯度降低法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不只会考虑坡度是否够大,还会考虑你走了一步以后,坡度是否会变得更大。因此,能够说牛顿法比梯度降低法看得更远一点,能更快地走到最底部。(牛顿法目光更加长远,因此少走弯路;相对而言,梯度降低法只考虑了局部的最优,没有全局思想。)

根据wiki上的解释,从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度降低法是用一个平面去拟合当前的局部曲面,一般状况下,二次曲面的拟合会比平面更好,因此牛顿法选择的降低路径会更符合真实的最优降低路径。

三、拟牛顿法

拟牛顿法的本质思想是改善牛顿法每次须要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度。

拟牛顿法和最速降低法同样只要求每一步迭代时知道目标函数的梯度。经过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速降低法,尤为对于困难的问题。另外,由于拟牛顿法不须要二阶导数的信息,因此有时比牛顿法更为有效。现在,优化软件中包含了大量的拟牛顿算法用来解决无约束,约束,和大规模的优化问题。

四、小结

机器学习中的无约束优化算法,除了梯度降低之外,还有前面提到的最小二乘法,此外还有牛顿法和拟牛顿法。

梯度降低法和最小二乘法相比,梯度降低法须要选择步长,而最小二乘法不须要。梯度降低法是迭代求解,最小二乘法是计算解析解。若是样本量不算很大,且存在解析解,最小二乘法比起梯度降低法要有优点,计算速度很快。可是若是样本量很大,用最小二乘法因为须要求一个超级大的逆矩阵,这时就很难或者很慢才能求解解析解了,使用迭代的梯度降低法比较有优点。

梯度降低法和牛顿法/拟牛顿法相比,二者都是迭代求解,不过梯度降低法是梯度求解,而牛顿法/拟牛顿法是用二阶的海森矩阵的逆矩阵或伪逆矩阵求解。相对而言,使用牛顿法/拟牛顿法收敛更快。可是每次迭代的时间比梯度降低法长。