拉格朗日乘子法和KKT條件

0 前言php

上」最優化「課,老師講到了無約束優化的拉格朗日乘子法和KKT條件。html

這個在SVM的推導中有用到,因此查資料加深一下理解。函數

 

1 無約束優化學習

對於無約束優化問題中,若是一個函數f是凸函數,那麼能夠直接經過f(x)的梯度等於0來求得全局極小值點。優化

爲了不陷入局部最優,人們儘量使用凸函數做爲優化問題的目標函數。ui

凸集定義:歐式空間中,對於集合中的任意兩點的連線,連線上任意一點都在集合中,咱們就說這個集合是凸集。spa

凸函數定義:對於任意屬於[0,1]的a和任意屬於凸集的兩點x, y,有f( ax + (1-a)y ) <= a * f(x) + (1-a) * f(y),幾何上的直觀理解就是兩點連線上某點的函數值,大於等於兩點之間某點的函數值。凸函數的任一局部極小點也是全局極小點3d

半正定矩陣的定義:特徵值大於等於0的實對稱矩陣。htm

半正定矩陣的充要條件:行列式(n階順序主子式)等於0,行列式的i階順序主子式>=0,i從1到n-1blog

凸函數的充要條件:若是f(x)在開凸集S上具備二階連續偏導數,且f(x)的海塞矩陣(二階偏導的矩陣)在S上到處半正定,則f(x)爲S上的凸函數。

 

2 約束優化定義

考慮帶約束的優化問題,能夠描述爲以下形式

 

其中f(x)是目標函數,g(x)爲不等式約束,h(x)爲等式約束。

若f(x),h(x),g(x)三個函數都是線性函數,則該優化問題稱爲線性規劃。若任意一個是非線性函數,則稱爲非線性規劃。

若目標函數爲二次函數,約束全爲線性函數,稱爲二次規劃。

若f(x)爲凸函數,g(x)爲凸函數,h(x)爲線性函數,則該問題稱爲凸優化。注意這裏不等式約束g(x)<=0則要求g(x)爲凸函數,若g(x)>=0則要求g(x)爲凹函數。

凸優化的任一局部極值點也是全局極值點,局部最優也是全局最優。

 

3 等式約束

考慮一個簡單的問題目標函數f(x) = x1 + x2,等式約束$ h(x) = x_1^2 + x_2^2 - 2 $,求解極小值點。

f(x)在二維平面上畫出等高線(contour)就是一條條斜率相同的直線,h(x)=0在二維平面上畫出等高線就是一個圓,以下圖所示。

能夠明顯的看出,在圓圈h(x)的限制下,直線f(x)的最小值爲-2,在左下角直線x1+x2=2和圓的交點上。

 

不考慮圓h(x)的限制時,f(x)要獲得極小值,須要往f(x)的負梯度(降低最快的方向)方向走,以下左圖藍色箭頭。

若是考慮圓h(x)的限制,要獲得極小值,須要沿着圓的切線方向走,以下右圖紅色粗箭頭。注意這裏的方向不是h(x)的梯度,而是正交於h(x)的梯度,h(x)梯度以下右圖的紅色細箭頭。

在極小值點,f(x)和h(x)的等高線是相切的。

 

 

容易發現,在關鍵的極小值點處,f(x)的負梯度和h(x)的梯度在同一直線上,以下圖左下方critical point的藍色和紅色箭頭所示。

注意圖中所示是同向的,可是這裏並不必定是同向,有可能反向(由於等式約束h(x)=0,把h(x)變成-h(x)求解是同樣的,這個時候h(x)的梯度就相反了)

 

由此可知,在極小值點,h(x)和f(x)的梯度在同一線上,有

因此,對於f(x)和h(x)而言,只要知足上面這個式子,同時使得h(x) = 0,解得的x就是咱們要求的極小值點(或極大值點,爲了簡單起見咱們只討論極小值點)

要作到這一點,能夠構造一個拉格朗日函數,對函數令偏導等於0求解,剛好等價於「知足上面這個式子,同時使得h(x) = 0",原問題轉化爲對拉格朗日函數求極值問題,這就是拉格朗日乘子法,以下圖所示(注意一下這個μ的正負變化)。

 

 

特別注意:優化問題是凸優化的話,經過上圖兩個條件求得的解就是極小值(並且是全局極小)。

