Skip to content

5.3 牛顿法

当梯度下降"慢慢悠悠"地接近最优解时,牛顿法利用二阶导数信息实现"一步到位"式的超快收敛。代价是每步需要计算 Hessian 矩阵,在大规模问题上计算开销较大。


一、牛顿法的基本思想

1.1 公式推导

对于无约束优化 minf(x)\min f(x),牛顿法利用二阶导数(Hessian)信息,在迭代点附近做二次近似(泰勒展开到二阶):

f(x)f(x(k))+f(x(k))(xx(k))+12f(x(k))(xx(k))2f(x) \approx f(x^{(k)}) + f'(x^{(k)})(x - x^{(k)}) + \frac{1}{2} f''(x^{(k)})(x - x^{(k)})^2

对上述近似取极小值(令导数为零):

f(x(k))+f(x(k))(xx(k))=0f'(x^{(k)}) + f''(x^{(k)})(x - x^{(k)}) = 0

解得迭代公式:

x(k+1)=x(k)f(x(k))f(x(k))x^{(k+1)} = x^{(k)} - \frac{f'(x^{(k)})}{f''(x^{(k)})}

推广到多维:

x(k+1)=x(k)[2f(x(k))]1f(x(k))\mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} - [\nabla^2 f(\mathbf{x}^{(k)})]^{-1} \nabla f(\mathbf{x}^{(k)})

其中 2f\nabla^2 f 是 Hessian 矩阵。

1.2 与梯度下降的对比

特性梯度下降牛顿法
导数阶数一阶(只使用梯度)二阶(梯度 + Hessian)
收敛速度线性收敛二次收敛
每步计算量O(n)O(n)O(n3)O(n^3)(求 Hessian 逆)
步长选择需要手动调 α\alpha自动确定步长
对二次函数线性逼近一步精确收敛
适用场景大规模问题(深度学习)小规模高精度问题

二次收敛的含义:误差以 x(k+1)xCx(k)x2\|x^{(k+1)} - x^*\| \le C \|x^{(k)} - x^*\|^2 的速度衰减——即误差每步平方,收敛极快。


二、手算实例

2.1 问题

用牛顿法求 f(x)=x2+2x+1f(x) = x^2 + 2x + 1 的最小值。

解析解f(x)=2x+2=0    x=1f'(x) = 2x + 2 = 0 \implies x^* = -1f(x)=2>0f''(x) = 2 > 0 确认是极小值。

2.2 牛顿法迭代

x(0)=0x^{(0)} = 0 开始,f(x)=2x+2f'(x) = 2x + 2f(x)=2f''(x) = 2

迭代 kkx(k)x^{(k)}f(x(k))f'(x^{(k)})f(x(k))f''(x^{(k)})步长 f/f-f'/f''x(k+1)x^{(k+1)}
0022222/2=1-2/2 = -11-1
11-10022001-1
21-10022001-1

牛顿法一步收敛到精确解 x=1x^* = -1,因为二次函数的二次近似就是它自身。

2.3 对比梯度下降(α=0.1\alpha=0.1

迭代梯度下降牛顿法
00.0000.000
1-0.200-1.000
2-0.360-1.000
3-0.488-1.000
10-0.893-1.000

对于二次函数,牛顿法一步到位;梯度下降经过 10 步还在缓慢逼近。


三、多维牛顿法

3.1 通用迭代公式

对于 f:RnRf: \mathbb{R}^n \to \mathbb{R},牛顿法为:

x(k+1)=x(k)Hk1gk\mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} - \mathbf{H}_k^{-1} \mathbf{g}_k

  • gk=f(x(k))\mathbf{g}_k = \nabla f(\mathbf{x}^{(k)}) — 梯度向量
  • Hk=2f(x(k))\mathbf{H}_k = \nabla^2 f(\mathbf{x}^{(k)}) — Hessian 矩阵

3.2 优缺点

优点缺点
收敛速度快(二次收敛)Hessian 计算昂贵(O(n2)O(n^2) 内存,O(n3)O(n^3) 求逆)
无需手动调学习率对非凸函数可能收敛到鞍点
对精确度要求高的问题效果好Hessian 需正定保证下降方向

3.3 拟牛顿法(Quasi-Newton)

为解决 Hessian 计算问题,拟牛顿法(如 BFGS、L-BFGS)用梯度差近似 Hessian,在收敛速度和计算开销之间取得平衡:

  • BFGS:维护完整的 Hessian 近似矩阵(O(n2)O(n^2)
  • L-BFGS:只存最近几步的梯度差,适合大规模问题(O(n)O(n)

scipy.optimize.minimize 的默认方法就是 BFGS/L-BFGS-B。


Quant Link:在风险管理中,风险预算优化(Risk Budgeting)常用牛顿法求解。给定各资产的目标风险贡献比例 bib_i,需要求解非线性方程组:

RCi(w)=wi(Σw)iσp=biσp\text{RC}_i(\mathbf{w}) = w_i \cdot \frac{(\Sigma \mathbf{w})_i}{\sigma_p} = b_i \cdot \sigma_p

这是一个非线性方程组,牛顿法利用其 二阶收敛性 在几步内精确求解权重。对于包含数百只资产的大规模组合,L-BFGS 等拟牛顿法可以在秒级完成计算——这是梯度下降无法比拟的优势。

其他牛顿法的量化应用还包括:

  • IRR 计算:内部收益率是方程 NPV(r)=0NPV(r) = 0 的根,牛顿法快速求解
  • 隐含波动率:用期权价格反推波动率,牛顿法比二分法快得多
  • 久期-凸度校正:债券定价中二阶项类似牛顿法的思想

Built with VitePress