梯度下降法、牛顿迭代法、共轭梯度法复习过程
- 格式:doc
- 大小:208.00 KB
- 文档页数:5
梯度下降法和牛顿法都是常用的优化算法,用于求解函数的最小值或最大值。
梯度下降法的基本思想是,在每一次迭代中,通过计算目标函数对参数的梯度(即函数在当前参数取值处的变化率),然后沿着梯度的反方向进行参数更新,从而使目标函数的值逐步下降。
在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。
而牛顿法也是另一种常见的优化算法,它使用牛顿定理来寻找函数的极值点。
具体来说,牛顿法通过当前点的梯度的反方向寻找到新的迭代点,并从当前点移动到新的迭代点继续寻找新的迭代点,直到找到最优解。
如需了解更多信息,建议查阅相关书籍或咨询专业人士。
共轭梯度法和梯度下降法的区别共轭梯度法和梯度下降法,这两个名字听起来是不是有点拗口呢?别担心,咱们今天就来轻松聊聊它们之间的区别。
想象一下,梯度下降法就像是你在一个巨大的山谷里迷路了,四周都是高山,光线也不是很好。
你只能依赖脚下的地面,感受倾斜的方向,慢慢地向下爬。
每一步都得小心翼翼,生怕摔个四脚朝天。
这种方法特别适合那些目标函数比较简单的情况,像是那种一眼能看得见的坡道,慢慢走,总能找到最低点。
可如果山谷里复杂得像迷宫一样,那就真有点麻烦了。
梯度下降法就有点像是在黑暗中摸索,有时候你以为找到了正确的路,却发现走了个大弯。
这时候你就会希望,有个聪明的朋友能来给你指个路。
这个时候,共轭梯度法就像是你的好伙伴。
它不会盲目跟随某个方向,而是会在每一步中综合考虑之前的路径。
想象一下,你的伙伴能记住你已经走过的地方,这样就不会重复犯错,能更快找到出口。
它就像那种智商高、记性好的朋友,走路时总是把路看得明明白白。
有趣的是,梯度下降法在每一步都只关注当前的方向,像是有点“独自一人”的感觉。
而共轭梯度法则更像是个团队协作,它不仅关注当前,还能借鉴过去的经验,综合判断。
真是相辅相成,缺一不可。
就像有些人喜欢独来独往,有些人则更喜欢和朋友一起行动,各有各的风格,结果却能达到目的。
你可能会问,既然有这么多优点,为什么不一直用共轭梯度法呢?任何方法都有它适合的场景。
梯度下降法在计算上更简单,特别适合处理一些大规模的问题,就像在超市买东西,价格便宜的东西你肯定会多买几样;而共轭梯度法虽然更聪明,但计算量大,适合小范围的高难度挑战,像是在精挑细选好货的时候。
每种方法都有自己的光辉时刻,关键在于选择合适的时机。
当然了,具体的实现过程中,还有很多细节需要注意,比如参数的设置、迭代的方式等等。
梯度下降法如果没有设置好学习率,可能就会跌入“学习太快,反而出错”的尴尬境地,感觉就像是上课的时候,老师讲得飞快,你根本跟不上。
而共轭梯度法虽然聪明,但也需要一点耐心,毕竟聪明的人也不是一蹴而就的。
梯度下降优化算法综述,梯度下降法梯度下降法是什么?梯度下降法(英语:Gradientdescent)是一个一阶最优化算法,通常也称为最陡下降法。
要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。
如果相反地向梯度正方向迭代进行搜索,则会接近函数的局部极大值点;这个过程则被称为梯度上升法。
梯度下降一般归功于柯西,他在1847年首次提出它。
Hadamard在1907年独立提出了类似的方法。
HaskellCurry在1944年首先研究了它对非线性优化问题的收敛性,随着该方法在接下来的几十年中得到越来越多的研究和使用,通常也称为最速下降。
梯度下降适用于任意维数的空间,甚至是无限维的空间。
在后一种情况下,搜索空间通常是一个函数空间,并且计算要最小化的函数的Fréchet导数以确定下降方向。
梯度下降适用于任意数量的维度(至少是有限数量)可以看作是柯西-施瓦茨不等式的结果。
那篇文章证明了任意维度的两个向量的内(点)积的大小在它们共线时最大化。
在梯度下降的情况下,当自变量调整的向量与偏导数的梯度向量成正比时。
修改为了打破梯度下降的锯齿形模式,动量或重球方法使用动量项,类似于重球在被最小化的函数值的表面上滑动,或牛顿动力学中的质量运动在保守力场中通过粘性介质。
具有动量的梯度下降记住每次迭代时的解更新,并将下一次更新确定为梯度和前一次更新的线性组合。
对于无约束二次极小化,重球法的理论收敛速度界与最优共轭梯度法的理论收敛速度界渐近相同。
该技术用于随机梯度下降,并作为用于训练人工神经网络的反向传播算法的扩展。
梯度下降算法是指什么神经网络梯度下降法是什么?梯度下降法是一个最优化算法,通常也称为最速下降法。
最速下降法是求解无约束优化问题最简单和最古老的方法之一,虽然现已不具有实用性,但是许多有效算法都是以它为基础进行改进和修正而得到的。
最速下降法是用负梯度方向为搜索方向的,最速下降法越接近目标值,步长越小,前进越慢。
题目和要求最速下降法是以负梯度方向最为下降方向的极小化算法,相邻两次的搜索方向是互相直交的。
牛顿法是利用目标函数)(x f 在迭代点k x 处的Taylor 展开式作为模型函数,并利用这个二次模型函数的极小点序列去逼近目标函数的极小点。
共轭梯度法它的每一个搜索方向是互相共轭的,而这些搜索方向k d 仅仅是负梯度方向k g -与上一次接待的搜索方向1-k d 的组合。
运行及结果如下:最速下降法:题目:f=(x-2)^2+(y-4)^2M 文件:function [R,n]=steel(x0,y0,eps)syms x ;syms y ;f=(x-2)^2+(y-4)^2;v=[x,y];j=jacobian(f,v);T=[subs(j(1),x,x0),subs(j(2),y,y0)];temp=sqrt((T(1))^2+(T(2))^2);x1=x0;y1=y0;n=0;syms kk ;while (temp>eps)d=-T;f1=x1+kk*d(1);f2=y1+kk*d(2);fT=[subs(j(1),x,f1),subs(j(2),y,f2)];fun=sqrt((fT(1))^2+(fT(2))^2);Mini=Gold(fun,0,1,0.00001);x0=x1+Mini*d(1);y0=y1+Mini*d(2);T=[subs(j(1),x,x0),subs(j(2),y,y0)];temp=sqrt((T(1))^2+(T(2))^2);x1=x0;y1=y0;n=n+1;endR=[x0,y0]调用黄金分割法:M文件:function Mini=Gold(f,a0,b0,eps)syms x;format long;syms kk;u=a0+0.382*(b0-a0);v=a0+0.618*(b0-a0);k=0;a=a0;b=b0;array(k+1,1)=a;array(k+1,2)=b;while((b-a)/(b0-a0)>=eps)Fu=subs(f,kk,u);Fv=subs(f,kk,v);if(Fu<=Fv)b=v;v=u;u=a+0.382*(b-a);k=k+1;elseif(Fu>Fv)a=u;u=v;v=a+0.618*(b-a);k=k+1;endarray(k+1,1)=a;array(k+1,2)=b;endMini=(a+b)/2;输入:[R,n]=steel(0,1,0.0001)R = 1.99999413667642 3.99999120501463 R = 1.99999413667642 3.99999120501463 n = 1牛顿法:题目:f=(x-2)^2+(y-4)^2M文件:f=(x1-2)^2+(x2-4)^2;v=[x1,x2];df=jacobian(f,v);df=df.';G=jacobian(df,v);epson=1e-12;x0=[0,0]';g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)});k=0;mul_count= 0;sum_count=0;mul_count=mul_count+12;sum_count=sum_count+6;while(norm(g1)>epson)p=-G1\g1;x0=x0+p;g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)});k=k+1;mul_count=mul_count+16;sum_count=sum_count+11;end;kx0mul_countsum_count结果::k = 1x0 =24mul_count = 28sum_count = 17共轭梯度法:题目:f=(x-2)^2+(y-4)^2M文件:function f=conjugate_grad_2d(x0,t)x=x0;syms xi yi af=(xi-2)^2+(yi-4)^2;fx=diff(f,xi);fy=diff(f,yi);fx=subs(fx,{xi,yi},x0);fy=subs(fy,{xi,yi},x0);count=0;while double(sqrt(fx^2+fy^2))>ts=-fi;if count<=0s=-fi;elses=s1;endx=x+a*s;f=subs(f,{xi,yi},x);f1=diff(f);f1=solve(f1);if f1~=0ai=double(f1);elsebreakx,f=subs(f,{xi,yi},x),countendx=subs(x,a,ai);f=xi-xi^2+2*xi*yi+yi^2;fxi=diff(f,xi);fyi=diff(f,yi);fxi=subs(fxi,{xi,yi},x);fyi=subs(fyi,{xi,yi},x);fii=[fxi,fyi];d=(fxi^2+fyi^2)/(fx^2+fy^2);s1=-fii+d*s;count=count+1;fx=fxi;fy=fyi;endx,f=subs(f,{xi,yi},x),count输入:conjugate_grad_2d([0,0],0.0001)结果:x = 0.24998825499785 -0.24999998741273 f = 0.12499999986176count = 10ans = 0.12499999986176结论如下:最速下降法越接近极小值,步长越小,前进越慢。
最优化问题的算法迭代格式最优化问题的算法迭代格式最优化问题是指在一定的条件下,寻找使某个目标函数取得极值(最大值或最小值)的变量取值。
解决最优化问题的方法有很多种,其中较为常见的是迭代法。
本文将介绍几种常用的最优化问题迭代算法及其格式。
一、梯度下降法梯度下降法是一种基于负梯度方向进行搜索的迭代算法,它通过不断地沿着目标函数的负梯度方向进行搜索,逐步接近极值点。
该方法具有收敛速度快、易于实现等优点,在许多应用领域中被广泛使用。
1. 算法描述对于目标函数 $f(x)$,初始点 $x_0$ 和学习率 $\alpha$,梯度下降算法可以描述为以下步骤:- 计算当前点 $x_k$ 的梯度 $\nabla f(x_k)$;- 更新当前点 $x_k$ 为 $x_{k+1}=x_k-\alpha\nabla f(x_k)$;- 如果满足停止条件,则输出结果;否则返回第 1 步。
2. 算法特点- 沿着负梯度方向进行搜索,能够快速收敛;- 学习率的选择对算法效果有重要影响;- 可能会陷入局部极小值。
二、共轭梯度法共轭梯度法是一种基于线性方程组求解的迭代算法,它通过不断地搜索与当前搜索方向共轭的新搜索方向,并在该方向上进行一维搜索,逐步接近极值点。
该方法具有收敛速度快、内存占用少等优点,在大规模问题中被广泛使用。
1. 算法描述对于目标函数 $f(x)$,初始点 $x_0$ 和初始搜索方向 $d_0$,共轭梯度算法可以描述为以下步骤:- 计算当前点 $x_k$ 的梯度 $\nabla f(x_k)$;- 如果满足停止条件,则输出结果;否则进行下一步;- 计算当前搜索方向 $d_k$;- 在当前搜索方向上进行一维搜索,得到最优步长 $\alpha_k$;- 更新当前点为 $x_{k+1}=x_k+\alpha_k d_k$;- 计算新的搜索方向 $d_{k+1}$;- 返回第 2 步。
2. 算法特点- 搜索方向与前面所有搜索方向都正交,能够快速收敛;- 需要存储和计算大量中间变量,内存占用较大;- 可以用于非线性问题的求解。
共轭梯度法原理共轭梯度法是线性代数中一种求解稀疏矩阵下的大规模线性方程组的方法。
它的优点是它具有迭代次数小的特点,同时也能得到比较准确的解。
共轭梯度法基于梯度下降法,但是避免了梯度下降法的缺点。
梯度下降法每一次迭代都需计算整个向量的梯度,这在高纬度数据中非常复杂,同时使用步长较大时又容易产生来回震荡的现象。
共轭梯度法的优点是在每一次迭代都会寻找一个与上次方向不同的方向,这点可以消除梯度下降法的缺陷。
令A为若干个线性矩阵的乘积,如果我们要解矩阵方程Ax=b,其中b是已知向量,求解的x向量是未知向量。
首先,我们可以用梯度下降法求出一个初值向量x0,称之为迭代初始值。
然后,我们可以利用高斯打乘法和高斯消元得到向量P,并设向量R0=Ax0-b,然后再设P逆矩阵为Pt。
共轭梯度法迭代的主要步骤如下:1. 根据目标函数和梯度函数确定初值x0;2. 初始化残差向量r0=b-Ax0,并设置迭代数k=0;3. 设置搜索方向向量p0=r0;4. 使用一维搜索方法(如Armijo步长准则)寻找最优步长αk;5. 将搜索方向向量移动到新的位置:xk+1=xk+αkp,计算新的残差rk+1=rk+αkAp;6. 如果rk+1=0或者迭代次数已达到设定值,则停止迭代;否则:7. 确定下一个搜索方向pk+1,并重复步骤4-6直到满足收敛条件。
共轭梯度法迭代的优点是每一步都在原解空间的一个线性子空间中求解,因此不需要保存全部解向量,从而大大减少了计算量和存储空间,特别适用于高纬度的线性方程组的求解。
在参数优化、图像处理和物理模拟等领域中广泛应用。
在参数优化中,共轭梯度法可以加速大规模函数的梯度计算,从而加快参数搜索的速度;在图像处理中,共轭梯度法常用于求解稀疏线性系统,例如图像压缩、图像去噪和图像恢复等;在物理模拟中,共轭梯度法可以用于求解偏微分方程组、流体力学问题和计算机视觉等领域。
非线性规划的解法非线性规划是一类重要的数学规划问题,它包含了很多实际应用场景,如金融市场中的资产配置问题,工程界中的最优设计问题等等。
由于非线性目标函数及约束条件的存在,非线性规划问题难以找到全局最优解,面对这样的问题,研究人员提出了众多的解法。
本文将从梯度法、牛顿法、共轭梯度法、拟牛顿法等方法进行介绍,着重讨论它们的优劣性和适用范围。
一、梯度法首先介绍的是梯度法,在非线性规划中,它是最简单的方法之一。
梯度法的核心思想是通过寻找函数的下降方向来不断地优化目标函数。
特别是在解决单峰函数或弱凸函数方面优势明显。
然而,梯度算法也存在一些不足之处,例如:当函数的梯度下降速度过慢时,算法可能会陷入局部最小值中无法跳出,还需要关注梯度方向更新的频率。
当目标函数的梯度非常大,梯度法在求解时可能会遇到局部性和发散性问题。
因此,它并不适合解决多峰、强凸函数。
二、牛顿法在牛顿法中,通过多项式函数的二阶导数信息对目标函数进行近似,寻找下降方向,以求取第一个局部极小值,有时还可以找到全局最小值。
牛顿法在计算方向时充分利用二阶导数的信息,使梯度下降速度更快,收敛更快。
因此,牛顿法适用于单峰性函数问题,同时由于牛顿法已经充分利用二阶信息,因此在解决问题时更加精确,准确性更高。
但牛顿法的计算量比梯度法大,所以不适合大规模的非线性规划问题。
此外,当一些细节信息不准确时,牛顿法可能会导致计算数值不稳定和影响收敛性。
三、共轭梯度法共轭梯度法是非线性规划的另一种解法方法。
共轭梯度法沿预定义的方向向梯度下降,使梯度下降的方向具有共轭性,从而避免了梯度下降法中的副作用。
基于共轭梯度的方法需要存储早期的梯度,随着迭代的进行,每个轴线性搜索方向的计算都会存储预定的轴单位向量。
共轭梯度方法的收敛速度比梯度方法快,是求解非线性规划的有效方法。
四、拟牛顿法拟牛顿法与牛顿法的思路不同,它在目标函数中利用Broyden、Fletcher、Goldfarb、Shanno(BFGS)算法或拟牛顿法更新的方法来寻找下降方向。
牛顿方法和梯度下降都是机器学习中常用的优化算法,它们各有特点和适用场景。
梯度下降法依据梯度(一阶导数)和步长,在损失函数曲线上一步步挪动,直到达到损失函数的最小值。
在每一次迭代中,它都会沿着损失函数当前位置的梯度反方向前进一个固定的步长,以期望达到损失函数的最小值。
然而,梯度下降法只考虑方向,并不考虑步长的大小,这可能导致在接近最优值时,损失函数值在最优值附近来回震荡,需要多次选择单位步长的方向。
而牛顿法则通过求解损失函数的一阶导数为0时的参数(需要二阶导数信息),进而求出损失函数最小值时的参数。
从几何上说,牛顿法是用一个二次曲面去拟合当前所处位置的局部曲面,而梯度下降法则是用一个平面去拟合。
因此,牛顿法选择的下降路径通常会更符合真实的最优下降路径,具有二阶收敛的特性,收敛速度相对较快。
然而,牛顿法也有其缺点,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算相对复杂。
总结来说,牛顿法和梯度下降法都是用于求解损失函数最小值的优化算法,但它们在求解策略、收敛速度以及计算复杂度上存在差异。
具体选择哪种方法,需要根据问题的性质、数据规模以及计算资源等因素进行综合考虑。
统计学梯度下降法(SGDs)易于实现,然而它有两个主要的缺陷。
第一个缺陷是它需要手动调谐大量的参数,比如学习速率和收敛准则。
第二个缺陷是它本质上是序列方法,不利于并行计算或分布式计算。
(然而,在计算资源如RAM受限的情况下,序列方法倒是一个不错的选择。
)这里介绍一些非线性优化算法:牛顿算法,伪牛顿算法和共轭梯度法。
其中,伪牛顿算法包括DFP、BFGS和L-BFGS算法。
考虑如下的无约束最小化问题:min x f(x)(1)其中x=(x1,…,x N)T∈ℝN. 为简便起见,这里假设f是凸函数,且二阶连续可导。
记(1)的解为x∗.牛顿算法(Newton‘s Method)基本思想:在现有的极小点估计值的附近对f(x)做二阶泰勒展开,进而找到下其中g(k)=∇f(x)|x(k)是梯度矩阵,H(k)=∇2f(x)|x(k)是海森矩阵。
牛顿算法是一种具有二次收敛性的算法。
对于非二次函数,若函数的二次性态较强,或迭代点已进入极小点的领域,则其收敛速度也是很快的,这是牛顿算法的主要优点。
但牛顿算法由于迭代公式中没有步长因子,而是定步长迭代,所以对于非二次函数,有时会出现f(x(k+1))>f(x(k))的情况,这表明牛顿算法不能保证函数值稳定地下降。
由此,人们提出了阻尼牛顿算法,在原始牛顿算法的第4步中,采用一维搜索(line search)算法给d(k)加一个步长因子λ(k),其中:λ(k)=arg minλ∈ℝf(x(k)+λd(k))(2)一维搜索算法将另作介绍。
拟牛顿算法(Quasi-Newton Methods)基本思想:不直接计算二阶偏导数,而是构造出近似海森矩阵(或海森矩阵的逆)的正定对称阵,在拟牛顿条件下优化目标函数。
下文中,用B表示对H的近似,用D表示对H−1的近似,并令s(k)=x(k+1)−x(k),y(k)=g(k+1)−g(k).⒈拟牛顿条件(割线条件)对f(x)做二阶泰勒展开可得:y(k)≈H(k+1)×s(k)(3)或s(k)≈(H(k+1))−1×y(k)(4)⒉DFP算法核心:通过迭代的方法,对(H(k+1))−1做近似。
梯度下降法、牛顿迭代法、共轭梯度法
(参见:神经网络->PGM-ANN-2009-C09性能优化)
优化的目的是求出目标函数的最大值点或者最小值点,这里讨论的是迭代的方法
梯度下降法
首先,给定一个初始猜测值 ,然后按照等式
k k k k ΡαΧ+=X +1 (1)
或
k
k k k k P =X -X =∆X +α)(1 (2)
逐步修改猜测。
这里向量 k
P 代表一个搜索方向,一个大于零的纯量
k
α 为学习
速度,它确定了学习步长。
当用 k k k k ΡαΧ+=X +1 进行最优点迭代时,函数应该在每次迭代时都减小,即
)
()(1k k F F X <X +
考虑
(3)
的)(X F 在k X 的一阶泰勒级数展开:
k
T
k k k k k g F F F ∆X +X ≈∆X +X =X +)()()(1
(4)
其中,T
k g 为在旧猜测值k X 处的梯度
k
F g k X =X X ∇≡)( (5) 要使
)
()(1k k F F X <X +
只需要(4)中右端第二项小于0,即
<P =∆X k T k
k k T k g g α (6)
选择较小的正数k α。
这就隐含0<k T
k P g 。
满足0<k T
k P g 的任意向量成为一个下降方向。
如果沿着此方向取足够小步长,函数一
定递减。
并且,最速下降的情况发生在k T k P g 最小的时候,容易知道,当k k -g P =时k T
k P g 最小,此时,方向向量与梯度方向相反。
在(1)式中,令k k -g P =,则有
k k k k g αΧ-=X +1 (7)
对于式(7)中学习速率k α的选取通常有两种方法:一种是选择固定的学习速率k α,另一种方法是使基于学习速率k α的性能指数或目标函数)(1k +X F 在每次迭代中最小化,即沿着梯度反方向实现最小化:k k k k g X X α-=+1。
注意:
1、对于较小的学习速度最速下降轨迹的路径总是与轮廓线正交,这是因为梯度与轮廓线总是正交的。
2、如果改变学习速度,学习速度太大,算法会变得不稳定,振荡不会衰减,反而会增大。
3、稳定的学习速率
对于任意函数,确定最大可行的学习速度是不可能的,但对于二次函数,可以确定一个上界。
令特征函数为:
c X
d AX X F T T
++=
2
1)x ( (8)
那么梯度为 d AX X F +=∇)( 代入最速下降法公式(7)中
d a X A a I d AX a X g a X X k k k k k k k k k k --=+-=-=+)()(1 (9)
在动态系统中,如果矩阵][aA I -的特征值小于1,则该系统是稳定的。
可用赫森矩阵
A 的特征值来表示该矩阵的特征值,假设A 的特征值和特征向量分别为{}n 21λλλΛ,
,和{}n z z z Λ,,21,那么
[]i i i z a I z aA I )(λ-=- (10)
于是,最速下降法的稳定条件为
1<-i a I λ (11) 如果二次函数有一个强极小点,则其特征值为正数,上式可以化为i
a λ2
<
由于该式对于赫森矩阵的所有特征值都成立则 m ax
2
λ<
a (12)
分析:最大的稳定学习速度与二次函数的最大的曲率成反比。
曲率说明梯度变化的快慢。
如果梯度变化太快,可能会导致跳过极小点,进而使新的迭代点的梯度的值大于原迭代点的梯度的值(但方向相反)。
这会导致每次迭代的步长增大。
4、沿直线最小化 选择学习速率的另一种方法是k a 使得每次迭代的性能指数最小化,即选择k a 使得下式最小: )(k k k P a X F +
对任意函数的这种最小化需要线性搜索。
对二次函数解析线性最小化是可能的。
上式对k a 的导数为:
k X X T k k k X X T k k k k
P X F P a P X F P a X F da d
k k ==∇+∇=+|)(|)()(2 (13) 令式(13)导数为零求得 T
k k k k
T k k X X T k X X T k P A P P g P X F P P X F a k
k k -=∇∇-
===|)(|)(2 (14) 这里k A 为k X 的赫森矩阵:k X X k X F A =∇=|)(2
牛顿法
牛顿法基于二阶泰勒级数:
k k T
k k T k k k k k X A X X g X F X X F X F ∆∆+∆+≈∆+=+2
1)()()(1 (15)
牛顿法的原理是求)(X F 的二次近似的驻点,求这个二次函数对k X ∆的梯度并令它等于0,则有
0=∆+k k k X A g (16) 解得: k T
g A X k -=∆k
于是,牛顿法定义为 k k k g A X X 1
1k -+-= (17)
注意:牛顿法总是用一个二次函数逼近)(X F ,然后求其驻点,因此此方法总能够一步找到二次函数的极小点,如果原函数为二次函数(有强极小点),它就能够实现一步极小化
如果)(X F 不是二次函数,则牛顿法一般不能在一步内收敛,是否收敛取决于具体的函数和初始点
尽管牛顿法的收敛速度通常比最速下降法快,但其表现很复杂,除了收敛到鞍点的问题外,算法还可能震荡和发散,如果学习速率不太快或每步都实现线性极小化,最速下降法能保证收敛
牛顿法的另一个问题是需要对赫森矩阵及其逆阵的计算和存储 共轭梯度法
牛顿法有一个性质成为二次终结法(quadratic temination ),即它能在有限迭代次数内使得二次函数极小化,但这需要计算和存储二阶导数,当参数个数很大时,计算所有二阶导数是很困难的。
假定对下述二次函数确定极小点:
c X
d AX X F T T
++=
2
1)x ( (18)
当且仅当j k AP P j T
k ≠=,0时,称向量集合{}k P 对于一个正定赫森矩阵A 两两共轭。
因为对称矩阵的特征向量是两两正交的。
已经证明,如果存在沿着一个共轭方向集{}
,,2,1n P P P Λ的精确线性搜索序列,就能够在最多n 此搜索内实现具有n 个参数的二次函数的精确极小化。
注意到对于二次函数,有
A
X F d AX X F =∇+=∇)()(2 (19)
由于k k k k X A g g g ∆=-=∆+1,又有k k k k k P a X X X =-=∆+)(1,选择k a 使函数)(X F 在k P 方向上极小化,则共轭条件可重写称
j k P g AP X AP P a j T
k j T
k j T
k k ≠=∆=∆=,0 (20) 注意,第一次搜索方向0P 是任意的,而1P 是与0g ∆垂直的任意向量。
所以共轭向量集的数量是无限的。
通常从最速下降法的方向开始搜索:00g P -=
每次迭代都要构造一个与{}n g g g ∆∆∆Λ,,10正交的向量k P 。
可以将迭代形式简化为 1-+-=k k k k P g P β (21) 通常选择
1
-1-k T
k
T k P g g g k k ∆∆=
β或1
-1-k T
k T k g g g g k k =
β或1
-1-1-k T
k
T k g g g g k k ∆=
β
综上,算法可以归纳为:
1、选择如00g P -=的与梯度相反的方向作为第一次搜索方向
2、根据k k k k k P a X X X =-=∆++)(11进行下一步搜索,确定k a 以使函数沿搜索方向极小化
3、根据k k k k P g P 111++++-=β确定下一个搜索方向,计算1+k β
4、如果算法不收敛,回到第2步
算法比较
梯度下降法形式简单,一般情况下都能够保证收敛,但是收敛速度慢 牛顿法对于二次目标函数收敛速度快,但是不能够保证收敛,而且需要对赫森矩阵及其逆阵的计算和存储
共轭梯度法结合了前面两种方法的性质,收敛速度快,不需要对赫森矩阵及其逆阵的计算和存储,但是形式比前两者复杂。