KKT條件


KKT(Karush-Kuhn-Tucker)條件有時也稱KT條件,最初發現此定理的是Kuhn,Tucker兩人,后來發現Karush在1939年的一篇文章中已經有過這個定理表述,所以常以取三人名字命名為KKT條件。不帶約束的非線性規划問題可以用梯度法、模式搜索法獲得最優解,帶約束的線性規划可以通過單純形法解決,KKT條件解決的是帶有約束、非線性規划最優解問題,根據約束形式可分為等式和不等式或兩種情況混合的情形,針對這三種情形,KKT條件給出了通用的公式化解決方案,滿足KKT條件的點稱為K-T點,K-T點同時也是非線性規划的最優解。KKT在非線性規划、神經網絡、對偶定理中都有重要的應用,KKT是機器學習中必須掌握的知識點。

一、約束條件為等式

    約束條件是等式情形在介紹函數梯度與隱函數說明過,利用拉格朗日乘法可獲得此時的最值,具體推導過程可看本站歷史文章。簡單回顧一下,滿足多個等式的圖像是空間的一條'曲線',或者說滿足所有等式約束條件的可行區是空間的一條'曲線'。'曲線'上任意一點的切線正交於所有約束函數在該點的梯度,當目標函數在這條'曲線'有最優解時,目標函數的在最值點處的梯度,也正交於曲線在最值點的切線(可由最值點處目標函數偏導數都為0推導出),因此可以得到一個結論:約束函數和目標函數的梯度都正交於'曲線'最值點的切線,所以目標函數在最值點的梯度可用約束函數梯度線性表示。如下圖,目標函數f的梯度▽f與等式約束g1、g2的梯度▽g1、▽g2在一個平面上,這個平面的法平面是該點的切線。

有條件極值.jpg

約束為等式時,KKT條件表述如下:

拉格朗日條件.png

這里需要注意兩點:

1、上面的表述中正交兩個字打了黑體加粗,正交與垂直兩者有區別,兩個向量垂直代表相互夾角是90度,而正交含義是內積為0,比如任何向量和零向量的內積都是0,這是正交的情形但並不垂直。

2、曲線兩個字都打了引號,代表這里的曲線是一個抽象的空間幾何概念,要與平常認知的曲線區別開。比如兩個平面h1(x,y)=x-y-2和h2(x,y)=-5x-y+1是三維空間平面,而當h1(x,y)=0和h2(x,y)=0時,x-y-2=0和-5x-y+1=0是二維空間兩條直線,如下圖:

等式約束.png

這兩條直線在二維空間相交於點P,點P就是上面表述'曲線'的一種,點P的切線是一個零向量,h1(x,y)和h2(x,y)梯度▽h1、▽h2是二維空間兩個向量,而▽h1、▽h2與零向量內積必定為0,代表梯度正交於切線。

二、約束條件為不等式

2.1 幾何角度

    帶有不等式的非線性規划問題可以用下面形式表達:

不等式約束.png

不等式方程組gi(x)>=0所圍成區域為目標函數的可行區,由於gi(x)有可能是非線性函數,此時可行區不能確保是凸集,即使是凸集,該凸集有可能有無數個極點,此時不能像單純形法那樣迭代每個極點獲得最值,可行區與目標函數的定義域位置關系可以分為兩種情形。

情形一:目標函數的全局最小點在可行區內,如下圖:

全局一.jpg

紅色圓點代表目標函數的等值線,點狀空間代表了不等式約束設定的可行區,這種情形直接用梯度法求解目標函數即可獲得最值,約束條件不起到任何作用,KKT條件不是專門針對這種情形。

情形二:目標函數的全局最值點在可行區外,此時只能求得目標函數在約束條件下的局部最值點,如下圖所示:

拉格朗日乘法.jpg

觀察圖像可以發現,目標函數等值線與約束邊界相切時得到最值點,邊界函數為gi(x)=0,與等式約束條件一樣,此處目標函數的梯度與邊界函數gi(x)梯度有如下關系:

222.jpg

不等式2.gif

f函數梯度指向函數增大方向,即指向可行區內;而在可行區內約束函數gi(x)<=0,gi(x)的梯度應指向可行區域外,所以f函數梯度與約束函數gi(x)梯度方向正好是相反的;如果不等式約束是x+y>=-2,則兩個梯度是同一個方向。這里演示的是等值線與眾多約束中一個條件邊界相切情形,有時目標函數與可行區相交於一點,該點是多個約束邊界的交點,如下圖所示:

圖二jpg.jpg

上圖紅色點代表最值點,它是g1(x)≦0、g2(x)≦0兩個約束條件邊界的交點,由於最值必定出現在邊界上,所以不等式約束情形可以轉化為等式約束的情形,有拉格朗日乘數法表達式:

不等式3.gif     ②

從之前約束條件為等式分析可以知道,上面公式代表了n個等式(x ∈ Rn),而我們目標是求出n+m個變量,即變量x1,x2,x3..xn;μ1,μ2,..μm,目前方程組的方程只有n個,這顯然是解不出來的。看一下最值點所在的位置,將紅色最值點標記為x*,我們把約束分為兩類,一類不等式約束其邊界不是最值點所在曲線,如上圖的邊界g3(x),將最值點x*帶入后恆有g3(x*)>0,最終的最值點相對於g3(x)>=0這個約束,可以自由移動一段距離都不會違反這個約束,換言之g3(x)>=0這個不等式相對於最值點沒有起到任何約束作用,這時g3(x*)對應的梯度系數μ3可設為0;另一類不等式邊界是最值點所在曲線,如上面的g1(x),g2(x),這類約束對應的梯度系數大於0,但本身是邊界函數,函數本身值為0。綜上所述,對於所有的不等式,無論最終是否起到約束作用,都有以下等式:

μigi(x)=0       ③

公式3也稱為互補松弛條件,得到這m個等式松弛條件后聯合公式(2)即可解出所有的變量,從而得到最值。不等式約束非線性規划問題中,具體到每一個不等式是否起到約束作用,是根據最值點位置來確定的,通過引入互補松弛條件本質是一種待定系數法。

2.2  代數角度

    上面從幾何角度說明了約束為不等式的情形,幾何方法形象生動,帶來弊端是不嚴謹,接下來通過代數方法歸納KKT條件,首先引入Gordan定理:

Gordan定理:設A是m*n矩陣,則Ax<0有解的充要條件是ATy=0,y>=0無解。

Gordan定理的充分性和必要性都可以通過反證法證明,這里不詳細介紹證明過程,Gordan定理是充要性的描述,所以也可以反過來描述:

設A是m*n矩陣,則Ax<0無解的充要條件是ATy=0,y>=0有解。

    針對開始非線性規划問題:

不等式約束.png

設有最值點x*,則點x*沿着方向d延伸一端距離后,如果要求仍然還在可行區內,對方向d是有要求的,從之前分析可知,最值點一定出現在邊界上,而邊界函數值等於0,利用微分知識可以寫出這個條件:可行方向.gif,即必須確保最值點沿d方向是遞增的,這樣才能確保gi(x)>0從而滿足約束條件,為了和Gordan定理形式相同,把這個條件改寫為:

1222.gif       ④

余下文章請轉至鏈接:KKT條件


免責聲明!

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



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