牛顿法要存的 Hessian 矩阵实在是太占地方了,解起来也很耗时。而且考虑到复杂地形中没法做到处处正定,牛顿法就不得不在曲率上做出很多妥协,把它硬掰成正定的,也拟合的没有很好。
改良的想法是我们干脆不算 Hessian 矩阵了,而是使用相邻迭代点处的一阶梯度差来积累曲率信息。反正一阶展开还是准的,二阶曲率的准确性要求倒也没那么迫切了。或者说,在工程上,我们愿意多牺牲一点二阶曲率来换取更快的时间和更少的空间。
根据这种思想,我们构造近似模型 f(xk+pk)≈mk(pk)=f(xk)+∇f(xk)⊤pk+21pk⊤Bkpk。接下来的任务就是求出一个合适的 Bk。
割线约束
为使模型包含历史观测信息,强制要求该二次模型在 xk−1 处的预测梯度与当时实际计算出的真实梯度 ∇f(xk−1) 一致,则有
∇mk(pk⋆)=∇f(xk−1),pk⋆=xk−1−xk
化简,得到
∇f(xk)+Bk(xk−1−xk)=∇f(xk−1)
∇f(xk)−∇f(xk−1)=Bk(xk−xk−1)
习惯记法令 sk−1=xk−xk−1,yk−1=∇f(xk)−∇f(xk−1),故上式也可记为:
yk−1=Bksk−1
为了求出一个唯一的 pk 让 mk(pk) 最小,我们肯定要保证 Bk 是可逆的。记 Hk=Bk−1,所以有
sk−1=Hkyk−1
这是最通用的一种表示方法,也是 BFGS 使用的表示方法。值得注意的是,这里的 Hk 和 Hessian 矩阵一点关系都没有!
最小扰动
然而,yk−1=Bksk−1 只表现了 Bk 需要满足什么约束,却无法求出 Bk 是什么。因为 n×n 对称矩阵包含 2n(n+1) 个独立自由度,而割线方程仅提供 n 个独立等式约束,所以解空间是不定的。
于是我们再提出一个假设。我们希望算法在迭代过程中数值保持平稳变化,所以我们希望曲率信息每次不能改变太多,这就是最小扰动假设。
说是最小扰动,可我们要最小化什么扰动呢?有人认为,我们可以让 Bk=Bk−1+σvv⊤,也就是加上一个对称的秩一矩阵。这样未知量就变成了 σ 和 v,满足割线方程的解是唯一的。这种方法叫 SR1 法。然而,SR1 法无法保证正定性,还可能出现分母趋近于零的数值崩溃。
后来又有一种叫 DFP 的算法,通过最小化 Bk 的 Frobenius 范数来求出 Bk。不过我们发现,最后我们是要求方向 pk 的,而 pk=−Bk−1∇f(xk)=−Hk∇f(xk),所以为求平稳我们最小化 ∥H−Hk∥W2 就好。
BFGS
这就是 BFGS 算法,即
Hkmin∥Hk−Hk−1∥W2s.t.Hk=Hk⊤,Hkyk−1=sk−1
有趣的是,DFP 算法要求 minBk∥Bk−Bk−1∥W2s.t.Bk=Bk⊤,Bksk−1=yk−1,与 BFGS 完全对偶。
我们跳过复杂的证明过程(见附录),直接给出结论:
Hk=Hk−1−yk−1⊤sk−1sk−1yk−1⊤Hk−1+Hk−1yk−1sk−1⊤+yk−1⊤sk−1sk−1sk−1⊤+(yk−1⊤sk−1)2yk−1⊤Hk−1yk−1sk−1sk−1⊤
令 ρk−1=yk−1⊤sk−11,将其重组因式分解,即得
Hk=(I−ρk−1sk−1yk−1⊤)Hk−1(I−ρk−1yk−1sk−1⊤)+ρk−1sk−1sk−1⊤
Hk≻0 的充要条件是 yk−1⊤sk−1>0(证明见附录),而这个条件可以由 Wolfe 线搜索保证(证明见附录),所以 BFGS 一般配合 Wolfe 线搜索使用。
收敛速度
根据 Dennis-Moré 准则(内容与证明见附录),一个拟牛顿法在极小值点邻域产生超线性收敛的充分必要条件是搜索方向渐近地逼近牛顿方向,即:
k→∞lim∥sk∥∥(Bk−∇2f(x⋆))sk∥=0
在严格凸二次展开且步长通过 Wolfe 条件进行线搜索的条件下,BFGS 更新公式构造的对称正定矩阵序列 {Bk} 严格满足 Dennis-Moré 准则,因此其收敛速度满足:
k→∞lim∥xk−x⋆∥∥xk+1−x⋆∥=0
因此,BFGS 是超线性收敛的。
算法复杂度分析
时间复杂度
或许你会说,这个地方要用很大的一个矩阵乘法从 Hk−1 更新到 Hk,不还是 O(n3) 的复杂度吗?但这里的低秩结构帮了大忙。回看那个因式分解前的式子,你会发现它只有一个真正的矩阵 Hk−1。又考虑到矩阵的乘法结合律 ABC=(AB)C=A(BC),这样的结构当然可以拆成多个矩阵乘向量的形式。也就是说,它实质上是 O(n2) 的!
空间复杂度
要记录的最大的东西只有一个 n×n 的矩阵 H,所以空间复杂度是 O(n2)。
L-BFGS
然而,有些时候 n 实在是太大了。当它到达千万或上亿级别的时候,即使 O(n2) 的时间复杂度与空间复杂度也是不可接受的。
让我们来回顾一下因式分解后的 BFGS 逆 Hessian 更新公式:
Hk=(I−ρk−1sk−1yk−1⊤)Hk−1(I−ρk−1yk−1sk−1⊤)+ρk−1sk−1sk−1⊤
引入紧凑算子 Vk−1=I−ρk−1sk−1yk−1⊤ 来简化运算,所以 Hk=Vk−1⊤Hk−1Vk−1+ρk−1sk−1sk−1⊤。
我们可以向前继续追溯,把 Hk−1 用 Hk−2 表示,有
Hk=Vk−1⊤(Vk−2⊤Hk−2Vk−2+ρk−2sk−2sk−2⊤)Vk−1+ρk−1sk−1sk−1⊤=Vk−1⊤Vk−2⊤Hk−2Vk−2Vk−1+ρk−2Vk−1⊤sk−2sk−2⊤Vk−1+ρk−1sk−1sk−1⊤
如果一直往前展开,最终会追溯到初始矩阵 H0。这意味着 Hk 中其实“蕴含”着之前所有步的信息。但随着迭代步数增加,历史越久远的曲率信息对当前的参考价值越低,反而占用巨量内存。
L-BFGS 的思想是:只保留最近 m 步的历史向量对(通常实践中取 m∈[3,20])。在第 k 步时,仅利用最近的 m 个历史位移对 si,yi,i=k−1,k−2,⋯,k−m。当回退到 k−m 时,不再回溯。展开式为:
Hk=(Vk−1⊤⋯Vk−m⊤)Hkinit(Vk−m⋯Vk−1)+ρk−m(Vk−1⊤⋯Vk−m+1⊤)sk−msk−m⊤(Vk−m+1⋯Vk−1)+⋯+ρk−1sk−1sk−1⊤
复杂度优化
逆序循环
直接计算 Hk 仍然需要 O(n2) 的时间与空间,但是我们的目标是 pk=Hk∇f(xk)。
观察 Vi 作用于任意向量 q 的效果:
Viq=(I−ρiyisi⊤)q=q−ρiyi(si⊤q)=q−(ρisi⊤q)yi
这意味着 Vi 的作用等效于在 q 上减去一个沿着 yi 方向的分量,而这一操作是 O(n) 的。因此,Vk−m⋯Vk−1∇f(xk) 在时间上是 O(mn) 的。而且,因为我们只需要存储最新 m 步的 si,yi,所以在空间上这也是 O(mn) 的。
基底变换
在经过一系列变换后,一个向量终于来到了 Hkinit 前。那是不是总要维护一个 O(n2) 的矩阵呢?
不是这样的。L-BFGS 都已经为空间舍弃了这么多信息,也不在乎再多丢一点了。所以 Hkinit 通常直接取为当前局部尺度的标量矩阵:
Hkinit=γkI,γk=yk−1⊤yk−1sk−1⊤yk−1
所以这一步还是 O(n) 的。
正序循环
类似的,Vi⊤ 作用于任意向量 q 也是 O(n) 的。所以,这里也是一个总计 O(mn) 的操作。
综上所述,L-BFGS 在时间和空间上都是 O(mn) 的。
收敛速度
L-BFGS 丢弃了 m 步之前的曲率信息。因此,近似 Hessian 矩阵无法随着 k→∞ 充分积累全空间的二阶几何特征,此时 Dennis-Moré 条件不再成立。所以理论上其渐近收敛速度退化为线性收敛,其收缩系数由保存的步数 m 和函数的条件数决定。
附录
BFGS 的 Hk 推导
BFGS 的目标是在所有满足对称性与割线约束
Hk=Hk⊤,Hkyk−1=sk−1
的矩阵中,挑出一个与上一步的 Hk−1 差别最小的。这里的“差别”用带权 Frobenius 范数度量:
∥A∥W2=tr(W1/2AWAW1/2)=∥W1/2AW1/2∥F2
权重 W 取任意满足 Wsk−1=yk−1 的对称正定矩阵(可以理解为割线意义下曲率的“替身”)。于是优化问题写成
Hkmin∥Hk−Hk−1∥W2s.t.Hk=Hk⊤,Hkyk−1=sk−1
坐标变换
记增量矩阵 E=Hk−Hk−1,并作无量纲化变换
E^=W1/2EW1/2,H^k−1=W1/2Hk−1W1/2
目标函数就化为普通的 Frobenius 范数平方 ∥E^∥F2=tr(E^2)。再处理约束:把 Eyk−1=sk−1−Hk−1yk−1 两边左乘 W1/2,并在左边插入 I=W−1/2W1/2,得
W1/2EW1/2W−1/2yk−1=W1/2sk−1−W1/2Hk−1yk−1
由 Wsk−1=yk−1 可知 W1/2sk−1=W−1/2yk−1。令
v=W−1/2yk−1=W1/2sk−1,r=v−H^k−1v
则约束变为 E^v=r,原问题简化为对称矩阵空间上的标准问题
E^=E^⊤min21tr(E^2)s.t.E^v=r
求解子问题
构造拉格朗日函数,其中 λ∈Rn 为乘子向量:
L(E^,λ)=21tr(E^2)−λ⊤(E^v−r)
利用 λ⊤E^v=tr(E^⋅2vλ⊤+λv⊤),对对称矩阵 E^ 求梯度并令其为零:
∂E^∂L=E^−21(vλ⊤+λv⊤)=0⟹E^=21(vλ⊤+λv⊤)
代回约束:
21((λ⊤v)v+∥v∥2λ)=r
两边左乘 v⊤,得 λ⊤v=∥v∥2v⊤r,再回代解出
λ=∥v∥22r−∥v∥4v⊤rv
因此
E^=∥v∥2rv⊤+vr⊤−∥v∥4v⊤rvv⊤
将 r=v−H^k−1v 代入并整理,即
E^=∥v∥2vv⊤−∥v∥2H^k−1vv⊤+vv⊤H^k−1+∥v∥4v⊤H^k−1vvv⊤
由 H^k=H^k−1+E^,得到变换空间中的更新式
H^k=H^k−1−∥v∥2H^k−1vv⊤+vv⊤H^k−1+∥v∥2vv⊤+∥v∥4v⊤H^k−1vvv⊤
逆变换还原
由 Hk=W−1/2H^kW−1/2,逐项还原:
∥v∥2=yk−1⊤sk−1,W−1/2v=sk−1,W−1/2H^k−1v=Hk−1yk−1,v⊤H^k−1v=yk−1⊤Hk−1yk−1
代回后即得
Hk=Hk−1−yk−1⊤sk−1sk−1yk−1⊤Hk−1+Hk−1yk−1sk−1⊤+yk−1⊤sk−1sk−1sk−1⊤+(yk−1⊤sk−1)2yk−1⊤Hk−1yk−1sk−1sk−1⊤
整个过程里权重 W 被完全消去,说明结果与 W 的选取无关。代入 ρk−1=yk−1⊤sk−11 并重组因式分解,就得到正文中使用的紧凑形式
Hk=(I−ρk−1sk−1yk−1⊤)Hk−1(I−ρk−1yk−1sk−1⊤)+ρk−1sk−1sk−1⊤
Hk≻0 的充要条件
设 Hk−1≻0,则 Hk≻0 当且仅当 yk−1⊤sk−1>0。
割线方程恒成立
先验证 Hkyk−1=sk−1。由 ρk−1yk−1sk−1⊤yk−1=ρk−1(yk−1⊤sk−1)yk−1=yk−1 可知
(I−ρk−1yk−1sk−1⊤)yk−1=0
将这一结果代入因式分解式:
Hkyk−1=(I−ρk−1sk−1yk−1⊤)Hk−1⋅0+ρk−1sk−1(sk−1⊤yk−1)=sk−1
可见因式分解式自动满足割线方程。
必要性
若 Hk≻0,取 z=yk−1(由 Hkyk−1=sk−1 且 Hk 可逆可知 yk−1=0),有
yk−1⊤Hkyk−1=yk−1⊤sk−1
左边是正定矩阵的二次型,恒为正,于是 yk−1⊤sk−1>0。
充分性
设 yk−1⊤sk−1>0,则 ρk−1>0。对任意非零向量 z,由因式分解式
z⊤Hkz=w⊤Hk−1w+ρk−1(sk−1⊤z)2,w=(I−ρk−1yk−1sk−1⊤)z
因为 Hk−1≻0 且 ρk−1>0,右边两项均非负。若 z⊤Hkz=0,则两项必须同时为零:
- ρk−1(sk−1⊤z)2=0⟹sk−1⊤z=0;
- w⊤Hk−1w=0⟹w=0(因 Hk−1 严格正定)。
把条件 1 代回 w 的表达式,得 w=z−ρk−1yk−1(sk−1⊤z)=z;再结合条件 2 的 w=0,推出 z=0,与假设矛盾。因此对任意 z=0 都有 z⊤Hkz>0,即 Hk≻0。
Wolfe 条件保证曲率条件
现在说明为什么 yk−1⊤sk−1>0 可以由 Wolfe 线搜索保证。第 k−1 步的方向取为 pk−1=−Hk−1∇f(xk−1)。因为 Hk−1≻0,当 ∇f(xk−1)=0 时
∇f(xk−1)⊤pk−1=−∇f(xk−1)⊤Hk−1∇f(xk−1)<0
即 pk−1 确实是下降方向。此时 xk=xk−1+αk−1pk−1,故
sk−1=xk−xk−1=αk−1pk−1
Wolfe 条件中的曲率准则为 ϕ′(αk−1)≥c2ϕ′(0),其中 0<c2<1,而 ϕ′(α)=∇f(xk−1+αpk−1)⊤pk−1,所以
∇f(xk)⊤pk−1≥c2∇f(xk−1)⊤pk−1
两边减去 ∇f(xk−1)⊤pk−1:
yk−1⊤pk−1≥(c2−1)∇f(xk−1)⊤pk−1
再乘以正步长 αk−1>0,并利用 sk−1=αk−1pk−1:
yk−1⊤sk−1≥(c2−1)αk−1∇f(xk−1)⊤pk−1
由于 0<c2<1 有 c2−1<0,而 ∇f(xk−1)⊤pk−1<0、αk−1>0,两个负因子相乘得正,因此
yk−1⊤sk−1>0
这正好是 Hk≻0 所需要的条件,所以 BFGS 一般配合 Wolfe 线搜索使用。强 Wolfe 条件对导数绝对值额外施加了 ∣∇f(xk)⊤pk−1∣≤c2∣∇f(xk−1)⊤pk−1∣ 的约束,其曲率准则与标准 Wolfe 一致,同样保证 yk−1⊤sk−1>0。
Dennis–Moré 准则
内容
设 f 二次连续可微,x⋆ 满足 ∇f(x⋆)=0,且 ∇2f(x⋆) 对称正定(为书写方便,下文记 G=∇2f(x⋆))。沿用正文的记号,第 k 步的拟牛顿方向为
pk=−Bk−1∇f(xk)=−Hk∇f(xk),
迭代点为 xk+1=xk+αkpk,故位移
sk=xk+1−xk=αkpk
(这与正文的 sk−1=xk−xk−1=αk−1pk−1 是同一套下标约定)。在考察极小值点邻域的超线性收敛时,可设线搜索最终接受单位步长 αk=1,于是
sk=−Bk−1∇f(xk),等价地Bksk=−∇f(xk).(DM-0)
假设迭代序列 xk→x⋆。Dennis–Moré 准则指出:
k→∞lim∥xk−x⋆∥∥xk+1−x⋆∥=0⟺k→∞lim∥sk∥∥(Bk−∇2f(x⋆))sk∥=0.(DM)
也就是说,拟牛顿法在极小值点邻域超线性收敛的充分必要条件是 Bk 沿迭代方向 sk 渐近地趋近于真实 Hessian G。
直观解释
条件 (DM) 只要求矩阵 Bk 在搜索方向 sk 上等于 G 的越来越好的近似,而不要求在整个 Rn 上接近 G。由于 sk=−Bk−1∇f(xk),若 Bksk≈Gsk,则 pk=−Bk−1∇f(xk)≈−G−1∇f(xk),即搜索方向渐近地逼近正文中的牛顿方向
pkNewton=−(∇2f(xk))−1∇f(xk).
由于 xk→x⋆ 且 Hessian 连续,∇2f(xk)→∇2f(x⋆)=G,因此该方向在极限意义下就是 −G−1∇f(xk),这正是正文“搜索方向渐近地逼近牛顿方向”的含义。
证明
记位移误差 ek=xk−x⋆(以区别于正文中表示函数值误差的 Δk)。因为 ∇f 在 x⋆ 处可微、∇f(x⋆)=0、∇2f(x⋆)=G,由导数的定义(Fréchet 导数)有
∇f(xk)=Gek+rk,∥rk∥=o(∥ek∥).(1)
又由拟牛顿步关系式 (DM-0) 可得
Gsk=Bksk−(Bk−G)sk=−∇f(xk)−(Bk−G)sk.(2)
充分性。 设 (DM) 成立,即 (Bk−G)sk=o(∥sk∥)。把 (1) 代入 (2):
Gsk=−Gek−rk−(Bk−G)sk.
两边左乘 G−1 并取范数,利用 ∥rk∥=o(∥ek∥):
∥sk∥≤∥ek∥+∥G−1∥∥rk∥+∥G−1∥o(∥sk∥)=O(∥ek∥)+o(∥sk∥),
由此推出 ∥sk∥=O(∥ek∥),从而 o(∥sk∥)=o(∥ek∥)。将其代回上式:
sk=−ek+G−1o(∥ek∥)=−ek+o(∥ek∥).
于是
ek+1=ek+sk=o(∥ek∥),即∥xk−x⋆∥∥xk+1−x⋆∥→0,
所以迭代超线性收敛。
必要性。 设迭代超线性收敛,即 ek+1=o(∥ek∥)。由 sk=ek+1−ek 得
∥sk∥≥∥ek∥−∥ek+1∥=(1−o(1))∥ek∥,
所以 ∥ek∥≤(1+o(1))∥sk∥。另一方面,由 (1) 与 (2):
(Bk−G)sk=−∇f(xk)−Gsk=−Gek−rk−Gsk=−G(ek+sk)−rk=−Gek+1−rk.
取范数并利用 ek+1=o(∥ek∥)、∥rk∥=o(∥ek∥):
∥(Bk−G)sk∥≤∥G∥∥ek+1∥+∥rk∥=o(∥ek∥)≤o(∥sk∥),
这正是 (DM)。□
几点说明
- 该定理把“超线性收敛”这一关于迭代点序列的性质,完全转化为关于矩阵 Bk 的一个可检验条件:只需 Bk 在迭代方向 sk 上趋近于 ∇2f(x⋆),而无需在整个空间上趋近。BFGS、DFP、SR1 等拟牛顿法的经典超线性收敛定理,正是在适当线搜索下证明其 {Bk} 满足 (DM)。
- 对 L-BFGS 而言,由于只保留最近 m 步的曲率信息,Bk(或 Hk)无法在任意方向上恢复全空间二阶信息,(DM) 一般不成立,因此渐近收敛速度退化为线性收敛,收缩率依赖于保存步数 m 与函数条件数。
- 与拟牛顿法的联系:BFGS 维护的是逆 Hessian 近似 Hk,而定理中的 Bk=Hk−1;由于 (DM) 用 Bk 表述,实际验证时也可等价地考察 Hk−1 在方向 sk 上是否收敛到 ∇2f(x⋆)。