最速下降法與Newton法

2021-06-21 08:00:21 字數 2660 閱讀 3914

乙個簡單的最優化問題如下:

在二維空間上尋找函式的最大值。

一般我們常見的解析法,是求導,得極值點。這裡不再討論。

很多情況下解析法很難求解,常會用到一種迭代慢慢逼近的方法,就是迭代法。如下圖。

迭代法由乙個基本的可行點出發,依次產生乙個可行點列,x1,x2,…,xk,f(xk+1)迭代法基本步驟如下:

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;

endminy=x*x-3*x+1

minx=x

count

plot(x,y);

圖:

結果為:

miny =

-1.2500

minx =

1.5000

迭代次數:2

最速下降法以線性的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;

endminy=x*x-3*x+1

minx=x

plot(x,y);

圖:

結果:miny =

0.9806

minx =

0.0065

迭代次數:2

同樣是通過taylor展開得到的方向,最速下降法取其一次部分,假設函式為線性。而newton法取二次,假設函式維二次,會有更快的收斂速度,不過也有上述的種種問題。

對於newton的缺點,改進的有相應的阻尼newton等等方法。

擬牛頓法與最速下降法

擬牛頓法是求解非線性優化問題最有效的方法之一。dfp bfgs l bfgs演算法都是重要的擬牛頓法。對f x 在xn附近做一階泰勒展開 f x f xn f xn x xn 假設xn 1是該方程的根 那麼就得到 xn 1 xn f xn f xn 通過不斷迭代從而得到真正的函式的根x 即是對一階導...

最速下降法 and 共軛梯度法

註明 程式中呼叫的函式jintuifa.m golddiv.m我在之前的筆記中已貼出 最速下降法 最速下降法求解f 1 2 x1 x1 9 2 x2 x2的最小值,起始點為x0 9 1 演算法根據最優化方法 天津大學出版社 97頁演算法3.2.1編寫 v1.0 author liuxi bit fo...

機器學習 最速下降法和牛頓下降法

入門教材常用二分法來求解實數求根的問題。我們現在來用普通迭代法 下降法來求解實數開立方根的問題。設當前實數為n,求根次數為k,根為s,那麼有s k n。所得偏差函式為f s s k n。顯然當代價函式f s 0時,我們便求出了n的k次根。現在我們開立方根,那麼k 3,代價函式為f s s 3 n。普...