代码改变世界

牛顿法、拟牛顿法、共轭梯度法

2016-03-31 21:02  GarfieldEr007  阅读(3238)  评论(0编辑  收藏  举报

牛顿法

一: 最速下降法
下降法的迭代格式为xk+1=xkαkdk

, 其中dk为下降方向, 设gk=f(xk)0, 则下降方向要满足dTkgk<0. 当步长确定时, dTkgk的值越小, 即dTkgk的值越大, 函数下降得越快. 由Cauchy-Schwartz不等式dTkgkdkgk, 当且仅当dk=gk时, dTkgk的值最小. 从而gk是最速下降方向. 则最速下降法的迭代格式为xk+1=xkαkgk

.

这里要注意的是, 最速下降方向只是算法的局部性质. 对于许多问题, 最速下降法并非”最速下降”, 而是下降非常缓慢. 数值试验表明, 当目标函数的等值线接近于一个圆(球)时, 最速下降法下降较快, 而当目标函数的等值线是一个扁长的椭圆时, 最速下降法开始几步下降较快, 后来就出现锯齿现象, 下降就十分缓慢. 其原因是这样的, 由于一维搜索满足gTk+1dk=0

, 即gTk+1gk=dTk+1dk=0

. 表明在相邻两个迭代点上函数的两个梯度方向是互相直交的, 这就产生了锯齿形状, 当接近极小点时, 步长越小, 前进越慢.
当目标函数是二次函数时, 最速下降法的收敛速度由对应于某个等值线的椭球的最长轴与最短轴之比决定. 这个比值越大, 最速下降法下降越慢.

二: 牛顿法
牛顿法的基本思想是利用目标函数的二次Taylor展开, 并将其极小化. 也可以想成是一个一点二次插值法进行局部拟合.

带步长因子的牛顿法, 算法如下:
Step1: 选取初始数据, 取初始化点x0

, 终止误差ε<0;
Step2: 计算gk, 若gk<ε, 停止迭代, 输出xk. 否则进入Step3;
Step3: 解方程组构造牛顿方向, 即解Gkd=gk, 求出dk.
Step4: 进行一维搜索, 求αk使得f(xk+αkdk)=minα0f(xk+αkdk). 令xk+1=xk+αkdk, k:=k+1, 转Step2.
牛顿法面临的主要困难是Hess矩阵Gk不正定. 这时候二次模型不一定有极小点, 甚至没有平稳点. 当Gk

不定时, 二次模型函数是无界的. 为了克服这些困难, 人们提出了很多修正措施.

[参考] 1. <最优化理论与方法>袁亚湘院士著.

 

 

拟牛顿法

牛顿法成功的关键是利用了Hesse矩阵提供的曲率信息, 而计算Hesse矩阵工作量大, 并且有的目标函数的Hesse矩阵很难计算, 甚至不好求出来, 这就导致仅用目标函数的一阶导数的方法, 拟牛顿法就是利用目标函数值和一阶导数信息, 构造出目标函数的曲率近似, 而不需要明显形成Hesse矩阵, 同时具有收敛速度快的优点.

一: 拟牛顿法条件
目标函数f

xk+1附近的二次近似为:

f(x)f(xk+1)+gTk+1(xxk+1)+12(xxk+1)TGk+1(xxk+1)


对上面的式子两边求导, 有g(x)gk+1+Gk+1(xxk+1). 令x=xk,sk=xk+1xk,yk=gk+1gk,得G1k+1yksk.对于二次函数, 此式精确成立. 现在我们想在牛顿法中构造出的Hesse逆近似Hk+1满足这种关系. 即:

Hk+1yk=sk


上式是关于Hesse逆近似的拟牛顿条件.类似地, 也可以考虑用Bk来直接逼近Hesse矩阵, 这时, 相应的拟牛顿条件为, Bk+1sk=yk.
拟牛顿法(Hesse逆近似)的主要步骤为:
1). 令dk=Hkgk;
2). 沿方向dk作线性搜索, 得到xk+1=xk+αkdk;
3). 校正Hk产生Hk+1.
与牛顿法相比, 拟牛顿法有下列优点:
1). 仅需要一阶导数; (牛顿法需要二阶导数)
2). Hk保持正定, 使得方法具有下降性质; (在牛顿法中, Gk可能不定)
3). 每次迭代需O(n2)次乘法. (牛顿法需O(n3)

次乘法)

二: DFP校正(Davidon-Fletcher-Powell)
利用Hesse逆近似方法构造Hk+1

进行校正的思路是这样的, 假设每一步迭代中矩阵Hk+1是由Hk加上两个附加项构成的, 即Hk+1=Hk+Pk+Qk, 其中Pk,Qk是待定矩阵, 这时Hk+1yk=Hkyk+Pkyk+Qkyk. 为使Hk+1满足拟牛顿条件, 得到DFP校正迭代公式为:

Hk+1=Hk+sksTksTkykHkykyTkHkyTkHkyk


DFP方法是一个实际上广为采用的方法, 它在理论分析和实际应用中都起了很大作用. 但是, 进一步的研究发现, DFP方法具有数值不稳定性, 有时产生数值上奇异的Hesse近似. 而BFGS校正克服了DFP校正的缺陷.

三: BFGS校正(Broyden-Fletcher-Goldfarb-Shanno)
利用Hesse近似方法构造Bk+1

进行校正. 思路和上面类似. 可以得到BFGS校正迭代公式:

Bk+1=Bk+ykyTkyTkskBksksTkBksTkBksk


