分類:支持向量機(二)——數值優化

       在上一篇博客中,較爲詳細的介紹了在數據完全線性可分的情況下,構建SVM模型的目標,並將構建目標轉化爲最大化幾何距離的優化過程,本篇就將介紹具體優化時的計算過程。還是一樣的,先推薦幾篇不錯的博文,大家也可以參考鏈接中的文章學習。

  • 關於凸優化問題

        http://www.360doc.com/content/18/0522/09/32196507_756021531.shtml

  • 關於拉格朗日乘子法及對偶優化問題

          https://www.cnblogs.com/xinchen1111/p/8804858.html

          https://www.cnblogs.com/ooon/p/5721119.html

          https://www.cnblogs.com/mashiqi/p/3719101.html

1.凸優化問題

       在一般的優化問題中求最大值或最小值,通常的做法是找出那些梯度爲0的點(有的情況下還需要求出邊界點的值),然後比較這些點的函數值,最後找出最大值或最小值。這個過程中有兩個問題需要注意,一個是當存在多個極值點時,計算量會比較大;另外一個問題就是鞍點(比較常見的是f(x)=x^{3}函數在x=0處)的問題。所以,如果優化問題能夠在附加一些限制條件時能到簡化,那將非常利於最大值或最小值的求解,凸優化問題正是這樣一種簡化後的優化問題。

       1.1  凸集

       對於 n 維空間中點的集合C,如果對集合中任意兩個點xy,以及實數\theta0\leqslant\theta\leqslant 1,都有

                                                                         \theta x+(1-\theta )y\in C

則集合C稱爲凸集,在二維空間中,可以用一張簡單的圖來描述一下凸集和非凸集的區別

                                             

 

       在一些特定的情況下,我們來考慮一下凸集 

  • n 維實向量空間中,xy\in R^{n},對任意實數\theta0\leqslant\theta\leqslant 1,顯然有

                                                                    \theta x+(1-\theta )y\in R^{n}

        這一結論表明,如果一個優化問題不帶約束,那麼該優化問題的變量可行域是凸集。

  • n 維實仿射子空間R^{n}

                                                                                     \left \{ x\in R^{n}|Ax=b \right \}

       中,假設 xy\in R^{n},對任意實數\theta0\leqslant\theta\leqslant 1,有

                                                           A(\theta x+(1-\theta )y)=\theta b+(1-\theta )b=b

       即\theta x+(1-\theta )y\in R^{n},這一結論表明:若優化問題中的約束是一組等式約束,那麼它們確定的可行域是凸集。

  • n 維實向量空間中,多面體空間R^{n}定義爲

                                                                             \left \{ x\in R^{n}|Ax\leqslant b \right \}

        在多面體空間R^{n}中,假設 xy\in R^{n},對任意實數\theta0\leqslant\theta\leqslant 1,有

                                                              A(\theta x+(1-\theta )y)\leq \theta b+(1-\theta )b=b

        即\theta x+(1-\theta )y\in R^{n},這一結論表明:若優化問題中的約束是一組線性不等式約束,那麼它們確定的可行域是凸集。

   最後,還有一個重要的結論是,多個凸集的交集仍然是凸集。​​​​​​                            

       1.2  凸函數

       對於函數f(x),如果其定義域內的任意兩個點 xy滿足

                                                           f(\theta x+(1-\theta )y)\leqslant \theta f(x)+(1-\theta )f(y)

       則函數f(x)成爲凸函數,在二維空間中我們映像最深的凸函數就是下面這種情況了   

                                                                      

      在多維空間中,如何判斷一個函數是否爲凸函數,需要依據其Hessian矩陣判斷。

      在一個優化問題中,若目標函數是凸函數,變量可行域是凸集,那麼該優化問題就稱爲凸優化問題。通過以上對凸集及凸函數的定義,我們可以將單變量的凸優化問題用以下表達式描述,多變量的凸優化問題也類似

                                                     目標:min \: \: f(x)

                                                     約束:g_{i}(x)\leqslant 0,i=1,2,...,m

                                                                h_{i}(x)= 0,i=1,2,...,p

    在凸優化問題中,局部最優值即是全局最優值。

2.拉格朗日乘子法

       拉格朗日乘子法用於求解帶約束的優化問題,我們先從帶等式約束的情況着手,一步步分析到帶不等式約束的情況。

       2.1  等式約束    

       現假設有函數f(x,y),帶約束的優化目標爲

                                                                                    min \: \: f(x,y)

                                                                                            s.t. h(x,y)=0

函數f(x,y)h(x,y)投影在XOY平面上的等值線f(x)h(x)如下圖所示

                                                     

 

 圖中帶箭頭的線條表示曲線在該點處的梯度方向。從上圖中可以看到,只有約束曲線h(x)與等值線f(x)相切的地方,目標函數f(x,y)纔有局部極值,因爲在h(x)曲線與等值線不相切處(即交點處),變量x沿h(x)曲線移動時f(x)會增大或者減小,f(x,y)無法得到局部極值。因此,在計算f(x,y)最小值時,首先應該計算出所有滿足約束的極值點,然後在這些極值點中找出最小值。

        現在觀察一下等值線f(x)h(x)曲線相切時的特徵,在二維空間中,梯度與切線方向垂直(在多維空間中,梯度與切點處切超平面垂直),也就是說f(x)h(x)在切點處的梯度共線(這裏不能說反向,儘管上圖中顯示的是反向),因此在切點處有

                                                                       \bigtriangledown f(x,y)=u\bigtriangledown h(x,y)                                         (1)

\bigtriangledown爲梯度,u爲任意實數,依據梯度的計算方式,式(1)等價於

                                                                       \frac{\partial f(x,y)}{\partial x}=u \frac{\partial h(x,y)}{\partial x}                                            (2)

                                                                       \frac{ \partial f(x,y) }{\partial y}=u \frac{ \partial h(x,y) }{ \partial y}                                            (3)

\partial爲偏導數計算符號,這樣在求解極值點時,聯立式(2)、式(3)和h(x,y)=0計算即可。爲了方便,構造函數F(x,y,u)

                                                                   F(x,y,u)=f(x,y)+uh(x,y)

                                                                                 s.t. \, \, h(x,y)=0

求極值時直接求F(x,y,u)xyu的偏導數,並令其爲0即可,結果和上面過程一樣,這種方法就是等式約束下的拉格朗日乘子法。

        在多個等式約束情況下,也是一樣的做法,構造函數F(x,y,u_{1},...,u_{k}),然後求解F(x,y,u_{1},...,u_{k})xyu_{i} 的偏導數並令其爲0

                                                           F(x,y,u_{1},...,u_{k})=f(x,y)+\sum_{i=1}^{k}u_{i}h_{i}(x,y)

                                                                          s.t. \, \, h_{i}(x,y)=0\, \, ,i=1,...,k

        2.2 不等式約束

        針對2.1節中的優化問題,現增加一個不等式約束                                                  

                                                                                 min \: \: f(x,y)

                                                                                     s.t. \, \, h(x,y)=0

                                                                                            g(x,y)\leq 0

        在帶不等式約束的優化問題中,我們還是要採用先找出局部極值,然後通過比較極值的方式找出最小值,如果局部極值存在,那麼只可能有兩種情況,一種情況是局部極值點在g(x,y)= 0的邊界上,另外一種是時局部極值點在g(x,y)< 0的區域內。我們先將函數f(x,y)h(x,y)g(x,y)投影到XOY平面上,點x^{*}爲曲線h(x)與等值線f(x)的切點。

        第一種情況如下圖所示

                           

此時不等式約束成爲了等式約束,在2.1節中的約束問題中,因爲等式約束的原因無法施加更多的約束,只能要求目標函數f(x,y)與約束函數h(x,y)在切點處的梯度共線,而在不等式約束中,儘管切點位於約束區域的邊界上,但仍能將約束條件加強,我們知道梯度是數值增大最快的方向,函數g(x)在切點x^{*}處的梯度肯定不是指向可行域g(x)<0的,因爲這會使g(x)的值減小,而我們的目標是極小值優化問題,切點x^{*}處是一個極小值點,因此在可行域內越靠近切點x^{*}f(x)的值越小,所以函數f(x)在切點x^{*}處的梯度方向應該是指向g(x)<0區域的,因此函數f(x)g(x)在切點x^{*}處的梯度方向相反,這樣我們可以利用拉格朗日乘子法構建函數F(x,y,u,\lambda )

                                                        F(x,y,u,\lambda )=f(x,y)+uh(x,y)+\lambda g(x,y)

極值點一定滿足如下條件

                                                       \bigtriangledown f(x,y)+u\bigtriangledown h(x,y)+\lambda \bigtriangledown g(x,y)=0

                                                                             h(x,y)=0

                                                                             g(x,y)=0

                                                                                   \lambda >0

 

        第二種情況,切點x^{*} 不在g(x)\leq 0區域的邊界上,滿足g(x^{*})<0

                                           

