>>>寫在SVM之前——凸優化與對偶問題
本篇是寫在SVM之前的關於優化問題的一點知識,在SVM中會用到。考慮到SVM之復雜,將其中優化方面基礎知識提出,單作此篇。所以,本文也不會涉及優化問題的許多深層問題,只是個人知識范圍內所了解的SVM中涉及到的優化問題基礎。
一、凸優化問題
在優化問題中,凸優化問題由於具有優良的性質(局部最優解即是全局最優解),受到廣泛研究。
對於一個含約束的優化問題:
\[\left\{ \begin{matrix}\underset{x}{\mathop{\min }}\,f(x) \\\begin{matrix}s.t. & x\in C \\\end{matrix} \\\end{matrix} \right.\]
其中,$f(x)$ 為一個凸函數,變量$\text{x}$ 的可行域$\text{C}$ 是一個凸集,那么這個優化問題稱為一個凸優化問題。
將上面的約束條件的形式更加明確一點,一個凸優化問題可以寫成:
\[\left\{ \begin{matrix}\underset{x}{\mathop{\min }}\,f(x) \\\begin{matrix}s.t. & {{g}_{i}}(x)\le 0 \\{} & {{h}_{i}}(x)=0 \\\end{matrix} \\\end{matrix} \right.\]
其中,$f(x)$ 當然仍然為一個凸函數,但對約束條件有一定要求:${{g}_{i}}(x)$ 是凸函數;${{h}_{i}}(x)$ 為仿射函數。這樣的要求當然是為了保證可行域是一個凸集。
不等式約束中${{g}_{i}}(x)$為凸函數,而凸函數的水平截集$\{x|{{g}_{i}}(x)\le \alpha \}$ 是一個凸集(凸函數的性質),這就使得不等式約束保證了可行域為凸集;
對於等式約束${{h}_{i}}(x)=0$ 可以寫成:
\[\left\{ \begin{matrix}{{h}_{i}}(x)\le 0 \\{{h}_{i}}(x)\ge 0 \\\end{matrix} \right.\]
要使得滿足條件的$x$ 組成的集合為凸集,就要求${{h}_{i}}(x)$ 既是一個凸函數,又是一個凹函數,這樣${{h}_{i}}(x)$便只能是仿射函數了。
以上便是凸優化問題的一般形式。常見的線性規划、二次規划、二次約束二次規划等優化問題都是凸優化問題。
二、拉格朗日對偶
拋開凸優化問題,回到一般的優化問題。
一般的優化問題可以寫成以下形式:
\[\left\{ \begin{matrix}\underset{x}{\mathop{\min }}\,f(x) \\\begin{matrix}s.t. & {{g}_{i}}(x)\le 0 \\{} & {{h}_{i}}(x)=0 \\\end{matrix} \\\end{matrix} \right.\]
當然,這里對$f(x)$、${{g}_{i}}(x)$、${{h}_{i}}(x)$ 都是沒有要求的。
根據拉格朗日方法,對應的拉格朗日函數為:
$L(x,\alpha ,\beta )=f(x)+\sum\limits_{i}{{{\alpha }_{i}}{{g}_{i}}(x)}+\sum\limits_{i}{{{\beta }_{i}}{{h}_{i}}(x)}$
其中$\alpha $ 、$\beta $為拉格朗日乘數(都是向量,其長度分別對應於不等式約束和等式約束的個數),且${{\alpha }_{i}}\ge 0$、$\beta $ 任意。
定義函數:
\[{{\theta }_{P}}(x)=\underset{\alpha ,\beta :{{\alpha }_{i}}\ge 0}{\mathop{\max }}\,L(x,\alpha ,\beta )\]
容易發現:
\[{{\theta }_{P}}(x)=\left\{ \begin{matrix}f(x) & {{g}_{i}}(x)\le 0\And {{h}_{i}}(x)=0 \\+\infty & {{g}_{i}}(x)>0||{{h}_{i}}(x)\ne 0 \\\end{matrix} \right.\]
如果原來的約束條件都滿足那么$L(x,\alpha ,\beta )=f(x)+\sum\limits_{i}{{{\alpha }_{i}}{{g}_{i}}(x)}+\sum\limits_{i}{{{\beta }_{i}}{{h}_{i}}(x)}$,最后一項為零,第二項要取得最大值,由於${{g}_{i}}(x)\le 0$,所以只能取$\alpha =\overset{\to }{\mathop{0}}\,$ ,使其取得最大值0,這樣\[{{\theta }_{P}}(x)=\underset{\alpha ,\beta :{{\alpha }_{i}}\ge 0}{\mathop{\max }}\,L(x,\alpha ,\beta )=f(x)\]
如果違背了原來的約束條件,比如存在某一個約束${{g}_{i}}(x)>0$,那么可以取${{\alpha }_{i}}$ 任意大,這樣${{\theta }_{P}}(x)=+\infty $。違反等式約束${{h}_{i}}(x)=0$的情況是類似的。
所以可以認為${{\theta }_{P}}(x)$是對原理優化問題中的約束條件進行了吸收,是原來的約束優化問題變為無約束優化問題(相對於原來變量$x$ 無約束了),即原來的優化問題可以寫成:
$\begin{align}\underset{x}{\mathop{\min }}\,{{\theta }_{P}}(x)=\underset{x}{\mathop{\min }}\,\underset{\alpha ,\beta :{{\alpha }_{i}}\ge 0}{\mathop{\max }}\,L(x,\alpha ,\beta )\end{align}$
現在,稱(1)為原問題,這和最初的有約束問題是等價的。
將(1)中min和max交換順序得到對偶問題:
$\begin{align}\underset{\alpha ,\beta :{{\alpha }_{i}}\ge 0}{\mathop{\max }}\,{{\theta }_{D}}(\alpha ,\beta )=\underset{\alpha ,\beta :{{\alpha }_{i}}\ge 0}{\mathop{\max }}\,\underset{x}{\mathop{\min }}\,L(x,\alpha ,\beta )\end{align}$
其中\[{{\theta }_{D}}(\alpha ,\beta )=\underset{x}{\mathop{\min }}\,L(x,\alpha ,\beta )\]
記${{p}^{*}}$ 為原問題的最優解,對應最優解的最優變量取值為${{x}^{*}}$,則${{p}^{*}}=f({{x}^{*}})$ ;
記${{d}^{*}}$ 為對偶問題的最優解,對應最優解的最優變量取值為${{\alpha }^{*}}$、${{\beta }^{*}}$,則${{d}^{*}}={{\theta }_{D}}({{\alpha }^{*}},{{\beta }^{*}})$。
下面來說明${{d}^{*}}\le {{p}^{*}}$。
對於任意$\alpha ,\beta $($\alpha \ge 0$ ):
\[\begin{align*}{{\theta }_{D}}(\alpha ,\beta )&=\underset{x}{\mathop{\min }}\,L(x,\alpha ,\beta ) \\& \le L({{x}^{*}},\alpha ,\beta ) \\ & =f({{x}^{*}})+\sum\limits_{i}{{{\alpha }_{i}}{{g}_{i}}({{x}^{*}})}+\sum\limits_{i}{{{\beta }_{i}}{{h}_{i}}({{x}^{*}})} \\& \le f({{x}^{*}}) \\& ={{p}^{*}} \\\end{align*}\]
第一個不等號成立是顯然的,這是由$\underset{x}{\mathop{\min }}\,L(x,\alpha ,\beta )$ 的定義直接得到的;第二個不等號成立是因為${{x}^{*}}$ 是一個可行解,所以約束條件${{g}_{i}}(x)\le 0$ 和${{h}_{i}}(x)=0$ 都滿足,所以$\sum\limits_{i}{{{\alpha }_{i}}{{g}_{i}}({{x}^{*}})}\le 0$ 、$\sum\limits_{i}{{{\beta }_{i}}{{h}_{i}}({{x}^{*}})}=0$。
由於以上推導過程中$\alpha $、$\beta $的任意性,所以${{d}^{*}}={{\theta }_{D}}({{\alpha }^{*}},{{\beta }^{*}})\le {{p}^{*}}$ ,所以求解對偶問題是在最大化原問題最優解的下界。
通常,對偶問題相對於原問題有比較好的形式(有看到“無論原問題形式如何,對偶問題都是一個凸優化問題”的說法,但沒見過證明。),這樣,當原問題不好求解時,可以轉而求解對偶問題。問題是一般情況下有${{d}^{*}}\le {{p}^{*}}$,所以求解對偶問題只能得到原問題解的下界,不能保證${{d}^{*}}={{p}^{*}}$。
當原問題滿足一些條件時,可以保證${{d}^{*}}={{p}^{*}}$。
Slater條件:存在$x$ ,使得不等式約束${{g}_{i}}(x)\le 0$嚴格成立,即${{g}_{i}}(x)=0$。
當原問題為一凸優化問題,且滿足Slater條件時,有${{d}^{*}}={{p}^{*}}$,這樣就原問題和對偶問題的解一致,求解對偶問題即可。顯然,Slater是凸優化問題與其對偶問題等價的一個充分條件。
KKT條件是原問題與對偶問題等價的必要條件。考慮一般優化問題(不一定是凸優化),如果有${{d}^{*}}={{p}^{*}}$,則:
\[\begin{align*}{{d}^{*}}&={{\theta }_{D}}({{\alpha }^{*}},{{\beta }^{*}}) \\& =\underset{x}{\mathop{\min }}\,L(x,{{\alpha }^{*}},{{\beta }^{*}}) \\& \le L({{x}^{*}},{{\alpha }^{*}},{{\beta }^{*}}) \\& =f({{x}^{*}})+\sum\limits_{i}{{{\alpha }_{i}}^{*}{{g}_{i}}({{x}^{*}})}+\sum\limits_{i}{{{\beta }_{i}}^{*}{{h}_{i}}({{x}^{*}})} \\& \le f({{x}^{*}}) \\& ={{p}^{*}} \\\end{align*}\]
由於${{d}^{*}}={{p}^{*}}$,所以上面推導過程中所以的不等號“$\le $ ”應該取到等號。第一個等號得到$\underset{x}{\mathop{\min }}\,L(x,{{\alpha }^{*}},{{\beta }^{*}})=L({{x}^{*}},{{\alpha }^{*}},{{\beta }^{*}})$,這說明${{x}^{*}}$ 是$L(x,{{\alpha }^{*}},{{\beta }^{*}})$的一個極值點,所以$L(x,{{\alpha }^{*}},{{\beta }^{*}})$在${{x}^{*}}$ 處的偏導為零,$\frac{\partial L(x,{{\alpha }^{*}},{{\beta }^{*}})}{\partial x}{{|}_{{{x}^{*}}}}=0$ ;第二個等號得到$f({{x}^{*}})+\sum\limits_{i}{{{\alpha }_{i}}^{*}{{g}_{i}}({{x}^{*}})}+\sum\limits_{i}{{{\beta }_{i}}^{*}{{h}_{i}}({{x}^{*}})}=f({{x}^{*}})$,所以$\sum\limits_{i}{{{\beta }_{i}}^{*}{{h}_{i}}({{x}^{*}})}=0$、$\sum\limits_{i}{{{\alpha }_{i}}^{*}{{g}_{i}}({{x}^{*}})}=0$。$\sum\limits_{i}{{{\beta }_{i}}^{*}{{h}_{i}}({{x}^{*}})}=0$是顯然的,因為根據約束條件本來就有${{h}_{i}}({{x}^{*}})=0$,重點是原本的$\sum\limits_{i}{{{\alpha }_{i}}^{*}{{g}_{i}}({{x}^{*}})}\le 0$現在取到了等號。
綜合以上兩點,在加上原來的約束,可以得到KKT條件:
\[\left\{ \begin{matrix}\frac{\partial L(x,{{\alpha }^{*}},{{\beta }^{*}})}{\partial x}{{|}_{{{x}^{*}}}}=0 \\\sum\limits_{i}{{{\alpha }_{i}}^{*}{{g}_{i}}({{x}^{*}})}=0 \\{{\alpha }_{i}}^{*}\ge 0 \\\begin{matrix}{{g}_{i}}({{x}^{*}})\le 0 \\{{h}_{i}}({{x}^{*}})=0 \\\end{matrix} \\\end{matrix} \right.\]
KKT條件是${{d}^{*}}={{p}^{*}}$的必要條件,給出了當原問題和對偶問題等價時對應最優值點所滿足的性質。
盡管KKT條件是${{d}^{*}}={{p}^{*}}$的必要條件,但當原問題是凸優化問題時,它就升級為充要條件,也就是只要找到${{x}^{*}},{{\alpha }^{*}},{{\beta }^{*}}$ 滿足以上五個條件,那么原問題就和對偶問題就有相同的解,分別在${{x}^{*}}$和$({{\alpha }^{*}},{{\beta }^{*}})$處取得。
另外,根據KKT條件中的$\sum\limits_{i}{{{\alpha }_{i}}^{*}{{g}_{i}}({{x}^{*}})}=0$可以得到,${{g}_{i}}({{x}^{*}})<0\Rightarrow {{\alpha }_{i}}^{*}=0$,反過來說,只有${{g}_{i}}({{x}^{*}})=0$,${{\alpha }_{i}}^{*}$才有可能不為0,這是SVM中用到的一個重要性質。