關於SVM數學細節邏輯的個人理解(二):從基本形式轉化為對偶問題


第二部分:轉化為對偶問題進一步簡化

 

這一部分涉及的數學原理特別多。如果有邏輯錯誤希望可以指出來。

上一部分得到了最大間隔分類器的基本形式:

  其中i=1,2,3...m

直接求的話一看就很復雜,我們還需要進一步簡化。

這里就需要介紹拉格朗日乘子法。介紹它還是從最最簡單的形式說起:

 

.關於優化問題的最基本的介紹

優化問題這里面有很多東西,我先給出參考過的資料有,可以先看看這些資料自己總結一下,因為我覺得這部分內容很多人總結的都很好了:

①《支持向量機導論》的第五章最優化理論

②剛買的《統計學習方法》中的相關附錄,不得不說這本書真的很棒

③《An Introduction to Optimization》這本書專門講最優化的,如果要系統理解我覺得可以看看,但我只看了相關的部分

④知乎上的相關問題的回答。

⑤一些博客,下面會給具體鏈接

1.最簡單的無約束優化問題

優化問題最簡單的應該就是無約束的優化問題了吧。

很簡單的舉個例子,就比如,我們要求yR上的最小值。

一般的做法就是,先求導,然后導函數為0,就可以得到極小值點對應的x的值,代入后就得到對應的y的極小值,而這里極小值就是最小值。

然后高中其實我們就知道,即使無約束(即定義域為R),在很多情況下,極小值點也不一定是最小值點。因為可能會有很多個導函數為0的點(比如說正弦函數),所以此時我們的做法應該就是求出所有極小值點對應的y值,然后選擇最小的。

這就是最簡單的無約束優化問題,其實就是求導,讓導數等於0

2.帶等式約束的優化問題

現在把問題變得復雜一點,我們考慮帶等式約束的優化問題,下面舉的例子和圖片來自

https://www.quora.com/What-is-the-meaning-of-the-value-of-a-Lagrange-multiplier-when-doing-optimization/answer/Balaji-Pitchai-Kannu

我覺得這里已經解釋的很不錯了。

以后有時間會自己畫好相應的圖。

舉個例子,現在的優化問題是:

等式約束:

 

左邊是的圖像,右邊是的圖像。首先如果沒有這個約束,那么我們很容易就可以得到當取最大值是在x=0y=0處,做法就是對xy分別求偏導,讓偏導數為0,解出xy。但是現在有了約束就不一樣了。

 

 


 

這個是目標函數的等高線圖,等高線圖我們原來看地圖就接觸到了,同一個曲線上的目標函數的值是一樣的。其中我們也可以看到的約束。因為現在加入了這個限制,那么xy的變化只能被限制在這條直線(從這個角度看是直線,其實應該是平面和相交的曲線)上進行,而這條直線所確定的范圍又被叫做可行域

既然必須在這條直線上運行,那么我們可以先在直觀上看在這條直線上運行如何影響原來目標函數的值。如果我們沿着這條直線從左上一直到右下,根據等高線我們可以知道目標函數值是先增大,然后減少。

可以具體的取圖中的紅點來看,假如有一個人沿着行走到這個紅點了,那么可以用藍色箭頭來表示他在紅點的速度,那么這個速度其實可以根據它所處的等高線,分為和等高線相切的速度分量(紅色)和與等高線垂直的速度分量(黃色)。而這個和等高線相垂直的速度分量則決定了這個人的下一步的位置必然會改變目標函數的值。那么他運動到哪里就不會有這個“和等高線垂直的速度”呢?

很明顯,當他的速度正好和他所在位置的等高線相切時。此時不會有法線方向的速度了。

那他什么時候速度能和等高線相切呢?注意到這個人的“速度”方向其實一直被限制為這個直線的方向,所以相切發生在這個直線和等高線相切時。

(可能有些不太准確,但是為了直觀上理解只能這樣了)

此時我們就可以得到那個可以使目標函數值最大的點,就是找那個相切的點。

注意到,當約束函數的方向和等高線相切時,它們的梯度方向是共線的,即在那個點滿足:

表示對自變量的梯度)

再加上,這兩個條件其實就可以確定我們要求的點了。(因為要求解的未知量的個數和式子的個數相同)