這種情況下在切點處的不等式約束相當於不存在,我們可以構建函數F(x,y,u,\lambda )

                                                      F(x,y,u,\lambda )=f(x,y)+uh(x,y)+\lambda g(x,y)

極值點一定滿足如下條件

                                                       \bigtriangledown f(x,y)+u\bigtriangledown h(x,y)+\lambda \bigtriangledown g(x,y)=0

                                                                         h(x,y)=0

                                                                          g(x,y)<0

                                                                                  \lambda =0

結合以上兩種情況,我們可以利用拉格朗日乘子法構造如下函數

                                 F(x,y,u_{1},...,u_{m},\lambda_{1},...,\lambda_{n} )=f(x,y)+\sum_{i=1}^{m}u_{i}h_{i}(x,y)+\sum_{j=1}^{n}\lambda _{j}g_{j}(x,y)

該函數的極值點滿足

                                                    s.t. \, \, \bigtriangledown f(x,y)+u\bigtriangledown h(x,y)+\lambda \bigtriangledown g(x,y)=0

                                                                           h_{i}(x,y)=0\, \, ,i=1,...,m

                                                                           g_{j}(x,y)\leq 0\, \, ,i=1,...,n

                                                                                   \lambda_{j}\geq 0 \, \, ,i=1,...,n

                                                                      \lambda _{j}g_{j}(x,y)= 0\, \, ,i=1,...,n

3.KKT條件與對偶問題

       第2節中最終總結出了極值點需滿足的條件,這樣一組約束條件即稱爲KKT條件,它是優化問題中獲取極值點的必要條件。當然,在實際中並不是所有情況下極值點一定滿足KKT條件,解出的極值點還是要代入目標函數中檢查,要想一個優化問題的極值點滿足KKT條件還需要一些規範性條件,我這裏不在此列出這些規範性條件了(可以在文章推薦的文章中學習)。依據以上KKT條件,我們就可以求解優化問題了,但一般直接求解這組方程是比較困難的,爲了更好的解決這個優化問題,數學家還找到了它的對偶問題,當對偶問題比較容易求解時,我們可以通過求解對偶問題來間接的求解原優化問題,我們還是以單個等式約束、不等式約束問題爲例來說明其對偶問題。

       利用拉格朗日乘子法構建以下函數及約束條件

                                                     F(x,y,u,\lambda )=f(x,y)+uh(x,y)+\lambda g(x,y)

                                                                        s.t. \, \, h(x,y)=0

                                                                               g(x,y)\leq 0

                                                                                        \lambda\geq 0

                                                                            \lambda g(x,y)= 0

我們先來看一下max\, \, F(x,y,u,\lambda ),約束範圍內的點滿足h(x,y)=0\lambda g(x,y)= 0,所以可以得到

                                                                        max\, \, F(x,y,u,\lambda )=f(x,y)

不在約束範圍內的點,可以調整 \lambda 和 u 的值使用F(x,y,u,\lambda )取到無窮大

                                                                         max\, \, F(x,y,u,\lambda )=\infty

此時求解max\, \, F(x,y,u,\lambda )是沒什麼意義的。現在我們只考慮滿足約束的點,那麼原優化問題min \: \: f(x,y)可以表達成

                                                                          \underset{x,y}{min} \, \,\underset{\lambda ,u}{max}\, \, F(x,y,u,\lambda )                                              (4)

該問題的對偶問題即爲

                                                                         \underset{\lambda ,u}{max} \, \,\underset{x,y}{min}\, \, F(x,y,u,\lambda )                                               (5)

我們有

                                                  \underset{x,y}{min} \, \,\underset{\lambda ,u}{max}\, \, F(x,y,u,\lambda )\geq \underset{\lambda ,u}{max} \, \,\underset{x,y}{min}\, \, F(x,y,u,\lambda )                       

在很多文章中都說 “ 最大值中的最小值比最小值中的最大值大是很顯然 ”,這樣的理解在多變量函數中理解起來有點費勁,不過也暫時只能先這樣理解了。求解公式(5)得到的解並不一定是公式(4)中的最優解,那麼我們自然就會問,在什麼條件下,公式(5)與公式(4)表示的問題是等價的呢?在上面說到的滿足KKT條件所需的一些規範性條件中,有一個條件稱爲 Slater條件,滿足 Slater條件的約束問題具有強對偶性質,公式(5)與公式(4)中的解是等價的。 Slater條件表述爲:如果優化問題是個凸優化問題,且至少存在一個點滿足h(x,y)=0 和 g(x,y)=0,則極值一定滿足 KKT 條件,並且滿足強對偶性質。

       本篇文章到這裏爲止,已經將準備知識說完了,接下來我們着手處理一下上一篇遺留的優化問題。

