一文理解拉格朗日對偶和KKT條件

夏天的風發表於2018-09-09

一. 最優化問題求解

1. 等式約束的極值求法

$$
egin{gather*}
underset{t}{min} f(t) ; s.t.; h_i(t)=0,i=1,cdots,p
end{gather*}
$$

目標函式: $f(t)$, 引入Lagrange運算元:$L(t,eta) = f(t) + sum_{i=1}^neta_ih_i(t)$

2. 不等式約束的極值求法

$$
egin{gather*}
underset{t}{min}f(t) ; s.t. &g_i(t) le 0, i=1,cdots,p \
&h_j(t) = 0, j=1, cdots, q
end{gather*}
$$

目標函式: $f(t)$
約束條件:

  • $g_i(t) le 0, i=1, cdots, p$
  • $h_j(t) le 0, j=1, cdots, q$

很多情況, 不等式約束條件可引入新變數轉化為等式約束條件, 故上述問題可簡化為:

$$
underset{t}{min}f(t);s.t.; g_i(t) = 0, i=1, cdots, n
$$

3. 最優化問題分類

根據約束條件和目標函式的型別分為3類:

  1. 線性規劃: 目標函式和約束條件都為變數的線性函式
  2. 二次規劃: 目標函式為變數的二次函式, 約束條件為線性函式
  3. 非線性規劃: 目標函式或者約束條件是非線性函式

4. KKT條件廣義定義

KKT條件指在滿足某些規則條件下, 非線性規劃問題能有最優解的充要條件, 是廣義拉格朗日乘數的重要成果
一般優化問題(含等式和不等式約束約束):

$$
egin{gather*}
underset{t}{min}f(t) ; s.t. &g_i(t) le 0, i=1,cdots,p \
&h_j(t) = 0, j=1, cdots, q
end{gather*}
$$

引入Lagrange運算元$alpha, eta$:

$$
L(t, alpha, eta) = f(t) + sum_{i=1}^palpha_i g_i(t) + sum_{j=1}^qeta_j h_j(t)
$$

可將$alpha和eta$分別看做兩個約束$g_i(t) le 0和g_j(t) 0$的限制條件

KKT條件指上述問題的最優點$x^*$必須滿足:
(1) 約束條件滿足: $g_i(x^*) le0, h_i(x^*)=0$
(2) $
abla L(t,alpha,eta)|_{t=x^*} =
abla f(x^*) + sum_{i=1}^palpha_i
abla g_i(x^*) + sum_{j=1}^q eta_j
abla h_j(x^*) = 0$
即,
最優點$x^*$處, $
abla f$必須是$
abla g_i$和$
abla h_j$的線性組合
引入拉格朗日運算元可以求出極值的原因:

由於$f(t)$的$dt$變化方向受其他不等式的約束, 且在極值$x^*$處,$f(t$)的梯度$
abla f(x^*)$與$
abla g(x^*)$,$
abla h(x^*)$之間存線上性關係, 故引入拉格朗日運算元可以求出極值

(3) $eta_j
e 0$且$alpha_i ge 0,; alpha_i g_i(x^*) = 0$

不等式$g_i(t)le0$的限制條件有方向性, 故$alpha_i ge 0$, 等式$h_j(t)=0$的限制條件無方向性, 故$eta_j$無符號限制

5 為什麼SVM用Lagrange duality來解決最大化間隔問題?

不等式約束一直是優化問題中的難題,求解對偶問題可以將支援向量機原問題約束中的不等式約束轉化為等式約束;

支援向量機中用到了高維對映,但是對映函式的具體形式幾乎完全不可確定,而求解對偶問題之後,可以使用核函式來解決這個問題。

並不一定要用拉格朗日對偶。要注意用拉格朗日對偶並沒有改變最優解,而是改變了演算法複雜度:
在原問題下,求解演算法的複雜度與樣本維度(等於權值w的維度)有關;
而在對偶問題下,求解演算法的複雜度與樣本數量(等於拉格朗日運算元a的數量)有關。

因此,

  1. 如果你是做線性分類,且樣本維度低於樣本數量的話,在原問題下求解就好了,Liblinear之類的線性SVM預設都是這樣做的;
  2. 如果你是做非線性分類,那就會涉及到升維(比如使用高斯核做核函式,其實是將樣本升到無窮維),升維後的樣本維度往往會遠大於樣本數量,此時顯然在對偶問題下求解會更好。

這樣:

  • 就可以由求特徵向量w轉化為求比例係數a,
  • 就可以匯出含有內積形式的目標函式,
  • 就可以實現對內積後的gram矩陣使用核函式,以達到非線性分類的目的。

支援向量機實現非線性的方法的數學本質是升維,升維升到無窮維則無法表達w, 所以還是使用拉格朗日對偶方法更好一點。準確的說,可以用一些優化演算法直接求最小間距,但是,升維的時候核要是正定的,且升維可數,而且不是很大的時候可以用。