BFGS校正是迄今最好的拟牛顿公式. 它具有DFP校正所具有的各种性质. 此外, 当采用不精确线性搜索时, BFGS公式还具有总体收敛性质, 这个性质对于DFP公式还没有证明. 在数值执行中, BFGS公式也优于DFP公式, 尤其是它常常能与低精度线性搜索方法一起连用.

[参考] 1. <最优化理论与方法>.袁亚湘院士著.
2.<统计学习方法>.李航著

 

 

 

共轭梯度法

一: 共轭方向法
共轭方向法是介于最速下降法与牛顿法之间的一个方法, 它仅需利用一阶导数信息, 但克服了最速下降法收敛慢的缺点, 又避免了存储和计算牛顿法所需要的二阶导数信息. 共轭方向法是从研究二次函数的极小化产生的, 但是它可以推广到处理非二次函数的极小化问题. 最典型的共轭方向法是共轭梯度法. 而拟牛顿法也是共轭方向法的一种.

共轭方向的概念是这么定义的: 设G

n×n对称矩阵, d1,d2n维非零向量, 如果dT1Gd2=0, 则称向量d1,d2G共轭的. 类似地, 设d1,d2,,dmRn中的任意一组非零向量. 若有dTiGdj=0,(ij), 则称d1,d2,,dmG共轭的.
显然地, 当Gn阶单位矩阵时, dTidj=0,(ij)

, 即是正交向量组. 因而共轭概念是正交概念的推广. 但要注意, 正交的向量不一定共轭, 共轭的向量不一定正交, 有时, 可能既共轭又正交.

为什么要引入共轭向量组呢, 因为它有如下重要的性质:
1). 若d1,d2,,dm

是一组G共轭方向, 则它们一定是线性无关的;
2). 对于正定二次函数, 共轭方向之多经过n

步精确线性搜索可达到整体最优解.

通常, 我们把从任意点出发, 依次沿某组共轭方向进行一维搜索求解的方法, 叫做共轭方向法. 由于共轭方向组的取法有很大的随意性, 用不同方式产生一组共轭方向就得到不同的共轭方向法. 如果利用迭代点处的负梯度向量为基础产生一组共轭方向, 这样的方法叫做共轭梯度法.

二: 共轭梯度法
为了满足共轭方向组的定义, 我们可以推出这样一组迭代公式:

d0=g0dk+1=gk+1+βkdk,βk=gTk+1GdkdTkGdkk=0,1,...,n−2


利用二次凸函数的结构和精确一维搜索的性质可以得到更简化的迭代形式:

d0=g0dk+1=gk+1+βkdk,βk=gTk+1gk+1gTkgkk=0,1,...,n−2


上式是由Fletcher和Reeves于1964年提出来的, 通常称为Fletcher-Reeves共轭梯度法, 简称F-R法.
用F-R法求解二次凸优化问题时, 它具有二次终止性质, 但用F-R法来求解非二次函数, n步以后共轭梯度法产生的搜索方向dk不再共轭, 因此n步以后我们需要周期性地采用最速下降方向作为搜索方向, 即令dcn=gcn,c=1,2,. 这种方法叫做再开始共轭梯度法. 对于大型问题, 会经常地进行再开始. 再开始共轭梯度法允许采用近似线性搜索过程, 只是在采用近似线性搜索的同时, 要采用一定的检查措施, 以保证得到的搜索方向是下降方向. 而同样面临的问题是, 如果频繁地利用最速下降方法作为搜索方向, 将大大削弱共轭梯度法的效率, 从而使算法的性态变得更像最速下降法. 需要进一步采取措施克服这个困难. 因而一般来说F-R方法强烈地依赖于一维搜索的精确性, 当一维搜索不能保证有精确性时, 我们可用Polak-Ribiere-Polyak共轭梯度法, 简称P-R-P法. P-R-P法与F-R法不同的仅仅是步长的计算公式不同, βk=gTk+1(gk+1gk)gTkgk. P-R-P有自动再开始的显著优点. 当算法前进很少时, 会出现gk+1gk, 这时P-R-P公式产生βk0. 因此dk+1gk+1

, 即算法有自动再开始的趋势, 这样有利于克服进展缓慢的缺点. 一些实验结果表明, 对一些大型问题, P-R-P公式效果较好. 然而1984年Powell M J D提出了反例来说明在存在某些问题, P-R-P法不收敛, 而F-R法具有全局收敛性.

在实践中证明十分有效的无约束最优化方法, 除了共轭梯度法以外, 还有变尺度算法. 它们的结构原理都是基于二次函数模型产生下降方向, 然后由线性搜索选择在该方向上的步长. 变尺度算法也是一类方法的总称, 使用比较普遍的有DFP方法和BFGS方法, 这些方法是相当于迭代的每一轮的度量是变化的最速下降法, 因而得此名. 数值实验指出, BFGS算法是最好的变尺度算法, 当变量个数不超过100时, 通常BFGS法比共轭梯度法效果好. 但对于变量个数超过100的大规模无约束游湖问题, 共轭梯度法因其不要太大的存储量而更具优势.

信赖域法是目前正在发展中的一种无约束最优化方法. 它是针对共轭梯度法和变尺度法的缺点设计的.

[参考] 1. <最优化理论与方法>.袁亚湘院士著.
2.<运筹学>.习在筠等著

 

from: http://jacoxu.com/?p=240

http://jacoxu.com/?p=245

http://jacoxu.com/?p=242