梯度下降法又叫最速下降法,英文名為steepest descend method.估計搞研究的人應該經常聽見這個演算法吧,用來求解表示式最大或者最小值的,屬於無約束優化問題。
首先我們應該清楚,乙個多元函式的梯度方向是該函式值增大最陡的方向。具體化到1元函式中時,梯度方向首先是沿著曲線的切線的,然後取切線向上增長的方向為梯度方向,2元或者多元函式中,梯度向量為函式值f對每個變數的導數,該向量的方向就是梯度的方向,當然向量的大小也就是梯度的大小。
現在假設我們要求函式的最值,採用梯度下降法,如圖所示:
梯度下降法的基本思想還是挺簡單的,現假設我們要求函式f的最小值,首先得選取乙個初始點後,然後下乙個點的產生時是沿著梯度直線方向,這裡是沿著梯度的反方向(因為求的是最小值,如果是求最大值的話則沿梯度的方向即可)。梯度下降法的迭代公式為:
其中表示的是梯度的負方向,
表示的是在梯度方向上的搜尋步長。梯度方向我們可以通過對函式求導得到,步長的確定比較麻煩,太大了的話可能會發散,太小收斂速度又太慢。一般確定步長的方法是由線性搜尋演算法來確定,即把下乙個點的座標ak+1看做是
的函式,然後求滿足f(ak+1)的最小值的
即可。因為一般情況下,梯度向量為0的話說明是到了乙個極值點,此時梯度的幅值也為0.而採用梯度下降演算法進行最優化求解時,演算法迭代的終止條件是梯度向量的幅值接近0即可,可以設定個非常小的常數閾值。
下面是網上下的乙個求2元函式最小值的matlab函式實現**,在上面新增了少許注釋。**中關於步長的計算公式還是沒有弄很清楚,用到了hessian矩陣,有點像牛頓法,先不管了,以後有時候慢慢研究。
1 function y=fs2steep(f,e,a,b) %返回的是點座標的2個分量在matlab命令列視窗驗證函式,結果如下:2 %fs2steep函式 最速下降法
3 % x=fs2steep(f,e,a,b)為輸入函式 f為函式 e為允許誤差 (a,b)為初始點;
4 % fsx tjpu 2008.6.15
5 x1=a;x2=b;
6 q=fs2hesse(f,x1,x2);
7 x0=[x1 x2]'
;8 fx1=diff(f,'
x1'); %對x1求偏導數
9 fx2=diff(f,'
x2'); %對x2求偏導數
10 g=[fx1 fx2]'
; %梯度
11 g1=subs(g); %把符號變數轉為數值
12 d=-g1;%d為搜尋方向
13while (abs(norm(g1))>=e) %norm(g1)為g1的2範數,即sqrt(x1^2+x2^2),因為梯度其各分量=0,所以其梯度幅值=0
14 t=(-d)'
*d/((-d)
'*q*d);%求搜尋步長,方法是?
15 x0=x0-t*g1; %搜尋到的點
16 v=x0;
17 a=[1
0]*x0;
18 b=[0
1]*x0;
19 x1=a;
20 x2=b;
21 q=fs2hesse(f,x1,x2);
22 x0=[x1 x2]'
;23 fx1=diff(f,'
x1'); %對x1求偏導數
24 fx2=diff(f,'
x2'); %對x2求偏導數
25 g=[fx1 fx2]'
; %梯度
26 g1=subs(g);
27 d=-g1;
28end;
29 y=v;
3031 function x=fs2hesse(f,a,b)
32 %fs2hesse函式 求函式的hesse矩陣;
33 %本程式僅是簡單的求二次函式的hesse矩陣!;
34 % x=fs2hesse(f)為輸入函式 f為二次函式 x1,x2為自變數;
35 % fsx tjpu 2008.6.15
36 x1=a;x2=b;
37 fx=diff(f,'
x1'); %求f對x1偏導數
38 fy=diff(f,'
x2'); %求f對x2偏導數
39 fxx=diff(fx,'
x1'); %求二階偏導數 對x1再對x1
40 fxy=diff(fx,'
x2'); %求二階偏導數 對x1再對x2
41 fyx=diff(fy,'
x1'); %求二階偏導數 對x2再對x1
42 fyy=diff(fy,'
x2'); %求二階偏導數 對x2再對x2
43 fxx=subs(fxx); %將符號變數轉化為數值
44 fxy=subs(fxy);
45 fyx=subs(fyx);
46 fyy=subs(fyy);
47 x=[fxx,fxy;fyx,fyy]; %求hesse矩陣
最優化應用很廣,有很多東西要學,且自己對matlab程式設計還不熟悉,以後慢慢積累吧!
一些知識點的初步理解 7 隨機森林,ing
一些知識點的初步理解 7 隨機森林,ing.在機器學習中,隨機森林由許多的決策樹組成,因為這些決策樹的形成採用了隨機的方法,因此也叫做隨機決策樹。隨機森林中的樹之間是沒有關聯的。當測試資料進入隨機森林時,其實就是讓每一顆決策樹進行分類,最後取所有決策樹中分類結果最多的那類為最終的結果。因此隨機森林是...
一些知識點的初步理解 7 隨機森林,ing
在機器學習中,隨機森林由許多的決策樹組成,因為這些決策樹的形成採用了隨機的方法,因此也叫做隨機決策樹。隨機森林中的樹之間是沒有關聯的。當測試資料進入隨機森林時,其實就是讓每一顆決策樹進行分類,最後取所有決策樹中分類結果最多的那類為最終的結果。因此隨機森林是乙個包含多個決策樹的分類器,並且其輸出的類別...
一些知識點的初步理解 6 核函式,ing
在svm中經常聽說核函式,關於各種核函式的推導公式寫得天花亂墜。svm大概意思是說將低維不可分的樣本對映到高維空間中後就線性可分了,由於最後用訓練出來的模型進行分類 時需要求高維空間中對映特徵間的內積,而核函式的功能就是我們計算時不需要考慮高維空間的具體形式,降低了其計算複雜度。下面就簡單講講核函式...