機器學習技法03:Kernel 支持向量機(Kernel Support Vector Machine)

上節課學習了 對偶支持向量機(Dual Support Vector Machine),實際上也是一個二次規劃(QP)問題,可以使用二次規劃求解。得到支持向量新的定義,即拉格朗日乘子 αn>0\alpha_n>0 的在margin上的樣本點纔是支持向量。 經過推到之後,最優化問題變爲有 NN 個變量,N+1N+1 個限制條件的問題,好像與特徵空間的維度 d~\tilde{d} 沒有關係。但是上節課末尾留下了一個問題,即 d~\tilde{d} 並沒有真正消除掉,而是暗含在求解二次規劃的二次項 qn,m==ynymznTzmq_{n,m} == y_ny_mz^T_nz_m 中 (隱含在 zz 中) ,如果 d~\tilde{d}NN 過大,實際上都不容易求解。因此,希望找出某種方法真正消除 d~\tilde{d} 的影響,來提高計算速度,這就是本節課介紹的內容–Kernel Support Vector Machine。


3 Kernel Support Vector Machine

3.1 Kernel Trick

在這裏插入圖片描述
在對偶支持向量機中,先做了特徵空間的轉換 Φ\Phi,將 xx 空間轉換到 zz 空間,然後求內積運算 znTzmz^T_nz_m ,這兩個步驟的算法複雜度都是 O(d~)O(\tilde{d}) ,當特徵的維度 d~\tilde{d} 過大時,計算向量內積比較困難,二次規劃不容易求解。現在考慮減少算法複雜度,一個思路是將這兩個步驟合起來,即將特徵轉換和內及運算合成一步完成。先看一個簡單的例子,二次多項式轉換:
在這裏插入圖片描述
爲了計算方便,把 x0=1x_0 =1x1x2,x2x1x_1x_2,x_2x_1 都包含進去,得到的結果中,xTxx^Tx' 表示 xx 空間中特徵向量的內積,算法複雜度爲 O(d)O(d),而不是 O(d2)O(d^2)。可以看出,算法複雜度只與 xx 空間中特徵的維度 dd 有關,而與 zz 空間中的特徵維度 d~\tilde{d} 無關,現在證明設想是正確的,達到了減少計算量提高計算速度的目的。類似以上將特徵空間轉換和內及運算一步完成的轉換就稱爲 Kernel Function,用大寫字母 KK 表示。

