机器学习中几种常见优化方法总结

1、梯度下降法
假设f(x)是具有一阶连续偏导数的函数。要求解的无约束最优化问题是:
梯度下降法是一种迭代算法,选取适当的初值x(0),不断迭代更新x的值,进行目标函数的极小化,直到收敛。由于负梯度方向是使得函数值下降最快的方向,所以在迭代的每一步,以负梯度方向更新x的值,从而达到减少函数值的目的。f(x)具有一阶连续偏导数,若第k次迭代值为x(k),则可将f(x)在x(k)附近进行一阶泰勒展开:
gk是f(x)在x(k)附近的梯度。

2、牛顿法
牛顿法和拟牛顿法也是求解无约束最优化问题的常用方法。
牛顿法的基本思想是用迭代点 x k 处的一阶导数(梯度 g k )和二阶倒数(海森矩阵 G k )对目标函数进行二次函数近似,然后把二次模型的极小点作为新的迭代点。牛顿法是迭代算法,每一步需要求解目标函数的海森矩阵的逆矩阵,计算比较复杂。拟牛顿法通过正定矩阵近似海森矩阵的逆矩阵或海森矩阵,简化了这一计算过程。
假设f(x)是具有二阶连续偏导数的函数。要求解的无约束最优化问题是:
假设f(x)具有二阶连续偏导数,若第k次迭代值为x(k),则可将f(x)在x(k)附近进行二阶泰勒展开:
g(k)是f(x)在x(k)附近的梯度,
是海森矩阵
在点x(k)的值。函数f(x)有极值的必要条件是极值点处一阶导数为0,即梯度向量为0.特别是H矩阵为正定矩阵时,函数f(x)的极值为极小值。
牛顿法利用极小点的必要条件
每次迭代从x(k)开始,求目标函数的极小点,作为第k+1次 迭代值x(k+1)。假设x(k+1)满足:
代入f(x)公式,得出
其中
从而x(k+1)满足:
从而推出
但是这里需要求海森矩阵的逆矩阵,计算比较复杂,因此还有一些改进的基本想法。
3、拟牛顿法-BFGS算法
拟牛顿法的思想是考虑用一个n阶矩阵来代替海森矩阵,这就是拟牛顿法的基本思想。
拟牛顿法中最流行的是BFGS(Broyden-Fletcher-Goldfarb-Shanno)算法:
牛顿法的优点是具有二阶收敛速度,缺点是:
  • 但当海森矩阵G(xk)=∇2f(x) 不正定时,不能保证所产生的方向是目标函数在xk处的下降方向。
  • 特别地,当G(xk)奇异时,算法就无法继续进行下去。尽管修正牛顿法可以克服这一缺陷,但修正参数的取值很难把握,过大或过小都会影响到收敛速度。
  • 牛顿法的每一步迭代都需要目标函数的海森矩阵G(xk),对于大规模问题其计算量是惊人的。
拟牛顿法的基本思想是用海森矩阵 G k 的某个近似矩阵 B k 取代 G k B k 通常具有下面三个特点:
  • 在某种意义下有BkGk ,使得相应的算法产生的方向近似于牛顿方向,确保算法具有较快的收敛速度。
  • 对所有的kBk是正定的,从而使得算法所产生的方向是函数fxk处下降方向。
  • 矩阵Bk更新规则比较简单
输入:目标函数f(x),精度要求e
输出:f(x)的极小点x*.
(1)、选定初始点x(0),取B(0)为正定矩阵,置k=0;
(2)、计算gk = g(x(k)),如果小于e(阈值),则得到近似解x(k),否则继续转(3);
(3)、由B(k)*p(k) = -g(k)求出p(k);
(4)、一维搜索:求得 λk使得:
(5)、计算x(k+1)
(6)、计算
若g(k+1)小于阈值,则停止计算,得到近似值,否则继续计算B(k+1)的值
(7)、置k = k+1,转(3)

参考文献
  • 统计学习方法 李航
  • 梯度-牛顿-拟牛顿优化算法和实现
http://blog.csdn.net/u012176591/article/details/46225289

你可能感兴趣的:(机器学习)