1. 程式人生 > >機器學習之核函式

機器學習之核函式

參考資料

書籍推薦:
《Learning with Kernels: Support Vector Machines, Regularization, Optimization, and Beyond 》購某東買連結:https://item.jd.com/1103869618.html

核函式定義

本文大致講解核函式的定義,限制,使用等
機器學習中,對於線性可分的情況研究的比較透徹,可以採用svm/lr/感知機等成熟的機器學習模型,但是很多情況是我們希望我們的模型學習非線性的模型。通常的做法就是選擇一個函式ϕ(x)x對映到另一個空間中,這裡的核心就是如何選擇ϕ

(x).一般有三種做法
1)通過核函式,比如RBF。如果 φ(x) 具有足夠高的維數,我們總是有足夠的能力來擬合訓練集,但是對於測試集的泛化往往不佳。非常通用的特徵對映通常只基於區域性光滑的原則,並且沒有將足夠的先驗資訊進行編碼來解決高階問題。
2)另一種選擇是手動地設計 φ,在深度學習以前,這種方法對於每個單獨的任務都需要人們數十年的努力,從業者各自擅長特定的領域(如語音識別或計算機視覺),並且不同領域之間很難遷移 (transfer)。
3)深度學習方式是去學習這個函式ϕ(x)
上面這段話來自《深度學習》

假設X是輸入空間,H是特徵空間,存在一個對映ϕ使得X中的點x能夠計算得到H空間中的點h

h=ϕ(x)
對於所有的X中的點都成立,x,z是X空間中的點。函式k(x,z)滿足條件:
k(x,z)=ϕ(x)ϕ(z)
都成立,則稱k為核函式,而ϕ為對映函式。
舉個例子,如下圖所示:
這裡寫圖片描述
特徵空間在三維空間中,原空間在二維,我們定義對映函式為,x=(x1,x2)
ϕ(x)=(x21,2x1x2,x22)
那麼如圖所示:
原始空間的點x到特徵空間的點為:
(x1,x2)(z1,z2,z3)=(x21,2x1x2,x22)
同時我們可以驗證,
ϕ(x)ϕ(z)=(xz)2=k(x,z),k(x,z)=(xz)2

我們要進行高維空間的線性可分,首先要將原始空間的點通過函式ϕ

對映到特徵空間中,然後學習,而所謂的學習,其實就是要計算高維空間的點的距離和夾角。那麼能不能不通過對映函式而直接使用核函式計算高維空間的點的距離以及夾角呢?
答案是可以的,核函式的技巧就是不顯示的定義對映函式,而在高維空間中直接使用核函式進行計算。
這裡寫圖片描述

所以我們在高維空間中進行計算的時候,其實根本不必要進行對映,然後再計算,而是直接先進行內積,然後使用核函式。

核函式的要求

首先介紹kernel矩陣,如下圖所示:
這裡寫圖片描述
核矩陣,就是每個點之間的高維對映之後的內積構成的矩陣。
要稱為核函式,核矩陣必須是半正定的。
常用的核函式有:
這裡寫圖片描述
在實際計算中,通常會選用高斯核。

核函式帶來的好處很明顯,如果先要對映到高維空間然後進行模型學習,計算量遠遠大於在低維空間中直接直接採用核函式計算
但是也有缺點,如果 φ(x) 具有足夠高的維數,我們總是有足夠的能力來擬合訓練集,但是對於測試集的泛化往往不佳。非常通用的特徵對映通常只基於區域性光滑的原則,並且沒有將足夠的先驗資訊進行編碼來解決高階問題

區域性光滑原則,應該是區分傳統機器學習和深度學習的重要特性。