最優化方法課程總結四 -- 約束優化問題之KKT條件原因及推導【深刻!】


回顧

前邊內容主要總結了無約束優化問題的求解步驟,即如何找一個函數的極大值,其中凸函數具備的良好性質保證局部最優解是全局最優解。一般通過最速下降法、牛頓法、共軛梯度法進行求解(針對這些方法的不足也有很多改進)。接下來主要總結在定義域有約束時,函數的優化問題。

約束優化問題

數學模型

優化目標為:\(f(x)\),約束條件為\(g_i(x)≥0, i=1, 2, ..., m\)\(h_j(x)=0, j=1,2,...,l\),定義域為\(x∈R^n\)。可將約束條件轉化為對定義域的約束,這樣該問題可以轉化為在指定集合上尋找函數最優解。

以下對可行域進行討論:

  1. 集合某點的可行方向:從名字中可以看出其含義,這個方向走得通,也就是在這個方向上可以找到步長使得轉移后依然在該集合內。這些方向的集合被稱為可行方向錐(集)有以下表示方法\(D={d|d≠0, x∈cls, 存在\delta>0, 任意\lambda ∈(0, \delta), 有x+\lambda d ∈ S}\)
  2. 函數在某點的下降方向:與之前提到的一樣,函數下降方向即用泰勒公式近似左邊減右邊。其下降方向錐(集)有以下表示方法:\(F_0={d|\triangledown f(x)^T d < 0}\) 下降最快的方向是負梯度方向、

可以證明集合最優性條件,局部最優解處不存在可行且下降的方向(理解:存在就可以繼續走~)【這是最最重要的原則,只要掌握了該思想,利用線性系統擇一性,目前涉及的所有問題都會迎刃而解】

不等式優化問題

首先考慮的是不等式約束,以下述圖為例:如果選擇的可行域的點在內部時,可以取到合適步長保證所有方向均為其可行方向,這時約束並沒有起到作用永遠可以找到方向。如果選擇在邊界上,約束條件才會起作用。
這時局部約束方向錐有以下表示方法 \(G_0={d|\triangledown g_i(x)^Td>0}\)。這是因為\(g(y)=g(x)+\triangledown g(x)(y-x)\),其中g(x)=0【因為現在在約束條件成立的情況下討論即g(x)=0】,要保證新生成的點依然在可行域內就需要\(\triangledown g(x)(y-x)>0\),即為\(G_0\)的表示方法。

所以不等式優化的最優性條件即為\(F_0\)\(G_0\)交集為空集。

請出非常重要的Gordan定理:設A為m×n矩陣,那么\(Ax<0\)有解的充要條件是不存在非零向量\(y≥0\),使得\(A^Ty=0\)
顯而易見,我們只要把上述問題轉化為\(Ax<0\),就可以將其轉化為等式方程組來求解。
根據\(F_0\)\(G_0\)交集為空和他們本身的表示方法可以得到A有以下表示方法,\(x=d\)

\[\begin{pmatrix} \triangledown f(x)^T)\\ -\triangledown g_{i_1}(x)^T)\\ ...\\ -\triangledown g_{i_s}(x)^T)\\ \end{pmatrix} \]

根據上述即可得Fritz John條件:設\(\bar{x}∈S\)\(I={i|g_i(\bar{x})},f(x),g_i(x)(i∈I)\)\(\bar{x}\)處可微,\(g_i(x)(i∉I)\)\(\bar{x}\)處連續,若\(\bar{x}\)是問題的局部最優解,則存在不全為零的數\(w_0,w_i(i∈I)\),使得

\[\left\{\begin{matrix} w_0\triangledown f(\bar{x})-\sum_{i\in I}w_i\triangledown g_i(\bar{x})\\ w_0, w_i\geqslant 0, i\in I \end{matrix}\right. \]

實際上就是將上邊的那個矩陣展開成表達式的形式,上邊只對積極約束做了說明,采用互補松弛條件將非積極約束引入,只要取它們對應的參數為0即可。故由以上的Fritz John條件改良得到下述定理
\(\bar{x}∈S\)\(I={i|g_i(\bar{x})},f(x),g_i(x)(i∈I)\)\(\bar{x}\)處可微,\(g_i(x)(i∉I)\)\(\bar{x}\)處連續,若\(\bar{x}\)是問題的局部最優解,則存在不全為零的數\(w_0,w_i(i∈I)\),使得

\[\left\{\begin{matrix} w_0\triangledown f(\bar{x})-\sum_{i\in I}w_i\triangledown g_i(\bar{x})\\ w_ig_i(\bar{x})=0\\ w_0, w_i\geqslant 0, i\in I \end{matrix}\right. \]

注意實際轉換過程中對符號的描述,只要轉化為\(Ax\leqslant 0\)跟着前邊的符號走就可以了!

所以判斷一個點是不是 Fritz John點的步驟就是找到對應的函數的梯度,把點帶進去看能不能找到不全為零的數使得方程成立。

KKT條件

KKT條件實際上就是對剛剛說的問題進行了一定的限制(也叫作約束規格),加入了{\(\triangledown g_i(\bar{x}|i \in I)\)}線性無關,這樣保證了它們的系數中一定有一個不為0,就可以對\(f(x)\)的系數進行歸一化,得到以下式子\(\triangledown f(\bar{x})-\sum_{i \in I}w_i \triangledown g_i(\bar{x})=0\)。在這一基礎上加上上述Fritz John定理就得到了KKT條件。
在判斷一個點是否是KKT點時,先寫出求導的那個方程,加上原來的約束,加上互補松弛條件就構成了KKT必要條件,進行驗證求解即可。
求解的時候可以利用互補松弛條件逐個分情況計算。

一般約束問題

除了不等式約束外,還可能有等式約束。只要能描述出等式約束的可行移動,就可以結合上述套路再次進行求解。
\(g(x)=0\)刻畫的是一個平面,一般可能是曲面。曲線存在切線,曲面則存在切平面,套用和之前不等式一樣的思路,此時選擇的是{\(d\in r^3|\triangledown h(x)^Td=0\)}
這時候就要引入新的關於線性系統擇一性的定理
引理1:若系統\(Ax<0, Bx=0\)無解,則系統\(A^Ty+B^Tz=0,y\geqslant 0\),且\(y≠0\)\(z≠0\)有解。

同樣道理,寫出自己的A B帶進去就可以得到判斷條件。同樣進行約束規划,又有一個系數可以歸一化。這樣也就得到了傳說中的KKT條件。
拉格朗日函數(lagrange)則可以看做是上邊等式約束的原函數的一部分。並無本質缺別。
具體可見下圖:

所以KKT條件可簡單分為四部分:lagrange函數梯度為0,互補條件,原始可行性,對偶可行性(系數的符號要求)
這樣算出來的KKT點是不是一定是局部最優解呢?
答案是不一定。

不一定的原因在於目標函數值在臨界方向上非增非減,處於一種臨界狀態,不一定能對求解做出貢獻,歸根到底還是信息量的缺失。此時引出了更高維的條件,即二階必要條件。
計算出一個點是KKT點之后還要看看該點處的二階Hesse矩陣是否正定,半正定則可推出局部最優解。若為正定,則是嚴格局部最優解。


免責聲明!

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



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