Hessian矩阵在多元泰勒展开中如何用于构造优化详解
在非线性优化、SLAM、机器学习、数值计算等领域中,Hessian 矩阵在多元泰勒展开中具有核心作用,尤其是在目标函数的局部近似建模与优化方向计算中。
一、背景与意义
在非线性优化中,我们通常希望通过迭代方式最小化目标函数 f(x)f(\mathbf{x})f(x):
minx∈Rnf(x) \min_{\mathbf{x} \in \mathbb{R}^n} f(\mathbf{x}) x∈Rnminf(x)
此时,我们通常会在当前估计点 x0\mathbf{x}_0x0 处线性或二次近似函数 f(x)f(\mathbf{x})f(x),进而转化为容易求解的局部模型。
为什么需要二阶信息(Hessian)?
- 一阶导数(梯度)仅提供下降方向;
- 二阶导数(Hessian)提供函数曲率信息,可用于确定步长/方向的调整,有助于加速收敛,避免震荡或过冲;
- 在 SLAM、最小二乘、深度学习等非线性问题中,目标函数往往高度弯曲,仅靠梯度难以快速收敛;
- 二阶泰勒展开是构造 Newton / Gauss-Newton / Levenberg-Marquardt 方法的基础。
二、目标问题定义
设我们希望最小化一个多变量标量函数:
minx∈Rnf(x) \min_{\mathbf{x} \in \mathbb{R}^n} f(\mathbf{x}) x∈Rnminf(x)
假设 f(x)f(\mathbf{x})f(x) 在邻域内具有二阶连续偏导数(即可进行泰勒二阶展开)。
三、使用二阶多元泰勒展开近似目标函数
对函数在某点 xk\mathbf{x}_kxk 附近展开:
f(xk+Δx)≈f(xk)+∇f(xk)⊤Δx+12Δx⊤H(xk)Δx f(\mathbf{x}_k + \Delta \mathbf{x}) \approx f(\mathbf{x}_k) + \nabla f(\mathbf{x}_k)^\top \Delta \mathbf{x} + \frac{1}{2} \Delta \mathbf{x}^\top H(\mathbf{x}_k) \Delta \mathbf{x} f(xk+Δx)≈f(xk)+∇f(xk)⊤Δx+21Δx⊤H(xk)Δx
其中:
- ∇f(xk)\nabla f(\mathbf{x}_k)∇f(xk):梯度向量;
- H(xk)H(\mathbf{x}_k)H(xk):Hessian 矩阵,即二阶偏导数组成的对称矩阵;
- Δx\Delta \mathbf{x}Δx:我们当前要寻找的“最优步长方向”。
四、构建牛顿下降步长(基于最小化泰勒近似)
我们要最小化上式中右边对 Δx\Delta \mathbf{x}Δx 的函数:
minΔxf(xk)+∇f(xk)⊤Δx+12Δx⊤H(xk)Δx \min_{\Delta \mathbf{x}} \quad f(\mathbf{x}_k) + \nabla f(\mathbf{x}_k)^\top \Delta \mathbf{x} + \frac{1}{2} \Delta \mathbf{x}^\top H(\mathbf{x}_k) \Delta \mathbf{x} Δxminf(xk)+∇f(xk)⊤Δx+21Δx⊤H(xk)Δx
这是一个凸二次优化问题,一阶导为零时取得极小值:
∇Δxf(xk+Δx)=∇f(xk)+H(xk)Δx=0 \nabla_{\Delta \mathbf{x}} f(\mathbf{x}_k + \Delta \mathbf{x}) = \nabla f(\mathbf{x}_k) + H(\mathbf{x}_k) \Delta \mathbf{x} = 0 ∇Δxf(xk+Δx)=∇f(xk)+H(xk)Δx=0
解得:
Δx=−H(xk)−1∇f(xk) \Delta \mathbf{x} = - H(\mathbf{x}_k)^{-1} \nabla f(\mathbf{x}_k) Δx=−H(xk)−1∇f(xk)
于是牛顿法的迭代更新式为:
五、Newton’s Method 多变量形式
xk+1=xk−H(xk)−1∇f(xk) \boxed{ \mathbf{x}_{k+1} = \mathbf{x}_k - H(\mathbf{x}_k)^{-1} \nabla f(\mathbf{x}_k) } xk+1=xk−H(xk)−1∇f(xk)
其中:
- 梯度决定下降方向;
- Hessian 决定该方向的局部曲率缩放与旋转。
六、算法步骤(牛顿法框架)
Input: 初始值 x₀
Repeat:1. 计算梯度 ∇f(xₖ)2. 计算 Hessian H(xₖ)3. 解线性系统:H(xₖ) Δx = -∇f(xₖ)4. 更新:xₖ₊₁ = xₖ + Δx
Until: 收敛(∇f 够小 or Δx 够小)
七、与一阶方法的对比
方法 | 使用信息 | 更新方向 | 收敛速率 |
---|---|---|---|
梯度下降法 | 仅梯度 | −∇f-\nabla f−∇f | 线性 |
牛顿法 | 梯度 + Hessian | −H−1∇f- H^{-1} \nabla f−H−1∇f | 二次收敛 |
牛顿法收敛快,但计算 Hessian 和求解线性系统代价高。
八、示例:二次函数
设:
f(x)=12x⊤Ax+b⊤x+c f(\mathbf{x}) = \frac{1}{2} \mathbf{x}^\top A \mathbf{x} + \mathbf{b}^\top \mathbf{x} + c f(x)=21x⊤Ax+b⊤x+c
其中 A∈Rn×nA \in \mathbb{R}^{n \times n}A∈Rn×n 为正定矩阵。
- 梯度:∇f=Ax+b\nabla f = A \mathbf{x} + \mathbf{b}∇f=Ax+b
- Hessian:H=AH = AH=A
牛顿步为:
xk+1=xk−A−1(Axk+b)=−A−1b \mathbf{x}_{k+1} = \mathbf{x}_k - A^{-1} (A \mathbf{x}_k + \mathbf{b}) = -A^{-1} \mathbf{b} xk+1=xk−A−1(Axk+b)=−A−1b
即一次就到极小点。这说明:牛顿法对于二次函数一次收敛(理想情况)。
九、实际改进:阻尼牛顿法、拟牛顿法
-
阻尼牛顿法(Damped Newton):引入学习率 α\alphaα,更新为:
xk+1=xk−αH−1∇f \mathbf{x}_{k+1} = \mathbf{x}_k - \alpha H^{-1} \nabla f xk+1=xk−αH−1∇f
-
拟牛顿法(Quasi-Newton):如 BFGS、L-BFGS,不用真正计算 Hessian,而是逐步逼近其逆。
总结
元素 | 含义 |
---|---|
Hessian | 描述函数的局部“曲率”,越接近正定越利于优化 |
泰勒展开二阶项 | 构造了 Newton 方法更新公式的基础 |
牛顿法 | 本质是用一个二阶近似模型最小化原函数 |
优缺点 | 二次收敛 vs. 高计算量(尤其在高维空间) |