一、BFGS算法的更新公式
为了推导BFGS算法,需要用到对偶或者互补的概念,前边已经讨论过hessian矩阵逆矩阵的近似矩阵需要满足以下条件:
Hk+1Δg(i)=Δx(i)0≤i≤k
这是根据 Δg(i)=QΔx(i),0≤i≤k推导出来的。基于这一条件可以构造hessian矩阵逆矩阵近似矩阵的更新公式,秩1算法和DFP算法都是据此而来。但是除了构造逆矩阵的近似矩阵以外,还可以直接构造矩阵 Q的近似矩阵。令矩阵 Bk表示在第 k次迭代中关于矩阵
Δg(i)=Bk+1Δx(i),0≤i≤k
可以看出,这组方程与 Hk+1应该满足的方程十分相似,唯一的区别在于 Δg(i)和 Δx(i)互换。因此,给定关于 Hk的更新公式,交换 Δg(i)和 Δx(i)的位置,并将 Hk替换为 Bk,就可以得到 Bk的更新公式。
在BFGS算法中,矩阵 Bk对应着DFP算法的 Hk.满足这两种结构的两类公式称为对偶或互补的。
已知DFP算法中关于 Hk,即hessian矩阵逆矩阵的近似矩阵的更新公式为:
HDFPk+1=Hk+Δx(k)Δx(k)TΔx(k)TΔg(k)−HkΔg(k)Δg(k)THkΔg(k)HkΔg(k)T
利用互补概念,可以得到 Bk,即hessian矩阵的近似矩阵为:
Bk+1=Bk+Δg(k)Δg(k)TΔg(k)TΔx(k)−BkΔx(k)Δx(k)TBkΔx(k)BkΔx(k)T
为了获得hessian矩阵逆矩阵的近似矩阵的更新公式,只需对矩阵 Bk+1求逆即可。
二、谢尔曼——莫里森公式
引理 如果矩阵A非奇异, u和v是列向量, 满足1+vTA−1u≠0, 那么A+uvT非奇异,其逆矩阵可以用A−1表示,如下:
(A+uvT)−1=A−1−(A−1u)(vTA−1)1+vTA−1u
对应 Bk+1应用2次引理, 可得:
HBFGSk+1=Hk+(1+Δg(k)THkΔg(k)Δg(k)TΔx(k))Δx(k)Δx(k)TΔx(k)TΔg(k)−HkΔg(k)Δx(k)T+(HkΔg(k)Δx(k)T)TΔg(k)TΔx(k)
这就是BFGS算法中关于 Bk的更新公式。BFGS算法保持了拟牛顿法的一切性质,包括共轭方向的性质,也能够使得近似矩阵一直保持正定。
当迭代过程中一维搜索的精度不够高时,BFGS算法仍然比较稳健。这一性质有助于将计算资源从追求高精度的一维搜索中释放出来。就效率而言,BFGS算法要远超DFP算法。