4.構建SVM超平面時的優化問題

   上一篇中最後的優化問題爲

                                                               max \frac{1}{\left \| w \right \|},\: s.t. \: \: y_{i}(w^{T}x_{i}+b)\geq 1,i=1,...,k      

   我們將其轉化爲

                                                                                 min \, \, \frac{1}{2}w^{2}   

                                                                                   s.t. \: \: 1-y_{i}(w^{T}x_{i}+b)\leq 0,i=1,...,k

這是等價的,目標函數顯然是一個我們熟知凸函數,約束條件定義的可行域也是上文中所說的凸集,所以這是一個凸優化問題。先利用拉格朗日乘子法構建如下函數

                                                           F(w,b,\lambda _{1},...,\lambda _{k})=\frac{1}{2}w^{2}+\sum_{i=1}^{k}\lambda _{i}\left [ 1-y_{i}(w^{T}x_{i}+b) \right ]

                                                                           s.t. \: \: 1-y_{i}(w^{T}x_{i}+b)\leq 0,i=1,...,n                                                                               

                                                                                               \lambda _{i}\geq 0\, \, ,i=1,...,k

我們的優化目標可以表達如下

                                                                 \underset{w,b}{min}\, \, \underset{\lambda_{i} }{max}\, \, \frac{1}{2}w^{2}+\sum_{i=1}^{k}\lambda _{i}\left [ 1-y_{i}(w^{T}x_{i}+b) \right ]                                        

                                                                                  s.t. \: \: 1-y_{i}(w^{T}x_{i}+b)\leq 0,i=1,...,n                                                                               

                                                                                               \lambda _{i}\geq 0\, \, ,i=1,...,k

其對偶問題爲

                                                                 \underset{\lambda _{i}}{max}\, \, \underset{w,b }{min}\, \, \frac{1}{2}w^{2}+\sum_{i=1}^{k}\lambda _{i}\left [ 1-y_{i}(w^{T}x_{i}+b) \right ]                       (6)                                                       

                                                                s.t. \: \: 1-y_{i}(w^{T}x_{i}+b)\leq 0,i=1,...,n                                                                               

                                                                                               \lambda _{i}\geq 0\, \, ,i=1,...,k

很明顯,支持向量上的點滿足1-y(w^{T}x+b)= 0,因此優化問題滿足 Slater條件,因此其對偶問題的解等價於原問題的解,這樣我們可以直接求解其對偶問題的最優解。

 求取F(w,b,\lambda _{1},...,\lambda _{k})wb的偏導數,並令其爲0,得到

                                                      \frac{\partial F(w,b,\lambda _{1},...,\lambda _{k})}{\partial w}=w-\sum_{i=1}^{k}\lambda _{i}x_{i}y_{i}=0       

                                                      \frac{\partial F(w,b,\lambda _{1},...,\lambda _{k})}{\partial b}=\sum_{i=1}^{k}\lambda _{i}y_{i}=0

將計算的結果代入公式(6)中,得到

                                                                 \underset{\lambda _{i}}{max}\, \, \sum_{i=1}^{k}\lambda _{i}-\frac{1}{2}\sum_{i=1}^{k}\lambda _{i}\lambda _{j}y_{i}y_{j}x_{i}x_{j}

利用一些數值計算軟件,在訓練數據集上就可以計算出結果滿足最優結果的\lambda _{1},...,\lambda _{k}值了,繼而求解出wb。也有一些算法能快速計算出結果,這個我們後面再介紹,完全線性可分情況下的支持向量機構建到這裏也就完成了。事實上,並不是所有的\lambda值均非0,只有支持向量機上的點其對應的\lambda值才非0,這和不等式約束中的第一種情況一致。

5.小結

      本篇博客中首先介紹了構建SVM時涉及的數值優化計算過程的背景知識,但是我沒有很詳細的介紹,只是介紹了一些必須的部分,感興趣的同學可以自己再去多瞭解一些。本系列的前兩篇介紹的是在數據完全線性可分情況下SVM的構建,但數據完全線性可分的情況畢竟很少,因此這樣構建的SVM模型分類效果並不好,下一篇開始將進一步介紹數據不完全線性可分情況下SVM的構建。

   

 

     

                                     

       

 

          

       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章