矩陣向量求導法則,拉格朗日函數


轉自http://www.cnblogs.com/huashiyiqike/p/3568922.html在學習算法的過程中,常常需要用到向量的求導。下邊是向量的求導法則。

 

拉格朗日乘子法:應用在求有約束條件的函數的極值問題上。

 

通常我們需要求解的最優化問題有如下幾類:

 

(i) 無約束優化問題,可以寫為:

 

        min f(x);  

 

(ii) 有等式約束的優化問題,可以寫為:

 

        min f(x), 

 

        s.t. h_i(x) = 0; i =1, ..., n 

 

(iii) 有不等式約束的優化問題,可以寫為:

 

        min f(x), 

 

        s.t. g_i(x) <= 0; i =1, ..., n

 

             h_j(x) = 0; j =1, ..., m

 

對於第(i)類的優化問題,常常使用的方法就是Fermat定理,即使用求取f(x)的導數,然后令其為零,可以求得候選最優值,再在這些候選值中驗證;如果是凸函數,可以保證是最優解。

 

對於第(ii)類的優化問題,常常使用的方法就是拉格朗日乘子法(Lagrange Multiplier) ,即把等式約束h_i(x)用一個系數與f(x)寫為一個式子,稱為拉格朗日函數,而系數稱為拉格朗日乘子。通過拉格朗日函數對各個變量求導,令其為零,可以求得候選值集合,然后驗證求得最優值。

 

對於第(iii)類的優化問題,常常使用的方法就是KKT條件。同樣地,我們把所有的等式、不等式約束與f(x)寫為一個式子,也叫拉格朗日函數,系數也稱拉格朗日乘子,通過一些條件,可以求出最優值的必要條件,這個條件稱為KKT條件。

 

(a) 拉格朗日乘子法(Lagrange Multiplier)

 

對於等式約束,我們可以通過一個拉格朗日系數a 把等式約束和目標函數組合成為一個式子L(a, x) = f(x) + a*h(x), 這里把a和h(x)視為向量形式,a是橫向量,h(x)為列向量,之所以這么寫,完全是因為csdn很難寫數學公式,只能將就了.....。

 

然后求取最優值,可以通過對L(a,x)對各個參數求導取零,聯立等式進行求取,這個在高等數學里面有講,但是沒有講為什么這么做就可以,在后面,將簡要介紹其思想。

 

(b) KKT條件

 

對於含有不等式約束的優化問題,如何求取最優值呢?常用的方法是KKT條件,同樣地,把所有的不等式約束、等式約束和目標函數全部寫為一個式子L(a, b, x)= f(x) + a*g(x)+b*h(x),KKT條件是說最優值必須滿足以下條件:

 

1. L(a, b, x)對x求導為零;

 

2. h(x) =0;

 

3. a*g(x) = 0;

 

求取這三個等式之后就能得到候選最優值。其中第三個式子非常有趣,因為g(x)<=0,如果要滿足這個等式,必須a=0或者g(x)=0. 這是SVM的很多重要性質的來源,如支持向量的概念。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM