淺談最優化問題的KKT條件
最近學習了最優化理論,正好學到了機器學習中支持向量機(Support Vector Machine)和最大熵模型(Maximum Entropy Model)中用到的KKT條件(Karush–Kuhn–Tucker conditions).
之前看了一些相關書籍,發現KKT條件的證明不是有些簡略,就是太偏「數學」(對於非數學專業的學生可能看不懂)——不適合非數學專業的同學入門. 因此我通過總結教材、上課筆記和加入一些幫助理解的重要註記(個人認為不「顯然」的內容),寫下這篇文章,供大家學習和交流!
PS:知乎的排版有些亂,望看官們不要介意:)
目錄:
0.什麼是KKT條件
1.等式約束優化問題(Lagrange乘數法)
2.不等式約束優化問題3.總結
0.什麼是KKT條件
本文從本科高數(微積分)中的有條件極值的Lagrange乘數法入手,一步步推導到KKT條件. 但在講述推導過程之前,我想先給出KKT條件:
對於具有等式和不等式約束的一般優化問題
KKT條件給出了判斷是否為最優解的必要條件,即:
1. 等式約束優化問題(Lagrange乘數法)
對於這部分內容,其實本科高數課程中已學過,因此本文直接給出結論,並補充一些我的理解與總結,它能幫助理解不等式約束中的一些內容,具體的推導過程在同濟7版的高數下冊(P.116-118)中已寫的較詳細。
所謂的等式約束優化問題是指
我們令,函數稱為Lagrange函數,參數稱為Lagrange乘子.
再聯立方程組:,
得到的解為可能極值點,由於我們用的是必要條件,具體是否為極值點需根據問題本身的具體情況檢驗. 這個方程組稱為等式約束的極值必要條件.
上式我們對個和個分別求偏導,回想一下在無約束優化問題中,我們根據極值的必要條件,分別令,求出可能的極值點. 因此可以聯想到:等式約束下的Lagrange乘數法引入了個Lagrange乘子,或許我們可以把也看作優化變數(就叫做優化變數). 相當於將優化變數個數增加到個,與一視同仁,均為優化變數,均對它們求偏導.
2. 不等式約束優化問題
以上我們討論了等式約束的情形,接下來我們來介紹不等式約束的優化問題.我們先給出其主要思想:轉化的思想——將不等式約束條件變成等式約束條件.具體做法:引入鬆弛變數.鬆弛變數也是優化變數,也需要一視同仁求偏導.
具體而言,我們先看一個一元函數的例子:(註:優化問題中,我們必須求得一個確定的值,因此不妨令所有的不等式均取到等號,即的情況.)
對於約束和,我們分別引入兩個鬆弛變數和,得到和.注意,這裡直接加上平方項、而非、,是因為和這兩個不等式的左邊必須加上一個正數才能使不等式變為等式.若只加上和,又會引入新的約束和,這不符合我們的意願.
由此我們將不等式約束轉化為了等式約束,並得到Lagrange函數
我們再按照等式約束優化問題(極值必要條件)對其求解,聯立方程
(註:這裡的,先承認,我們待會再解釋!(先上車再買票,手動斜眼)實際上對於不等式約束前的乘子,我們要求其大於等於0)得出方程組後,便開始動手解它. 看到第3行的兩式和比較簡單,我們就從它們入手吧~
對於,我們有兩種情況:
情形1:
此時由於乘子,因此與其相乘為零,可以理解為約束不起作用,且有.
情形2:
此時且 ,可以理解為約束起作用,且有.
合併情形1和情形2得:,且在約束起作用時,;約束不起作用時,.
同樣地,分析,可得出約束起作用和不起作用的情形,並分析得到.
由此,方程組(極值必要條件)轉化為
這是一元一次的情形.類似地,對於多元多次不等式約束問題
我們有
上式便稱為不等式約束優化問題的KKT(Karush-Kuhn-Tucker)條件.稱為KKT乘子,且約束起作用時,;約束不起作用時,.
別急,還木有完,我們還剩最後一個問題沒有解決:為什麼KKT乘子必須大於等於零——我將用幾何性質來解釋.
由於
用梯度表示:,為起作用約束的集合.
移項:
注意到梯度為向量. 上式表示在約束極小值點處,函數的負梯度一定可以表示成:所有起作用約束在該點的梯度(等值線的法向量)的線性組合.(複習課本中梯度的性質:某點梯度的方向就是函數等值線在這點的法線方向,等值線就是地理的等高線)
為方便作圖,假設現在只有兩個起作用約束,我們作出圖形如下圖.注意我們上面推導過,約束起作用時,所以此時約束在幾何上應該是一簇約束平面.我們假設在取得極小值點,若同時滿足和,則一定在這兩個平面的交線上,且,即、和共面.
下圖是在點處沿面的截面,過點作目標函數的負梯度,它垂直於目標函數的等值線(高數課本:一點的梯度與等值線相互垂直),且指向目標函數的最速減小方向.再作約束函數和的梯度和,它們分別垂直 和兩曲面在的切平面,並形成一個錐形夾角區域.此時,可能有a、b兩種情形:
我們先來看情形b:若3個向量的位置關係如b所示,即落在和所形成的錐角區外的一側. 此時,作等值面在點的切平面(它與垂直),我們發現:沿著與負梯度 成銳角的方向移動(如下圖紅色箭頭方向),只要在紅色區域取值,目標函數總能減小.而紅色區域是可行域(,C取不同的常數能得到不同的等值線,因此能取到紅色區域),因此既可減小目標函數值,又不破壞約束條件. 這說明仍可沿約束曲面移動而不破壞約束條件,且目標函數值還能夠減小.所以不是穩定的最優點,即不是局部極值點.反過頭來看情形a:落在和形成的錐角內. 此時,同樣作在點與垂直的切平面. 當從出發沿著與負梯度成銳角的方向移動時,雖然能使目標函數值減小,但此時任何一點都不在可行區域內. 顯然,此時就是局部最優點,再做任何移動都將破壞約束條件,故它是穩定點.
由於和、在一個平面內,所以前者可看成是後兩者的線性組合. 又由上面的幾何分析知,在和的夾角之間,所以線性組合的係數為正,有
,且,.
這就是的原因. 類似地,當有多個不等式約束同時起作用時,要求處於形成的超角錐(高維圖形,我姑且稱之為「超」)之內.
3.總結:同時包含等式和不等式約束的一般優化問題
KKT條件(是最優解的必要條件)為
注意,對於等式約束的Lagrange乘子,並沒有非負的要求!以後求其極值點,不必再引入鬆弛變數,直接使用KKT條件判斷!
這樣,我們就推導完了KKT條件。各位看官可以自己分別羅列並比較一下:無約束優化、等式約束優化和等式+不等式約束優化條件下某點為局部最優解(極值點)的必要條件。
如果對於Lagrange對偶性感興趣的同學,可以進一步地研究下去,這樣才能較深入地掌握SVM,本人也在學習中,歡迎交流~
推薦閱讀:
※為什麼svm不會過擬合?
※想研究下SVM,有什麼好的文章或者經驗之談可以分享下不?
※SVM中,高斯核為什麼會把原始維度映射到無窮多維?
※KNN 與 SVM 的區別是什麼?