牛顿法(Newton's method)和拟牛顿法(Quasi-Newton methods)是求解无约束优化问题的两种常用方法,它们主要用于寻找函数的极小值点。
牛顿法
牛顿法是一种迭代算法,用于找到函数的根(零点)或者在优化中找到函数的极小值。在优化问题中,牛顿法利用了函数的一阶导数(梯度)和二阶导数(Hessian矩阵)来寻找极小值点。
算法步骤:
-
选择一个初始点 。
-
对于第 次迭代,计算目标函数 在 处的梯度 和 Hessian 矩阵 。
-
计算搜索方向 。
-
选择一个步长 ,通常通过线搜索来确定。
-
更新 。
-
重复步骤2-5,直到满足停止准则(如梯度接近零或达到最大迭代次数)。
优点:
- 当迭代接近极小值点时,收敛速度快。
缺点:
- 需要计算二阶导数,计算成本高。
- 对于非凸问题,可能遇到 Hessian 矩阵不正定或奇异的情况。
拟牛顿法
拟牛顿法是牛顿法的一种变体,它不需要计算二阶导数(Hessian 矩阵),而是通过迭代的方式近似 Hessian 矩阵的逆或者其本身。
算法步骤:
-
选择一个初始点 和一个初始 Hessian 矩阵的近似 。
-
对于第 次迭代,计算梯度 。
-
计算搜索方向 。
-
通过线搜索确定步长 。
-
更新 。
-
更新 Hessian 矩阵的近似 ,使用如 DFP(Davidon-Fletcher-Powell)或 BFGS(Broyden-Fletcher-Goldfarb-Shanno)等公式。
-
重复步骤2-6,直到满足停止准则。
优点:
- 不需要计算二阶导数,计算成本较低。
- 对于大规模问题更实用。
缺点:
- 收敛速度可能不如牛顿法快。
在实际应用中,拟牛顿法因其较低的计算成本和良好的性能,被广泛应用于各种优化问题,尤其是在机器学习和深度学习中。