最优化学习笔记(十四)——共轭梯度法
共轭梯度法不需要预先给定Q\boldsymbol{Q}共轭方向,而是随着迭代的进行不断产生Q\boldsymbol{Q}共轭方向。在每次的迭代中,利用上一个搜索方向和目标函数在当前迭代点的梯度向量 之间的线性组合构造一个新的方向,使其与前边已经产生的搜索方向组成Q\boldsymbol{Q}共轭方向。对于一个nn维二次型函数,沿着Q\boldsymbol{Q}共轭方向进行搜索,经过nn次迭代,即可得到极小点。
考虑二次型函数:
f(\boldsymbol{x}) = \frac{1}{2}\boldsymbol{x}^T\boldsymbol{Qx}-\boldsymbol{x}^T\boldsymbol{b}, \boldsymbol{x} \in \mathbb{R}^n
其中, Q=QT>0\boldsymbol{Q} = \boldsymbol{Q}^T > 0。初始点x(0)\boldsymbol{x}^{(0)},搜索方向采用最速下降法的方向,即函数ff在x(0)\boldsymbol{x}^{(0)}处梯度的负方向,即:
\boldsymbol{d}^{(0)} = - \boldsymbol{g}^{(0)}
产生下一个迭代点:
\boldsymbol{x}^{(1)} = \boldsymbol{x}^{(0)} + \alpha_0\boldsymbol{d}^{(0)}
其中,步长为:
\alpha_0 = \arg \min_{\alpha \ge 0} f(\boldsymbol{x}^{(0)} + \alpha_0 \boldsymbol{d}^{(0)}) = -\frac{\boldsymbol{g}^{(0)T}\boldsymbol{d}^{(0)}}{\boldsymbol{d}^{(0)T}\boldsymbol{Q}\boldsymbol{d}^{(0)}}
再展开下一次迭代,搜索方向 d(0)\boldsymbol{d}^{(0)}和 d(1)\boldsymbol{d}^{(1)}应该是关于 Q\boldsymbol{Q}共轭的。推广开来,在 k+1k+1词迭代中:
\boldsymbol{d}^{(k+1)} = - \boldsymbol{g}^{(k+1)} + \beta_k\boldsymbol{d}^{(k)} ,\quad k =0,1,2\dots
按照如下方式选择 βk\beta_k, 可以使得 d(k+1)\boldsymbol{d}^{(k+1)}和 d(0),d(1),…,d(k)\boldsymbol{d}^{(0)},\boldsymbol{d}^{(1)}, \dots,\boldsymbol{d}^{(k)}组成 Q\boldsymbol{Q}共轭方向:
\beta_k = \frac{\boldsymbol{g}^{(k+1)T}\boldsymbol{Q}\boldsymbol{d}^{(k)}}{\boldsymbol{d}^{(k)T}\boldsymbol{Q}\boldsymbol{d}^{(k)}}
共轭梯度法的算法步骤可以归纳如下:
- 令 k=0k=0,选择初始值:x(0)\boldsymbol{x}^{(0)}
- 计算g(0)=∇f(x(0))\boldsymbol{g}^{(0)} = \nabla f(\boldsymbol{x}^{(0)}),如果g(0)=0\boldsymbol{g}^{(0)}=\boldsymbol{0},停止。否则:d(0)=−g(0)\boldsymbol{d}^{(0)}= - \boldsymbol{g}^{(0)}.
- 计算αk=−g(k)Td(k)d(k)TQd(k)\alpha_k = -\frac{\boldsymbol{g}^{(k)T}\boldsymbol{d}^{(k)}}{\boldsymbol{d}^{(k)T}\boldsymbol{Q}\boldsymbol{d}^{(k)}}
- 计算 x(k+1)=x(k)+αkd(k)\boldsymbol{x}^{(k+1)} = \boldsymbol{x}^{(k)} + \alpha_k\boldsymbol{d}^{(k)}
- 计算g(k+1)=∇f(x(k+1))\boldsymbol{g}^{(k+1)} = \nabla f(\boldsymbol{x}^{(k+1)}),如果g(k+1)=0\boldsymbol{g}^{(k+1)}=\boldsymbol{0},停止。
- 计算βk=g(k+1)TQd(k)d(k)TQd(k)\beta_k = \frac{\boldsymbol{g}^{(k+1)T}\boldsymbol{Q}\boldsymbol{d}^{(k)}}{\boldsymbol{d}^{(k)T}\boldsymbol{Q}\boldsymbol{d}^{(k)}}
- 计算d(k+1)=−g(k+1)+βkd(k)\boldsymbol{d}^{(k+1)} = - \boldsymbol{g}^{(k+1)} + \beta_k\boldsymbol{d}^{(k)}
- 令k=k+1k=k+1,回到第3<script type="math/tex" id="MathJax-Element-10156">3</script>步。
最优化学习笔记(十四)——共轭梯度法相关推荐
- 吴恩达《机器学习》学习笔记十四——应用机器学习的建议实现一个机器学习模型的改进
吴恩达<机器学习>学习笔记十四--应用机器学习的建议实现一个机器学习模型的改进 一.任务介绍 二.代码实现 1.准备数据 2.代价函数 3.梯度计算 4.带有正则化的代价函数和梯度计算 5 ...
- Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理
Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理 Polyworks的工作任务存储分为工作区和项目两级,通过WORKSPACE命令获取工作任务信息,实现更好的任务管理. 下 ...
- 最优化学习笔记(四)共轭梯度法
- 【神经网络】学习笔记十四——Seq2Seq模型
本文简要介绍seq2seq,即序列到序列的基本知识,是深度学习和NLP中一个重要的知识. 从三部分来说,seq2seq基本简介,应用场景和原理解析. 一.什么是Seq2Seq 所谓Seq2Seq(Se ...
- 重新认识错过(通向财富自由之路学习笔记十四)
本周学习<通向财富自由之路>专栏重新认识错过的文章,在文章中作者介绍了自己是如何错过一次升级的.对于这种错过,非常有同感.比如在中学时候,需要学习生物.历史.地理等学科,而这些学科不需要计 ...
- 【theano-windows】学习笔记十四——堆叠去噪自编码器
前言 前面已经学习了softmax,多层感知器,CNN,AE,dAE,接下来可以仿照多层感知器的方法去堆叠自编码器 国际惯例,参考文献: Stacked Denoising Autoencoders ...
- Mr.J-- jQuery学习笔记(十四)--动画显示隐藏
eq()函数 定义和用法 :eq() 选择器选取带有指定 index 值的元素. index 值从 0 开始,所有第一个元素的 index 值是 0(不是 1). 经常与其他元素/选择器一起使用,来选 ...
- linux学习笔记十四:安装SAMBA(Server Message Block)
NFS:仅用于Linux之间 CIFS:仅用于Windows之间 SAMBA:可用于Linux与Windows之间,基于NetBIOS协议(用于LAN内部,不能跨路由),没有IP地址的概念,根据 Ne ...
- 好记性不如烂笔杆-android学习笔记十四 EditText 画行,解决光标压线问题
这个问题我在网上看来很多方法,有些看得似懂非懂的,后来自己采用一种比较投机的方法,居然可行,呵呵,拿出来跟大家分享一下. 其实就是把画的线向下偏移一定高度,当然针对不同分辨率,这个值也就不同: (因为 ...
- 步步为营 .NET 设计模式学习笔记 十四、Decorator(装饰模式)
概述 在软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性:并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多 ...
最新文章
- 添加打印机还显示脱机_打印机总是显示脱机无法打印的解决办法
- R语言学习笔记:向量
- 不带头结点链表,尾部插入法创建
- SAP CRM呼叫中心toolbar的cancel按钮会导致session清理
- IDE日志分析方法pt。 1个
- 天刀现在最新服务器,天涯明月刀8.21服务器更新公告
- 6年级下册计算机教案,六年级下册信息技术教案 (6).doc
- C# 控制台 打印输出
- 如何为Kalman Studio编写T4模板
- 绿色版Tomcat的配置
- 水晶报表CrystalReports很强大也很简单!
- git使用时报错:fatal: unable to access ‘xxx‘ : Failed to connect to github.com port 443 after: 【Time out】
- mbedtls学习3.mbedtls_API分析
- 大数据——Flink 知识点整理
- 两大数据库安全产品比拼:IBM Guardium VS Imperva SecureSpher
- 内存映射I/O与端口映射I/O的区别
- 此错误(HTTP 500 内部服务器错误)意味着您正在访问的网站出现了服务器问题,此问题阻止了该网页的显示
- (转载)类欧几里得(知识点整理+板子总结)
- 考公 or 直接找工作,该怎么选?
- Linux基本操作2.0