一、BFGS算法的更新公式

为了推导BFGS算法,需要用到对偶或者互补的概念,前边已经讨论过hessian矩阵逆矩阵的近似矩阵需要满足以下条件:

Hk+1Δg(i)=Δx(i)0≤i≤k

\boldsymbol{H}_{k+1} \Delta\boldsymbol{g}^{(i)} = \Delta\boldsymbol{x}^{(i)} \quad 0 \le i\le k
这是根据 Δg(i)=QΔx(i),0≤i≤k\Delta\boldsymbol{g}^{(i)} = \boldsymbol{Q}\Delta\boldsymbol{x}^{(i)}, 0 \le i\le k推导出来的。基于这一条件可以构造hessian矩阵逆矩阵近似矩阵的更新公式,秩1算法和DFP算法都是据此而来。但是除了构造逆矩阵的近似矩阵以外,还可以直接构造矩阵 Q\boldsymbol{Q}的近似矩阵。令矩阵 Bk\boldsymbol{B}_k表示在第 kk次迭代中关于矩阵Q\boldsymbol{Q}的估计,则 Bk+1\boldsymbol{B}_{k+1}应该满足

Δg(i)=Bk+1Δx(i),0≤i≤k

\Delta\boldsymbol{g}^{(i)} = \boldsymbol{B}_{k+1}\Delta\boldsymbol{x}^{(i)}, 0 \le i\le k
可以看出,这组方程与 Hk+1\boldsymbol{H}_{k+1}应该满足的方程十分相似,唯一的区别在于 Δg(i)\Delta\boldsymbol{g}^{(i)}和 Δx(i)\Delta\boldsymbol{x}^{(i)}互换。因此,给定关于 Hk\boldsymbol{H}_{k}的更新公式,交换 Δg(i)\Delta\boldsymbol{g}^{(i)}和 Δx(i)\Delta\boldsymbol{x}^{(i)}的位置,并将 Hk\boldsymbol{H}_{k}替换为 Bk\boldsymbol{B}_{k},就可以得到 Bk\boldsymbol{B}_{k}的更新公式。
    在BFGS算法中,矩阵 Bk\boldsymbol{B}_{k}对应着DFP算法的 Hk\boldsymbol{H}_{k}.满足这两种结构的两类公式称为对偶或互补的。
    已知DFP算法中关于 Hk\boldsymbol{H}_{k},即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

\boldsymbol{H}_{k+1}^{DFP} = \boldsymbol{H}_{k} + \frac{\Delta\boldsymbol{x}^{(k)}\Delta\boldsymbol{x}^{(k)T}}{\Delta\boldsymbol{x}^{(k)T}\Delta\boldsymbol{g}^{(k)}} - \frac{\boldsymbol{H}_{k}\Delta\boldsymbol{g}^{(k)}\Delta\boldsymbol{g}^{(k)T}\boldsymbol{H}_{k}}{\Delta\boldsymbol{g}^{(k)}\boldsymbol{H}_{k}\Delta\boldsymbol{g}^{(k)T}}
利用互补概念,可以得到 Bk\boldsymbol{B}_{k},即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

\boldsymbol{B}_{k+1} = \boldsymbol{B}_{k} + \frac{\Delta\boldsymbol{g}^{(k)}\Delta\boldsymbol{g}^{(k)T}}{\Delta\boldsymbol{g}^{(k)T}\Delta\boldsymbol{x}^{(k)}} - \frac{\boldsymbol{B}_{k}\Delta\boldsymbol{x}^{(k)}\Delta\boldsymbol{x}^{(k)T}\boldsymbol{B}_{k}}{\Delta\boldsymbol{x}^{(k)}\boldsymbol{B}_{k}\Delta\boldsymbol{x}^{(k)T}}
为了获得hessian矩阵逆矩阵的近似矩阵的更新公式,只需对矩阵 Bk+1\boldsymbol{B}_{k+1}求逆即可。

二、谢尔曼——莫里森公式

引理 如果矩阵A\boldsymbol{A}非奇异, u\boldsymbol{u}和v\boldsymbol{v}是列向量, 满足1+vTA−1u≠01 + \boldsymbol{v}^T\boldsymbol{A}^{-1}\boldsymbol{u} \ne 0, 那么A+uvT\boldsymbol{A} + \boldsymbol{uv}^T非奇异,其逆矩阵可以用A−1\boldsymbol{A}^{-1}表示,如下:

(A+uvT)−1=A−1−(A−1u)(vTA−1)1+vTA−1u

(\boldsymbol{A} + \boldsymbol{uv}^T)^{-1} = \boldsymbol{A}^{-1} - \frac{(\boldsymbol{A}^{-1}\boldsymbol{u})(\boldsymbol{v}^T\boldsymbol{A}^{-1})}{1 + \boldsymbol{v}^T\boldsymbol{A}^{-1}\boldsymbol{u}}
对应 Bk+1\boldsymbol{B}_{k+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)

