最小二乘法中,海森矩阵

在最小二乘法中,海森矩阵(Hessian Matrix,又译黑塞矩阵)是目标函数(误差平方和)关于参数的二阶偏导数方阵。它描述了误差曲面的局部曲率,决定了优化算法的收敛速度和方向。在非线性最小二乘中,通常使用由一阶导数(雅可比矩阵 J\mathbf{J}J)构成的 JTJ\mathbf{J}^T\mathbf{J}JTJ 来近似代替海森矩阵。


1. 海森矩阵的定义

对于多元损失函数 f(x)f(\mathbf{x})f(x)(其中 x=x1,x2,...,xnT\mathbf{x} = x_1, x_2, \\dots, x_n^Tx=x1,x2,...,xnT 是待求参数),其海森矩阵 H\mathbf{H}H 的第 iii 行、第 jjj 列元素为:

Hij=∂2f∂xi∂xjH_{ij} = \frac{\partial^2 f}{\partial x_i \partial x_j}Hij=∂xi∂xj∂2f

它是一个 n×nn \times nn×n 的对称方阵(其中 nnn 为参数的维度)。

2. 线性最小二乘中的海森矩阵

在线性最小二乘中,目标函数为残差平方和:

f(x)=12∥Ax−b∥2f(\mathbf{x}) = \frac{1}{2} \Vert{}\mathbf{A}\mathbf{x} - \mathbf{b}\Vert{}^2f(x)=21∥Ax−b∥2

对该函数求一阶导数(梯度)并令其为零,或者直接求二阶导数,其海森矩阵为:

H=ATA\mathbf{H} = \mathbf{A}^T\mathbf{A}H=ATA

此时通过解正规方程 ATAx=ATb\mathbf{A}^T\mathbf{A}\mathbf{x} = \mathbf{A}^T\mathbf{b}ATAx=ATb 可以一步直接求出最优解。

3. 非线性最小二乘与高斯-牛顿法近似

在非线性最小二乘中,残差函数 r(x)\mathbf{r}(\mathbf{x})r(x) 是非线性的,目标函数为 f(x)=12∥r(x)∥2f(\mathbf{x}) = \frac{1}{2} \Vert{}\mathbf{r}(\mathbf{x})\Vert{}^2f(x)=21∥r(x)∥2。

精确的海森矩阵包含残差的二阶导数项,计算非常复杂。因此,常用的高斯-牛顿法(Gauss-Newton Method)利用一阶雅可比矩阵 J(x)\mathbf{J}(\mathbf{x})J(x) 来近似海森矩阵:

H≈JTJ\mathbf{H} \approx \mathbf{J}^T\mathbf{J}H≈JTJ

从而将更新步长方程简化为:

JTJΔx=−JTr\mathbf{J}^T\mathbf{J} \Delta\mathbf{x} = -\mathbf{J}^T\mathbf{r}JTJΔx=−JTr

在非线性最小二乘法中,r\mathbf{r}r 代表残差向量(Residual Vector)。

它是每个样本的预测值与真实值之间的差值。


1. 它的具体组成

假设你有 mmm 个已知的数据点(测量值),要拟合一个包含 nnn 个未知参数的非线性模型 h(x)h(\mathbf{x})h(x)。

对于第 iii 个样本点,它的残差定义为:

ri(x)=hi(x)−yir_i(\mathbf{x}) = h_i(\mathbf{x}) - y_iri(x)=hi(x)−yi

  • hi(x)h_i(\mathbf{x})hi(x):模型对第 iii 个点的预测值(包含未知参数 x\mathbf{x}x)
  • yiy_iyi:第 iii 个点的真实测量值

把所有 mmm 个样本的残差堆叠起来,就形成了残差向量:

r(x)=r1(x)r2(x)⋮rm(x)\mathbf{r}(\mathbf{x}) = \begin{bmatrix} r_1(\mathbf{x}) \\ r_2(\mathbf{x}) \\ \vdots \\ r_m(\mathbf{x}) \end{bmatrix}r(x)= r1(x)r2(x)⋮rm(x)

2. 它在公式中的物理意义

非线性最小二乘的核心目标,是让所有残差的平方和最小。目标函数写为:

f(x)=12∑i=1mri(x)2=12∥r(x)∥22f(\mathbf{x}) = \frac{1}{2} \sum_{i=1}^{m} r_i(\mathbf{x})^2 = \frac{1}{2} \Vert{}\mathbf{r}(\mathbf{x})\Vert{}^2_2f(x)=21i=1∑mri(x)2=21∥r(x)∥22

当我们对这个目标函数求一阶导数(即梯度 g\mathbf{g}g)时,根据多元复合函数求导法则,会得到:

g=∇f(x)=JTr\mathbf{g} = \nabla f(\mathbf{x}) = \mathbf{J}^T \mathbf{r}g=∇f(x)=JTr

  • JTr\mathbf{J}^T \mathbf{r}JTr 本质上就是目标函数的梯度(误差曲面的最陡上升方向)。
  • 在迭代优化时(如高斯-牛顿法 JTJΔx=−JTr\mathbf{J}^T\mathbf{J} \Delta\mathbf{x} = -\mathbf{J}^T\mathbf{r}JTJΔx=−JTr),右侧的 −JTr-\mathbf{J}^T\mathbf{r}−JTr 正好代表了我们要沿着梯度的反方向(最陡下降方向)去修正参数。

4. 核心作用与局限性

  • 曲率与步长调整:海森矩阵的逆矩阵能够"解开"误差曲面的扭曲和长条形峡谷,使优化算法快速收敛。
  • 矩阵奇异性风险:在非线性优化中,若 JTJ\mathbf{J}^T\mathbf{J}JTJ 满秩,则参数可解;若出现降秩或病态,JTJ\mathbf{J}^T\mathbf{J}JTJ 会变成奇异矩阵,导致求逆困难。因此实际中常采用列文伯格-马夸尔特方法(Levenberg-Marquardt)引入阻尼因子(JTJ+λI\mathbf{J}^T\mathbf{J} + \lambda\mathbf{I}JTJ+λI)来改善海森矩阵近似的稳定性。
相关推荐
mCell1 小时前
Lua 编程入门:从基础语法到元表
javascript·算法·lua
wuyk5553 小时前
98.C语言易混难点:字符数组与字符串指针的底层差异
c语言·开发语言·c++·stm32·嵌入式硬件·算法
峥无4 小时前
从0到1手撕红黑树:封装实现 my_map 与 my_set(SGI-STL 源码级深度解析)
开发语言·c++·笔记·算法·stl
不会代码的小猴4 小时前
3. 控件学习1
开发语言·c++·笔记·qt·算法
203号居民6 小时前
LeetCode hot 100 —41. 缺失的第一个正数
数据结构·算法·leetcode
专注仿真8 小时前
问答大模型技术方案算法实现-熵权法融合算法 + 交叉编码器重排算法
人工智能·python·算法·语言模型·问答大模型关键算法·熵权融合算法·交叉编码器重排算法
地平线开发者9 小时前
量化为什么会有损失:从量化误差到精度下降
算法
手写码匠10 小时前
华为云Flexus+DeepSeek征文|Dify 多 Agent 会话管理与上下文工程实战:让智能体“记住该记住的,忘掉该忘掉的“
人工智能·深度学习·算法·aigc
2401_8628808210 小时前
数据结构 --- 栈
c语言·数据结构·算法