高斯牛顿法是一种用于求解非线性最小二乘问题的优化算法,它是牛顿法的一种改进,专门针对最小二乘问题的特殊结构而设计,旨在更高效、更稳定地找到最优解。
核心目的: 最小化一个误差平方和函数,这种问题广泛存在于科学和工程领域,当我们想找出一组模型参数,使得模型的预测值与实际观测数据之间的差异(残差)的平方和最小时,就会用到它。
用数学形式表达,目标是最小化以下目标函数:

简单来说,高斯牛顿法的目的就是找到那个让“总的预测不准程度”最小的模型参数 β。
核心思想:对非线性函数进行局部线性化,然后求解这个线性化子问题,并迭代进行。
第一步:确定目标 我们要最小化:

第二步:局部线性化(泰勒展开) 假设当前迭代的参数估计值是 βk,我们希望找到一个增量 δ,使得新的参数能显著降低 S。

对每个残差函数 ri(β)在 βk处进行一阶泰勒展开:

其中 ∇ri(βk) 是残差 ri在 βk处的梯度(雅可比矩阵的一行),是一个列向量。
将所有残差堆叠起来。令:
则线性化后的残差向量可以写为:

第三步:构建线性最小二乘问题 目标函数 SS 被近似为:

现在,S(βk+δ)是一个关于增量 δ 的二次函数,为了找到使这个近似函数最小的 δ,目标函数对增量求导并令导数为零。

整理得到著名的正规方程:

第四步:求解增量并迭代 从上式解出增量 δ:

对比牛顿法: 牛顿法的更新公式为:

其中 Hessian 矩阵 HH 的计算非常复杂:

高斯牛顿法的巧妙之处在于它忽略了二阶项 ∑ri∇2ri,直接用 JTJ 来近似 Hessian 矩阵,只需要计算一阶导数(雅可比矩阵),无需计算复杂的二阶导数。为什么可以忽略? 当残差 ri 很小(接近最优解)时,二阶项 ∑ri∇2ri是微不足道的,此外,JTJ 总是半正定的,能保证迭代朝着下降方向进行。
3. 总结
算法流程: 初始化:给定初始参数猜测 β0,设置收敛阈值 ϵϵ。
开始迭代:对于 k=0,1,2,...
优点:
缺点:
应用场景: 高斯牛顿法主要应用于需要数据拟合和参数估计的领域:
