线搜索中有最速下降法、牛顿法、拟牛顿法、共轭梯度法汇总(上)

简介: 线搜索中有最速下降法、牛顿法、拟牛顿法、共轭梯度法汇总(上)

最速下降法利用目标函数一阶梯度进行下降求解,易产生锯齿现象,在快接近最小值时收敛速度慢。Newton法利用了二阶梯度,收敛速度快,但是目标函数的Hesse矩阵不一定正定。于是出现了修正的Newton法,主要是对不同情况进行了分情况讨论。Newton法的优缺点都很突出。优点:高收敛速度(二阶收敛);缺点:对初始点、目标函数要求高,计算量、存储量大(需要计算、存储Hesse矩阵及其逆)。拟Newton法是模拟Newton法给出的一个保优去劣的算法。共轭梯度法是介于最速下降法和牛顿法之间的一个方法,相比最速下降法收敛速度快,并且不需要像牛顿法一样计算Hesse矩阵,只需计算一阶导数(共轭梯度法是共轭方向法的一种,意思是搜索方向都互相共轭)。


最速下降法


  最速下降法是最早的求解多元函数极值的数值方法。它直观、简单。它的缺点是,收敛速度较慢、实用性差。在点x k x_{k}xk处,沿什么方向寻找下一个迭代点呢?显然应该沿下降方向。一个非常直观的想法就是沿最速下降方向,即负梯度方向:p k = − ∇ f ( x k )


image.png


到这里,我们已经大概知道最速下降法是怎么工作的,那这个步长因子t k 到底怎么求呢?,我们考虑特殊情况,假设我们的目标函数是正定二次函数:

image.png

目标函数对x 的一阶梯度:


image.png

这里引入一个定理,之后的求解就是依据这个定理的等式进行求解:


定理:设目标函数f ( x ) f(x)f(x)具有一阶连续偏导数,若image.png

image.png

 最速下降法的迭代点在向极小点靠近的过程中,走的是曲折的路线:后一次搜索方向p k + 1 p_{k+1}pk+1与前一次搜索方向p k p_{k}pk总是相互垂直的,称它为锯齿现象。除极特殊的目标函数(如等值面为球面的函数)和极特殊的初始点外,这种现象一般都要发生。


  由于锯齿现象,在接近极小点的地方,每次迭代进行的距离变得越来越小,因而收敛速度不快,这正是最速下降法的缺点所在


Newton法


  由于最速下降法速度慢,Newton引入二阶梯度,通过求其Hesse矩阵,一步到位直接求到极小点x*

image.png


20191101233134980.png


对于具有正定Hesse矩阵的一般目标函数,由于在极小点附近,它近似地呈现为正定二次函数,所以可以想见,Newton法在最优点附近应该具有较高的收敛速度


修正Newton法


  Newton法的优点是收敛速度快、程序简单。但是对于表达式很复杂的目标函数,由于其Hesse矩阵很难或不可能求出,这时显然不宜使用Newton法。下面介绍修正Newton法:

  以下讨论仅假定Hesse矩阵可以求到。

image.png

上式可以理解为从点x k出发沿p k方向进行直线搜索,步长因子取为1。上面这个公式是Newton法中假设目标函数为二次正定而推到出来的,但是现在这个目标函数并没有这一项约束,所以目标函数可能很复杂,因而不能总保证p k的方向是下降方向,有时即使是下降方向,也会由于步长因子不加选择地取为1,而不能保证f ( x k + 1 ) < f ( x k ) 。对此又分情况进行处理:

image.png

拟Newton法


  拟Newton法是效果很好的一大类方法。它当中的DFP算法和BFGS算法是直到目前为止在不用Hesse矩阵的方法中的最好方法。


基本思想


  考虑Newton迭代公式

image.png

我们从以下两点考虑对Newton迭代公式的改进:

image.png

E k 称为校正矩阵,上式称为校正公式

image.png

对于正定二次函数,上式近似将变为等式。

image.png

 

 那么拟Newton条件可简记为:

image.png

算法中的校正矩阵E k可由确定的公式来计算,不同的公式对应不同的拟Newton算法。满足条件的E k 有无穷多个,因此上述的拟Newton算法是一簇算法。


