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

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

最速下降法利用目标函数一阶梯度进行下降求解,易产生锯齿现象,在快接近最小值时收敛速度慢。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

相关文章
|
3月前
|
索引
Leetcode第三十三题(搜索旋转排序数组)
这篇文章介绍了解决LeetCode第33题“搜索旋转排序数组”的方法,该问题要求在旋转过的升序数组中找到给定目标值的索引,如果存在则返回索引,否则返回-1,文章提供了一个时间复杂度为O(logn)的二分搜索算法实现。
26 0
Leetcode第三十三题(搜索旋转排序数组)
74_搜索二维矩阵
74_搜索二维矩阵
|
5月前
|
算法
LeetCode第74题搜索二维矩阵
文章讲解了LeetCode第74题"搜索二维矩阵"的解决方案,利用二分搜索法将问题简化,并通过数学转换找到二维矩阵中的对应元素,展示了将二维问题转化为一维问题的解题技巧。
LeetCode第74题搜索二维矩阵
|
7月前
|
机器学习/深度学习 算法 数据挖掘
LeetCode题目74:搜索二维矩阵
LeetCode题目74:搜索二维矩阵
|
算法
线搜索中有最速下降法、牛顿法、拟牛顿法、共轭梯度法汇总(下)
线搜索中有最速下降法、牛顿法、拟牛顿法、共轭梯度法汇总(下)
176 0
|
8月前
|
算法
leetcode-74:搜索二维矩阵
leetcode-74:搜索二维矩阵
47 0
|
存储 机器学习/深度学习 算法
搜索与图论 - 搜索与图在算法中的应用【上】
搜索与图论 - 搜索与图在算法中的应用【上】
|
机器学习/深度学习 算法
搜索与图论 - 搜索与图在算法中的应用【中】
搜索与图论 - 搜索与图在算法中的应用【中】
|
算法 Java Python
leetcode.74:搜索二维矩阵
leetcode.74:搜索二维矩阵
67 0
|
存储 算法
基于链表和禁忌搜索启发式算法实现非一刀切二维矩形排样算法
基于链表和禁忌搜索启发式算法实现非一刀切二维矩形排样算法
107 0

热门文章

最新文章