07.第7讲 牛顿法 DFP变尺度法
- 格式:ppt
- 大小:272.50 KB
- 文档页数:9
约束变尺度法Newton 法最突出的优点是收敛速度快,在这一点上其它算法无法比拟的。
因此,建议凡是Hesse 矩阵比较容易求出的问题,尽可能使用Newton 法求解。
但是,Newton 法也有一个严重缺陷,就是每次迭代都要计算目标函数的Hesse 矩阵和它的逆矩阵,当问题的维数较大时,计算量迅速增加,从而就抵消了Newton 法的优点。
为此,人们开始寻找一种算法既可以保持Newton 法收敛速度快的优点,又可以摆脱关于Hesse 矩阵的计算,这就是变尺度算法。
变尺度法是一种非常好的方法,其中DFP 算法和BFGS 算法。
可以说,直到目前为止,在不用Hesse 矩阵的方法中是最好的算法。
一、拟Newton 法为了吸收Newton 法收敛速度快的优点,同时避免Newton 法每次迭代都要计算目标函数的Hesse 矩阵和它的逆矩阵,人们提出了具有超线性收敛的拟Newton 法。
(一)拟Newton 法的基本原理在Newton 法中的基本迭代公式kk k k P t X X +=+1,其中1=k t ,)()]([12kkk Xf Xf P ∇∇-=-令)()(2kkkkXf gXf G∇=∇=,于是有,,,,21011=-=-+k g G X X k k k k其中X0是初始点, gk 和 Gk 分别是目标函数f (X )在点 Xk 的梯度和Hesse 矩阵.为了消除这个迭代公式中的Hesse 逆矩阵G-1k ,可用某种近似矩阵Hk=Hk(Xk)来替换它,即构造一矩阵序列{Hk}去逼近Hesse 逆矩阵序列{G-1k},此时kk k k g H X X -=+1事实上,式中 Pk= -Hk gk 无非是确定了第k 次迭代的搜索方向.为了取得更大的灵活性,考虑更一般的迭代公式kk k k k g H t X X -=+1其中步长tk 通过从Xk 出发沿Pk= -Hk gk 作直线搜索来确定.此式代表很广的一类迭代公式.例如,当Hk=I (单位矩阵)时,它变为最速下降法的迭代公式。
牛顿法牛顿法(英语:Newton's method)又称为牛顿-拉弗森方法(英语:Newton-Raphson method),它是一种在实数域和复数域上近似求解方程的方法。
方法使用函数的泰勒级数的前面几项来寻找方程的根。
起源:牛顿法最初由艾萨克·牛顿在《流数法》(Method of Fluxions,1671年完成,在牛顿去世后的1736年公开发表)中提出。
约瑟夫·鲍易也曾于1690年在Analysis Aequationum中提出此方法。
原理:二阶逼近牛顿法对局部凸函数找到极小值,对局部凹函数找到极大值,对局部不凸不凹函数可能找到鞍点牛顿法要求估计二阶导数。
牛顿法据称比直接计算要快了4 倍。
其中的两次迭代(第二步迭代被注释掉了)就是用的牛顿法来求解方程,也就是的根。
牛顿法的思想其实很简单,给定一个初始点,使用在该点处的切线来近似函数,然后寻找切线的根作为一次迭代。
比如对于这个例子,令,给定初始点,在该点处的导数是,由此可以得到该处的切线为,求解得到正是代码中的迭代。
当然代码的重点其实不在这里,而在0x5f3759df这个奇怪的magic number,用于得到一个好的初始点。
这个神奇的数字到底是谁发现的,根据wikipedia 上的说法似乎至今还没有定论。
xkcd 还为此画了一条漫画,讽刺说每次我们惊奇地发现工业界里不知道哪个无名人士写出了0x5f3759df之类的神奇数字,背后都有成千上万的其他无名人士我们无从知晓,说不定他们中的某一个人已经解决了P=NP 的问题,但是那人却还在调某个自动打蛋器的代码所以我们至今仍无知晓。
:D回到我们今天的话题,从这段代码中我们可以看到两点:牛顿法收敛非常快,对于精度要求不是特别高的情况,比如上面的图形学相关的计算中,甚至只用了一次计算迭代。
另一方面,初始值的选取非常重要,我们接下去将会看到,初始值选得不好有可能会直接导致算法不收敛。
牛顿法牛顿法作为求解非线性方程的一种经典的迭代方法,它的收敛速度快,有内在函数可以直接使用。
结合着matlab 可以对其进行使用,求解方程。
牛顿迭代法(Newton ’s method )又称为牛顿-拉夫逊方法(Newton-Raphson method ),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法,其基本思想是利用目标函数的二次Taylor 展开,并将其极小化。
牛顿法使用函数()f x 的泰勒级数的前面几项来寻找方程()0f x =的根。
牛顿法是求方程根的重要方法之一,其最大优点是在方程()0f x =的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时非线性收敛,但是可通过一些方法变成线性收敛。
牛顿法的几何解释:方程()0f x =的根*x 可解释为曲线()y f x =与x 轴的焦点的横坐标。
如下图:设k x 是根*x 的某个近似值,过曲线()y f x =上横坐标为k x 的点k P 引切线,并将该切线与x 轴的交点 的横坐标1k x +作为*x 的新的近似值。
鉴于这种几何背景,牛顿法亦称为切线法。
2 牛顿迭代公式:(1)最速下降法:以负梯度方向作为极小化算法的下降方向,也称为梯度法。
设函数()f x 在k x 附近连续可微,且()0k k g f x =∇≠。
由泰勒展开式: ()()()()()T k k k k fx f x x x f xx x ο=+-∇+- (*)可知,若记为k k x x d α-=,则满足0T k k d g <的方向k d 是下降方向。
当α取定后,T k k d g 的值越小,即T k k d g -的值越大,函数下降的越快。
由Cauchy-Schwartz 不等式:Tk k kk d g d g ≤,故当且仅当k k d g =-时,T k k d g 最小,从而称k g -是最速下降方向。
最速下降法的迭代格式为: 1k k k k x x g α+=-。
dfp算法原理
DFP算法,也称为DFP校正方法,是第一个拟牛顿法,由Davidon最早提出,后经Fletcher和Powell解释和改进,在命名时以三个人名字的首字母命名。
拟牛顿法多数时候均为对二阶导hessian矩阵或其逆矩阵的近似逼近,DFP所逼近的就是hessian逆矩阵。
其算法步骤如下:
假设已知目标函数及梯度,迭代轮数n,终止条件。
取初始点,精度;计算,若则停止,得到权重;否则转3;令,;令;求,令;计算,若则停止,得到权重;否则转7;计算;计算;令,转4。
求得的X即为每个特征的权重。
一般而言,针对公式会补充一个正定的充要条件:。
但是在实际实现中,本人发现很多时候,并不一定大于0,但距离0差距很小,一般在以内,因此可以将该约束进行放松。
以上内容仅供参考,如需更专业全面的信息,建议查阅数学或算法相关的专业书籍或咨询数学领域专家。
dfp变尺度法
DFP变尺度法(Davidon-Fletcher-Powell变尺度法)是一种拟牛顿优化算法,用于求解无约束极值问题它综合了梯度法和牛顿法的优点,具有较快的收敛速度和较广的应用范围DFP算法在优化领域中被认为是一种高效的方法,尤其在处理高维问题时具有显著优势。
DFP变尺度法的基本思想是在每次迭代中,用一组线性方程组来近似表示目标函数的Hessian矩阵这样,我们可以用较少的计算代价获得牛顿法类似的收敛速度变尺度法的关键在于选择合适的尺度矩阵,以保证算法的收敛性和稳定性。
DFP算法的步骤如下。
1.初始化:选择一个初始点x0.
2.计算目标函数的梯度g(x)。
f(x)=f(x0)+γ(x-x0).
其中,γ为尺度因子
3.计算Hessian矩阵的近似值H
H=I-γ²g²(x).
4.更新搜索方向。
s=-Hg(x).
5.更新x。
x=x0+αs.
其中,α为线搜索参数。
6.重复步骤2-5,直到满足终止条件(如收敛或达到迭代次数限制)。
DFP变尺度法在实际应用中通常与一维搜索技术和黄金分割法相结合,以提高收敛速度和稳定性此外,还可以根据问题特点对算法进行适当调整,如引入局部搜索、调整线搜索策略等,以适应不同问题的需求总之,DFP变尺度法是一种高效、实用的优化算法,在许多领域都得到了广泛应用。