前言
先說我對線性SVM的整體理解吧:
其實就是一個最優間隔的二分類器(如下圖)
目標就是找到中間那個最優的分類超平面,而如圖在虛線上的點,就是所謂的支持向量(support vectors) 。在求解這一問題的時候用到了對偶問題來幫助解決(爲什麼要用對偶問題?)而想要這樣的話,我們定義了一個滿足KKT條件的原問題,這裏很巧妙的一點在於,KKT 的總體思想是認爲極值會在可行域邊界上取得,我覺得這一點是線性SVM的核心思想。
在總結下來這些的時候,我主要是根據
- Andrew Ng的機器學習公開課(Stanford cs229 2003)
- 當年課程的學習講義
- JerryLead 的中文筆記
- Matrix cookbook
其實很多問題,很多人都闡述的非常清楚透徹,自己寫下來只是理一下自己的思路,確認是否真正的理解;
我在看講義和聽課的過程中,經常暫停下來提一些奇怪的問題,有些能夠解決,有些卻不能,我也會在下面寫出,供大家思考,這部分我用引用格式表示,如:
爲什麼最優間隔?
最優間隔,就是這個分類器(超平面)要儘可能的離兩邊的樣本數據都很遠纔好;
我們知道,分類器是根據已有樣本數據來訓練得到,以便預測測試數據的,在這一點上,我們考慮到,最優間隔的分類器,在未來的測試數據上,更保險,更不容易出錯。
問題的數學表示
我們有很多樣本點:
其中
既然還是一個線性的分類器,那麼我們可以將這個分類超平面定義爲:
其中
這裏我想說一下這個
g(z) ,我們知道:
在LR裏面,這個g(z) 就是 sigmoid 函數
在softmax裏面,這個g(z) 就是softmax函數
那麼在這裏,寫到這的時候還沒有一個g(z) 的顯式表出;
我們考慮一個特殊情況,因爲我上面說到,KKT條件的整體思想,引發了我的思考,也就是SVM的核心思想就是邊界值,那麼,我們索性假設有一個邊界值點(x(j),y(j)),y(j)=0 :那也就是說g(z)=0
當然,這個邊界值點在被分類數據中不會存在,但是我們先繼續,g(z)=0 的唯一取到的可能就是z=0 , 那此時,也就是說wTx+b=0 ;
既然對於一個合法的分類器來說,這個點不會存在於被分類數據中,那麼在這個空間內,它唯一存在的地方就是在這個分類超平面上,也就是說,這個超平面的性質就是:
wTx+b=0
函數間隔(functional margin) & 幾何間隔(geometric margin)
函數間隔
對於一個樣本點
考慮到
下面這點我覺得講的很好:
如果
因此函數間隔代表了我們認爲特徵是正例還是反例的確信度
這裏,函數間隔還沒有什麼具體的實際數值意義,因爲隨着參數
w,b 的改變,函數間隔可以隨意變化
幾何間隔
簡單來說,幾何間隔就是歸一化的函數間隔
歸一化之後,幾何間隔就是某個樣本點到分類平面的距離
上圖中, B 點位於
這裏我又瞎想了一下,
w 爲啥是梯度呢?
首先這個問題是一個線性的問題,也就是wTx+b=0 是一個x 的線性組合,那麼我們先從二維着手,
假設x 就是一個一維變量,那麼wTx+b=0 就是一條分類直線,w 就是斜率
那麼二維空間的梯度,不就是斜率嗎?
換句話講,梯度就是函數的走勢方向,因爲想想梯度下降,不就是選擇函數下降最快的方向作爲梯度嗎?
或者你也可以這麼理解,梯度是怎樣得到的?求導得到的
你在二維空間,將wx+b 對x 求導就是w
或者直接在高維將wTx+b=0 對x 求導, 得到的就是w
這裏可以參考matrix cookbook, 有一系列的求導規則,這裏用到了:
迴歸正題:所以如果 A 是
把 B 代入
當
最優間隔分類器
我們的目標是尋找一個超平面,使得離超平面比較近的點能有更大的間距。也就是我們不考慮所有的點都必須遠離超平面,我們關心求得的超平面能夠讓所有點中離它最近的點具有最大間距。將問題形式化表示:
這裏約束了
,至此我們定義出的問題,藉助這個優化目標,如果求出了
其實我覺得這部分是精髓,轉化的思想也可以應用到其他地方
我們雖然有了這個
第一步:
考慮到幾何間隔和函數間隔的關係
這裏,把
第二步:
之前簡略提過,分類面的確立只與那些離分類面最近的那些點有關;
我們在上圖中,考慮這些離分類面最近的那些點,把他們的函數間隔設爲1,
那麼他們的幾何間隔
也即他們到分類面的距離。
那麼問題就轉化成:
由於
所以問題轉化爲:
這就成了一個帶有不等式約束的二次規劃問題,帶條件的優化問題,我們可以用拉格朗日乘子法來解決;
拉格朗日乘數法, 對偶問題, KKT 條件
先看一下一般形式的拉格朗日乘數法:
假設有問題:
爲了解決有兩個約束(一個等式約束
其中
(這部分我自己理解的時候也有點亂,條理可能不太清晰,如果看一次沒看懂,再看一遍可能會有幫助)
至於爲什麼能夠這樣的條件約束下的優化問題能夠用拉格朗日乘數法求解,
首先,我看到了這樣一篇博客 拉格朗日乘數法,第二部分中數學實例的例子不錯,提出了拉格朗日乘數法的思想:
通過引入拉格朗日乘子將原來的約束優化問題轉化爲無約束的方程組問題
其次這個 維基百科 的圖,覺得對自己理解很有幫助
簡單來說,雖然還是尋找極值點,但是約束條件的存在使得這個尋找的軌跡只能由上圖綠線所決定;綠線就是問題的可行域。那麼我們沿着綠線的方向走,向着f(x,y) 下降(或上升,取決於問題求極大還是極小)的方向走,走到g(x,y) 的變化率爲0的時候,我們就找到了極值點, 這裏的圖中就表現爲與f(x,y) 的等高線相切。
此時:從圖上理解,曲面相切,法向量共線,曲面的法向量就是偏導(偏導是各個分量的變化率,法向量是各個方向變化率疊加的結果,如果不太明白,推薦一篇博客:小談導數、梯度和極值
或者也可以從一元函數來理解,兩個曲線相切,意味着此刻在切點,斜率相同,曲線法向量共線;
Anyway, 我們定義一個只有一個不等約束的拉格朗日問題方便理解,這裏再從解析的角度去理解:
minwf(w)s.t.g(w)≤0
先看求解過程:
L(w,α)=f(w)+αg(w)
聯立方程組:
∂L(w,α)∂w=0(1)∂L(w,α)∂α=0(2)
我們先看(1) , 進一步:∂L(w,α)∂w=∂f(w)∂w+α∂g(w)∂w=0
回想我們剛剛說的法向量共線,是不是這個公式就是對於法向量共線的解釋呢?
我們繼續看(2) :∂L(w,α)∂α=g(w)=0 ,這說明了什麼?L(w,α)=f(w)+αg(w) , 現在g(w)=0 ,那說明在極值點:L(w,α)=f(w)
現在再回來看(1) , 相當於是在求∂L(w,α)∂α 的極值點,是不是就是原問題f(w) 的極值點了呢? 這樣這種解法就能解釋得通了吧。
不過有點不嚴謹的地方是,記得我們在學的時候,是有一條:就是原問題f(w) 的極值是∂L(w,α) 的極值的子集,之後還需繼續驗證
擴展到高維不難,如果有多個約束條件無非就是多個條件的線性組合,相信在理解的過程中是一樣的。
回到正題,但是我們不能直接求解,有
作爲我們的原問題。由於有
講義上這裏直接說
但是我覺得這個式子只有在提出KKT條件再提比較合適,因爲在不滿足KKT條件的情況下,αigi(w)=0 是不一定能成立的。但是爲了方便表述,這裏暫且先默認滿足
當
我們使用
原問題
首先:
那麼:
就有:
這一點,我們有這樣一個事實:
maxminf(x)≤minmaxf(x)
那麼,再什麼時候兩者會等價呢?
首先,是三個假設:
f,g 是凸函數h 是仿射函數:∃ai,bi,s.t.hi(w)=aTiw+bi - 存在
w , 使對於所有i ,gi(w)<0
滿足上述假設,就是一個凸優化問題
滿足之後,一定存在
w∗ 是原問題的解α∗,β∗ 是對偶問題的解p∗=d∗=L(w∗,α∗,β∗)
同時
∂∂wiL(w∗,α∗,β∗)=0,i=1,...,n ∂∂βiL(w∗,α∗,β∗)=0,i=1,...,l α∗igi(w∗)=0,i=1,...,k gi(w∗)≤0,i=1,...,k α∗≥0,i=1,...,k
我們看後三條:
如果我們限定
由於
這也就是我之前提到過的 (其實是別人提到過,我只是印象深刻),K.K.T.條件是在可行域邊界上取得極值;至於在可行域內部的點
gi(w∗)<0 的約束是不起作用的,我總覺得這裏和支持向量的思想很像;
最優間隔分類器
講了一大堆,回到剛剛的優化問題:
現在將約束條件改爲:
現在原問題是凸函數,不等式約束是一個線性函數,也是一個廣義的凸函數
所以滿足了K.K.T.條件的假設前提。
約束條件表明了,函數間隔爲1是邊界上的點
由K.K.T條件得知,(通常來說,在邊界上的點,
現在可以構造拉格朗日函數如下:
注意參數不同了,是
和上面一樣,我們構造一個
先求解
得到
(省略計算過程)
由於如上:
現在用
這個問題,留給之後解決,假設我們解決了這個問題,找到了
這裏我將
α∗,w∗,b∗ 都用α,w,b 表示,因爲原問題的解和對偶問題相同
這樣,問題就解決了,我們只要找到那些函數間隔爲1的樣本點,代入上面的公式求出
所以,起到作用的只有那些“支持向量”,也就是,只有邊界值決定了分類面。
That’s all for now.