最速下降法、共轭梯度法和牛顿法都是基于迭代和梯度信息的优化算法,用于求解无约束优化问题。
1. 最速下降法(Steepest Descent Method)
最速下降法是一种基于梯度信息的优化算法。在每一步迭代中,它选择负梯度方向作为搜索方向,因为负梯度方向是函数值下降最快的方向。然后,通过线搜索确定在该方向上的步长,并更新当前点。虽然最速下降法实现简单,但在某些情况下可能收敛速度较慢,尤其是在接近最优解时。
假设目标函数为 ,其中。在迭代点,梯度为 。则搜索方向为:
然后,通过线搜索确定步长,更新迭代点:
2. 共轭梯度法(Conjugate Gradient Method)
共轭梯度法是一种介于最速下降法和牛顿法之间的方法,它结合了最速下降法的简单性和牛顿法的快速收敛性。共轭梯度法利用目标函数的梯度信息来构造共轭方向,并沿着这些方向进行搜索。与最速下降法不同,共轭梯度法在选择搜索方向时考虑了之前迭代的信息,从而避免了在相同方向上的重复搜索。对于二次型函数,共轭梯度法具有有限步收敛性。在实际应用中,共轭梯度法常用于求解大型稀疏线性方程组。
对于线性方程组 ,或者等价的优化问题 ,共轭梯度法的迭代格式为:
初始化:为任意向量,,
迭代:对于
计算步长:
更新解:
更新残差:
计算共轭方向(Fletcher-Reeves 公式):,
3. 牛顿法(Newton's Method)
牛顿法是一种基于二阶导数信息的优化算法。它利用目标函数的Hessian矩阵(二阶导数矩阵)来构造搜索方向,并通过求解线性方程组来确定步长。牛顿法的优点是收敛速度快,尤其是在接近最优解时。然而,它的缺点是需要计算和存储Hessian矩阵,这在处理大规模问题时可能非常昂贵。此外,当Hessian矩阵不正定时,牛顿法可能无法收敛到最优解。
对于无约束优化问题 ,牛顿法的迭代格式为:
计算梯度:
计算Hessian矩阵:(或其近似)
求解线性方程组:得到搜索方向
通过线搜索或固定步长确定 ,更新迭代点:
区别:
1. 搜索方向构造:
- 最速下降法:每次迭代选择当前点的负梯度方向作为搜索方向,即函数值局部下降最快的方向。
- 共轭梯度法:利用目标函数的梯度信息和之前迭代的搜索方向来构造新的共轭方向作为搜索方向。
- 牛顿法:通过求解涉及Hessian矩阵和当前梯度的线性方程组来确定搜索方向。
2. 收敛速度:
- 最速下降法:收敛速度通常较慢,尤其在接近最优解时可能出现锯齿现象。
- 共轭梯度法:收敛速度比最速下降法快,但通常慢于牛顿法。
- 牛顿法:在合适的条件下收敛速度非常快,尤其是当初始点接近最优解时。
3. 计算复杂度:
- 最速下降法:计算简单,只需要计算梯度。
- 共轭梯度法:需要计算梯度和进行向量运算来构造共轭方向,但不需要直接计算和存储Hessian矩阵。
- 牛顿法:需要计算和存储Hessian矩阵及其逆矩阵,计算复杂度较高。
4. 适用场景:
- 最速下降法:适用于简单问题或作为其他算法的初始步骤。
- 共轭梯度法:适用于大型稀疏线性方程组和非线性优化问题,尤其是当Hessian矩阵难以计算或存储时。
- 牛顿法:适用于小型或中等规模的非线性优化问题,尤其是当Hessian矩阵易于计算和存储时。