DFP算法


  DFP法是首先由Davidon(1959年)提出,后由Fletcher和Powell(1963年)改进的算法。它是无约束优化方法中最有效的方法之一。DFP法虽说比共轭梯度法有效,但它对直线搜索有很高的精度要求。

  考虑如下校正公式

image.png

image.png

相关文章
|
机器学习/深度学习 数据采集 算法
基于 UNet 的农业图像的分割| 学习笔记
快速学习基于 UNet 的农业图像的分割。
基于 UNet 的农业图像的分割| 学习笔记
|
10月前
|
算法 决策智能
多智能体一致性算法
多智能体一致性算法
500 126
|
搜索推荐 数据挖掘 API
深入研究:京东图片搜索商品API详解
京东图片搜索商品API简介:在电商快速发展的背景下,用户需求日益多样化。为提升购物体验,京东推出图片搜索商品API,通过上传商品图片(如实物图或宣传图),利用图像识别技术匹配京东商品库,返回相似商品的信息(如名称、价格、销量等)。该API采用HTTP POST请求方式,支持JPEG、PNG等常见图片格式,并可设置分类范围和结果数量限制等可选参数,助力开发者实现更精准的商品搜索,优化用户体验,同时为数据分析与个性化推荐提供支持。本文详细介绍了其功能、使用方法及Python请求示例。
|
传感器 数据采集 算法
《边缘算力困局突破:智能体模型动态调度全解析》
边缘设备如智能摄像头、传感器等在生活和生产中广泛应用,但其算力有限,难以高效运行复杂智能体模型。为解决这一问题,动态调度策略应运而生。通过任务优先级调度、模型分区与动态加载以及基于网络状态的调度,可灵活调整资源分配,优化任务执行效率。这些策略确保高优先级任务优先处理,按需加载模型模块,并根据网络状况合理分配计算任务。然而,动态调度面临实时监测和额外开销等挑战,需要优化算法和技术支持。成功实现动态调度将推动边缘计算在自动驾驶、智能安防、医疗等领域发挥更大潜力,带来深远变革。
528 6
|
Linux API C语言
FFmpeg开发笔记(一)搭建Linux系统的开发环境
本文指导初学者如何在Linux上搭建FFmpeg开发环境。首先,由于FFmpeg依赖第三方库,可以免去编译源码的复杂过程,直接安装预编译的FFmpeg动态库。推荐网站<https://github.com/BtbN/FFmpeg-Builds/releases>提供适用于不同系统的FFmpeg包。但在安装前,需确保系统有不低于2.22版本的glibc库。详细步骤包括下载glibc-2.23源码,配置、编译和安装。接着,下载Linux版FFmpeg安装包,解压至/usr/local/ffmpeg,并设置环境变量。最后编写和编译简单的C或C++测试程序验证FFmpeg环境是否正确配置。
1343 8
FFmpeg开发笔记(一)搭建Linux系统的开发环境
|
数据采集 机器学习/深度学习 算法
|
网络协议 算法 程序员
网络必修课:以太网报文格式详解
嗨,大家好!今天,我要带大家深入了解以太网报文格式,这是现代网络通信的重要基础。无论你是网络工程师、开发者,还是对技术感兴趣的朋友,这篇文章都将为你揭开以太网的神秘面纱,让你更好地理解和应用这一关键技术。准备好了吗?让我们开始吧!
1234 4
|
机器学习/深度学习 人工智能 安全
智能之网:探索AI在物联网中的应用与挑战
随着科技的飞速发展,人工智能(AI)已经渗透到我们生活的方方面面,特别是在物联网(IoT)领域的应用日益广泛。本文将探讨AI技术如何在物联网中发挥作用,提升设备智能化水平,优化数据管理,以及在实现这一过程中遇到的技术、安全和伦理等挑战。通过分析具体案例,我们将揭示AI和物联网结合带来的创新机遇及其对未来社会可能产生的影响。
|
存储 缓存 固态存储
三分钟解决AE缓存预览渲染错误、暂停、卡顿问题
三分钟解决AE缓存预览渲染错误、暂停、卡顿问题
4839 2
|
C++
关于无法打开lib文件问题或无法解析问题解决办法
关于无法打开lib文件问题或无法解析问题解决办法
2182 0