\boldsymbol{H}_{k+1}^{BFGS} = \boldsymbol{H}_{k} + (1 + \frac{\Delta\boldsymbol{g}^{(k)T}\boldsymbol{H}_{k}\Delta\boldsymbol{g}^{(k)}}{\Delta\boldsymbol{g}^{(k)T}\Delta\boldsymbol{x}^{(k)}})\frac{\Delta\boldsymbol{x}^{(k)}\Delta\boldsymbol{x}^{(k)T}}{\Delta\boldsymbol{x}^{(k)T}\Delta\boldsymbol{g}^{(k)}}-\frac{\boldsymbol{H}_{k}\Delta\boldsymbol{g}^{(k)}\Delta\boldsymbol{x}^{(k)T} + (\boldsymbol{H}_{k}\Delta\boldsymbol{g}^{(k)}\Delta\boldsymbol{x}^{(k)T})^T}{\Delta\boldsymbol{g}^{(k)T}\Delta\boldsymbol{x}^{(k)}}
这就是BFGS算法中关于 Bk\boldsymbol{B}_{k}的更新公式。BFGS算法保持了拟牛顿法的一切性质,包括共轭方向的性质,也能够使得近似矩阵一直保持正定。
    当迭代过程中一维搜索的精度不够高时,BFGS算法仍然比较稳健。这一性质有助于将计算资源从追求高精度的一维搜索中释放出来。就效率而言,BFGS算法要远超DFP算法。

最优化学习笔记(十九)——拟牛顿法(5)BFGS算法相关推荐

  1. 最优化学习笔记(十八)——拟牛顿法(4)DFP算法

    秩2算法可以保证在任意第kk步迭代下, 只要一维搜索是精确的,近似矩阵Hk\boldsymbol{H}_k就是正定的. DFP算法 令k=0k=0,选择初始点x(0)\boldsymbol{x}^{( ...

  2. 最优化学习笔记(十六)——拟牛顿法(2)

    Hessian矩阵逆矩阵的近似 一.拟牛顿法的基本思路 令H0,H1,H2,-\boldsymbol{H_0,H_1, H_2}, \dots表示Hessian矩阵逆矩阵F(x(k))−1\bolds ...

  3. Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法

    Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法 把开发手册理了一遍,发现还有几个点没有记录下来,其中一个就是使用点对的粗对齐和使用参考目标的精确对齐.为了把这个学习笔记凑够 ...

  4. Mr.J-- jQuery学习笔记(十九)--自定义动画实现图标特效

    之前有写过自定义动画Mr.J-- jQuery学习笔记(十八)--自定义动画 这次实现一个小demo 图标特效 页面渲染 <!DOCTYPE html> <html lang=&qu ...

  5. 【theano-windows】学习笔记十九——循环神经网络

    前言 前面已经介绍了RBM和CNN了,就剩最后一个RNN了,抽了一天时间简单看了一下原理,但是没细推RNN的参数更新算法BPTT,全名是Backpropagation Through Time. [注 ...

  6. javascript学习笔记(十九) 节点的操作

    包括节点的创建.添加.移除.替换.复制 本节要用到的html例子 1 <ul id="myList"> 2 <li>项目一</li> 3 < ...

  7. 乐优商城学习笔记十九-商品详情(二)

    2.页面静态化 2.1.简介 2.1.1.问题分析 现在,我们的页面是通过Thymeleaf模板引擎渲染后返回到客户端.在后台需要大量的数据查询,而后渲染得到HTML页面.会对数据库造成压力,并且请求 ...

  8. 步步为营 .NET 设计模式学习笔记 十九、Chain of Responsibility(职责链模式)

    概述 在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显示指定,将必不可少地带来请求发送者与接受者的紧耦合. 如何使请求的发送者不需要指定具体的接受者?让请求的 ...

  9. angular学习笔记(十九)-自定义指令修改dom

    使用angular指令可以自己扩展html语法,还可以做很多自定义的事情.在后面会专门讲解这一块的知识,这一篇只是起到了解入门的作用. 与控制器,过滤器,服务,一样,可以通过模块实例的directiv ...

最新文章

  1. 帕斯卡三角形与道路问题
  2. iOS将产品进行多语言发布,开发
  3. 每天一道LeetCode-----计算二叉树的最大路径和,路径只需要从一个节点到达另一个节点,无其他要求
  4. 巨头入局,华为云将给音视频行业带来什么?
  5. 飞畅科技教你如何快速选择工业网管poe交换机?
  6. python编程求导数_面向对象编程 —— java实现函数求导
  7. java程序员面试需要注意什么_Java程序员面试时要注意的一些问题
  8. java——Runtime
  9. python3迭代器是什么,python3 迭代器
  10. springboot内置浏览器_SpringBoot快速搭建
  11. Android闪退日志关键字,求助,简单UI界面,调试总是闪退,还没有LOG错误日志???...
  12. 使用npm安装一些包失败了的看过来(npm国内镜像介绍)
  13. Shell获取多行输入并输出每行的第3个字符
  14. Windows消息前缀
  15. H5标签 marquee 滚动字幕
  16. 凸包问题--旋转卡壳
  17. 8个视频素材网站,免费可商用,视频剪辑必备。
  18. 【游戏开发渲染】Unity ShaderGraph使用教程与各种特效案例:Unity2022(持续更新)
  19. HCIA笔记-----第二天
  20. LCD12864液晶显示

热门文章

  1. mysql 如果存在修改_mysql如存在并发修改可能,一定要注意保证数据一致性
  2. C++ 偏微分数值计算库_Windows下RTCGAToolbox库下载TCPA数据(RPPA)学习笔记
  3. vlc文件服务器局域网,vlc流媒体服务器配置
  4. Python类的构造方法__init__(self)和析构函数__del__详解
  5. 【Excel】函数DateDif查看两个日期之间的间隔
  6. 立志10天学会C++基础应用—day02 代码清晰易懂 涉及数据结构算法的知识 写完了~我也麻了
  7. 测试开发——搭建一个简单 web服务(flask框架基础)项目实战
  8. Python魔术世界 1 如何使用Visual Studio在WIN10中一键安装Python3入门编程环境并测试Django...
  9. PyCharm安装与配置,python的Hello World
  10. 使用JavaScript进行数组去重——一种高效的算法