二. 拉格朗日對偶和KKT

1. 帶約束的優化問題

任意一個帶約束的優化均可寫成:

$$
egin{gather*}
underset{x}{min}{f_0(x)};s.t. &f_i(x) le 0, i= 1,cdots,m \
&h_i(x)=0,i=1,cdots,p
end{gather*}
$$

  • 對於任意$f_i(x) le 0$均有$h_i(x)=0$.
  • 一個$maxf(x)$問題可以轉化為$1-maxf(x)$
  • 假定$f_0,f_1,cdots,f_m$為凸函式,$h_1,h_2,cdots,h_p$是仿射函式(形如$Ax+b$),則上述問題為凸優化問題, 凸優化問題極值唯一

2. primal problem

將上述帶約束的優化問題轉化為無約束優化問題, 定義拉格朗日(Lagrangian)函式如下:

$$
L(x,lambda,v) = f_0(x) + sum_{i=1}^mlambda_if_i(x) + sum_{i=1}^pv_ih_i(x)
$$

最大化Lagrangian, 令

$$
z(x) = underset{lambda ge 0,v}{max}L(x,lambda,v)
$$

z(x)滿足原始約束條件的x, 其值等於$f_0(x)$:
滿足初始約束, 則$h_i(x)=0$, 拉格朗日函式第三項被消去:
$$L(x,lambda,v)=f_0(x) + sum_{i=1}^mlambda_if_i(x) $$
又因為$lambda_if_i(x)le0$, 所以$L(x,lambda,v)$的最大值在$f_0(x)$處取得.

所以原始帶約束優化問題等價於以下無約束優化問題:

$$
egin{gather*}
min{f_0(x)};s.t. &f_i(x) le 0, i= 1,cdots,m \
&h_i(x)=0,i=1,cdots,p
end{gather*}
$$

等價於:

$$
underset{x}{min}z(x) = underset{x}{min} ;underset{lambda ge0,v}{max}L(x,lambda,v)
$$

上述問題稱為primal problem
總結:

  1. 一個帶約束的優化問題均可用$minf_0(x)$表示
  2. 用拉格朗日函式將帶約束優化轉為無約束優化問題
  3. 初始約束條件總可寫成$f_i(x)le0$的形式, 且拉格朗日運算元$lambda_ige0$, 所以$maxL(x,lambda,v)$可去掉約束條件:

去約束:
$f_0(x);cdots s.t. ; f_i(x)ge0 ,;h_i(x)=0 cong underset{lambdage0,v}{max}L(x,lambda,v)$
最優化:
$underset{x}{min}f_0(x) cong underset{x}{min} ; underset{lambdage0,v}{max}L(x,lambda,v)$

3. dual problem

dual problem 只是將primal proble調換了min和max位置:

$$
underset{lambda ge0,v}{max} ;underset{x}{min}L(x,lambda,v)
$$

注意上式和$$
underset{x}{min} ;underset{lambda ge0,v}{max}L(x,lambda,v)
$$並不等價.
令:

$$
g(lambda,v) = underset{x}{min}L(x,lambda,v)
$$

上式中$g(lambda,v)$為拉格朗日對偶函式(Lagrange dual function), $g(lambda,v)$是primal function的一個下界.
即, 若將primal proble的最小值記為$p^*$, 則對於所有的$lambda ge 0和v$, 有:

$$
g(lambda,v) le p^*
$$

證明:
對所有滿足約束條件的x, 總有:

$$
sum_{i=1}^mlambda_i f_i(x) + sum_{i=1}^pv_ih_i(x) le 0
$$

因此

$$
L(x,lambda,v) = f_0(x)+sum_{i=1}^mlambda_i f_i(x) + sum_{i=1}^pv_ih_i(x) le f_0(x)
$$

假設$L(x,lambda,v)$在$x^*$處取得極值, 則
$$minf_0(x) = f_0(x^*)$$
代入上式:

$$
L(x^*,lambda,v) = f_0(x^*)+sum_{i=1}^mlambda_i f_i(x^*) + sum_{i=1}^pv_ih_i(x^*) le f_0(x^*) = p^*
$$

於是

$$
g(lambda,v) = underset{x}{min}L(x,lambda,v) le L(x^*,lambda,v) le f_0(x^*) = p*
$$

這樣, $g(lambda,v)$的下界是$p^*$,於是:

$$
underset{lambda ge0,v}{max}g(lambda,v)
$$

是primal problem的最大下界!
記dual problem 的最優值為$d^*$, 得到:

$$
d^* le p^*
$$

該性質稱為weak duality, 對所有的優化問題都成立.
此外,
$$p^*-d^*$$稱為duality gap.

基於weak duality的重要結論:

