Reference
【概述】
BFCS 算法是建立在阻尼牛顿法之上的,其以发明者 Broyden、Fletcher、Goldfarb、Shanno 四人姓名的首字母命名的,与 DFP 算法相比,其性能更佳,目前已成为求解无约束非线性优化问题的常用方法
对于阻尼牛顿法的搜索方向 $\mathbf{d_k}=-H_k^{-1}\cdot \mathbf{g_k}$,根据拟牛顿条件,BFCS 选用近似矩阵 $B_k$ 作为海森矩阵 $H_k$ 的近似,其迭代格式为:
其中,$B_0$ 取单位矩阵 $I$,因此,算法的关键就是每一次迭代的校正矩阵 $\triangle B_k$ 如何构造
关于拟牛顿条件详见:拟牛顿迭代法
【BFCS 算法】
算法原理
假设校正矩阵 $\triangle B_k$ 与拟牛顿条件 $\mathbf{y_k} = B_{k+1}\boldsymbol{\delta_k}$、近似矩阵 $B_k$ 有关
采用待定系数法,设 $\alpha$、$\beta$ 为待定系数,向量 $\boldsymbol{\mu},\boldsymbol{\nu} \in \mathbb{R}^n$ 为待定列向量,则校正矩阵 $\triangle B_k$ 可待定为:
从形式上看,这种待定公式保证了校正矩阵 $\triangle B_k$ 的对称性
结合拟牛顿条件 $\mathbf{y_k} = B_{k+1}\boldsymbol{\delta_k}$,将 $\triangle B_k$ 的待定式带入迭代式,有:
可以发现,括号中的 $\alpha\boldsymbol{\mu}^T\boldsymbol{\delta_k}$ 与 $\beta\boldsymbol{\nu}^T\boldsymbol{\delta_k}$ 是两个数,取最简单的情况,进行如下赋值:
并将其带回 $\mathbf{y_k}$ 中,有:
为使上式成立,直接取最简单情况 $\boldsymbol{\mu}=\boldsymbol{\delta_k}$,$\boldsymbol{\nu}=B_k\boldsymbol{\delta_k}$,此时,对于待定系数 $\alpha$、$\beta$ 有:
这时,校正矩阵 $\triangle B_k$ 已构造出来,即:
由于近似矩阵 $D_k$ 为近似成海森矩阵 $H_k$ 的正定矩阵,故有:
因此,BFCS 最终的迭代式为:
可以发现,对于 BFGS 与 DFP 相比,除了将近似矩阵 $D$ 换为 $B$ 外,其他地方只是将 $\boldsymbol{\delta_k}$ 替换为 $\mathbf{y_k}$,将 $\mathbf{y_k}$ 替换为 $\boldsymbol{\delta_k}$
算法流程
BFGS 算法的算法流程如下:
- 给定初值 $\mathbf{x_0}$ 和精度阈值 $\varepsilon$,并令 $B_0=I$,$k=0$
- 计算梯度向量 $\mathbf{g_k}$,与搜索方向 $\mathbf{d_k}=-B_k^{-1}\cdot \mathbf{g_k}$
- 利用 $\lambda_k=\arg \min\limits_{\lambda\in \mathbb{R}} f(\mathbf{x_k}+\lambda \mathbf{d_k})$ 得到步长 $\lambda_k$,并令 $\boldsymbol{\delta_k}=\lambda\mathbf{d_k}$,$\mathbf{x_{k+1}}=\mathbf{x_k} + \mathbf{\delta_k}$
- 若 $\mathbf{x_{k+1}}$ 的梯度向量 $\mathbf{g_{k+1}}$ 的 L1 范数 $||\mathbf{g_{k+1}}||$ 满足 $||\mathbf{g_{k+1}}||<\varepsilon$,则停止迭代,得近似解 $\mathbb{x}^*=\mathbf{x_{k+1}}$,否则转至步骤 5
- 计算两次迭代的梯度差 $\mathbf{y_k}=\mathbf{g_{k+1}}-\mathbf{g_k}$
- 计算第 $k+1$ 次的近似矩阵 $B_{k+1}=B_k+\frac{\mathbf{y_k}\mathbf{y_k}^T}{\mathbf{y_k}^T\boldsymbol{\delta_k}}-\frac{B_k\boldsymbol{\delta_k}\boldsymbol{\delta_k}^TB_k}{\boldsymbol{\delta_k}^TB_k\boldsymbol{\delta_k}}$
- 令 $k=k+1$,转至步骤 2
【谢尔曼-莫里森公式下的 BFGS 算法】
算法原理
对于阻尼牛顿法来说,其搜索方向为:
BFGS 算法选择使用近似矩阵 $B_k$ 来作为海森矩阵 $H_k$ 的近似,因此,这不可避免的需要在计算出 $B_k$ 后再求 $B_k^{-1}$,通常情况下,对于 $B_k^{-1}$ 的计算,都是通过解线性方程组 $B_k\mathbf{d_k}=-\mathbf{g_k}$ 进行的,这无疑影响了算法的运行速度
为此,在 BFGS 算法的基础上,使用谢尔曼-莫里森公式(Sherman-Morrison Formula),将 BFGS 的迭代式进行改进,直接给出 $B_{k+1}^{-1}$ 与 $B_k^{-1}$ 的关系式,即:
从而对 BFGS 算法进一步优化,使得整个算法不再需要解线性方程组,仅使用矩阵-向量运算即可完成
为算法流程的清晰性,不再出现矩阵求逆符号,统一将 $B_k^{-1}$ 换为 $G_k$,并称 $G_k$ 为特殊 BFGS 矩阵,即:
算法流程
此时 BFGS 算法流程如下:
- 给定初值 $\mathbf{x_0}$ 和精度阈值 $\varepsilon$,并令 $G_0=I$,$k=0$
- 计算梯度向量 $\mathbf{g_k}$,与搜索方向 $\mathbf{d_k}=-G_k\cdot \mathbf{g_k}$
- 利用 $\lambda_k=\arg \min\limits_{\lambda\in \mathbb{R}} f(\mathbf{x_k}+\lambda \mathbf{d_k})$ 得到步长 $\lambda_k$,并令 $\boldsymbol{\delta_k}=\lambda\mathbf{d_k}$,$\mathbf{x_{k+1}}:=\mathbf{x_k} + \boldsymbol{\delta_k}$
- 若 $\mathbf{x_{k+1}}$ 的梯度向量 $\mathbf{g_{k+1}}$ 的 L1 范数 $||\mathbf{g_{k+1}}||$ 满足 $||\mathbf{g_{k+1}}||<\varepsilon$,则停止迭代,否则转至步骤 5
- 计算两次迭代的梯度差 $\mathbf{y_k}=\mathbf{g_{k+1}}-\mathbf{g_k}$
- 计算第 $k+1$ 次的近似矩阵 $G_{k+1} = (I-\frac{\mathbf{\delta_k}\mathbf{y_k}^T}{\mathbf{y_k}^T\mathbf{\delta_k}})G_k(I-\frac{\mathbf{y_k}\mathbf{\delta_k}^T}{\mathbf{y_k}^T\mathbf{\delta_k}})+\frac{\mathbf{\delta_k}\mathbf{\delta_k}^T}{\mathbf{y_k}^T\mathbf{\delta_k}}$
- 令 $k=k+1$,转至步骤 2
算法推导
谢尔曼-莫里森公式
谢尔曼-莫里森公式(Sherman-Morrison Formula)是以 Sherman 和 Morrison 命名,在线性代数中,是求解逆矩阵的一种方法,其内容如下:
设 $A\in \mathbb{R}^{n\times n}$ 是非奇异方阵,$\boldsymbol{\mu},\boldsymbol{\nu} \in \mathbb{R}^{n}$,则 $(A+\boldsymbol{\mu}\boldsymbol{\nu}^T)$ 可逆,当且仅当 $1+\boldsymbol{\nu}^TA\boldsymbol{\mu}\neq0$,其逆矩阵为:
通过使用两次 Sherman-Morrison 公式,可以在 BFGS 算法迭代式的基础上得到蕴含 $B_{k+1}^{-1}$ 与 $B_k^{-1}$ 的关系式的 BFCS 算法的迭代式,证明如下:
已知 BFGS 算法迭代式为:
其中,近似矩阵 $B_k\in \mathbb{R}^{n\times n}$ 是可逆的实对称矩阵,梯度差 $\mathbf{y_k}=\mathbf{g_{k+1}}-\mathbf{g_k}\in \mathbb{R}^n$,$\mathbf{x}$ 的增量 $\boldsymbol{\delta_k}=\mathbf{x_{k+1}}-\mathbf{x_k} \in \mathbb{R}^n$
对于 $-\frac{B_k\boldsymbol{\delta_k}\boldsymbol{\delta_k}^TB_k}{\boldsymbol{\delta_k}^TB_k\boldsymbol{\delta_k}}$,有:
其中,$\boldsymbol{\delta_k}^TB_k\boldsymbol{\delta_k}$ 为二次型形式的标量,$B_k\boldsymbol{\delta_k}\in \mathbb{R}^n$
记 $A=B_{k}+\frac{\mathbf{y_k}\mathbf{y_k}^T}{\mathbf{y_k}^T\boldsymbol{\delta_k}}$,那么有:
根据 Sherman-Morrison 公式,有:
对于 $A=B_{k}+\frac{\mathbf{y_k}\mathbf{y_k}^T}{\mathbf{y_k}^T\boldsymbol{\delta_k}}$,分母 $\mathbf{y_k}^T\boldsymbol{\delta_k}$ 为标量,再次利用 Sherman-Morrison 公式,有:
其中,分母 $\mathbf{y_k}^T\boldsymbol{\delta_k}$ 是内积形式的标量,$\mathbf{y_k}^TB_k^{-1}\mathbf{y_k}$ 是二次型形式的标量,记:
则有:
对于 $B_{k+1}^{-1}= A^{-1}+A^{-1}\frac{B_k\boldsymbol{\delta_k}\boldsymbol{\delta_k}^TB_k}{\boldsymbol{\delta_k}^TB_k\boldsymbol{\delta_k} - \boldsymbol{\delta_k}^TB_kA^{-1}B_k\boldsymbol{\delta_k}}A^{-1} $,先对后半部分进行化简,有:
此时,有:
再次将 $A^{-1}=B_k^{-1}-\frac{B_k^{-1}\mathbf{y_k}\mathbf{y_k}^TB_k^{-1}}{Q}$ 代入,化简可得:
对于最后一项的分子 $\mathbf{y_k}^TB_k^{-1}\mathbf{y_k}\boldsymbol{\delta_k}\boldsymbol{\delta_k}^T$,由于 $\mathbf{y_k}^TB_k^{-1}\mathbf{y_k}$ 是二次型形式的标量,因此有:
故有:
将 $m=\mathbf{y_k}^T\boldsymbol{\delta_k}$ 带回,有:
再记 $G_k=B_k^{-1}$,则有:
证明完毕
伍德伯里矩阵恒等式
伍德伯里矩阵恒等式(Woodbury Matrix Identity)是 Woodbury 在 Sherman-Morrison 公式的基础上进行的一般化推广,推广后的 Sherman-Morrison 公式一般称为 Sherman-Morrison-Woodbury 公式,其内容如下:
设 $A\in \mathbb{R}^{n\times n}$ 是非奇异方阵,$U,V \in \mathbb{R}^{n\times p}$,其中 $1\leq p \leq n$,则矩阵 $A+UV^T$ 可逆,当且仅当矩阵 $I+V^TA^{-1}U$ 可逆,且有:
对于 BFCS 算法,通过使用两次 Sherman-Morrison 公式,可以在 BFGS 算法迭代式的基础上得到蕴含 $B_{k+1}^{-1}$ 与 $B_k^{-1}$ 的关系式的 BFCS 算法的迭代式
当使用 Sherman-Morrison-Woodbury 公式时,则仅需使用一次即可得到蕴含 $B_{k+1}^{-1}$ 与 $B_k^{-1}$ 的关系式的 BFCS 算法的迭代式,证明如下:
已知 BFGS 算法迭代式为:
其中,近似矩阵 $B_k\in \mathbb{R}^{n\times n}$ 是可逆的实对称矩阵,梯度差 $\mathbf{y_k}=\mathbf{g_{k+1}}-\mathbf{g_k}\in \mathbb{R}^n$,$\mathbf{x}$ 的增量 $\boldsymbol{\delta_k}=\mathbf{x_{k+1}}-\mathbf{x_k} \in \mathbb{R}^n$
将后两项写成矩阵相乘的形式,有:
记 $U=\begin{bmatrix}-\frac{B_k\boldsymbol{\delta_k}}{\boldsymbol{\delta_k}^T B_k \boldsymbol{\delta_k}} & \frac{\mathbf{y_k}}{\mathbf{y_k}^T \boldsymbol{\delta_k}}\end{bmatrix}$,$V=\begin{bmatrix}B_k\boldsymbol{\delta_k} &\mathbf{y_k}^T\end{bmatrix}$,则有:
根据 Sherman-Morrison-Woodbury 公式,可得:
对于 $I+V^TB_k^{-1}U$,有:
对于二阶矩阵来说,若 $\begin{bmatrix}a&b\\c&d\end{bmatrix}$ 可逆,那么有:
于是,对于 $I+V^TB_k^{-1}U$ 来说,就有:
那么,对于 $B_k^{-1}U (I+V^TB_k^{-1}U)^{-1} V^TB_k^{-1}$,有:
综上,对于原式 $B_{k+1}^{-1} = B_k^{-1} - B_k^{-1}U (I+V^TB_k^{-1}U)^{-1} V^TB_k^{-1}$,有:
再记 $G_k=B_k^{-1}$,则有:
证明完毕