本文主要用来比较两个算法到底差别在哪里

step Fletcher-Reevers Conjugate Descent Steepest Descent
1st1st1st 选择初始点x(1)选择初始点x^{(1)}选择初始点x(1),
设定ϵ\epsilonϵ,k=1
选择初始点x(1)选择初始点x^{(1)}选择初始点x(1),
设定ϵ\epsilonϵ,k=1
2nd2_{nd}2nd​ 令g1=▽f(x(1))g_1=\triangledown f(x^{(1)})g1​=▽f(x(1)),
若g1&lt;ϵg_1&lt;\epsilong1​<ϵ,
则x(1)x^{(1)}x(1)是所求极小值点;
否则,令d(1)=−g1d^{(1)}=-g_1d(1)=−g1​,计算λk\lambda_kλk​,
令x(2)=x(1)+λ1d(1)x^{(2)}=x^{(1)}+\lambda_1 d^{(1)}x(2)=x(1)+λ1​d(1)
令g1=▽f(x(1))g_1=\triangledown f(x^{(1)})g1​=▽f(x(1)),
若g1&lt;ϵg_1&lt;\epsilong1​<ϵ,
则x(1)x^{(1)}x(1)是所求极小值点;
否则,令d(1)=−g1d^{(1)}=-g_1d(1)=−g1​,计算λ1\lambda_1λ1​,
令x(2)=x(1)+λ1d(1)x^{(2)}=x^{(1)}+\lambda_1 d^{(1)}x(2)=x(1)+λ1​d(1)
其中λk其中\lambda_k其中λk​ λk=−gkTd(k)d(k)TAd(k)\lambda_k=-\frac{g_k^Td^{(k)}}{d^{(k)^T}Ad^{(k)}}λk​=−d(k)TAd(k)gkT​d(k)​ λk=−gkTd(k)d(k)TAd(k)\lambda_k=-\frac{g_k^Td^{(k)}}{d^{(k)^T}Ad^{(k)}}λk​=−d(k)TAd(k)gkT​d(k)​
3th3_{th}3th​ 令gk+1=▽f(x(k+1))令g_{k+1}=\triangledown f(x^{(k+1)})令gk+1​=▽f(x(k+1)),
若gk+1&lt;ϵg_{k+1}&lt;\epsilongk+1​<ϵ,
则x(k+1)x^{(k+1)}x(k+1)是所求极小值点;
否则,令d(k+1)=−gk+1+βkd(k)d^{(k+1)}=-g_{k+1}+\beta_k d^{(k)}d(k+1)=−gk+1​+βk​d(k),
k:=k+1
令gk+1=▽f(x(k+1))令g_{k+1}=\triangledown f(x^{(k+1)})令gk+1​=▽f(x(k+1)),
若gk+1&lt;ϵg_{k+1}&lt;\epsilongk+1​<ϵ,
则x(k+1)x^{(k+1)}x(k+1)是所求极小值点;
否则,令d(k+1)=−gk+1d^{(k+1)}=-g_{k+1}d(k+1)=−gk+1​,
k:=k+1
其中βk其中\beta_k其中βk​ βk=d(k)TAgk+1d(k)TAd(k)\beta_k=\frac{d^{(k)^T}Ag_{k+1}}{d^{(k)^T}Ad^{(k)}}βk​=d(k)TAd(k)d(k)TAgk+1​​ N/A
4th4_{th}4th​ 令x(k+1)=x(k)+λkd(k)x^{(k+1)}=x^{(k)}+\lambda_k d^{(k)}x(k+1)=x(k)+λk​d(k),转3th3_{th}3th​ step 令x(k+1)=x(k)+λkd(k)x^{(k+1)}=x^{(k)}+\lambda_k d^{(k)}x(k+1)=x(k)+λk​d(k),转3th3_{th}3th​ step

可以看到,两种算法的差别其实就是第3th步骤可以看到,两种算法的差别其实就是第3_{th}步骤可以看到,两种算法的差别其实就是第3th​步骤

steepest descent的算法示意图如下:

Fletcher-Reevers Conjugate Descent的算法示意图如下:

上图中,注意基本概念:
梯度与等高线垂直;
两次搜索方向是垂直的;
共轭梯度体现在βk\beta_kβk​的计算中,
谷底最低点不一定和x(3),x(2)x^{(3)},x^{(2)}x(3),x(2)共线.

############################################
另外注意[2]和[3]的βk\beta_kβk​略微有所不同.

Reference:
[1]最优化共轭梯度法-第十一页
[2]最速下降法-第十八页
[3]http://www.cs.cmu.edu/~pradeepr/convexopt/Lecture_Slides/conjugate_direction_methods.pdf

