共轭梯度法作为优化算法中常见算法,在很多基于梯度优化的机器学习算法中可以见到它的身影,比如在稀疏编码(sparsenet)中。本文主要参考清华大学出版社,陈宝林编写的最优化教材中对共轭梯度的介绍。

写这个文章的起源是我最近在思考一个简单的函数:.........................................1

或者更加复杂的二次型函数:....................................2,在这里x拔是数据中心

第一个问题是如何保证输出 f 始终大于0,由线性代数的知识知道我们知道保证矩阵A是正定的,而如果A是半正定的,那么就能保证输出非负。第二个问题就是这种二次型函数的几何意义。先从最简单的二次型函数说起,   ............3

其中。将公式3写成公式2的形式为,其中。这个函数的形状是什么样子的呢?首先为了保证非负,我们将a取值分别为-1,0,1三个数值。然后,我们画出函数形状如→:

  在图中,由于A是2*2的方阵,我们得到的是三个三维的曲面。曲面图像都位于x-y平面的上方,说明了非负性。对于每一层,代表的是不同的a数值下的曲面(共3层)。而在某一层上,每一个等值线(也就是等高线)代表的是不同的输出值,我们都已经在图中标了出来,我们发现曲面投影到x-y平面是一个旋转之后的椭圆(如下)。

而推广更一般形式的,当A的维数大于2时候就会得到超曲面,这个时候的等值线(准确的讲是等值面)的形式为:这个是以x拔为中心的椭球面。由于在x拔处的梯度为。A正定,从而x拔是函数的极小点(记住这个正是我们想要的)。假设在这个椭球面上(也就是等值面上)有一个点

,那么在这个点处,等值面的法向量为,还是举二维的例子

我们假设d(1)是在点处的切向量,d(2)是沿着该点和中心点的连线的方向的向量,即

。法向量垂直于平面的任何向量,自然也垂直于切向量,我们有:

对于last equation 我们说d(1) 和d(2)关于A是共轭的。

写到这儿终于将梯度和共轭都说出来了。对于这个last equation我们认为二维等值线上的任意一点处的切向量是与这一点的指向极小值点的向量关于A共轭,也就意味着二次函数的话经过两次迭代就可以找出极小值点。对于多维的情况,也是能在有限步内收敛到极小值点的。具体证明可以参考教材。

于是我们在进行最优化中极小值的寻找的时候,我们一直寻找极小值点,而可以先找到指向它的方向,寻找方向还得寻找与之共轭的方向,与之共轭的方向还可以通过与该方向共轭的方向来获得,这样的依次往前推,最后我们在开始共轭梯度之前首先是计算初始点的最速下降方向。

下面基于上述思路介绍FR共轭梯度法。给定一个初始点x(1)计算它的梯度d(1),然后将这个d(1)作为切向量方向,沿它的方向搜索得到x(2),计算x(2)处的梯度g(2),利用g(2)和d(1)构造新的搜索方向d(2),一次下去。这个过程需要计算两个量,一个是每一步的搜索步长,一个是下一步的搜索方向。搜索步长采用比较通用的计算公式,而在计算下一步的搜索方向的时候 体现出了共轭的特点。

具体算法实现步骤和实现参考:http://blog.sciencenet.cn/blog-54276-569356.html。

