KKT條件和拉格朗日乘子法詳解


\(\frac{以夢為馬}{晨鳧追風}\)

最優化問題的最優性條件,最優化問題的解的必要條件和充分條件

無約束問題的解的必要條件
\(f(x)\)\(x\)處的梯度向量是0

有約束問題的最優性條件

等式約束問題的必要條件:

一個條件,兩變量

\(min f(x)=f([x]_1,[x]_2)\)
\(s.t. c(x)=c([x]_1,[x]_2)=0\)

則最優解的必要條件如下面式子所示:

\(\triangledown f(x^*)+\alpha^* \triangledown c(x^*)=0\)
\(c(x^*)=0\)

\(\alpha^*\)是常數,即存在一個常數使得約束條件和待優化問題的梯度之和為0
上面就把它當成一個結論吧,具體推導見《數據挖掘中的新方法——支持向量機》

這里的理解是:

\(x滿足c(x_1,x_2)=0\)的條件下去尋找一個\(\mathbf x\)來使得\(f(x)\)最小。其實這個點就是在滿足約束條件\(c(x)=0\)的曲面上。
來這樣理解一下:

這個圖來自上面那本書

\(c(x)\)是曲線,畫出\(f(x)=k\)的等高線,當然了在\(x=4\)的位置兩者相交,但是二者不是相切的,這樣就還能移動x點去尋找更低的點來滿足最小化,其實這里要找的點就是二者相切的點,這樣就能保證最小值,相切的時候,目標函數的梯度肯定正交於約束曲面,此時就有了
\(\triangledown f(x^*)+\alpha^* \triangledown c(x^*)=0\)

更直觀理解一下,圖片自己畫的

上面的\(z\)是待優化的函數,\(c(x_1,x_2)\)是約束的等式條件,注意這里面的\(x_1,x_2\)是在平面上的(聯想圓錐曲線)然后把z的等高線投影到\(x_1,x_2\)平面上,在該平面上的約束條件上面的點就是該x取值的可行域,在這些點里面選取的x使得目標函數最小。當等高線與\(c(x_1,x_2)\)相交時,在等高線內部肯定還有滿足\(z\)更小的\(x_1,x_2\),只有當等高線與\(c(x_1,x_2)\)相切時,等高線內部就沒有了點使得優化函數更小,於是就必須是等高線的梯度方向和約束曲線的方向相同或者一致,這樣才能保證相切,於是就有了式子

\(\triangledown f(x^*)+\alpha^* \triangledown c(x^*)=0\)

引入拉格朗日函數

\(L(x,\alpha)=L([x]_1,[x]_2,\alpha)=f([x]_1,[x]_2)+\alpha c([x]_1,[x]_2)\)

上面的條件就變成:
\(\triangledown_x L(x^*,\alpha^*)=\triangledown f(x^*)+\alpha^* \triangledown c(x^*)=0\)
\(\triangledown_\alpha L(x^*,\alpha^*)=c(x^*)=0\)

推廣到兩個約束條件,三個變量的問題

\(min f(x)=f([x]_1,[x]_2,[x]_3)\)
\(s.t. c_i(x)=c_i([x]_1,[x]_2,[x]_3)=0\)

它的最優解的必要條件是:
\(\triangledown f(x^*)+\alpha^*_1 \triangledown c_1(x^*)+\alpha^*_2 \triangledown c_2(x^*)=0\)
\(c_1(x^*)=0\)
\(c_2(x^*)=0\)

引入拉格朗日函數

\(L(x,\alpha)=L([x]_1,[x]_2,[x]_3,\alpha_1,\alpha_2)=f([x]_1,[x]_2,[x]_3)+\alpha_1 c_1([x]_1,[x]_2,[x]_3)+\alpha_2 c_2([x]_1,[x]_2,[x]_3)\)

於是最優化條件變成:
\(\triangledown_x L(x^*,\alpha^*)=\triangledown f(x^*)+\alpha^*_1 \triangledown c_1(x^*)+\alpha^*_2 \triangledown c_2(x^*)=0\)
\(\triangledown_\alpha L(x^*,\alpha^*)=\mathbf c(x^*)=0\)

然后是多變量,多\(q\)條件約束:
引入拉格朗日函數
\(L(x,\alpha)=L([x]_1,[x]_2,\cdots,[x]_n,\alpha_1,\cdots,\alpha_q)=f([x]_1,[x]_2)+\sum\limits_{i=1}^q\alpha_i c_i([x]_1,[x]_2)=f(x)+\alpha^Tc(x)\)

\(x^* = ([x]_1^*,[x]_2^*,\cdots,[x]_n^*)\)是該問題的局部最優解,且約束函數在\(x^*\)處的梯度向量\(\triangledown c_1(x^*),\cdots,\triangledown c_q(x^*)\)線性無關此時\(x^*\)則存在q維向量:\(\mathbf{\alpha}^*=(\alpha^*_1,\cdots,\alpha^*_q)\)滿足下面條件

\(\triangledown_x L(x^*,\alpha^*)=\triangledown f(x^*)+\sum\limits_{i=1}^{q}\alpha^*_i \triangledown c_i(x^*)=\triangledown f(x^*)+\triangledown \mathbf{c}(x^*)\mathbf{\alpha}^*=0\)
\(\triangledown_\alpha L(x^*,\alpha^*)=\mathbf {c}(x^*)=0\)