無論 primal problem 是什麼形式,dual problem 總是一個 convex optimization 的問題——它的極值是唯一的(如果存在的話). 對於那些難以求解的 primal problem (甚至可以是 NP 問題),我們可以通過找出它的 dual problem ,通過優化這個 dual problem 來得到原始問題的一個下界估計。


$$d^* = p^*$$成立時,稱為strong duality.

strong duality 成立的情況下,我們可以通過求解 dual problem 來優化 primal problem, 例如SVM 的時候我們直接假定了 strong duality 的成立.

4. KKT條件

4.1 slater條件

嚴格滿足約束條件的點x, 指$f_i(x)le0$嚴格到$f_i(x)<0$, 即存在x滿足:

$$
f_i(x) <0;i=1,cdots,m\
h_i(x)=0;i=1,cdots,p
$$

4.2 strong duality

原始問題是convex且滿足slater條件,則strong duality成立: $d^*=p^*$
特例: 對某些非convex optimization,strong duality也成立

4.3 SVM中的strong duality

  • SVM是一種convex optimization, SVM中通過QP(quadratic programming凸二次規劃)求解, QP是凸優化問題的特殊情況
  • slater條件在SVM中等價於存在超平面能將資料分隔開來

4.4 strong duality成立時的性質

  1. 回顧primal problem和dual problem

primal problem: $underset{x}{min};underset{lambda ge 0,v}{max}L(x,lambda,v)$
dual problem: $underset{lambda ge 0,v}{max};underset{x}{min}L(x,lambda,v)$

  1. dual problem極值$d^*$在$(lambda^*,v^*)$處取得, primal problem極值$p^*$在$x^*$處取得
  2. strong duality成立, 則$d^*=p^*$, duality gap為0
  3. $f_0(x^*)le f_0(x^*)$成立:

$$
egin{align*}
f_0(x^*) &=g(lambda^*,v^*) \
&=underset{x}{min}
left(
f_0(x)+sum_{i=1}^mlambda_i^*f_i(x)+sum_{i=1}^pv_i^*h_i(x)

ight) \
&le f_0(x^*)+sum_{i=1}^mlambda_i^*f_i(x^*)+sum_{i=1}^pv_i^*h_i(x^*) \
&le f_0(x^*)
end{align*}
$$

$$
f_0(x^*) le f_0(x) + sum_{i=1}^mlambda_if_i(x) + sum_{i=1}^pv_ih_i(x)
$$

得:

$$
f_0(x^*) le L(x^*,lambda^*,v^*)
$$

所以$x^*$是$L(x,lambda^*,v^*)$的一個極值點, 所以:

$$

abla f_0(x^*) + sum_{i=1}^mlambda_i^*
abla f_i(x^*) + sum_{i=1}^pv_i^*
abla h_i(x^*)=0 ;(條件1)
$$

又由

$$
f_0(x^*) le f_0(x^*)+sum_{i=1}^mlambda_i^*f_i(x^*)+sum_{i=1}^pv_i^*h_i(x^*)
$$

得:

$$
lambda_i^*f_i(x^*) le 0
$$

故極值點$x^*$處:

$$
lambda_i^*f_i(x^*)=0,;i=1,cdots,m;(條件2)
$$

條件(1)(2)合起來稱為complementary slackness.

4.5 complementary slacknes條件分析

條件(2)中若$lambda_i^*>0$必有$f_i(x^*)=0$, 反之, 若$f_i(x^*)<0$可得$lambda_i^*=0$, 此條件在SVM中用來證明非支援向量$f_i(x^*)<0$對應的係數$alpha_i$

4.6 引入KKT條件

complementary slacknes加上其他約束條件即為KKT條件:

$$
egin{align*}

abla f_0(x^*) + sum_{i=1}^mlambda_i^*
abla f_i(x^*) + sum_{i=1}^pv_i^*
abla h_i(x^*)&=0 &(條件1) \
lambda_i^*f_i(x^*)&=0,; i=1,cdots,m&(條件2) \
f_i(x^*) &le 0,; i=1,cdots,m&(條件3) \
lambda_i^* &ge0,;i=1,cdots,m&(條件4) \
h_i(x^*) &= 0,; i=1,cdots,p&(條件5)
end{align*}
$$

  • 任何滿足strong duality的問題都滿足KKT條件
  • primal problem是convex optimization problem是, KKT升級為充要條件, 通過KKT條件可求得$x^*$,$(lambda^*,v^*)$分別是primal problem和dual problem的極值點,且strong duality成立

總結

通過dual problem可求primal problem的解:

  1. 只有weak duality成立時, 至少可得到一個(primal problem的)下界
  2. strong duality成立,則直接求解dual problem
    dual problem可能比primal problem更易求解
    dual problem可能有一些優良的結構(SVM通過dual problem將問題轉化為內積以使用kernel trick)
  3. 迭代求解中, 會同事求解dual和primal problem, 通過duality gap來early stopping

相關文章