拉格朗日乘子法 & KKT條件

目錄

1. 最優化問題三種情況

1.1 無約束條件

1.2 等式約束條件:拉格朗日乘子法

1.3 不等式約束條件:KKT

2. Lagrange對偶函數

2.1 對偶函數與原問題的關係

2.2 Lagrange對偶問題

(1)弱對偶性

(2)強對偶性

(3)KKT條件


        在求解最優化問題中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)條件是兩種最常用的方法,即:

  • 拉格朗日乘子法:在有等式約束時使用拉格朗日乘子法;
  • KKT條件:在有不等約束時使用KKT條件。

1. 最優化問題三種情況

     我們這裏提到的最優化問題通常是指對於給定的某一函數,求其在指定作用域上的全局最小值(因爲最小值與最大值可以很容易轉化,即最大值問題可以轉化成最小值問題)。提到KKT條件一般會附帶的提一下拉格朗日乘子。對學過高等數學的人來說比較拉格朗日乘子應該會有些印象。二者均是求解最優化問題的方法,不同之處在於應用的情形不同,KKT條件是對拉格朗日乘子法的一種泛化

      一般情況下,最優化問題會碰到一下三種情況:

1.1 無約束條件

  這是最簡單的情況,解決方法通常是函數對變量求導,令求導函數等於0的點可能是極值點。將結果帶回原函數進行驗證即可。

1.2 等式約束條件:拉格朗日乘子法

      設目標函數爲f(x),約束條件爲h_k(x),形如:

      s.t. 表示subject to ,“受限於”的意思,l表示有l個約束條件。

                       

  則解決方法是消元法或者拉格朗日法。消元法比較簡單不在贅述,這裏主要講拉格朗日法,因爲後面提到的KKT條件是對拉格朗日乘子法的一種泛化。

         拉格朗日乘子法的求解流程大概包括以下幾個步驟: 
     1)構造拉格朗日函數 
     2)解變量的偏導方程 
     3)代入目標函數即可 
   關鍵在於構造拉格朗日函數,後面求解實際上就是高數裏面基本的求偏導數的問題了。我們不妨另:                                    

                                                      

  然後分別對每一個變量求導,得出來的解代入目標函數就ok了!

                                           

  例如:求這個橢球的內接長方體的最大體積

        在條件

                                        

       下,求

                                    


       最大值。

       這個問題實際上就是條件極值問題,即在條件(1) 下,求的最大值。

  當然這個問題實際可以先根據條件消去 z (消元法),然後帶入轉化爲無條件極值問題來處理。但是有時候這樣做很困難,甚至是做不到的,這時候就需要用拉格朗日乘數法了。  

    首先定義拉格朗日函數F(x):

          ( 其中λk是各個約束條件的待定係數。)                                                           

        然後解變量的偏導方程:

                                        ......,

   如果有l個約束條件,就應該有l+1個方程。求出的方程組的解就可能是最優化值(高等數學中提到的極值),將結果帶回原方程驗證就可得到解。

   回到上面的題目,通過拉格朗日乘數法將問題轉化爲

         

   對求偏導得到

          

   聯立前面三個方程得到,帶入第四個方程解之

          

   帶入解得最大體積爲:

          

 

1.3 不等式約束條件:KKT

       設目標函數f(x),不等式約束爲g(x),有的教程還會添加上等式約束條件h(x)。此時的約束優化問題描述如下:

        

        則我們定義不等式約束下的拉格朗日函數L,即廣義拉格朗日函數

        

     其中,\lambda\mu是拉格朗日乘子,f(x)是原目標函數,hj(x)是第j個等式約束條件,λj是對應的約束係數,gk是不等式約束,uk是對應的約束係數。

  常用的方法是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的很多重要性質的來源,如支持向量的概念。

  基於KKT條件,不等式約束條件的問題基本也就解決了,下面來說說我自己的一點心得吧! 
第一點:拉格朗日乘子法求解優化問題是很有效的方法,對於限制條件比較多的情況下,特別是限制條件較爲複雜的情況下,利用該方法可以很容易的求解出來。 
第二點:約束條件其實就是限定了問題的解決範圍,學會如何轉化和考量限制條件是解決問題的關鍵。 
第三點:基礎知識的重要性,比如說高數如果學不好的話。

2. Lagrange對偶函數

2.1 對偶函數與原問題的關係

原始問題:

       假設f(x),ci(x),hj(x)是定義在Rn上的聯繫可微函數,考慮約束條件下最優化問題:

       

稱此約束最優化問題爲原始問題。

