在梯度下降法中,我们只使用了一阶的泰勒展开信息,那如果使用二阶信息呢?
f(xk+pk)≈f(xk)+∇f(xk)⊤pk+21pk⊤∇2f(xk)pk
我们将其视作一个关于 pk 的函数,那么我们得到 ψ(pk)=21pk⊤∇2f(xk)pk+∇f(xk)⊤pk+f(xk)。我们希望 ψ(pk) 最小,那么就肯定有 ∇ψ(pk)=0,即
∇2f(xk)pk+∇f(xk)=0
另外,如果 ψ(pk) 存在唯一最小值,那么它的二次项系数 ∇2f(xk) 必须是正定的。而正定矩阵总满秩,所以当 ∇2f(xk) 正定时,搜索方向唯一确定:
pkNewton=−(∇2f(xk))−1∇f(xk)
收敛速度
利用一阶泰勒展开和积分中值定理,梯度 ∇f(x⋆) 在 xk 处的展开式为
0=∇f(x⋆)=∇f(xk)+∫01∇2f(xk+t(x⋆−xk))(x⋆−xk)dt
将牛顿步 ∇f(xk)=∇2f(xk)(xk−xk+1) 代入:
∇2f(xk)(xk+1−x⋆)=∫01[∇2f(xk+t(x⋆−xk))−∇2f(xk)](x⋆−xk)dt
假设 Hessian 矩阵满足 L2-Lipschitz 连续(即 ∥∇2f(x)−∇2f(y)∥≤L2∥x−y∥),且最优解附近存在逆上界 ∥∇2f(xk)−1∥≤M0:
∥xk+1−x⋆∥≤M0∫01L2⋅t∥xk−x⋆∥2dt=2M0L2∥xk−x⋆∥2
令 C=2M0L2,则有
∥xk+1−x∗∥≤C∥xk−x∗∥2
所以,牛顿法的收敛速度是二阶收敛的。
算法瓶颈分析
时间复杂度
Hessian 矩阵有 2n(n+1) 个独立的元素,所以计算海森矩阵至少要 O(n2) 时间。计算单个二阶偏导数 ∂xi∂xj∂2f 的时间取决于目标函数表达式的规模 Teval。解析求导或自动微分计算完整 Hessian 矩阵的单步耗时通常为 O(n2⋅Teval);若采用有限差分近似,计算 n2 个元素需要评估 O(n) 次梯度或 O(n2) 次函数值,计算成本远高于简单的 O(n2)。
另外,求解线性方程组需经过 Cholesky 分解或 LU 分解,单步耗时为 O(n3)。
无论如何,时间复杂度至少是 O(n3) 的。
空间复杂度
Hessian 矩阵有 2n(n+1) 个独立的元素,所以存储每次的 Hessian 矩阵要 O(n2) 空间。
非正定性缺陷
当 ∇2f(xk) 出现负特征值,甚至为不可逆矩阵时,pk 可能指向鞍点或极大值。当 λmin≤0 时,工程上一般将精确 Hessian 矩阵换为 ∇2f(xk)+μI,μ>−λmin+ε,通过牺牲拟合的精细度来保证解的唯一性。