不是凸優化的話,這兩個條件只是極小值點的必要條件,還須要附加多一個正定的條件才能變成充要條件,以下圖所示。

 

 

4 不等式約束

對於不等式約束g(x)<=0,和等式約束h(x)=0不同,h(x)=0能夠在平面上畫出一條等高線,而g(x)<=0是一個區域,不少個等高線堆疊而成的一塊區域,咱們把這塊區域稱爲可行域。

不等式約束分兩種狀況來討論,第一種是(不考慮可行域限制時的)極小值點落在可行域內(不包含邊界),第二種是(不考慮可行域限制時的)極小值點落在可行域外(包含邊界)。

下面舉兩個例子來解釋這兩種狀況,而後總結兩種狀況給出轉換求解。

 

4.1 極小值點落在可行域內(不包含邊界)

考慮目標函數$ f(x) = x_1^2 + x_2^2 $,不等值約束$g(x) = x_1^2 + x_2^2 - 1$,顯然f(x)的極小值爲原點(0,0),落在可行域內。可行域以原點爲圓心,半徑爲1。

這種狀況約束不起做用,考慮極小值點x*,這個時候,g(x*) < 0,f(x*)的梯度等於0。

 

4.2 極小值點落在可行域外(包含邊界)

考慮目標函數$ f(x) = (x_1 - 1.1)^2 + (x_2 + 1.1)^2 $ ,不等值約束$ g(x) = x_1^2 + x_2^2 - 1 $,顯然f(x)的極小值爲原點(1.1, -1.1),落在可行域外。可行域以原點爲圓心,半徑爲1。

這種狀況約束起做用,要考慮求解f(x)在可行域內的極小值點。

對於f(x)而言要沿着f(x)的負梯度方向走,才能走到極小值點,以下圖的藍色箭頭。

這個時候g(x)的梯度往區域外發散,以下圖紅色箭頭。

顯然,走到極小值點的時候,g(x)的梯度和f(x)的負梯度同向。由於極小值點在邊界上,這個時候g(x)等於0。

 

 

 

4.3 總結

極小值點落在可行域內(不包含邊界):這個時候可行域的限制不起做用,至關於沒有約束,直接f(x)的梯度等於0求解,這個時候g(x極小值點)<0(由於落在可行域內)。

極小值點落在可行域外(包含邊界):可行域的限制起做用,極小值點應該落在可行域邊界上即g(x)=0,相似於等值約束,此時有g(x)的梯度和f(x)的負梯度同向。

 

總結以上兩種狀況,能夠構造拉格朗日函數來轉換求解問題。

對於不等式約束的優化,須要知足三個條件,知足這三個條件的解x*就是極小值點。

這三個條件就是著名的KKT條件,它整合了上面兩種狀況的條件。

特別注意:優化問題是凸優化的話,KKT條件就是極小值點(並且是全局極小)存在的充要條件。

不是凸優化的話,KKT條件只是極小值點的必要條件,不是充分條件,KKT點是駐點,是可能的極值點。也就是說,就算求得的知足KKT條件的點,也不必定是極小值點,只是說極小值點必定知足KKT條件。

 

 

不是凸優化的話,還須要附加多一個正定的條件才能變成充要條件,以下圖所示。

 

5 約束優化總結

拓展一下,對於同時有多個等式約束和多個不等式約束,構造的拉格朗日函數就是在目標函數後面把這些約束相應的加起來,KKT條件也是如此,以下圖所示。

 

6 優化問題的總結

簡單總結一下,考慮凸優化問題。

對於無約束的優化問題,直接令梯度等於0求解。

對於含有等式約束的優化問題,拉格朗日乘子法,構造拉格朗日函數,令偏導爲0求解。

對於含有不等式約束的優化問題,一樣構造拉格朗日函數,利用KKT條件求解。

對於含有約束的優化問題,還能夠轉化爲對偶問題來求解,下篇講述一下拉格朗日對偶性的問題http://www.cnblogs.com/liaohuiqiang/p/7805954.html

 

7 參考資料

瑞典皇家理工學院(KTH)「統計學習基礎」課程的KKT課件:http://www.csc.kth.se/utbildning/kth/kurser/DD3364/Lectures/KKT.pdf

這門「統計學習基礎」的schedule上有一些其它課件:http://www.csc.kth.se/utbildning/kth/kurser/DD3364/Schedule.php

相關文章
相關標籤/搜索