最速下降法与Newton法


一个简单的最优化问题如下:

在二维空间上寻找函数的最大值。

 

一般我们常见的解析法,是求导,得极值点。这里不再讨论。

很多情况下解析法很难求解,常会用到一种迭代慢慢逼近的方法,就是迭代法。如下图。

迭代法由一个基本的可行点出发,依次产生一个可行点列,x1,x2,…,xk,f(xk+1)<f(xk),并且使得某个xk恰好是问题的一个最优解。

迭代法基本步骤如下:

1.      一个初始的位置x0;

2.      一个迭代搜索的方向p

3.      一个前进的步长a.

 

最速下降法

一个很自然的问题,关于目标函数f(x),我们要选择哪个方向才能够下降最快呢?

由Taylor公式有:


其中a表示步长,p表示方向。

当a一定时,p取-g(x)方向,能够使得f(x+ap)最小,也就是当前下降最快,即

为最速下降方向。

如果做精确的搜索,那么我们可以求得一个精确的步长:

 

不过精确搜索计算量过大,一般不采用这种方法,而是任意指定一个可行的步长。

 

关于收敛性:

经证明,最速下降法是整体收敛的,且为线性收敛,收敛速度较慢。

用matlab求解Y=X^2-3X+1,如下:

clear;
clc;
X=-1:0.1:3;
Y=X.*X-3*X+1;
e=0.0001;
a=0.5;
e_temp=1;
x=-1;
count=0;
while(e_temp>e)
    p=2*x-3;
    x_temp=x;
    x=x-a*p;
    e_temp=x-x_temp;
    count=count+1;
end
minY=x*x-3*x+1
minX=x
count
plot(X,Y);

图:


结果为:

minY =

  -1.2500

minX =

   1.5000

迭代次数:2

 

Newton法

最速下降法以线性的Taylor展开得出下降方向,本质使用线性函数假设目标函数。我们想要达到更快的收敛,需要考虑对目标函数的高维逼近。

我们把f(x)看做关于xk的一个二维函数,然后用解析法求出二维函数的精确最小值,得到xk+1。

首先,f(x)在xk处Taylor展开,只保留到二次:


我们把xk当做已知变量,x为未知,用解析法直接求解x,得到近似值。



如果f(x)是二次函数,那么Newton法一次就能得到最优值。


另一种更直观的解释:

假设函数f(x),如下,现在要求解f(x)的零点。


可以按照上图中的方法迭代求解,每次的更新如下:


现在,对于l(x),我们要求其最小值,也就是l'(x)=0的点。参照上面的方法,我们有如下更新:



收敛性:

只有当初始点x0充分接近极小点时,才能保证收敛,否则直接扔掉二次以后的Taylor项,会导致局部收敛,而且每次迭代都要计算G,如果G是奇异的,还不能得到解。

Newton是二次收敛的,是其最大优势。

 

Matlab求解Y=X^3+10X^2+1,如下:

clear;
clc;
X=-1:0.1:3;
Y=X.*X.*X+10*X.*X+1;
e=0.0001;
e_temp=1;
x=-1;
while(e_temp>e)
    G=6*x+20;
    p=(3*x*x+20*x)/(G);
    x_temp=x;
    x=x-p;
    e_temp=x-x_temp;
end
minY=x*x-3*x+1
minX=x
plot(X,Y);

图:


结果:

minY =

   0.9806

minX =

0.0065

迭代次数:2

 

同样是通过Taylor展开得到的方向,最速下降法取其一次部分,假设函数为线性。而Newton法取二次,假设函数维二次,会有更快的收敛速度,不过也有上述的种种问题。

对于Newton的缺点,改进的有相应的阻尼Newton等等方法。

我的思路是这样的: 最速下降法能找出全局最优点,但在接近最优点的区域内就会陷入“齿型”迭代中,使其每进行一步迭代都要花掉非常久的时间,这样长久的等待是无忍受的,不信你就在我那个程序的第一步迭代中把精度取得很小如:0.000000001等,其实我等过一个钟都没有什么结果出来。 再者我们考究一下 牛顿迭代求最优问题,牛顿相对最速下降法的速度就快得多了,而且还有一个好处就是能高度逼近最优值,而不会出现死等待的现象。 如后面的精度,你可以取如:0.0000000000001等。 但是牛顿也有缺点,就是要求的初始值非常严格,如果取不好,逼近的最优解将不收敛,甚至不是最优解。 就算收敛也不能保证那个结就是全局最优解,所以我们的出发点应该是:为牛顿找到一个好的初始点,而且这个初始点应该是在全局最优点附近,这个初始点就能保证牛顿高精度收敛到最优点,而且速度还很快。 思路概括如下: 1。用最速下降法在大范围找到一个好的初始点给牛顿:(最速下降法在精度不是很高的情况下逼近速度也是蛮快的) 2。在最优点附近改用牛顿,用最速下降法找到的点为牛顿的初始点,提高逼近速度与精度。 3。这样两种方相结合,既能提高逼近的精度,还能提高逼近的速度,而且还能保证是全局最优点。这就充分吸收各自的优点,扬长避短。得到理想的结果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值