上節課學習了 對偶支持向量機(Dual Support Vector Machine),實際上也是一個二次規劃(QP)問題,可以使用二次規劃求解。得到支持向量新的定義,即拉格朗日乘子 的在margin上的樣本點纔是支持向量。 經過推到之後,最優化問題變爲有 個變量, 個限制條件的問題,好像與特徵空間的維度 沒有關係。但是上節課末尾留下了一個問題,即 並沒有真正消除掉,而是暗含在求解二次規劃的二次項 中 (隱含在 中) ,如果 或 過大,實際上都不容易求解。因此,希望找出某種方法真正消除 的影響,來提高計算速度,這就是本節課介紹的內容–Kernel Support Vector Machine。
3 Kernel Support Vector Machine
3.1 Kernel Trick
在對偶支持向量機中,先做了特徵空間的轉換 ,將 空間轉換到 空間,然後求內積運算 ,這兩個步驟的算法複雜度都是 ,當特徵的維度 過大時,計算向量內積比較困難,二次規劃不容易求解。現在考慮減少算法複雜度,一個思路是將這兩個步驟合起來,即將特徵轉換和內及運算合成一步完成。先看一個簡單的例子,二次多項式轉換:
爲了計算方便,把 和 都包含進去,得到的結果中, 表示 空間中特徵向量的內積,算法複雜度爲 ,而不是 。可以看出,算法複雜度只與 空間中特徵的維度 有關,而與 空間中的特徵維度 無關,現在證明設想是正確的,達到了減少計算量提高計算速度的目的。類似以上將特徵空間轉換和內及運算一步完成的轉換就稱爲 Kernel Function,用大寫字母 表示。
不同的轉換對應不同的 Kernel Function,例如二次多項式對應:
推導出Kernel Function之後,嘗試將其應用來對偶支持向量機的求解過程中:
其核心思想是將先做特徵空間轉換再做內積運算的 轉化爲在 空間中做內積運算的 Kernel Function ,避免受 空間的特徵維度 的影響,達到降低算法複雜度的目的。
計算出二次規劃運算中的二次項係數 之後,就可以求解出拉格朗日乘子 ,即可求解出 空間中的特徵向量 和偏置 ,也就得到了假設空間中最佳的假設函數矩g–。
引入Kernel Function,把原來的Dual SVM變爲Kernel SVM,其僞代碼爲:
算法中沒一個步驟的算法複雜度爲:
習題1:
3.2 Polynomial Kernel
上一小節介紹的是二次多項式轉換的特殊情況,下面介紹更一般的二次多項式轉換:
紅色的 是將一次項都乘以 ,這樣經過內積運算之後,最後的 Kernel Function 中由一次項計算得到的項的係數爲 2 ,這樣就很容易寫成完全平方的形式。綠色的 更進一步,給二次項添加係數 ,得到更一般的二次多項式的 Kernel Function情形,記爲 。其表達式爲:
轉換之後,這兩種轉換公式的相同點是對應的空間相同;但表達式的形式不同,也就是說,內積運算的結果不同,在內積運算內的空間中,不同的內積就代表不同的距離,不同的距離會影響到margin(邊界)。所以,不同的轉換雖然空間沒有變,但是SVM的margin可能不同。
怎麼理解呢?繼續往下看,如果使用 求解支持向量(SV),並在輸入空間中用方塊“□”表示,其求解結果如下圖所示:
如果添加一個自由度 ,其求解結果如下圖所示:
可以看到其超平面(分隔超平面,分類超平面,分類器,假設函數)的效果相比不添加自由度的第一種情況,好像要好一點(沒有下邊的超平面。如果令自由度 ,則其求解結果如下圖所示:
通過以上對比可以發現,最佳的假設函數 不同,則支持向量不同,但是很難說哪一個更好。上例只是爲了先建立一個關於分類器好壞的概念,知道改變Kernel(自由度 ),就會改變margin,也就影響了SVM分類器的性能。下一步介紹如何選擇最佳的Kernel。
上式中有三個參數,一個是 ,表示做完內積之後要做多大的放縮(自由度);另一個是 ,表示常數項還有乘上的這些轉換的係數要如何對應;還有一個是 ,表示做幾次方的轉化。要注意這裏的運算都是在 空間中計算的。高階多項式的Kernel SVM的優點有兩個:
- 限制條件使得支持向量的數目比較少,large-margin的存在會對抑制過擬合有一定的貢獻;
- 內積運算在 空間中計算,避免引入 空間的特徵維度 ,減少了算法複雜度,從而提高計算速度;
下面考慮一種特殊情況, ,此時就得到線性SVM。
在實際應用過程中,應該遵循由少到多,由簡到繁的原則進行嘗試。如果低階的分類器的效果很好,就沒有必要使用高階的分類器。也就是奧卡姆剃刀定律(如無必要,勿增實體)的思想。
3.3 Gaussian Kernel
剛纔介紹了polynomial kernel,但剛纔介紹的 kernel 的階數 都是有限的,現在考慮如果是無線維度的轉換 的情況,先看一個簡單的例子:
構造一個函數 ,其推導過程如上圖所示,最後得到 ,其維度是無線維的,所構造的函數 稱爲高斯核(Gaussian Kernel),其更一般的表示形式爲:
其中 表示縮放因子, 表示兩個特徵向量之間的平方歐幾里得距離, 表示核函數的中心(高斯函數的中心)。不要忘記,其求解方式仍然是二次規劃,我們目前所做的工作都是在改變二次規劃中的二次項係數 ,來達到減少算法複雜度,從而減少計算量,進而提高模型泛化能力的目的。通過包含 的 ,使用二次規劃求解出 ,然後計算出 ,得到最佳的假設函數矩g爲:
使用高斯核的SVM,稱爲Gaussian SVM,它會把原來的數據映射到一個多維空間,然後在多維空間中找出最“胖”的邊界(margin),實際上它是一堆在支持向量上面的高斯函數的線性組合,因爲這個特性,也把高斯核函數 稱爲徑向基函數(Radial Basis Function, RBF),Radial表示高斯函數,Basis Function表示對高斯函數做線性組合。
徑向基函數是某種沿徑向對稱的標量函數,由於距離是徑向同性的,通常定義爲樣本到數據中心之間徑向距離(通常是歐氏距離)的單調函數。RBF是SVM中最常用的核函數。
高斯SVM引入高斯核,目的是求解線性組合的係數 ,以及要用哪些高斯核,即支持向量(SV)上的高斯核。
下面對比一下目前所學的幾種SVM:
最初的線性SVM只能找到最大的邊界(large-margin),即分隔超平面(hyperplane),對於非線性的輸入空間要使用SVM實現分類,我們使用特徵空間轉換(transform),將非線性空間轉換到線性空間,實現非線性輸入空間的分類。然後,爲了降低算法複雜度( 變換後,特徵空間維度 的影響),引入拉格朗日乘子,構造了對偶支持向量機,使得求解過程只和樣本數量 有關,但是實際上, 並沒有真正消除,因爲在二次規劃計算二次項係數的過程中,內積運算實際上引入了 。本節通過引入 Kernel ,以簡單的二階多項式轉換爲例,真正的消除了 的影響;但是又有一個問題,即Kernel的大小對SVM分類性能有影響,但只能處理有限特徵空間的情況;此時,引入了高斯核函數,實現了無限特徵空間的轉換,從而簡化運算。 Kernel 的作用降低算法複雜度,但是隻有Kernel,模型的泛化能力無法保證,所以需要large-margin來限制假設函數的數量,保證模型的泛化能力。
高斯核函數中,縮放因子 變大,相當於高斯函數的圖像變尖(標準差變小)。其取值的大小會影響分類效果,下圖展示了不同的縮放因子對分類邊界的影響:
可以看出, 越大其擬合能力越強,過擬合的風險就越大,其泛化能力就越差。所以需要仔細選擇 的值。
習題3:
3.4 Comparison of Kernels
本小節對比之前兩節課和本節課所學的三種SVM,其實剛纔已經總結過了,下面詳細看一下這些SVM分類器的優缺點。
1.線性SVM
2.Polynominal Kernel SVM
3.Gaussian Kernel SVM
三種 SVM 對比:
名稱 | 優點 | 缺點 |
---|---|---|
線性SVM | 算法複雜度低,計算速度快;特殊的QP問題;容易解釋; | 不能處理線性不可分的情況 |
Polynomial Kernel SVM | 比線性SVM限制少;如果知道階數 ,很容易控制; | 當階數過高時,K的波動範圍大,穩定性差;參數過多,不容易選擇; |
Gaussian Kernel SVM | 擬合能力強,即對非線性輸入空間的分類效果好;計算複雜度相對較低;參數少,容易選擇; | 無法求解 w,計算速度較慢,容易發生過擬合; |
高斯核函數(RBF) 是經常使用的核函數,但是需要注意縮放因子的設定。除了提到的核函數,還有很多其它有效的核函數。那麼核(kernel)表示什麼呢?實際上,kernel衡量的是 和 的相似性,即特徵空間轉換後,在 空間中向量的內積(向量內積本身代表的就是相似性)。但是反之不成立,也就是說,可以表徵相似性的kernel並不一定是有效的kernel,需要滿足兩個條件(充分必要條件):
- 矩陣 爲對稱矩陣(symmetric);
- 矩陣 爲半正定矩陣(positive semi-definite);
這兩個條件叫做 Mercer’s condition。只要滿足這兩個條件的kernel就一定是有效的kernel,但是實際上構造這樣的 kernel 很困難。
- 二次型(quadratic form):n個變量的二次多項式稱爲二次型,即在一個多項式中,未知數的個數爲任意多個,但每一項的次數都爲2的多項式。
- 實對稱矩陣(real symmetric matrix):如果有n階矩陣A,其矩陣的元素都爲實數,且矩陣A的轉置等於其本身()( 爲元素的腳標),則稱A爲實對稱矩陣。
- 正定矩陣(positive definite, PD):設M是n階方陣,如果對任何非零向量 ,都有 ,其中 表示 的轉置,就稱 爲正定矩陣。
- 半正定矩陣((positive semi-definite, PSD):半正定矩陣是正定矩陣的推廣。設A是n階方陣,如果對任何非零向量X,都有X’AX≥0,其中X’表示X的轉置,就稱A爲半正定矩陣。
習題4:
Summary
本節課介紹了kernel SVM,kernel 的 SVM 先講了 Kernel Trick ,意思是說,把特徵轉換和內積運算合成一步,真正的消除了 的影響,從而提高計算速度。然後講了多項式Polynomial Kernel,把產生的係數添加進去;然後講了Gaussian Kernel,實現了將輸入空間無限多維度的轉換。在之前講到的SVM中,都要求輸入空間是線性可分( linear separable),即硬邊界的SVM(Hard-Margin SVM),即要求分類器將樣本嚴格地分開,那對於線性不可分的情形呢?之前講過說,轉換到 空間變爲線性可分的情況,可能會導致過擬合問題,那麼有沒有辦法解決,可以忍受一定的noise,但分類效果好呢?下一節課介紹 Soft-Margin SVM來解決這個問題。