机器学习常见的优化算法

  • Post author:
  • Post category:其他




机器学习常见的优化算法:


1.梯度下降法:


梯度:如果函数是一维的变量,则梯度就是导数的方向;

如果是大于一维的,梯度就是在这个点的法向量,并指向数值更高的等值线,这就是为什么求最小值的时候要用负梯度。

梯度下降法的缺点:

(1)靠近极小值时收敛速度减慢,如下图所示;

(2)直线搜索时可能会产生一些问题;

(3)可能会“之字形”地下降。

三种梯度下降方法:

1.批量梯度下降法(BGD)(适合小量样本)

2.随机梯度下降(SGD)(适合大量样本)

3.共轭梯度法

SGD和BGD的比较:

SGD的问题是噪音比BGD要多,使得SGD不是每次迭代都向着整体最优的方向,SGD以损失一部分精确度和增加一定的迭代次数为代价,

换取了总体的优化效率的提升,增加的迭代次数远小于样本的数量。

BGD:最小化所有训练样本的损失函数,使得最终求解的是全局最优解,即使得求解的风险函数最小,但是对于大规模样本效率较低。

SGD:最小化所择的每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优的方向,但是大方向是全局最优解,

最终的结果往往是在全局最优解的附近,适用于大规模的训练样本情况。



2.牛顿法:


优点:二阶收敛,收敛速度快;

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



3.拟牛顿法:


拟牛顿法的本质思想是改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,

它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度。


梯度下降法和牛顿法的比较:

1.从本质来说,梯度下降法是一阶收敛,牛顿法是二阶收敛,所以牛顿法的收敛速度更快。

2.梯度下降法每次考虑的是当前位置的负梯度下降,而牛顿法不但考虑当前位置下降的是否够快,

还会考虑下一步下降的是否够大,也就是说牛顿法目标更长远一点。

3.牛顿法是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法使用一个平面去拟合当前的局部曲面,

通常情况二次曲面拟合会比平面更好,所以牛顿法的下降路径会更符合真实的最优下降路径。



4.启发式优化方法:

包括模拟退火方法、遗传算法、蚁群算法、粒子群算法等



5.EM算法:


EM算法的思想和过程:

E-step:E的全称是Exception,即期望的意思;也就是获取期望的过程,即E过程。

M-step:M的全称是Maximization,即最大化的意思,是期望最大化的过程;

得到一轮期望值以后,重新计算模型参数,以最大化期望值。这个过程为最大化过程,即M过程。

EM算法结果:

EM算法不一定能保证获得全局最优解,但如果我们优化的目标函数是一个凸函数,那么一定能保证得到全局最优,否则可能获得局部最优;

因为如果优化的目标函数有多个峰值点,则如果优化到某个不是最高的峰值点处,则会无法再继续下去,这样获得的是局部最优。

常见的EM算法有:隐含马尔科夫模型的训练方法Baum-Welch算法、最大熵模型的训练方法GIS算法等。




小结:


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

梯度下降法和最小二乘法相比:

梯度下降法需要选择步长,而最小二乘法不需要;梯度下降法是迭代求解,最小二乘法是计算解析解;

如果样本量不算很大,且存在解析解,最小二乘法比起梯度下降法要有优势,计算速度很快;

但是如果样本量很大,用最小二乘法由于需要求一个超级大的逆矩阵,这时就很难或者很慢才能求解了,使用迭代的梯度下降法比较有优势。

梯度下降法和牛顿法/拟牛顿法相比:

两者都是迭代求解,不过梯度下降法是梯度求解,而牛顿法/拟牛顿法是用二阶的海森矩阵的逆矩阵或伪逆矩阵求解。

相对而言,使用牛顿法/拟牛顿法收敛更快。但是每次迭代的时间比梯度下降法长。



版权声明:本文为gm_Ergou原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。