首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >进一步解析高斯牛顿法原理推导

进一步解析高斯牛顿法原理推导

作者头像
索旭东
发布2025-10-28 13:10:39
发布2025-10-28 13:10:39
8220
举报
文章被收录于专栏:具身小站具身小站

1. 概述

高斯牛顿法是一种用于求解非线性最小二乘问题的优化算法,它是牛顿法的一种改进,专门针对最小二乘问题的特殊结构而设计,旨在更高效、更稳定地找到最优解。

核心目的: 最小化一个误差平方和函数,这种问题广泛存在于科学和工程领域,当我们想找出一组模型参数,使得模型的预测值与实际观测数据之间的差异(残差)的平方和最小时,就会用到它。

用数学形式表达,目标是最小化以下目标函数:

简单来说,高斯牛顿法的目的就是找到那个让“总的预测不准程度”最小的模型参数 β。

2. 详细推导和解释

核心思想:对非线性函数进行局部线性化,然后求解这个线性化子问题,并迭代进行。

第一步:确定目标 我们要最小化:

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

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

其中 ∇ri(βk) 是残差 ri在 βk处的梯度(雅可比矩阵的一行),是一个列向量。

将所有残差堆叠起来。令:

  • J(βk):为雅可比矩阵,其第 i 行就是 ∇ri(βk)T,因此 J 是一个 m×n的矩阵(m 个数据点,n 个参数)。
  • r(βk):为当前残差向量。

则线性化后的残差向量可以写为:

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

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

整理得到著名的正规方程

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

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

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

高斯牛顿法的巧妙之处在于它忽略了二阶项 ∑ri∇2ri,直接用 JTJ 来近似 Hessian 矩阵,只需要计算一阶导数(雅可比矩阵),无需计算复杂的二阶导数。为什么可以忽略? 当残差 ri 很小(接近最优解)时,二阶项 ∑ri∇2ri是微不足道的,此外,JTJ 总是半正定的,能保证迭代朝着下降方向进行。

3. 总结

算法流程: 初始化:给定初始参数猜测 β0,设置收敛阈值 ϵϵ。

开始迭代:对于 k=0,1,2,...

  1. 计算残差:用当前参数 βk计算残差向量 r(βk)。
  2. 计算雅可比矩阵:雅可比矩阵 J(βk),通常通过解析求导或数值差分。
  3. 构建正规方程:计算 JTJ 和 JTr。
  4. 求解增量:求解线性方程组 (JTJ)δk=−JTr,得到 δk。
  5. 更新参数:βk+1=βk+δk。
  6. 检查收敛:如果 ∣δk∣<ϵ 或 ∣S(βk+1)−S(βk)∣<ϵ,则停止迭代,输出 βk+1作为最优解。否则,继续迭代。

优点:

  • 比梯度下降法收敛更快(利用了二阶曲率信息)。
  • 比完整的牛顿法更简单高效(无需计算Hessian矩阵)。

缺点:

  • 初始值敏感:作为一种局部优化方法,其效果严重依赖于初始猜测 β0,初始值不好可能收敛到局部极小值甚至发散。
  • JTJ 不可逆:矩阵 JTJ 可能是奇异(不可逆)或病态的,导致无法求解 δδ,在实际中通常使用阻尼策略或QR分解、SVD分解等数值稳定的方法来求解正规方程。
  • 二阶项忽略的影响:如果残差 riri 很大(问题高度非线性),忽略二阶项会导致近似不准确,算法可能无法收敛。

应用场景: 高斯牛顿法主要应用于需要数据拟合和参数估计的领域:

  • 曲线拟合:拟合一个非线性模型到实验数据,例如,拟合指数衰减曲线来研究化学反应的浓度变化。
  • 相机标定:估计相机的内部参数(如焦距、畸变系数)和外部参数(位置和方向)。
  • 三维重建:通过多张二维图像估计三维点的位置。
  • 机器人SLAM:同时定位与建图,通过传感器数据优化机器人自身位姿和环境地图。
  • 控制系统:系统辨识,即通过输入输出数据来估计系统的模型参数。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 1. 概述
  • 2. 详细推导和解释
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档