Fletcher-Reevers Conjugate Descent和Steepest Descent两种算法中伪代码的区别
本文主要用来比较两个算法到底差别在哪里
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<ϵg_1<\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)+λ1d(1) |
令g1=▽f(x(1))g_1=\triangledown f(x^{(1)})g1=▽f(x(1)), 若g1<ϵg_1<\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)+λ1d(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)gkTd(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)gkTd(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<ϵg_{k+1}<\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+βkd(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<ϵg_{k+1}<\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)+λkd(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)+λkd(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两种算法中伪代码的区别相关推荐
- 《中国人工智能学会通讯》——4.41 两种学习之间有什么区别?
4.41 两种学习之间有什么区别? 来 看 一 下 剑 桥 大 学 信 息 工 程 教 授 ZoubinGhahramani 对贝叶斯规划学习(BPL)的评价,他认为 BPL 对人工智能.认知科学和机 ...
- GET和POST两种基本请求方法的区别
GET和POST两种基本请求方法的区别 回退 回退时无害 会再次提交请求 记录 URL可被记录, 用于再访问 不可以 缓存 主动缓存 可手动设置 编码方式 只进行url编码 多种编码方式 参数长度 有 ...
- “斐波那契数列”的两种算法
"斐波那契数列"的两种算法 斐波那契数列有个规律:从第三个数开始,每个数是前两个数之和,比如: 1 1 2 3 5 8 13 21 34 55...... 现在通过两种方式(递归与 ...
- ML之SVM:利用SVM算法对手写数字图片识别数据集(PCA降维处理)进行预测并评估模型(两种算法)性能
ML之SVM:利用SVM算法对手写数字图片识别数据集(PCA降维处理)进行预测并评估模型(两种算法)性能 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 estimator = PC ...
- ML之RFDT:利用RF(RFR)、DT(DTR)两种算法实现对boston(波士顿房价)数据集进行训练并预测
ML之RF&DT:利用RF(RFR).DT(DTR)两种算法实现对boston(波士顿房价)数据集进行训练并预测 目录 输出结果 实现代码 输出结果 1.两种算法的预测结果 2.回归树的可视化 ...
- C语言两种导入头文件的区别
C语言两种导入头文件的区别 #include<stdio.h> 和 #include"stdio.h" 这两种导入头文件的区别: 区别在于编译器查找头文件的顺序, &q ...
- 在.Net framework下遍历XML文挡树的两种算法
在阅读ASP.NET_XML深入编程技术 (PDF格式)一书的时候,发现遍历树的两种算法:深度优先和广度优先遍历文挡树,前一种需要使用递归,后者则不需要,本人大学时期数据结构学的不好,每每涉及到树,总 ...
- 史上最容易理解————GET和POST两种基本请求方法的区别
GET和POST两种基本请求方法的区别 GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过req ...
- java进程调度怎么画图,[Java教程]进程调度的两种算法JAVA实现
[Java教程]进程调度的两种算法JAVA实现 0 2015-10-21 12:00:08 (SJF分为preemptive shortest job first(抢占式)和non-preemptiv ...
最新文章
- 不用GPU,稀疏化也能加速你的YOLOv3深度学习模型
- 从“诺奖级”成果到“非主观造假”,时隔6年,韩春雨带着原一作,再发高分文章!...
- 人工智能写散文之躲进你的心里记录温暖的你
- 135. Leetcode 46. 全排列 (回溯算法-排列问题)
- propertysource注解 找不到文件_WinXP系统电脑开机提示windows找不到null文件的解决方法...
- C语言case字句有什么作用,switch case 语句的使用规则
- 门槛,才是做生意持久盈利的基础
- Fcitx──小企鹅输入法---Ubuntu input method
- Java 多线程--- 创建线程、Thread类、synchronized
- [Poi2000]公共串 hustoj2797
- pymysql执行有参数的in语句
- 汉字转拼音以及五笔码
- 电机调速程序c语言,直流电机调速控制系统的C语言程序
- springboot+美容院会员管理系统 毕业设计-附源码191740
- CMU 15-445/645 数据库系统Lab 1 现代C++练习项目
- 佩尔方程(超详细推导+例题讲解) 每日一遍,算法再见!
- excel表格多个文件夹计算机,excle多文件并排_如何在电脑桌面并排显示多个excel...
- js时间与当前时间比较
- windows下整合UCenter、ECShop、Discus
- unable to prepare for development xcode 13
热门文章
- 【算法】N Queens Problem
- HDU 2255 二分图最佳匹配 模板题
- 《Java程序员面试宝典》读书笔记1
- iOS-多线程 ,整理集锦,多种线程的创建
- [Oracle] Enable Row Movement
- typeorm mysql_从零搭建项目 (10) --- 后端: 使用 TypeORM 和 MySQL
- (七)JS基础知识四(搞定异步)【三座大山之三,必考!!!】
- js获取一周从开始到结束日期范围
- Matlab矩阵填充--Matlab interp2
- ***K近邻Survey-Distance总结