Fletcher-Reevers Conjugate Descent和Steepest Descent两种算法中伪代码的区别相关推荐

  1. 《中国人工智能学会通讯》——4.41 两种学习之间有什么区别?

    4.41 两种学习之间有什么区别? 来 看 一 下 剑 桥 大 学 信 息 工 程 教 授 ZoubinGhahramani 对贝叶斯规划学习(BPL)的评价,他认为 BPL 对人工智能.认知科学和机 ...

  2. GET和POST两种基本请求方法的区别

    GET和POST两种基本请求方法的区别 回退 回退时无害 会再次提交请求 记录 URL可被记录, 用于再访问 不可以 缓存 主动缓存 可手动设置 编码方式 只进行url编码 多种编码方式 参数长度 有 ...

  3. “斐波那契数列”的两种算法

    "斐波那契数列"的两种算法 斐波那契数列有个规律:从第三个数开始,每个数是前两个数之和,比如: 1 1 2 3 5 8 13 21 34 55...... 现在通过两种方式(递归与 ...

  4. ML之SVM:利用SVM算法对手写数字图片识别数据集(PCA降维处理)进行预测并评估模型(两种算法)性能

    ML之SVM:利用SVM算法对手写数字图片识别数据集(PCA降维处理)进行预测并评估模型(两种算法)性能 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 estimator = PC ...

  5. ML之RFDT:利用RF(RFR)、DT(DTR)两种算法实现对boston(波士顿房价)数据集进行训练并预测

    ML之RF&DT:利用RF(RFR).DT(DTR)两种算法实现对boston(波士顿房价)数据集进行训练并预测 目录 输出结果 实现代码 输出结果 1.两种算法的预测结果 2.回归树的可视化 ...

  6. C语言两种导入头文件的区别

    C语言两种导入头文件的区别 #include<stdio.h> 和 #include"stdio.h" 这两种导入头文件的区别: 区别在于编译器查找头文件的顺序, &q ...

  7. 在.Net framework下遍历XML文挡树的两种算法

    在阅读ASP.NET_XML深入编程技术 (PDF格式)一书的时候,发现遍历树的两种算法:深度优先和广度优先遍历文挡树,前一种需要使用递归,后者则不需要,本人大学时期数据结构学的不好,每每涉及到树,总 ...

  8. 史上最容易理解————GET和POST两种基本请求方法的区别

    GET和POST两种基本请求方法的区别 GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过req ...

  9. java进程调度怎么画图,[Java教程]进程调度的两种算法JAVA实现

    [Java教程]进程调度的两种算法JAVA实现 0 2015-10-21 12:00:08 (SJF分为preemptive shortest job first(抢占式)和non-preemptiv ...

最新文章

  1. 不用GPU,稀疏化也能加速你的YOLOv3深度学习模型
  2. 从“诺奖级”成果到“非主观造假”,时隔6年,韩春雨带着原一作,再发高分文章!...
  3. 人工智能写散文之躲进你的心里记录温暖的你
  4. 135. Leetcode 46. 全排列 (回溯算法-排列问题)
  5. propertysource注解 找不到文件_WinXP系统电脑开机提示windows找不到null文件的解决方法...
  6. C语言case字句有什么作用,switch case 语句的使用规则
  7. 门槛,才是做生意持久盈利的基础
  8. Fcitx──小企鹅输入法---Ubuntu input method
  9. Java 多线程--- 创建线程、Thread类、synchronized
  10. [Poi2000]公共串 hustoj2797
  11. pymysql执行有参数的in语句
  12. 汉字转拼音以及五笔码
  13. 电机调速程序c语言,直流电机调速控制系统的C语言程序
  14. springboot+美容院会员管理系统 毕业设计-附源码191740
  15. CMU 15-445/645 数据库系统Lab 1 现代C++练习项目
  16. 佩尔方程(超详细推导+例题讲解) 每日一遍,算法再见!
  17. excel表格多个文件夹计算机,excle多文件并排_如何在电脑桌面并排显示多个excel...
  18. js时间与当前时间比较
  19. windows下整合UCenter、ECShop、Discus
  20. unable to prepare for development xcode 13

热门文章

  1. 【算法】N Queens Problem
  2. HDU 2255 二分图最佳匹配 模板题
  3. 《Java程序员面试宝典》读书笔记1
  4. iOS-多线程 ,整理集锦,多种线程的创建
  5. [Oracle] Enable Row Movement
  6. typeorm mysql_从零搭建项目 (10) --- 后端: 使用 TypeORM 和 MySQL
  7. (七)JS基础知识四(搞定异步)【三座大山之三,必考!!!】
  8. js获取一周从开始到结束日期范围
  9. Matlab矩阵填充--Matlab interp2
  10. ***K近邻Survey-Distance总结