浅谈共轭梯度法的原理相关推荐

  1. 浅谈:Spring Boot原理分析,切换内置web服务器,SpringBoot监听项目(使用springboot-admin),将springboot的项目打成war包

    浅谈:Spring Boot原理分析(更多细节解释在代码注释中) 通过@EnableAutoConfiguration注解加载Springboot内置的自动初始化类(加载什么类是配置在spring.f ...

  2. 浅谈前端路由原理hash和history

    浅谈前端路由原理hash和history

  3. 浅谈“三层结构”原理与用意(转帖)

    浅谈"三层结构"原理与用意 序 在刚刚步入"多层结构"Web应用程序开发的时候,我阅读过几篇关于"asp.net三层结构开发"的文章.但其多 ...

  4. svc的参考文献_浅谈SVC的原理及作用

    浅谈 SVC 的原理及作用 超(特)高压运行检修公司 自贡中心 涂洪骏 摘要: 介绍了静止补偿器 (SVC) 的工作特性.基本原理.运行方式,重点针对 SVC 的作用进行了分析. 关键词 :静止补偿器 ...

  5. 浅谈Wi-Fi渗透--原理篇

    浅谈Wi-Fi渗透–原理篇 在这个手机比人多的移动时代,无线网络Wi-Fi遍布每个角落,殊不知隐藏其中的风云涌动 广义上无线网络应用类型如下,今天的文章就聚焦于 WLAN的一种无线局域网技术--Wi- ...

  6. 浅谈会话劫持原理及实践

    <监视你的一举一动> ---浅谈会话劫持原理及实践 前言 通常,大家所说的入侵,都是针对一台主机,在获得管理员权限后,就很是得意:其实,真正的入侵是占领整个内部网络.针对内部网络的攻击方法 ...

  7. 浅谈实时数据库系统原理及其应用

    浅谈实时数据库系统原理及其应用 孙俊彦   苏州大学计算机科学与技术学院 摘要: 现代的工程和时间关键型应用对数据库的实时性和对数据直接分析和处理的能力要求特别高,单纯的传统关系数据库已经不能满足需要 ...

  8. 浅谈Openstack网络原理(openstack无法上网?)

    浅谈Openstack网络 本版本为Stein版本,采用OVS网络 测试环境:1控制节点,2个计算节点 目录 浅谈Openstack网络 一.网络结构图 二.OVS分析 三.DHCP服务 四.Rout ...

  9. 独家 | 浅谈强化学习原理(附代码链接)

    作者:Michel Kana 翻译:王琦 校对:王雨桐 本文约4900字,建议阅读15分钟. 本文介绍了强化学习的基本原理,并通过代码实例来讲解如何找到最优策略. Google在2017年年底发布了A ...

最新文章

  1. 有关智能指针(shared_ptr)的讨论
  2. mt4 指标 涨跌幅 颜色k线_通达信指标公式源码阴线买股+黄金K线指标+源码
  3. Linux之软连接和硬链接
  4. javadoc 开源项目_在下一个项目中不使用JavaDoc的5大原因
  5. 圳不完全启示录之初来乍到----2
  6. 漫步最优化四十四——基本拟牛顿法
  7. centos网络隔一段时间就断_如果是中专学历,以后做网络工程师会有瓶颈吗?
  8. 2018.9.18opencv3.4.1 + vs 2017 community +win 10 x64+cmake 3.11.3终终终章!
  9. 未封装的扩展程序是什么意思_“冰壶见底未为清,少年如玉有诗名”这句诗是什么意思?...
  10. golang slice分割和append copy还是引用
  11. 零基础学python难吗-学习python12小时后,告诉你,学python真没你想的那么难!
  12. python的安全插件
  13. 服务器本地打开asp文件路径,服务器本地打开asp文件
  14. 演化博弈论----gyy参考总结
  15. ET框架-02 ET框架-开发环境搭建
  16. 快速查看是哪个文件占用空间大
  17. 2020你必须掌握的CSS特效~建议收藏
  18. Ubuntu 20.04 + mysql 8.0.27 用户名和密码修改(非常实用)
  19. 【18】微信小程序:05-WePY简介、WePY的安装与运行、WePY文件介绍、WePY框架开发规范与使用
  20. 如何30秒做出精美的Word排版?

热门文章

  1. GoBlog轻博客系统
  2. 计算机等级考试《二级Java语言程序设计》题库
  3. Inventor(C#)开发学习小结——入门篇
  4. 利用cftool进行函数拟合
  5. 推荐算法(推广搜)——广告和推荐有什么不同?
  6. js 获取字符串长度方法length
  7. 视频编解码——编码流程介绍
  8. janus videoroom之媒体录制
  9. iOS开发技术-实验一-简易计算器实现
  10. ajax同步和异步区别