前言
最近看了Andrew Ng的機器學習視頻中的支持向量機,視頻的內容比較淺顯,沒有深入解釋支持向量機中的數學原理。但是對於一個比較執着於知道爲什麼的人,筆者還是去網上查找了有關支持向量機原理以及實現的相關資料。在查找的過程中,筆者發現支持向量機的內容還是蠻多的,於是筆者根據自己的理解,並且參考了一些相關資料,最終寫下了支持向量機的四篇博客。
機器學習:支持向量機(SVM)與Python實現第(一)篇——此篇主要介紹了分類間隔,引入SVM。
機器學習:支持向量機(SVM)與Python實現第(二)篇——此篇主要介紹了使用拉格朗日乘子來簡化SVM問題的優化。
機器學習:支持向量機(SVM)與Python實現第(三)篇——此篇主要介紹非線性分類(核函數)以及鬆弛變量。
機器學習:支持向量機(SVM)與Python實現第(四)篇——此篇主要介紹SMO算法並用python實現了簡單的SVM分類器。
上一節經過我們的推導,最終把問題變成:
minγ,w,b 12∥w∥2s.t. y(i)(wTx(i)+b)≥1, i=1,...,m
接下來我們就要來看看如何來高效解決這個問題。
拉格朗日對偶性
首先我們先暫時放下SVM和最大間隔分類器,而來談談如何解決含有限制的優化問題。這種問題的一般形式是:
minw f(w)s.t. hi(w)=0, i=1,...,l
對於這種問題,一般我們使用拉格朗日乘子(
對拉格朗日乘子的理解請參考)來解決,即我們定義:
L(w,β)=f(w)+∑i=1lβihi(w)
其中,
βi 叫做拉格朗日乘子。
接下來我們對
L(w,β) 求偏導,並且令偏導數爲0:
∂L∂wi=0; ∂L∂βi=0
這樣就可以求解出w和
β 了。
上面列舉的限制條件是等式的情況,有時候限制條件是不等式。考慮下面的原始優化問題:
minw f(w)s.t. gi(w)≤0, i=1,...,khi(w)=0, i=1,...,l (1)
爲了求解出這個問題,我們可以定義下面的泛化拉格朗日函數:
L(w,α,β)=f(w)+∑i=1kαigi(w)+∑i=1lβihi(w)
其中,
α和β 叫做拉格朗日乘子。
接下來詳細推導一下KKT條件:
hi(w)=0⇒L(w,α,β)=f(w)+∑i=1kαigi(w)∵ αi≥0gi(w)≤0}⇒∑i=1kαigi(w)≤0∴ maxα L(w,α,β)=f(w) (2)∴ minw f(w)=minw maxα L(w,α,β) (3)
而另一方面:
maxα minw L(w,α,β)=maxα[minw f(w)+minw αg(w)]=maxα minw f(w)+maxα minw αg(w)=minw f(w)+maxα minw αg(w)
∵ αi≥0gi(w)≤0}⇒minw αg(w)={0−∞if α=0 or g(w)=0if α>0 or g(w)<0∴α=0 or g(w)=0⇒maxα minw L(w,α,β)=minw f(w)+maxα minw αg(w)=minw f(w) (4)
聯合(3), (4),我們可以得到以下結論:
αigi(w)=0,i=1,...,kαigi(w)≤0,i=1,...,kαi≥0,i=1,...,k⎫⎭⎬⎪⎪⇒minw maxα L(w,α,β)=maxα minw L(w,α,β) (5)
我們把
maxα minw L(w,α,β) 稱爲原問題
minw maxα L(w,α,β) 的對偶問題,上式表明當滿足一定條件時,原問題和對偶問題的解以及
minw f(w) 的解是相同的。上面的推導就是爲了得到式(5)。
現在假設最優解爲w∗ ,那麼在最優解處α=0 or g(w∗)=0 。把w∗ 代入(2)式得到maxα L(w∗,α,β)=f(w∗) ,而由式(4)得maxα minw L(w,α,β)=f(w∗) 。所以,L(w∗,α,β)=minw L(w,α,β) ,這說明w∗ 也是L(w,α,β) 的極值點,即
∂L(w,α,β)∂w|w=w∗=0
我們的最開始的問題是minw f(w) ,經過推導把原問題變成對偶問題,只要解出對偶問題,原問題也就解了,前提是又多了幾個條件,原問題和對偶問題纔是等價的。所以等價的對偶問題爲:
s.t. maxα minw L(w,α,β)∂∂wiL(w,α,β)=0,i=1,...,n∂∂βiL(w,α,β)=0,i=1,...,lαigi(w)=0,i=1,...,kαigi(w)≤0,i=1,...,kαi≥0,i=1,...,k
其中,限制條件也叫做KKT條件。
優化間隔分類器
好了,現在回到我們一開始的問題,我們要優化的目標是:
minγ,w,b 12∥w∥2s.t. y(i)(wTx(i)+b)≥1, i=1,...,m
我們可以將限制條件改寫爲以下形式:
gi(w)=−y(i)(wTx(i)+b)+1≤0
請注意,從KKT條件中,我們會發現當
αi>0 時,
gi(w)=0 ,即
y(i)(wTx(i)+b)=1 。而符合
gi(w)=0 的那些點就是在虛線的點,如下圖所示:
圖中三個在虛線上的點就叫做支持向量。也就只有在這三個點的時候,
gi(w) 纔是0,
αi 纔不是0。其他時候,
αi 都是0。這是一個很好的性質,後面我們會說到。
現在我們來構造一個拉格朗日函數:
L(w,b,α)=12∥w∥2∑i=1mαi[y(i)(wTx(i)+b)−1]
這裏沒有等式限制,所以沒有
β 。
現在我們來找它的對偶問題。根據上面的KKT條件有:
s.t. maxα minw 12∥w∥2−∑i=1mαi[y(i)(wTx(i)+b)−1]∂∂wiL(w,b,α)=0,i=1,...,n∂∂bL(w,b,α)=0αigi(w)=0,i=1,...,kαigi(w)≤0,i=1,...,kαi≥0,i=1,...,k
之所以要對b也求偏導,是因爲
上一篇博文說過,b是
θ0 ,所以w和b組成完整的向量
θ 。
我們現在直接對w和b求偏導並讓其等於0。如下:
∵∂∂wL(w,b,α)=w−∑i=1mαiy(i)x(i)=0∴w=∑i=1mαiy(i)x(i) (6)∂∂bL(w,b,α)=∑i=1mαiy(i)=0 (7)
將上面的結果代入到拉格朗日函數中,我們可以得到:
L(w,b,α)=∑i=1mαi−12∑i,j=1my(i)y(j)αiαj(x(i))Tx(j)−b∑i=1mαiy(i) (8)
從方程(7)我們知道式(8)的最後一項爲0。即:
L(w,b,α)=∑i=1mαi−12∑i,j=1my(i)y(j)αiαj(x(i))Tx(j) (9)
現在w已經沒有了,所以的對偶問題就變成:
maxα s.t W(α)=∑i=1mαi−12∑i,j=1my(i)y(j)αiαj(x(i))Tx(j)αi≥0, i=1,...,m∑i=1mαiy(i)=0
本來上面的對偶問題是先最小化,再最大化的,但是w已經不在了,所以對w進行最小化也就不用了。所以現在的問題就是找到一組
α 來最大化
W(α) 。假設我們解出了
α∗ ,將其代入方程(6)就可以解出w,假設爲
w∗ 。然後就可以解出b,如下:
b∗=−maxi:y(i)=−1 w∗Tx(i)+mini:y(i)=1 w∗Tx(i)2
這個式子的意思就是,找到上圖中在虛線上的點,因爲虛線上的點滿足
wTx+b=1 or −1 這樣就可以計算出b了。
在我們繼續去求解上面的優化問題前,我們來看一些有趣的結論。假設我們現在已經訓練好了模型,那麼對於一個新的數據,我們希望對它做一個預測,於是我們先計算wTx+b 的值,如果計算出來的值大於0,我們就預測y=1。根據方程(6)這個計算可以寫成:
wTx+b=(∑i=1mαiy(i)x(i))Tx+b=∑i=1mαiy(i)⟨x(i),x⟩+b (10)
所以,爲了計算這個預測,我們需要計算這個求和,但是,我們從前面知道,只有在虛線上面的點(支持向量)對應的
αi 纔不是0,其他的時候
αi 都是0。而一般來說,支持向量是比較少的,所以上面的計算量其實很小。
到現在爲止,我們已經越來越接近結果了,但是我們從一開始到現在只是談論到了線性分隔器,那麼對於非線性的分類呢?第三篇我們將一起來學習一種叫做核函數的東西,有了它,媽媽再也不用擔心我解決不了非線性的分類了。