【1】引言
前序學習進程中,通過類比力的平衡對KKT條件進行了初步的理解。
今天我們更進一步,常使用數學語言進一步解釋KKT條件。
【2】帶約束的最小優化問題
首先定義一個即將求解的優化問題:
目標函數:最小化f(x)(x∈Rn)f(x)(x\in R^{n})f(x)(x∈Rn)
約束條件:
不等式約束:gi(x)≤0(i=1,2,,...,m)g_{i}(x)\leq0(i=1,2,,...,m)gi?(x)≤0(i=1,2,,...,m),一共m個
等式約束:hj(x)=0(j=1,2,,...,p)h_{j}(x)=0(j=1,2,,...,p)hj?(x)=0(j=1,2,,...,p),一共p個
這個時候就仿照之前的拉格朗日函數構造方法,構造出適用的拉格朗日函數:
L(x,λ,μ)=f(x)+∑i=1mλigi(x)+∑j=1pμjhj(x)L(x,\lambda,\mu)=f(x)+\sum_{i=1}^{m}\lambda_{i}g_{i}(x)+\sum_{j=1}^{p}\mu_{j}h_{j}(x)L(x,λ,μ)=f(x)+i=1∑m?λi?gi?(x)+j=1∑p?μj?hj?(x)
其中:
λi≥0\lambda_{i}\geq0λi?≥0是不等式約束 gi≤0g_{i}\leq0gi?≤0對應的拉格朗日乘子,λi\lambda_{i}λi?嚴格非負;
μj∈R\mu_{j}\in Rμj?∈R是等式約束hj(x)=0h_{j}(x)=0hj?(x)=0對應的拉格朗日乘子,μj\mu_{j}μj?沒有符號限制。
【2.1】局部最優解
如果x?x^{*}x?是上述問題的局部最優解,且滿足約束規范,則存在乘子λ?=(λ1?,...,λm?)\lambda^{*}=(\lambda_{1}^{*},...,\lambda_{m}^{*})λ?=(λ1??,...,λm??)和μ?=(μ1?,...,μp?)\mu^{*}=(\mu_{1}^{*},...,\mu_{p}^{*})μ?=(μ1??,...,μp??),是的以下五個條件同時成立:
【2.1.1】梯度為零條件
拉格朗日函數在x?x^{*}x?處滿足:?xL(x?,λ?,μ?)=0\nabla_{x} L(x^{*},\lambda^{*},\mu^{*})=0?x?L(x?,λ?,μ?)=0
具體展開來后:
?f(x?)+∑i=1mλi??gi(x?)+∑j=1pμj??hj(x?)=0\nabla f(x^{*})+\sum_{i=1}^{m}\lambda_{i}^{*}\nabla g_{i}(x^{*})+\sum_{j=1}^{p}\mu_{j}^{*}\nabla h_{j}(x^{*})=0?f(x?)+i=1∑m?λi???gi?(x?)+j=1∑p?μj???hj?(x?)=0
換句話說,目標函數的梯度與約束梯度的加權和相平衡。
【2.1.2】不等式約束可行性
所有不等式約束在x?x^{*}x?處滿足:gi(x?)≤0(i=1,2,...,m)g_{i}(x^{*})\leq0 (i=1,2,...,m)gi?(x?)≤0(i=1,2,...,m)也就是解必須嚴格落在不等式約束定義的可行域內。
【2.1.3】等式約束可行性
所有等式約束在x?x^{*}x?處滿足:hj(x?)=0(j=1,2,...,p)h_{j}(x^{*})=0 (j=1,2,...,p)hj?(x?)=0(j=1,2,...,p)也就是解必須嚴格落在等式約束定義的曲面上。
【2.1.4】拉格朗日乘子非負性
不等式約束對應的乘子非負:λi?≥0(j=1,2,...,m)\lambda_{i}^{*}\geq0 (j=1,2,...,m)λi??≥0(j=1,2,...,m)
此時解釋起來有一個形象的理解,因為gi≤0g_{i}\leq0gi?≤0嚴格成立,所以λi?≥0\lambda_{i}^{*}\geq0λi??≥0就像在唱反調,gig_{i}gi?也就是解必須嚴格落在等式約束定義的曲面上。
不等式約束gi(x)≤0g_{i}(x)\leq0gi?(x)≤0定義了一個可行域,當最優解x?x^{*}x?落在某個約束的邊界上,此時存在gi(x?)=0g_{i}(x^{*})=0gi?(x?)=0,若xxx稍微偏離x?x^{*}x?且試圖進入gi(x)>0g_{i}(x)>0gi?(x)>0的區域,也就是嘗試進入非可行域,約束就會阻止這種偏離,就像給xxx施加了一個指向可行域內部的“推力”。
目標函數的梯度?f(x?)\nabla f(x^{*})?f(x?)指向f(x)f(x)f(x)增長最快的方向
,對于此處求最小化的目標,我們實際上是希望xxx向??f(x)-\nabla f(x)??f(x)方向移動。如果定義梯度?f(x?)\nabla f(x^{*})?f(x?)是拉力方向,則優化方向是拉力的反方向;
而約束函數gi(x?)g_{i}(x^{*})gi?(x?)的梯度指向gi(x)g_{i}(x)gi?(x)增長最快的方向,實際上指向了非可行域,所以??gi(x?)-\nabla g_{i}(x^{*})??gi?(x?)才是指向可行域,而在λi?≥0\lambda_{i}^{*}\geq0λi??≥0的前提下,可以保障?λi??gi(x?)-\lambda_{i}^{*}\nabla g_{i}(x^{*})?λi???gi?(x?)面向可行域,所以?λi??gi(x?)-\lambda_{i}^{*}\nabla g_{i}(x^{*})?λi???gi?(x?)是推力的方向。
【2.1.5】互補松弛條件
乘子與不等式約束的乘積為零:
λi??gi(x?)=0(i=1,2,...,m)\lambda_{i}^{*}\cdot g_{i}(x^{*})=0 (i=1,2,...,m)λi???gi?(x?)=0(i=1,2,...,m)
實際上有兩種情況:
當約束不起作用,gi(x)≤0g_{i}(x)\leq0gi?(x)≤0,此時必然有乘子為零即λi?=0\lambda _{i}^{*}=0λi??=0
當約束起作用,gi(x)=0g_{i}(x)=0gi?(x)=0,此時必然有乘子大于零即λi?≥0\lambda _{i}^{*}\geq0λi??≥0
【3】總結
從數學的角度重新粗糙解讀了KKT條件。