廣義拉格朗日函數

                                        

Lagrange對偶函數:

定義拉格朗日對偶函數或者對偶函數g爲拉格朗日函數關於x取得的最小值,即對α、β,有:

                    

通俗理解就是每確定一組(α,β),就要找到一個x使得L最小,不同的(α,β)對應不同的g函數值。

對偶函數與原問題的關係:

                                                      

        所以對偶函數是原問題的最優值下界,雖然不等式成立,但是如果α<0,並且讓α趨近於負無窮,這個時候g(α,β)=-∞,雖然也滿足不等式,但是此時沒有任何意義。所以只有當α≥0,這個時候g(α,β)>-∞時,對偶函數才能給出原目標函數一個非平凡有意義的下界,稱此條件下的(α,β)是對偶可行的。圖示如下:

                                        

        在圖中,實線代表的是目標函數f(x),而虛線代表的是約束條件c(x),彩色的點線代表λ取不同值的時候對應的拉格朗日函數L。我們可以看到,在約束條件可行(c(x)≤0)的區間內,拉格朗日函數都是小於目標函數的。在可行區間內,目標函數的最值將在x = -0.46處取得p∗=1.54。

爲什麼對偶函數一定是凹函數呢?

       其實L可以理解爲一個以固定x帶入c(x)和h(x)作爲常數值係數,α、β作爲變量的仿射函數。所謂仿射函數,就是f(x)=a*x+b形式,其實就是線性函數了。

       所以,g(α,β)爲很多個仿射函數的逐個x取值點取最小值:

                        L=Aα+Bβ+C      其中:A=c(x)    B=h(x)    C=f(x)

      例如:L=2α+3β+1,L=α+2β+4, L=5α+β+3等等。

便於理解,先不考慮β,這樣大致展示的圖像就是如下:

                                      

       裏面的每一條直線,都是以某一固定x作爲係數,α作爲變量的線性函數的直線,也就是當x固定時候,隨着α的變化,L的值不斷髮生變化。

       當我們沿着L所在軸豎着切下來的時候,也就是圖中個藍色線,這個時候其實就是α固定,而對應不同的x情況下,L值的一個變化範圍。由圖可知,紅色線就是每次固定α,而找到一個x,使得L最小的走勢線,也就是g(α,β)的函數曲線,如下圖:

                                               

       凹折線就是g(α,β)的曲線,水平虛線就是原問題的最優函數值P*。由此可知,無論原問題和約束條件是什麼樣的,對偶函數都是凹函數,且都小於等於原問題最優值。

2.2 Lagrange對偶問題

       對於任意一組(α,β),其中α≥0,拉格朗日對偶函數給出了原問題的最優值的一個下界,因此,我們可以得到和參數α、β相關的一個下界。一個自然問題是:從Lagrange函數能得到的最好下界是什麼?可以將這個問題表述爲優化問題:

                                                                        

上述問題就稱之爲Lagrange對偶問題

        前面講只有當α≥0,g(α,β)>-∞時此時纔有意義,滿足這樣一組條件的(α,β)是上述對偶問題的一個可行解。如果一個解(α*,β*)是上述對偶問題的最優解,則稱解(α*,β*)是對偶最優解或者最優Lagrange乘子。

此時對偶問題是一個凸優化問題,這是因爲極大化目標函數是一個凹函數,且約束集合是一個凸集。

(1)弱對偶性

       Lagrange對偶問題的最優值,我們用d*表示,根據定義,這是通過Lagrange函數得到的原問題最優值p*的最好下界。特別地,我們有下面簡單但是非常重要的不等式

                                                                     

即使原問題不是凸問題,上述不等式也成立,這個性質稱爲弱對偶性。

(2)強對偶性

        與弱對偶性相對應的有一個強對偶性(strong duality) ,強對偶即滿足:

                                                                       

       強對偶是一個非常好的性質,因爲在強對偶成立的情況下,可以通過求解對偶問題來得到原始問題的解,在 SVM 中就是這樣做的。當然並不是所有的對偶問題都滿足強對偶性 ,在 SVM 中是直接假定了強對偶性的成立,其實只要滿足一些條件,強對偶性是成立的,比如說 Slater 條件與KKT條件。

(3)KKT條件

       假設x*是原始問題的最優解,α*和β*是對偶問題的最優解。如果強對偶成立,那麼原問題最優解和對偶問題最優解必須滿足KKT條件,屬於充分必要條件。

                   

 

參考:

拉格朗日對偶理解https://www.cnblogs.com/gczr/p/10521551.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章