其中\(\triangledown \mathbf{c}(x^*)\)是以\(\triangledown c_1(x^*),\cdots,\triangledown c_q(x^*)\)為列的矩陣,注意這里的\(\mathbf{c}(x^*),\mathbf{\alpha}^*\)是向量形式

不等式約束時候的條件

最簡單的不等式約束問題

\(min f(x)=f([x]_1,[x]_2,[x]_3)\)
\(s.t. c_i(x)=c_i([x]_1,[x]_2,[x]_3)\leq0\)

此時的問題類比於上面的等式約束,並引入拉格朗日函數\(L(x,\alpha)=f(x)+\alpha c(x)\)

此時的條件要滿足的是:

\(\triangledown_x L(x^*,\alpha^*)=\triangledown f(x^*)+\alpha^* \triangledown c(x^*)=0\)
\(c(x^*)\leq0\)
\(\alpha^*\geq0\)
\(\alpha^*c(x^*)=0\)

這里最后一個條件是\(\alpha^*c(x^*)=0\),包含是\(\alpha^* = 0\)或者\(c(x^*)=0\)
此時的兩種情況是:當\(x^*\)在約束條件內部的時候,該問題變成了\(f(x)\)的無約束最值問題,此時有

\(\triangledown f(x^*) = 0,\qquad c(x^*) < 0\)

當在約束條件邊緣取值的時候,該問題變成等式的約束問題
\(\triangledown f(x^*)+\triangledown \mathbf{c}(x^*)\mathbf{\alpha}^*=0\)
\(\mathbf {c}(x^*)=0\)
\(\alpha^*\geq 0\)

一般不等式約束問題

引入Lagrange函數
\(L(x,\alpha)=f(x)+\sum\limits_{i=1}^p \alpha_i c_i(x)=f(x)+\mathbf {\alpha}^T\mathbf{c}(x)\)

該約束問題最優解的必要條件就是

\(\triangledown_x L(x^*,\alpha^*)=\triangledown f(x^*)+ \sum\limits_{i=1}^{p} \alpha^*_i\triangledown c_i(x^*)=\triangledown f(x^*)+ \triangledown c(x^*)\mathbf{\alpha}^*=0\)
\(c_i(x^*)\leq0\) \(i=1,\cdots ,p\)
\(\alpha^*_i\geq0\) \(i=1,\cdots ,p\)
\(\alpha_i^*c_i(x^*)=0\) \(i=1,\cdots ,p\)

其中\(\triangledown \mathbf{c}(x^*)\)是一個以\(\triangledown c_1(x^*),\triangledown c_2(x^*),\cdots,\triangledown c_p(x^*)\)列矩陣

綜合上面的結論就導出了下面的KKT條件
KKT條件一般約束問題的必要條件

考慮一般問題:
\(min f(x)\)
\(s.t.c_i(x)\leq0\) \(i=1,\cdots ,p\)
\(c_i(x)=0\) \(i=p+1,\cdots ,p+q\)

優化問題\(f(x),c(x),i=1,\cdots ,p+q\)具有連續一階偏導,\(x^*\)為問題的局部解。若在\(x^*\)處的有效約束梯度\(\triangledown c_i(x^*)\)線性無關,或者所有的約束函數都是線性函數,則存在\(p+q\)維向量\(\alpha^*=(\alpha^*_1,\alpha^*_2,\cdots,\alpha^*_{p+q})\)使得:

\(\triangledown_x L(x^*,\alpha^*)=\triangledown f(x^*)+ \sum\limits_{i=1}^{p+q} \alpha^*_i\triangledown c_i(x^*)=\triangledown f(x^*)+ \triangledown c(x^*)\mathbf{\alpha}^*=0\)
\(c_i(x^*)\leq0\) \(i=1,\cdots ,p\)
\(c_i(x^*)=0\) \(i=p+1,\cdots ,p+q\)
\(\alpha^*_i\geq0\) \(i=1,\cdots ,p\)
\(\alpha_i^*c_i(x^*)=0\) \(i=1,\cdots ,p\)

這里\(\triangledown \mathbf{c}(x^*)\)是一個以\(\triangledown c_1(x^*),\triangledown c_2(x^*),\cdots,\triangledown c_{p+q}(x^*)\)列矩陣即:

\(\triangledown \mathbf{c}(x^*)=(\triangledown c_1(x^*),\triangledown c_2(x^*),\cdots,\triangledown c_{p+q}(x^*))\)

\(p+q\)維向量\(\alpha^*\)稱為KKT乘子向量或者lagerange乘子向量,其分量\(\alpha^*_1,\alpha^*_2,\cdots,\alpha^*_{p+q}\)稱為KKT乘子或者lagrange乘子

當優化問題為凸約束問題的時候上述的KKT條件變為最優解的充要條件

上面的方法就是為了在尋找多元函數在一組約束下的極值優化的方法,通過引入拉格朗日乘子,可以將有d個變量與k個約束條件的最優化問題轉化為具有\(d+k\)個變量的無約束的優化問題進行求解

更為感性的理解這個條件就是:
引入了拉格朗日乘子,描述了在可行域邊上的時候是等式約束的條件這時候用的是拉格朗日乘子法. 在可行域的內部是無約束的條件,或者是不等式約束的條件下變換出了KKT條件。歸根結底的說KKT條件是拉格朗日乘子法的一個泛化

KKT包含了等式邊緣和內部的條件兩種情況


免責聲明!

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



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