還記得上篇末提到的對於最佳化問題:
的求解需要計算這個內積,而如果輸入樣本線性不可分的話,我們採取的方法是通過函數映射將輸入樣本映射到另外一個高維空間並使其線性可分。
以庫克定律為例(http://zh.wikipedia.org/zh-cn/%E9%9D%99%E7%94%B5%E5%8A%9B):
一個電量為 的點電荷作用於另一個電量為 的點電荷,其靜電力 的大小,可以用方程表達為:
,其中, 是兩個點電荷之間的距離, 是庫侖常數。
顯然這個定律無法用線性學習器來表達,看到乘積想到ln函數,對原始形式兩邊取ln,得到:
,令,,,,,那麼就得到一個線性學習器:
這個過程可以用說明:
這樣就將內積就變成了。
求可以有兩種方法:
1、先找到這種映射,然後將輸入空間中的樣本映射到新的空間中,最後在新空間中去求內積;
2、或者是找到某種方法,它不需要顯式的將輸入空間中的樣本映射到新的空間中而能夠在輸入空間中直接計算出內積。
先看第一種方法,以多項式 為例,對其進行變換,,,,,得到:
,也就是說通過把輸入空間從二維向四維映射後,樣本由線性不可分變成了線性可分,但是這種轉化帶來的直接問題是維度變高了,這意味著,首先可能導致後續計算變複雜,其次可能出現維度之咒,對於學習器而言就是:特徵空間維數可能最終無法計算,而它的泛化能力(學習器對訓練樣本以外資料的適應性)會隨著維度增長而大大降低,這也違反了“奧坎姆的剃刀”,最終可能會使得內積無法求出,於是也就失去了這種轉化的優勢了;
再看第二種方法,它其實是對輸入空間向高維空間的一種隱式映射,它不需要顯式的給出那個映射,在輸入空間就可以計算,這就是傳說中的核函數方法:
定義1:核是一個函數,對於所有的滿足,,這裡的為從到內積特徵空間的映射。
於是輸入空間的標準內積就被推廣了。
什麼時候才是核函數呢?
假設有輸入空間且為對稱函數,那麼對於所有樣本得到下面矩陣:,顯然,這個是個對稱矩陣,那麼對於對稱矩陣一定存在一個正交矩陣,使得,這裡是包含k的特徵值的對角矩陣,特徵值對應的特徵向量為,其中n為樣本數,對輸入空間做如下映射:
於是有,(其中為特徵向量組成的矩陣,為相應特徵值組成的三角矩陣),也就是說K是對應於映射的核函數。
例子:有\left[
\begin{array}{cccc}
4&0&0\\
0&3&1\\
0&1&3\\
\end{array}\right
]
" src="http://chart.apis.google.com/chart?cht=tx&chl=k%3d%0d%0a%5cleft%5b%0d%0a%5cbegin%7barray%7d%7bcccc%7d%0d%0a4%260%260%5c%5c%0d%0a0%263%261%5c%5c%0d%0a0%261%263%5c%5c%0d%0a%5cend%7barray%7d%5cright%0d%0a%5d%0d%0a">,由解得特徵值:,,對2重特徵根4求的基礎解系、正交化、單位化後得到特徵向量:和,對的特徵向量單位化後得到,於是有\left[
\begin{array}{cccc}
1&0&0\\
0&\frac{1}{\sqrt(2)}&-\frac{1}{\sqrt(2)}\\
0&\frac{1}{\sqrt(2)}&\frac{1}{\sqrt(2)}\\
\end{array}\right
]" src="http://chart.apis.google.com/chart?cht=tx&chl=V%3d(v_1%2cv_2%2cv_3)%3d%0d%0a%5cleft%5b%0d%0a%5cbegin%7barray%7d%7bcccc%7d%0d%0a1%260%260%5c%5c%0d%0a0%26%5cfrac%7b1%7d%7b%5csqrt(2)%7d%26-%5cfrac%7b1%7d%7b%5csqrt(2)%7d%5c%5c%0d%0a0%26%5cfrac%7b1%7d%7b%5csqrt(2)%7d%26%5cfrac%7b1%7d%7b%5csqrt(2)%7d%5c%5c%0d%0a%5cend%7barray%7d%5cright%0d%0a%5d">,滿足\begin{array}{cccc}
4&0&0\\
0&4&0\\
0&0&2\\
\end{array}\right
]" src="http://chart.apis.google.com/chart?cht=tx&chl=V%5e%7b-1%7dkV%3d%5cLambda%3d%5cleft%5b%0d%0a%5cbegin%7barray%7d%7bcccc%7d%0d%0a4%260%260%5c%5c%0d%0a0%264%260%5c%5c%0d%0a0%260%262%5c%5c%0d%0a%5cend%7barray%7d%5cright%0d%0a%5d">,對所有輸入樣本做映射得:
;
;
。
隨便選兩個做內積,如。
由此可見:就是對應於特徵映射的核函數,也就得到下面的結論:
定理1:存在有限輸入空間,為上的對稱函數,那麼是核函數的充要條件是矩陣半正定,此時相當於對輸入空間向特徵空間進行了隱式的映射。對於上面的映射,令,於是,進而。
定理3:設是的一個緊子集(閉合且有界子集),為上的對稱函數,如果它在希爾伯特空間上的積分運算元滿足:
這裡指的是由滿足條件的所有函數組成的空間。
在上擴充到一個一致收斂的序列,該序列由的特徵函數構成,歸一化使得,且所有特徵值 ,則核函數可以被特徵分解為:
在核方法中有一個相當重要的、不得不說的概念(先打個標記):
定義2:設是希爾伯特函數空間,其元素是某個抽象集合上的實值或複值函數,如果對於任何,作為的函數都是中的元素,而且對於任何及取內積有:
則稱為為再生核希爾伯特空間(Reproducing Kernel Hilbert Space,RKHS);稱為再生核空間的再生核(簡稱RK)。
定理4:對於定義在域上的每一個核,存在一個定義在上的函數的再生希爾伯特空間,其中是再生核。反過來,對於線性有界函數的任意希爾伯特空間,存在再生核這個命題也成立。
當然也可以利用核函數來構造核函數,有時候這種構造會很有效解決問題:
條件:設、是上的核,,是上的實值函數,,是上的核,是一個對稱半正定矩陣,則下面的函數都是核:
1、;
2、;
3、;
4、;
5、;
6、。
核的選擇對於支援向量機至關重要,選定核後,原問題就變成了:
這個最佳化問題有最優解嗎?記得核要滿足Mercer條件,即矩陣在所有訓練集上半正定,這說明這個最佳化是凸最佳化,於是這個條件保證了最大化間隔最佳化問題有唯一解,簡直是天作之合啊,配合的天衣無縫;最後求的和,那麼從輸入空間向特徵空間隱式映射後得到的最大間隔超平面也就出來了:,且有幾何間隔{(\sum\limits_{i \in support \quad vector}\alph^*_i)}^{1/2}" src="http://chart.apis.google.com/chart?cht=tx&chl=%5cgamma%3d%5cfrac%7b1%7d%7b%7c%7cw%5e*%7c%7c%7d%3d%0d%0a%7b(%5csum%5climits_%7bi+%5cin+support+%5cquad+vector%7d%5calph%5e*_i)%7d%5e%7b1%2f2%7d">。
常用核函數總結如下:
線性核函數:
多項式核函數:
高斯核函數:
核函數:
下面這個連結收集了若干核函數:
http://www.shamoxia.com/html/y2010/2292.html
關於核方法的理論部分涉及到泛函分析、微積分等等,水比較深,我推薦一本書:《Kernel Methods for Pattern Analysis》(模式分析的核方法),作者是:John Shawe-Taylor和Nello Cristianini 。