上面就是當遇到等式約束的優化問題時,從直觀上該如何解決,主要就是找到那個“相切點”。

那么我們如何用數學的方法求出滿足這個條件的這個點呢?這就需要用到拉格朗日乘子法了。

(這里簡單說一下只有一個等式約束時的情況)

對於優化問題:

等式約束:(注意等式約束要寫成標准的的形式,即等號右邊為0

我們引入拉格朗日乘子λ,寫出這個問題的拉格朗日函數:

而我們的優化問題其實可以轉化為:

這個拉格朗日函數和我們之前說的

有什么關系呢?你可以試着讓拉格朗日函數對每個變量都求偏導,並讓偏導為0,就可以發現:

如果對x求偏導,我們就可以得到

如果對λ求偏導,我們就可以得到

也就是說對拉格朗日函數求偏導,導數為0得到的結果其實就是我們之前需要的那兩個條件:①梯度成正比②滿足約束條件

拉格朗日乘子法其實就是把原來的有約束的優化問題轉化為了無約束的優化問題,並且成功的把約束條件包含在了這個無約束的優化問題中。這就是我對於拉格朗日乘子法的理解。

(關於λ的符號問題,我在https://www.quora.com/What-is-an-intuitive-explanation-of-the-KKT-conditions這個人的回答里找到了這么一句話:拉格朗日乘子並沒有符號限制,可能是因為拉格朗日乘子只是對於等式約束來說的,但是注意下面的KKT乘子卻不是這樣的)

到這里我們知道可以用拉格朗日乘子法來解決等式約束的優化問題。

 

但是你可能注意到在SVM的優化問題里,約束並不是個等式,而是一組不等式

其中i=1,2,3...m

而我們之前介紹的是等式約束的優化問題,所以我們還必須要介紹帶有不等式約束更一般的優化問題。

 

3.帶不等式約束的優化問題

現在我們需要考慮最一般的情況,關於這部分內容我還沒有理解的太透徹,我覺得知乎上彭一洋的答案在這部分寫的很不錯https://www.zhihu.com/question/58584814,可以參考一下。

在這里我只能說一說自己的理解了。

 

如果對於優化問題

     

       

有三個不等式約束。對於這樣的約束問題,它的最優解x*是一定需要滿足KKT條件的。我先寫出這些條件(下面這些條件再加上原始的約束條件其實就是整個KKT條件了,下面在更一般的情況下說),並在直觀上說明為什么要這樣。具體的證明在《An Introduction to Optimization》上有。

現在假設是這個約束問題的最優解,那么現在假設存在KKT乘子)滿足下面三個條件:

(1)

(2)

(3)

現在我們一個一個在直觀上解釋

條件(1)是說所有的KKT乘子需要大於等於0。關於這個問題我查了很多資料,但是沒有一個讓我覺得說清楚的解釋。我個人把這個理解為一種規范?這個問題還需要思考,希望有人可以解釋一下。

條件(2)表示目標函數在最優點的梯度可以用g1(x)g2(x)g3(x)線性表示出來。這里看到是三個的線性組合之后的反方向,這是因為之前規定這個問題是最小化問題,根據WikiKKT條件的資料表明,如果是最大化問題,那么會是:

我們可以看下面這張圖,可以看到是可以由線性組合得到。但是發現似乎並不參與的計算,因為最小值點處並沒有取到的等號,這個就需要條件(3)來解釋了。

 


 

圖片來自於《An Introduction to Optimization

條件(3)比較重要,因為在最優點不是所有的不等式都取到了等號。取到等號的不等式約束,我們稱它為積極約束,對於最優點點沒取到等號的不等式約束,我們稱它為非積極約束。而且因為對於每個μ和g(x),μ>=0g(x)<=0,這就意味着如果條件(3)滿足,那么其實可以得到對於每個每個成立。對於非積極約束,因為它的g(x)不等於0,那么它對應的μ就必須為0。對於積極約束,它的KKT乘子可能非0也可能是0后面就會知道條件(3)被叫做互補松弛條件

這個要注意,不是說gi(x)=0了,它對應的KKT乘子就不能是0了,具體參考《An Introduction to Optimization

 

但是現在我只能通過給定的條件解釋為什么要這樣,卻不能解釋這些條件都是怎么推導出來的...

 

KKT條件是最優解的一個必要條件,在求解最優解時,通過解這些式子來求最優點。

 

4.更一般的優化問題,既有等式約束,又有不等式約束

而對於更一般形式的最優化問題,即既有等式約束,也有不等式約束:

i=1,2,3,...m

  i=1,2,3...k

現在令,表示由組成的列向量。然后令表示由組成的列向量,然后讓表示對應的KKT乘子組成的列向量,然后讓表示對應的拉格朗日乘子組成的列向量。

 

而且對於這個更一般的優化問題,在《支持向量機導論》的第五章(其他書上都還沒找到)還可以找到它所對應的廣義拉格朗日函數:

 

我現在可以寫出這個優化問題對應的KKT條件(參考Wiki百科KKT條件的分類方式):

(1)Stationarity(平穩性..但是不知道為什么這么叫)

這里是最小化,所以對應的梯度條件是:

(注意這里的x可能有很多維,這時就是對每一維的偏導需要滿足這個條件)

(2)Primal feasibility(優化問題自帶的約束條件)

i=1,2,3,...m

i=1,2,3...k

就是原來的已經存在的那兩類約束,包括等式和不等式

(3)Dual feasibility(具體含義還不太明白)

就是KKT乘子必須滿足的

對於任意的i   (注意到拉格朗日乘子並不需要這個條件)

(4)Complementary slackness(互補松弛條件)

對於任意的i(條件4在理解后面的內容時挺重要的)

這么看一共有三個等式兩個不等式,具體可以分為:①梯度要求②原始約束條件③KKT乘子需要滿足大於等於0④互補松弛條件。

(這里可以把①和②分為一類,因為①和②都是對應的拉格朗日函數對變量求偏導為0

 

5.自己動手推一推SVM優化問題中的KKT條件

OK,至此,優化問題的一部分數學知識就結束了,但是我們還是先繼續學習對偶問題的相關知識,再回到最初的最大間隔分類器問題。

但是作為學完KKT條件的練習,我們可以嘗試自己求一求之前的SVM問題的KKT條件!

上一部分最后的優化問題:

   其中i=1,2,3...m

如果我們需要用KKT條件來解決這個問題的話,我們現在就可以寫出它需要滿足的KKT條件了,在此之前,先把約束不等式寫成標准形式,並且注意到這里沒有等式約束:

 

,其中i=1,2,3..m

假設對每個約束來說它的KKT乘子為(很多SVM的書上都把α直接作為拉格朗日乘子,但是按照我目前的理解,感覺拉格朗日乘子是對於等式約束的,KKT乘子是對於不等式約束的,很多地方是不一樣的,這里是不等式約束)

那么可以先寫出對應的拉格朗日函數:

然后我們就可以先寫出它需要滿足的KKT條件為:

(1)梯度條件(對ω和b求偏導並等於0

2)自帶的約束條件

,其中i=1,2,3..m

(3)KKT乘子需要滿足的

對於任意的i

(4)最后就是松弛互補條件:

對於任意的i,

OK,可以自己推導一下KKT條件,是不是發現介紹SVM的書上的那些原來莫名其妙就給出來的KKT條件自己也能寫出來呢。

很多書講的太籠統了,還是有很多細節邏輯需要考慮的。

 

.對偶問題的相關數學知識

我們還必須解釋對偶問題相關知識。(可見SVM這里的數學知識太多了)

 

關於對偶問題的資料,我推薦:

①《支持向量機導論》第五章

②《統計學習方法》后面的附錄

③博客寫在SVM之前——凸優化與對偶問題

大家可以先自己看一看,關於對偶問題的內容在《統計學習方法》附錄那里講的是最清楚的個人認為。

1.原問題和對偶問題的定義

在求解最優化問題時,經常把原問題轉化為對偶問題求解。

現在我們需要求解的優化問題為:

 i=1,2,3,...m

   i=1,2,3...k

它對應的拉格朗日函數為:

現在我們先定義,其中表示對於給定的,使得最大的那個的取值,可以看出,這是一個關於的函數。

那么我們可以根據的不同取值范圍得到:

①當不滿足之前規定的約束條件時,即假如對於某個i,那么我可以通過改變對應的使得達到,又或者對於某個j,,那么很明顯我可以改變對應的,使得達到

所以說,當x不滿足某個約束條件時,

②而當x在滿足約束條件的范圍內時,因為對於每個i,所以說此時的,這個理解很重要

那么我現在可以定義一個問題:

需要證明這個問題與原始的約束問題

  i=1,2,3,...m

   i=1,2,3...k

 

等價

證明這兩個最優化問題等價,其實就是證明它們的優化目標和它們的約束條件是等價的。

這個也很容易證明:

①首先當x不滿足約束條件時,會達到。那么在計算外層的關於x最小化時,這個是不會影響到結果的。

②而x滿足約束條件時,,和原始約束問題一樣,都是在滿足約束的情況下最小化的。

所以我們就把原始的約束問題表示為廣義拉格朗日函數的極小極大問題

我們定義原始問題的最優值為

然后需要介紹其對偶問題,其實它的對偶問題很簡單,就是把極小和極大的順序顛倒一下即可。

我們先定義:

然后考慮最大化

得到拉格朗日函數的極大極小問題,也就是原問題的對偶問題

,然后我們還定義對偶問題的最優值為:

 

 

那么原問題的最優值和對偶問題的最優值有什么關系呢?

2.弱對偶定理

我們先介紹弱對偶定理,它證明了

證明:對任意的x,λ,µ

(第一個等號是定義,第二個小於等於號是因為min的定義,第三個小於等於號是因為max的定義)

也就是對於任意的,都有這樣的不等式成立。那么就說明了:

那么什么時候對偶問題的解和原問題的最優解可以相等呢?

 

 

3.對偶問題和原問題的最優解相等的充要條件

在《統計學習方法》里給出了定理:

對於原始問題和對偶問題,假設函數是凸函數,是仿射函數(按照我的理解就是形如的函數),且不等式約束是嚴格可行的(嚴格可行即存在,對於所有的i,都有<0),那么既是原始問題的最優解也是對偶問題的最優解的充要條件是:滿足KKT條件

具體證明我沒查,這個定理我覺得知道就好。

所以你可以看到KKT條件很重要。

 

4.自己推導SVM的對偶問題

 

接下來還是回到SVM的主線,我們需要來求一下SVM中遇到的問題的對偶形式是什么。

首先還是把原問題再列一下:

,其中i=1,2,3..m

拉格朗日函數:

KKT條件為:

1

2,其中i=1,2,3..m

3)對於任意的i

4)對於任意的i,

