最速下降法利用目标函数一阶梯度进行下降求解,易产生锯齿现象,在快接近最小值时收敛速度慢。Newton法利用了二阶梯度,收敛速度快,但是目标函数的Hesse
矩阵不一定正定。于是出现了修正的Newton
法,主要是对不同情况进行了分情况讨论。Newton法的优缺点都很突出。优点:高收敛速度(二阶收敛);缺点:对初始点、目标函数要求高,计算量、存储量大(需要计算、存储Hesse矩阵及其逆)。拟Newton法是模拟Newton法给出的一个保优去劣的算法。共轭梯度法是介于最速下降法和牛顿法之间的一个方法,相比最速下降法收敛速度快,并且不需要像牛顿法一样计算Hesse矩阵,只需计算一阶导数(共轭梯度法是共轭方向法的一种,意思是搜索方向都互相共轭)。
最速下降法
最速下降法是最早的求解多元函数极值的数值方法。它直观、简单。它的缺点是,收敛速度较慢、实用性差。在点x k x_{k}xk处,沿什么方向寻找下一个迭代点呢?显然应该沿下降方向。一个非常直观的想法就是沿最速下降方向,即负梯度方向:p k = − ∇ f ( x k )
到这里,我们已经大概知道最速下降法是怎么工作的,那这个步长因子t k 到底怎么求呢?,我们考虑特殊情况,假设我们的目标函数是正定二次函数:
目标函数对x 的一阶梯度:
这里引入一个定理,之后的求解就是依据这个定理的等式进行求解:
定理:设目标函数f ( x ) f(x)f(x)具有一阶连续偏导数,若
最速下降法的迭代点在向极小点靠近的过程中,走的是曲折的路线:后一次搜索方向p k + 1 p_{k+1}pk+1与前一次搜索方向p k p_{k}pk总是相互垂直的,称它为锯齿现象。除极特殊的目标函数(如等值面为球面的函数)和极特殊的初始点外,这种现象一般都要发生。
由于锯齿现象,在接近极小点的地方,每次迭代进行的距离变得越来越小,因而收敛速度不快,这正是最速下降法的缺点所在。
Newton法
由于最速下降法速度慢,Newton引入二阶梯度,通过求其Hesse矩阵,一步到位直接求到极小点x*。
对于具有正定Hesse矩阵的一般目标函数,由于在极小点附近,它近似地呈现为正定二次函数,所以可以想见,Newton法在最优点附近应该具有较高的收敛速度。
修正Newton法
Newton法的优点是收敛速度快、程序简单。但是对于表达式很复杂的目标函数,由于其Hesse矩阵很难或不可能求出,这时显然不宜使用Newton法。下面介绍修正Newton法:
以下讨论仅假定Hesse矩阵可以求到。
上式可以理解为从点x k出发沿p k方向进行直线搜索,步长因子取为1。上面这个公式是Newton法中假设目标函数为二次正定而推到出来的,但是现在这个目标函数并没有这一项约束,所以目标函数可能很复杂,因而不能总保证p k的方向是下降方向,有时即使是下降方向,也会由于步长因子不加选择地取为1,而不能保证f ( x k + 1 ) < f ( x k ) 。对此又分情况进行处理:
拟Newton法
拟Newton法是效果很好的一大类方法。它当中的DFP算法和BFGS算法是直到目前为止在不用Hesse矩阵的方法中的最好方法。
基本思想
考虑Newton迭代公式
我们从以下两点考虑对Newton迭代公式的改进:
E k 称为校正矩阵,上式称为校正公式。
对于正定二次函数,上式近似将变为等式。
那么拟Newton条件可简记为:
算法中的校正矩阵E k可由确定的公式来计算,不同的公式对应不同的拟Newton算法。满足条件的E k 有无穷多个,因此上述的拟Newton算法是一簇算法。
DFP算法
DFP法是首先由Davidon(1959年)提出,后由Fletcher和Powell(1963年)改进的算法。它是无约束优化方法中最有效的方法之一。DFP法虽说比共轭梯度法有效,但它对直线搜索有很高的精度要求。
考虑如下校正公式