上一篇最後提到要解決最佳化問題 :
稍微對它做一下改動,如下:
這是一個約束最佳化問題,更進一步說是一個二次規劃問題,複習一下約束最佳化問題:
定義1:約束非線性問題是,
其中和都是定義在上的實值連續函數,且至少有一個是非線性的(反之為線性約束最佳化問題),m是一個正整數,叫做目標函數,叫做約束函數,如果目標函數是二次函數則叫做二次規劃問題,由同時滿足所有約束方程的點組成的集合叫做可行域,這些點叫可行點。
定義2:Farkas引理,對於給定的n維向量與b,對於任意滿足 的向量P,必有的充要條件是:b在向量所形成的凸錐內,即成立:, 。
怎麼理解“某個向量在若干其它向量形成的凸錐內”這個描述呢?可以看,
利用平行四邊形法則,可以看到向量b處於由形成的凸多邊形內,發揮一下想象力,在空間中這不就像是一個凸的錐狀體嘛。
定義3:對於約束問題,如果有一個可行點,存在且滿足
這裡都是有效約束。
則叫做K-T點。
K-T點的幾何意義可以從看出:
顯然x1是K-T點而x2則不是。在一般非線性規劃中,K-T條件是最優解的必要條件但不是它的充分條件,此時K-T點不一定是最優點,但對於凸規劃問題,K-T條件是最優解的充要條件;順便說下,凸規劃是個好同志,它的局部最優解就是全域最優解,所以它的K-T點就是全域最優點。
定理1:設是約束問題的局部極小點,點處的線性化可行方向的集合等於其序列可行化方向的集合,則必存在 使得:
這裡都是有效約束。
“點處的線性化可行方向的集合等於其序列可行化方向的集合”這個條件怎麼滿足呢?只要所有有效約束都是線性函數即可,此時必是一個K-T點。
定理2:一階最優性條件:對於可行點,如果目標函數和所有有效約束在處可微,且任意、非零的,在處的序列可行化方向向量d滿足:,則為嚴格局部極小點。這意味著,當向某一點處的任意方向移動都將導致目標函數值上升,那麼這個點不就是一個局部極小點嘛。
定理3:二階最優性條件:設為K-T點,是相應的拉格朗日乘子,如果,其中d為非零的、處的線性化零約束方向,則為嚴格的局部極小點。
推論1:設為K-T點,是相應的拉格朗日乘子,如果對一切滿足的非零向量d都有,則為嚴格的局部極小點。
對於前面的約束非線性規劃問題,如果是二次函數且所有約束是線性函數的時候就變成了二次規劃問題,這一寫成以下形式:
定理4:如果是二次規劃問題的可行點,則是局部極小點的充要條件是:若且唯若存在拉格朗日乘子,使得:
,
成立,(即是K-T點)且對於一切滿足
(其中E為等式的有效約束,I()為不等式的有效約束)
的向量d都有:。
定理5:設H為半正定矩陣(所有特徵值大於等於0),則二次規劃問題的全域極小點若且唯若它是一個局部極小點或者K-T點。
當H為半正定矩陣,目標函數為凸函數時,該二次規劃被叫做凸二次規劃,它的任何K-T點都是極小點。回想我們開篇要解決的那個問題,目標函數顯然是一個凸函數,所以它是一個凸二次規劃問題,所以一定存在全域極小點(真好!)。
到此,我們就可以開始解決開篇的那個問題:
已經確定它是一個凸二次規劃問題了,那麼可以利用其拉格朗日函數:
通過對和求偏導數後得到:
帶入原始拉格朗日函數,轉化為對偶問題:
這樣就把帶不等式約束的最佳化問題通過其對偶形式轉化為只帶等式約束的最佳化問題,即下面的最佳化問題W:
求得後就得到了,它使得幾何間隔取最大值,從而得到最優分類超平面。
K-T點要滿足的條件還有一個是:,這個式子說明了什麼問題呢?
1、顯然,函數間隔不等於1的那些輸入焦點的拉格朗日係數必為0(這些點是非積極因素),而函數間隔恰好為1的輸入焦點的拉格朗日係數則不為0(這些點是積極因素),這說明確定最終分類超平面的就是這些函數間隔為1的邊界點,所以這些輸入焦點就是支援向量(Support Vector)。從這裡也能看出支援向量機的抗幹擾能力比較強,對非積極因素的擾動對於最佳化解沒有影響;
2、,其中i為支援向量,因為:
,我們的目標函數
(注意這裡為常數,且有約束條件)
於是通過這樣的對偶轉化,我們得到了實現幾何間隔為{(\sum\limits_{i \in support \quad vector}\alph^*_i)}^{1/2}" src="http://chart.apis.google.com/chart?cht=tx&chl=%5cgamma%3d%5cfrac%7b1%7d%7b%7c%7cw%5e*%7c%7c%7d%3d%0d%0a%7b(%5csum%5climits_%7bi+%5cin+support+%5cquad+vector%7d%5calph%5e*_i)%7d%5e%7b1%2f2%7d">的最大間隔超平面。
通過上面的推導也可以看出將二次規劃轉化為其對偶問題可以簡化約束條件,讓我們記住最佳化問題W吧,這是一個很牛逼的轉化,這個式子還有個特點,就是“資料僅出現在內積中”。
前面的討論都是說輸入樣本是線性可分的時候怎麼找到最大間隔超平面來劃分兩類資料,那麼如果輸入樣本是線性不可分的,那可怎麼辦呀,前面的那些討論不就成徒勞的了嗎?學習SVM後才知道它牛的地方,如果我們可以通過某種函數映射將輸入樣本映射到另外一個高維空間並使其線性可分的話,前面的討論結果不就都可以用到了麼,還記得“資料僅出現在內積中”吧,假設這個映射關係是:,這時候的內積就變成了,如果有方法能夠將內積直接算出,就將把輸入樣本“從低維空間向高維空間映射”和“求映射後的內積”這兩步合并成了一步,這樣直接計算的方法就是核函數方法,下篇學習核函數吧,SVM的理論部分還是很數學的啊!