所以原問題寫成極小極大問題的形式就是:

然后我們就可以求出它對應的極大極小問題形式,即對偶問題形式:

就是極大和極小換了下位置。

但是這樣一換位置的好處就是,我們就可以先求解內部的

,即通過求偏導,把消去。

這就是很多書上莫名其妙的就求的偏導並消去的原因,就是因為只要滿足之前說的那個充要條件,那么原問題就可以轉化為對偶問題求解。

通過求偏導(之前已經求過了,在KKT條件里)並代入我們可以得到進一步只和有關的優化問題了,這一步的消去代入過程如下:

(最好還是自己推導一遍)


 

所以我們現在得到進一步的優化問題:

對任意的,都有

然后還需要滿足之前說的KKT條件(可以翻看之前求出來的KKT條件),所以除了上面這兩個約束外,還需要:

,其中i=1,2,3..m  原始約束條件

對於任意的i,互補松弛條件

如果能夠解出滿足上面這個優化問題的最優解,我們就可以根據這個求解出我們需要的b,所以我們把原來的關於b的最優問題轉化為了求解的問題

 

 

最后整理一下從SVM基本形式到它的對偶形式的邏輯過程:

 

①從SVM基本形式寫出它的拉格朗日函數,這里需要知道拉格朗日函數的相關知識

 

②從它的拉格朗日函數形式轉化為對偶形式,這里需要知道條件下對偶形式的最優解和原問題的最優解相等,也就需要理解KKT條件每一個的意義,並知道對於一般的約束問題如何寫出它的KKT條件

 

而這里大多都是關於帶約束的優化的相關數學知識,有時間可以系統的看一看《An Introduction to Opitimization》

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM