本文承接上一篇 約束優化方法之拉格朗日乘子法與KKT條件,將詳解一些拉格朗日對偶的內容。都是一些在優化理論中比較簡單的問題或者一些特例,復雜的沒見過,但是簡單的剛接觸都感覺如洪水猛獸一般,所以當真是學海無涯。
在優化理論中,目標函數 $f(x)$ 會有多種形式:如果目標函數和約束條件都為變量 $x$ 的線性函數, 稱該問題為線性規划; 如果目標函數為二次函數, 約束條件為線性函數, 稱該最優化問題為二次規划; 如果目標函數或者約束條件均為非線性函數, 稱該最優化問題為非線性規划。每個線性規划問題都有一個與之對應的對偶問題,對偶問題有非常良好的性質,以下列舉幾個:
- 對偶問題的對偶是原問題;
- 無論原始問題是否是凸的,對偶問題都是凸優化問題;
- 對偶問題可以給出原始問題一個下界;
- 當滿足一定條件時,原始問題與對偶問題的解是完全等價的;
比如下邊這個例子,雖然原始問題非凸,但是對偶問題是凸的:
\begin{aligned}
&\min_x \ \left ( x^4-50x^2+100x \right ) \\
&\ s.t.\ \ \ x \ge 4.5
\end{aligned}
原始問題
開始步入正題,首先給出不等式約束優化問題:
\begin{aligned}
&\min_x \ f(x) \\
&s.t. \ \ \ h_i(x) = 0 , \ i = 1,2,...,m \ \\
& \ \ \ \ \ \ \ \ \ \ g_j(x) \le 0, \ j = 1,2,...,n
\end{aligned}
定義 Lagrangian 如下:
\[ L(x,\alpha,\beta) =f(x) + \sum_{i=1}^m \alpha_i h_i(x) + \sum_{j=1}^n\beta_jg_j(x) \]
根據以上 Lagrangian 便可以得到一個重要結論:
\[ f(x) =\max_{\alpha \beta; \beta_i\ge 0} L(x,\alpha,\beta) > L(x,\alpha,\beta) \tag{*}\]
(*) 式很容易驗證,因為滿足約束條件的 $x$ 會使得 $h_i(x)=0$ ,因此第二項消掉了;而 $g_j(x) \le 0$ ,並且使得 $\beta_j \ge 0$,因此會有 $\beta_j g_j(x) \le 0$ ,所以最大值只能在它們都取零的時候得到,這個時候就只剩下 $f(x)$ 了。反之如果有任意一個約束條件不滿足,則只需令其相應的乘子 $\rightarrow +\infty$ ,則會得到 $L(x,\alpha,\beta) \rightarrow +\infty $,這樣將導致問題無解,因此必須滿足約束條件。經過這樣一轉變,約束都融合到了一起而得到如下的無約束的優化目標:
\[\min_x f(x) = \min_x \max_{\alpha,\beta; \beta_i\ge 0} L(x,\alpha,\beta) \]
對偶問題
上式與原優化目標等價,將之稱作原始問題 , 將原始問題的解記做 $p^*$,如此便把帶約束問題轉化為了無約束的原始問題,其實只是一個形式上的重寫,方便找到其對應的對偶問題,首先為對偶問題定義一個對偶函數(dual function) :
\[ D(\alpha,\beta) = \min_x L(x,\alpha,\beta) \]
有了對偶函數就可給出對偶問題了,與原始問題的形式非常類似,只是把 min 和 max 交換了一下:
\[\max_{\alpha ,\beta; \beta_i\ge 0} \min_x L(x,\alpha,\beta) \]
然后定義對偶問題的最優解即關於 $\alpha \ \beta$ 的函數:
\[ d^* = \max_{\alpha,\beta; \beta_i\ge 0} D(\alpha,\beta)\]
對偶問題和原始問題的最優解並不相等,而是滿足的如下關系:
\[d^* \le p^* \]
直觀地,可以理解為最小的里最大的那個要比最大的中最小的那個要大。具體的證明過程如下:
證明在這里,首先這里的約束要全部滿足,對偶問題與原始問題的關系如下:
\[ D(\alpha,\beta) =\min_x L(x,\alpha,\beta) \le L(x,\alpha,\beta) \le \max_{\alpha,\beta,\beta_i \ge 0}L(x,\alpha,\beta) =f(x)\]
即 $D(\alpha,\beta) \le f(x)$,所以自然而然可得:
\[d^*= \max_{\alpha,\beta;\beta_i \ge 0} D(\alpha,\beta) \le \min_x f(x) =p^* \]
即現在通過對偶性,為原始問題引入一個下界,$d^* \le p^*$ .
這個性質便叫做弱對偶性(weak duality),對於所有優化問題都成立,即使原始問題非凸。這里還有兩個概念: $f(x) – D(\alpha,\beta)$ 叫做對偶間隔(duality gap), $p^* –d^*$ 叫做最優對偶間隔(optimal duality gap)。
之前提過無論原始問題是什么形式,對偶問題總是一個凸優化的問題,這樣對於那些難以求解的原始問題 (甚至是 NP 問題),均可以通過轉化為偶問題,通過優化這個對偶問題來得到原始問題的一個下界, 與弱對偶性相對應的有一個強對偶性(strong duality) ,強對偶即滿足:
\[d^* = p^*\]
強對偶是一個非常好的性質,因為在強對偶成立的情況下,可以通過求解對偶問題來得到原始問題的解,在 SVM 中就是這樣做的。當然並不是所有的對偶問題都滿足強對偶性 ,在 SVM 中是直接假定了強對偶性的成立,其實只要滿足一些條件,強對偶性是成立的,比如說 Slater 條件與KKT條件。
Slater 條件
若原始問題為凸優化問題,且存在嚴格滿足約束條件的點 $x$ ,這里的“嚴格”是指 $g_i(x)≤0$ 中的“$\le$”嚴格取到“$<$”,即存在 $x$ 滿足 $g_i(x)<0$ ,$i = 1,2,…,n$ ,則存在 $x^*,\alpha^* ,\beta^*$ 使得 $x^*$ 是原始問題的解, $\alpha^* ,\beta^*$ 是對偶問題的解,且滿足:
\[p^* = d^* = L(x^*,\alpha^* ,\beta^*)\]
也就是說如果原始問題是凸優化問題並且滿足 Slater 條件的話,那么強對偶性成立。需要注意的是,這里只是指出了強對偶成立的一種情況,並不是唯一的情況。例如,對於某些非凸優化的問題,強對偶也成立。SVM 中的原始問題 是一個凸優化問題(二次規划也屬於凸優化問題),Slater 條件在 SVM 中指的是存在一個超平面可將數據分隔開,即數據是線性可分的。當數據不可分時,強對偶是不成立的,這個時候尋找分隔平面這個問題本身也就是沒有意義了,所以對於不可分的情況預先加個 kernel 就可以了。
KKT條件
假設 $x^*$ 與 $\alpha^*,\beta^*$ 分別是原始問題(並不一定是凸的)和對偶問題的最優解,且滿足強對偶性,則相應的極值的關系滿足:
\begin{aligned}
f(x^*) &= d^* = p^* =D(\alpha^*,\beta^*) \\
&=\min_x f(x)+ \sum_{i = 1}^m \alpha_i^*h_i(x) + \sum_{j=1}^n\beta_j^*g_j(x) \\
& \le f(x^*)+ \sum_{i = 1}^m \alpha_i^*h_i(x^*) + \sum_{j=1}^n\beta_j^*g_j(x^*) \\
&\le f(x^*)
\end{aligned}
這里第一個不等式成立是因為 $x^*$ 為 $L(x,\alpha^*,\beta^*)$ 的一個極大值點,最后一個不等式成立是因為 $h_i(x^*) = 0$ ,且 $g_j(x^*) \le 0 ,\beta_j \ge 0$,($\beta_j \ge 0$ 是之前 (*) 式的約束條件)因此這一系列的式子里的不等號全部都可以換成等號。根據公式還可以得到兩個結論:
1)第一個不等式成立是因為 $x^*$ 為 $L(x,\alpha^*,\beta^*)$ 的一個極大值點,由此可得:
\[\nabla_{x^*} L(x,\alpha^*,\beta^*) = 0\]
2)第二個不等式其實就是之前的 (*) 式,$\beta_j^*g_j(x^*)$ 都是非正的,所以這里有:
\[\beta_j^* g_j(x^*)=0, \ i=1,2,…,m\]
也就是說如果 $\beta_j^*>0$,那么必定有 $g_j(x^*)=0$ ;反過來,如果 $g_j(x^*)<0$ 那么可以得到 $\beta_j^*=0$ ,即:
\[\left \{ \begin{aligned}\beta^*_j >0 \Rightarrow g^*_j(x) = 0 \\ g^*_j(x) < 0 \Rightarrow\beta_j^*=0\end{aligned}\right .\]
這些條件都似曾相識,把它們寫到一起,哎?不就是傳說中的 KKT (Karush-Kuhn-Tucker) 條件么:
\begin{align} \nabla_x L(x,\alpha,\beta) &= 0 \\ \beta_jg_j(x) &= 0 , \ j=1,2,...,n\\ h_i(x)&= 0 , \ i=1,2,...,m \\ g_j(x) &\le 0 , \ j=1,2,...,n \\ \beta_j &\ge 0 , \ j=1,2,...,n \\ \end{align}
總結來說就是說任何滿足強對偶性的優化問題,只要其目標函數與約束函數可微,任一對原始問題與對偶問題的解都是滿足 KKT 條件的。即滿足強對偶性的優化問題中,若 $x^*$ 為原始問題的最優解,$\alpha^*,\beta^*$ 為對偶問題的最優解,則可得 $x^*,\alpha^*,\beta^*$ 滿足 KKT 條件。不知道夠不夠清楚,書中原話(P243)是這樣的$^{7.1}$:
上面只是說明了必要性,當滿足原始問題為凸優化問題時,必要性也是滿足的,也就是說當原始問題是凸優化問題,且存在 $x^*,\alpha^*,\beta^*$ 滿足 KKT 條件,那么它們分別是原始問題和對偶問題的極值點並且強對偶性成立,證明如下:
首先原始問題是凸優化問題,固定 $\alpha^*,\beta^*$ 之后對偶問題 $D(\alpha^*,\beta^*)$ 也是一個凸優化問題,$x^*$ 是 $L(x,\alpha^*,\beta^*)$ 的極值點:
\begin{aligned}
D(\alpha^*,\beta^*)
&= \min_x L(x,\alpha^*,\beta^*) \\
&= L(x^*,\alpha^*,\beta^*) \\
& = f(x^*)+\sum_{i=1}^m\alpha_i^*h_i(x^*)+\sum_{j=1}^n\beta_j^*g_j(x^*) \\
&= f(x^*)
\end{aligned}
最后一個式子是根據 KKT 條件中的 $h_i(x) = 0$ 與 $\beta_jg_j(x) = 0$ 得到的。這樣一來,就證明了對偶間隔為零,也就是說,強對偶成立。 所以當原始問題為凸優化問題時,書中的原話(P244)如下$^{7.1}$:
關於對偶的問題到此為止,其實都是很優化方法中比較簡單的內容。總結一下。本文介紹了對偶的基本概念,對於一個約束優化問題,找到其對偶問題,當弱對偶成立時,可以得到原始問題的一個下界。而如果強對偶成立,則可以直接求解對偶問題來解決原始問題。 SVM 就是這樣的。對偶問題由於性質良好一般比原始問題更容易求解,在 SVM 中通過引入對偶問題可以將問題表示成數據的內積形式從而使得 kernel trick 的應用更加自然)。此外,還有一些情況會同時求解對偶問題與原始問題 ,比如在迭代求解的過程中,通過判斷對偶間隔的大小,可以得出一個有效的迭代停止條件。
參考文獻
1. https://www.cs.cmu.edu/~ggordon/10725-F12/slides/15-duality.pdf
https://www.cs.cmu.edu/~ggordon/10725-F12/slides/16-kkt.pdf
2. http://www.csc.kth.se/utbildning/kth/kurser/DD3364/Lectures/Duality.pdf
4. http://www.cnblogs.com/jerrylead/archive/2011/03/13/1982684.html
5. http://blog.pluskid.org/?p=702
6. http://blog.pluskid.org/?p=702
7.書籍 Convex Optimization Cambridge版 (7.1)| 統計學習方法 李航(7.2)