当前位置: 首页 > news >正文

Hessian矩阵在多元泰勒展开中如何用于构造优化详解

在非线性优化、SLAM、机器学习、数值计算等领域中,Hessian 矩阵多元泰勒展开中具有核心作用,尤其是在目标函数的局部近似建模与优化方向计算中


一、背景与意义

在非线性优化中,我们通常希望通过迭代方式最小化目标函数 f(x)f(\mathbf{x})f(x)

min⁡x∈Rnf(x) \min_{\mathbf{x} \in \mathbb{R}^n} f(\mathbf{x}) xRnminf(x)

此时,我们通常会在当前估计点 x0\mathbf{x}_0x0线性或二次近似函数 f(x)f(\mathbf{x})f(x),进而转化为容易求解的局部模型。

为什么需要二阶信息(Hessian)?

  • 一阶导数(梯度)仅提供下降方向
  • 二阶导数(Hessian)提供函数曲率信息,可用于确定步长/方向的调整,有助于加速收敛,避免震荡或过冲;
  • 在 SLAM、最小二乘、深度学习等非线性问题中,目标函数往往高度弯曲,仅靠梯度难以快速收敛;
  • 二阶泰勒展开是构造 Newton / Gauss-Newton / Levenberg-Marquardt 方法的基础。

二、目标问题定义

设我们希望最小化一个多变量标量函数:

min⁡x∈Rnf(x) \min_{\mathbf{x} \in \mathbb{R}^n} f(\mathbf{x}) xRnminf(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ΔxH(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ΔxH(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)1f(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=xkH(xk)1f(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 ff线性
牛顿法梯度 + Hessian−H−1∇f- H^{-1} \nabla fH1f二次收敛

牛顿法收敛快,但计算 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)=21xAx+bx+c

其中 A∈Rn×nA \in \mathbb{R}^{n \times n}ARn×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=xkA1(Axk+b)=A1b

即一次就到极小点。这说明:牛顿法对于二次函数一次收敛(理想情况)。


九、实际改进:阻尼牛顿法、拟牛顿法

  • 阻尼牛顿法(Damped Newton):引入学习率 α\alphaα,更新为:

    xk+1=xk−αH−1∇f \mathbf{x}_{k+1} = \mathbf{x}_k - \alpha H^{-1} \nabla f xk+1=xkαH1f

  • 拟牛顿法(Quasi-Newton):如 BFGS、L-BFGS,不用真正计算 Hessian,而是逐步逼近其逆。


总结

元素含义
Hessian描述函数的局部“曲率”,越接近正定越利于优化
泰勒展开二阶项构造了 Newton 方法更新公式的基础
牛顿法本质是用一个二阶近似模型最小化原函数
优缺点二次收敛 vs. 高计算量(尤其在高维空间)

http://www.lryc.cn/news/589550.html

相关文章:

  • 记一次POST请求中URL中文参数乱码问题的解决方案
  • LeetCode 1888. 使二进制字符串字符交替的最少反转次数
  • 整除分块练习题
  • 使用Spring Cloud LoadBalancer报错java.lang.IllegalStateException
  • AI助手指南:从零开始打造Python学习环境(VSCode + Lingma/Copilot + Anaconda + 效率工具包)
  • 学习秒杀系统-实现秒杀功能(商品列表,商品详情,基本秒杀功能实现,订单详情)
  • Sharding-JDBC 分布式事务实战指南:XA/Seata 方案解析(三)
  • 2HDMI/1DP转EDP/LVDS,支持4K,144HZ和240HZ.
  • LSA链路状态通告
  • 学习软件测试的第十六天
  • 项目进度跨地域团队协作困难,如何统一进度安排
  • 原来时间序列挖掘这么简单
  • 力扣73:矩阵置零
  • NW917NW921美光固态闪存NW946NW952
  • 游戏行业中的恶梦:不断升级的DDoS攻击
  • 【HarmonyOS】ArkUI-X 跨平台框架入门详解(一)
  • 3.正则化——新闻分类
  • 【stm32】新建工程
  • STM32裸机开发(中断,轮询,状态机)与freeRTOS
  • MyBatis与Spring整合优化实战指南:从配置到性能调优
  • Conda 核心命令快速查阅表
  • 系统编程是什么
  • 22-C#的委托简单使用-2
  • ai问答推荐企业排名优化?:五大企业核心竞争力全景对比
  • 从0开始学习R语言--Day47--Nomogram
  • 【51单片机先流水2秒后数码显示2秒后显示END】2022-9-5
  • 判断QMetaObject::invokeMethod()里的函数是否调用成功
  • 密码协议的基本概念
  • 【Linux手册】重定向是如何实现的?Linux下为什么一切皆文件?
  • 【env环境】rtthread5.1.0使用fal组件