DFP(Davidon-Fletcher-Powell)和 BFGS(Broyden-Fletcher-Goldfarb-Shanno)都是拟牛 顿方法的一种,用于解决非线性最优化问题。它们的目标是逼近问题的 Hessian 矩阵(二阶 导数矩阵)而不直接计算它,从而减少计算成本。这两种方法在更新拟牛顿矩阵时使用不同 的策略,以下是它们的推导。 ### DFP 算法(Davidon-Fletcher-Powell) DFP 算法的主要思想是使用一个对称矩阵来近似 Hessian 矩阵的逆。具体来说,DFP 算法的 迭代公式如下: 1. 2. 3. 4. 5. 6. 初始化一个正定对称矩阵 H(通常取单位矩阵 I) 。 对于每一次迭代,计算搜索方向 p,例如使用梯度下降法或共轭梯度法。 执行一次线搜索,找到一个合适的步长 α,以使目标函数减小。 计算新的参数向量 x_{k+1} = x_k + α * p。 计算向量 s = x_{k+1} - x_k 和 y = ∇f(x_{k+1}) - ∇f(x_k)。 使用 DFP 更新公式更新 Hessian 逆估计: H_{k+1} = H_k + (s * s^T) / (s^T * y) - (H_k * y * y^T * H_k) / (y^T * H_k * y) 7. 重复步骤 2-6,直到满足终止条件。 这个公式中,H_k 代表第 k 次迭代时的拟牛顿矩阵的估计。 ### BFGS 算法(Broyden-Fletcher-Goldfarb-Shanno) BFGS 算法也使用一个对称矩阵来近似 Hessian 矩阵的逆,但它使用不同的更新策略。BFGS 的迭代公式如下: 1. 2. 3. 4. 5. 6. 初始化一个正定对称矩阵 H(通常取单位矩阵 I) 。 对于每一次迭代,计算搜索方向 p,例如使用梯度下降法或共轭梯度法。 执行一次线搜索,找到一个合适的步长 α,以使目标函数减小。 计算新的参数向量 x_{k+1} = x_k + α * p。 计算向量 s = x_{k+1} - x_k 和 y = ∇f(x_{k+1}) - ∇f(x_k)。 使用 BFGS 更新公式更新 Hessian 逆估计: H_{k+1} = H_k + [(s * s^T) / (s^T * y)] - [(H_k * y * y^T * H_k) / (y^T * H_k * y)] 7. 重复步骤 2-6,直到满足终止条件。 这个公式中,H_k 代表第 k 次迭代时的拟牛顿矩阵的估计。 这些迭代公式使 DFP 和 BFGS 方法不断更新拟牛顿矩阵的估计,以更好地逼近 Hessian 矩阵 的逆,从而实现非线性优化。需要注意的是,这些公式只是大致的概念,实际的实现可能会 有一些细微的差异。