在這裏插入圖片描述
不同的轉換對應不同的 Kernel Function,例如二次多項式對應:
KΦ2(x,x)=1+(xTx)+(xTx)2K_{Φ_2}(x,x') = 1 + (x^Tx') + (x^Tx')^2
推導出Kernel Function之後,嘗試將其應用來對偶支持向量機的求解過程中:
在這裏插入圖片描述

其核心思想是將先做特徵空間轉換再做內積運算的 znTzmz^T_nz_m 轉化爲在 xx 空間中做內積運算的 Kernel Function K(xn,xs)K(x_n,x_s),避免受 zz 空間的特徵維度 d~\tilde{d} 的影響,達到降低算法複雜度的目的。

計算出二次規劃運算中的二次項係數 qn,mq_{n,m} 之後,就可以求解出拉格朗日乘子 αn\alpha_n ,即可求解出 xx 空間中的特徵向量 ww 和偏置 bb ,也就得到了假設空間中最佳的假設函數矩g–gSVMg_{SVM}

引入Kernel Function,把原來的Dual SVM變爲Kernel SVM,其僞代碼爲:
在這裏插入圖片描述
算法中沒一個步驟的算法複雜度爲:
在這裏插入圖片描述


習題1:
在這裏插入圖片描述


3.2 Polynomial Kernel

上一小節介紹的是二次多項式轉換的特殊情況,下面介紹更一般的二次多項式轉換:

在這裏插入圖片描述
紅色的 Φ2(x)\Phi_2(x) 是將一次項都乘以 2\sqrt{2} ,這樣經過內積運算之後,最後的 Kernel Function 中由一次項計算得到的項的係數爲 2 ,這樣就很容易寫成完全平方的形式。綠色的 Φ2(x)\Phi_2(x) 更進一步,給二次項添加係數 γ\gamma ,得到更一般的二次多項式的 Kernel Function情形,記爲 K2(x,x)K_2(x,x')。其表達式爲:
在這裏插入圖片描述
轉換之後,這兩種轉換公式的相同點是對應的空間相同;但表達式的形式不同,也就是說,內積運算的結果不同,在內積運算內的空間中,不同的內積就代表不同的距離,不同的距離會影響到margin(邊界)。所以,不同的轉換雖然空間沒有變,但是SVM的margin可能不同

怎麼理解呢?繼續往下看,如果使用 KΦ2K_{\Phi_2} 求解支持向量(SV),並在輸入空間中用方塊“□”表示,其求解結果如下圖所示:
在這裏插入圖片描述
如果添加一個自由度 γ=0.001\gamma =0.001,其求解結果如下圖所示:
在這裏插入圖片描述

可以看到其超平面(分隔超平面,分類超平面,分類器,假設函數)的效果相比不添加自由度的第一種情況,好像要好一點(沒有下邊的超平面。如果令自由度 γ=1000\gamma = 1000 ,則其求解結果如下圖所示:
在這裏插入圖片描述
通過以上對比可以發現,最佳的假設函數 gSVMg_{SVM} 不同,則支持向量不同,但是很難說哪一個更好。上例只是爲了先建立一個關於分類器好壞的概念,知道改變Kernel(自由度 γ\gamma),就會改變margin,也就影響了SVM分類器的性能。下一步介紹如何選擇最佳的Kernel。
在這裏插入圖片描述

上式中有三個參數,一個是 γ\gamma,表示做完內積之後要做多大的放縮(自由度);另一個是 ζ\zeta ,表示常數項還有乘上的這些轉換的係數要如何對應;還有一個是 QQ ,表示做幾次方的轉化。要注意這裏的運算都是在 xx 空間中計算的。高階多項式的Kernel SVM的優點有兩個:

  • 限制條件使得支持向量的數目比較少,large-margin的存在會對抑制過擬合有一定的貢獻;
  • 內積運算在 xx 空間中計算,避免引入 zz 空間的特徵維度 d~\tilde{d},減少了算法複雜度,從而提高計算速度;
    在這裏插入圖片描述
    下面考慮一種特殊情況,Q=1Q=1 ,此時就得到線性SVM。

在這裏插入圖片描述
在實際應用過程中,應該遵循由少到多,由簡到繁的原則進行嘗試。如果低階的分類器的效果很好,就沒有必要使用高階的分類器。也就是奧卡姆剃刀定律(如無必要,勿增實體)的思想。


在這裏插入圖片描述


3.3 Gaussian Kernel

剛纔介紹了polynomial kernel,但剛纔介紹的 kernel 的階數 QQ 都是有限的,現在考慮如果是無線維度的轉換 Φ(x)\Phi(x) 的情況,先看一個簡單的例子:
在這裏插入圖片描述
構造一個函數 K(x,x)K(x,x'),其推導過程如上圖所示,最後得到 Φ(x)\Phi(x) ,其維度是無線維的,所構造的函數 K(x,x)K(x,x') 稱爲高斯核(Gaussian Kernel),其更一般的表示形式爲:

K(x,x)=exp(γxx2) with γ>0K(x,x') = exp(−γ||x − x'||^2) \ with \ γ > 0

其中 γ\gamma 表示縮放因子,xx||x-x'|| 表示兩個特徵向量之間的平方歐幾里得距離,xx' 表示核函數的中心(高斯函數的中心)。不要忘記,其求解方式仍然是二次規劃,我們目前所做的工作都是在改變二次規劃中的二次項係數 qn,mq_{n,m} ,來達到減少算法複雜度,從而減少計算量,進而提高模型泛化能力的目的。通過包含 K(x,x)K(x,x')qn,mq_{n,m},使用二次規劃求解出 αn\alpha_n,然後計算出 bb,得到最佳的假設函數矩g爲:
在這裏插入圖片描述
使用高斯核的SVM,稱爲Gaussian SVM,它會把原來的數據映射到一個多維空間,然後在多維空間中找出最“胖”的邊界(margin),實際上它是一堆在支持向量上面的高斯函數的線性組合,因爲這個特性,也把高斯核函數 K(x,x)K(x,x') 稱爲徑向基函數(Radial Basis Function, RBF),Radial表示高斯函數,Basis Function表示對高斯函數做線性組合。

徑向基函數是某種沿徑向對稱的標量函數,由於距離是徑向同性的,通常定義爲樣本到數據中心之間徑向距離(通常是歐氏距離)的單調函數。RBF是SVM中最常用的核函數。

高斯SVM引入高斯核,目的是求解線性組合的係數 αn\alpha_n ,以及要用哪些高斯核,即支持向量(SV)上的高斯核。

下面對比一下目前所學的幾種SVM:
在這裏插入圖片描述
最初的線性SVM只能找到最大的邊界(large-margin),即分隔超平面(hyperplane),對於非線性的輸入空間要使用SVM實現分類,我們使用特徵空間轉換(transform),將非線性空間轉換到線性空間,實現非線性輸入空間的分類。然後,爲了降低算法複雜度(zz 變換後,特徵空間維度 d~\tilde{d} 的影響),引入拉格朗日乘子,構造了對偶支持向量機,使得求解過程只和樣本數量 NN 有關,但是實際上,d~\tilde{d} 並沒有真正消除,因爲在二次規劃計算二次項係數的過程中,內積運算實際上引入了 d~\tilde{d}。本節通過引入 Kernel ,以簡單的二階多項式轉換爲例,真正的消除了 d~\tilde{d} 的影響;但是又有一個問題,即Kernel的大小對SVM分類性能有影響,但只能處理有限特徵空間的情況;此時,引入了高斯核函數,實現了無限特徵空間的轉換,從而簡化運算。 Kernel 的作用降低算法複雜度,但是隻有Kernel,模型的泛化能力無法保證,所以需要large-margin來限制假設函數的數量,保證模型的泛化能力。

高斯核函數中,縮放因子 γ\gamma 變大,相當於高斯函數的圖像變尖(標準差變小)。其取值的大小會影響分類效果,下圖展示了不同的縮放因子對分類邊界的影響:
在這裏插入圖片描述
可以看出,γ\gamma 越大其擬合能力越強,過擬合的風險就越大,其泛化能力就越差。所以需要仔細選擇 γ\gamma 的值。


習題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限制少;如果知道階數 QQ ,很容易控制; 當階數過高時,K的波動範圍大,穩定性差;參數過多,不容易選擇;
Gaussian Kernel SVM 擬合能力強,即對非線性輸入空間的分類效果好;計算複雜度相對較低;參數少,容易選擇; 無法求解 w,計算速度較慢,容易發生過擬合;

高斯核函數(RBF) 是經常使用的核函數,但是需要注意縮放因子的設定。除了提到的核函數,還有很多其它有效的核函數。那麼核(kernel)表示什麼呢?實際上,kernel衡量的是 xxxx' 的相似性,即特徵空間轉換後,在 zz 空間中向量的內積(向量內積本身代表的就是相似性)。但是反之不成立,也就是說,可以表徵相似性的kernel並不一定是有效的kernel,需要滿足兩個條件(充分必要條件):

  • 矩陣 KK 爲對稱矩陣(symmetric)
  • 矩陣 KK 爲半正定矩陣(positive semi-definite)

這兩個條件叫做 Mercer’s condition。只要滿足這兩個條件的kernel就一定是有效的kernel,但是實際上構造這樣的 kernel 很困難。

在這裏插入圖片描述

  • 二次型(quadratic form):n個變量的二次多項式稱爲二次型,即在一個多項式中,未知數的個數爲任意多個,但每一項的次數都爲2的多項式。
  • 實對稱矩陣(real symmetric matrix):如果有n階矩陣A,其矩陣的元素都爲實數,且矩陣A的轉置等於其本身(aij=ajia_{ij}=a_{ji})(i,ji,j 爲元素的腳標),則稱A爲實對稱矩陣。
  • 正定矩陣(positive definite, PD):設M是n階方陣,如果對任何非零向量 zz,都有 zTMz>0z^TMz>0,其中 zTz^T 表示 zz 的轉置,就稱 MM 爲正定矩陣。
  • 半正定矩陣((positive semi-definite, PSD):半正定矩陣是正定矩陣的推廣。設A是n階方陣,如果對任何非零向量X,都有X’AX≥0,其中X’表示X的轉置,就稱A爲半正定矩陣。

習題4:
在這裏插入圖片描述


Summary

本節課介紹了kernel SVM,kernel 的 SVM 先講了 Kernel Trick ,意思是說,把特徵轉換和內積運算合成一步,真正的消除了 d~\tilde{d} 的影響,從而提高計算速度。然後講了多項式Polynomial Kernel,把產生的係數添加進去;然後講了Gaussian Kernel,實現了將輸入空間無限多維度的轉換。在之前講到的SVM中,都要求輸入空間是線性可分( linear separable),即硬邊界的SVM(Hard­-Margin SVM),即要求分類器將樣本嚴格地分開,那對於線性不可分的情形呢?之前講過說,轉換到 zz 空間變爲線性可分的情況,可能會導致過擬合問題,那麼有沒有辦法解決,可以忍受一定的noise,但分類效果好呢?下一節課介紹 Soft-Margin SVM來解決這個問題。
在這裏插入圖片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章