SVM是機器學習里面最強大最好用的工具之一,它試圖在特征空間里尋找一個超平面,以最小的錯分率把正負樣本分開。它的強大之處還在于,當樣本在原特征空間中線性不可分,即找不到一個足夠好的超平面時,可以利用核(kernel)函數,將特征映射到希爾伯特(Hilbert)空間。后者一般維度更高,通過這樣的映射之后,樣本在新的特征空間中便是線性可分的了。
記得剛剛學習SVM的時候,對“核”這個詞很恐懼,一直理解不了它究竟是什么。在看MKL的時候,又經常會遇到“核矩陣”(kernel matrices)這個詞。現在說一下我的理解。
剛才說過,我們通過核把特征從低維空間映射到高維空間。舉例來說,我們看下面的多項式核函數:

其中x,y是兩個樣本,他們的特征分別是(x1,x2),(y1,y2),通過這個核函數,可以看到二維特征被映射到了六維特征。而且我們也可以理解,這個映射其實就是用一個矩陣A乘以原來的特征(x1,x2)得到的。矩陣A也就是核矩陣了。一個核函數對應一個核矩陣。
我們學過的SVM都是單核(single kernel)的,在使用的時候,需要我們根據經驗或試驗來選擇用哪種核函數、怎樣指定它的參數,這樣很不方便。另一方面,實際應用當中,特征往往不是single domain的,而是異構的。拿圖像分類來說,我們可能用到顏色相關的特征、紋理相關的特征、空間相關的特征,這幾類特征對應的最佳的核函數未必相同,讓他們共用同一個核函數,未必能得到最優的映射。對這些問題的思考,就引出了MKL。
簡單地說,我們給定一些base kernels,比如linear,Polynomial,RBF,Sigmoid,對于每一個,可以指定多組參數,也就是一共有M個base kernels,我們想用它們的線性組合來作為最終的核函數。通過training,得到這個線性組合中每個kernel的權重d(weight)。由于融合了各種kernel,可以照顧到異構的特征;由于自動學習權重,我們就不需要費腦子想究竟用哪一個核哪一種參數,把可能的核、參數都拿過來,組合著來用就可以了。
與傳統的單核SVM的不同,就是除了要學習w、b之外,還要學習上面提到的權重d。這樣的話,decision function, cost function都會有些變化,棘手的是,cost function 的求解不再是一個convex problem,傳統的優化方法就不適用了。近年來MKL比較熱,很多論文都是在優化方法上面下功夫,企圖達到更快的收斂速度、更好的解。具體的優化方法就比較復雜了,略去。
多核線性組合,最經典的是simpleMKL,也被作為MKL的具體實現,應用在了計算機各領域。為了使MKL應用地更廣,應對各種特征組合、各種樣本量級,后來又有人提出了GMKL,G即Generalized,最優化方法用的是PGD(Projected Gradient Descend)。為了改進收斂效果,Vishwanathan又提出SPG-GMKL(Spectral Projected Gradient),同時提出了多核的product組合。SPG-GMKL也被后來者視作state-of-art。
除了MKL,還有一個MKB(Multiple Kernel Boosting),大連理工大學的盧湖川有幾篇論文就是用MKB做跟蹤。論文生成MKB是基于MKL的,我覺得不然。請看MKB的框架圖:

這里的確用到多核,但每一個SVM都是單核的,根本沒有用到多核訓練的東西。本質上就是訓練出M * N個single-kernel SVM,然后用boosting的方法,把這些弱分類器ensemble為一個強分類器。用到的就是傳統的SVM加傳統的boosting,只是名字新,實質并無新意。
TKDE12 有一篇 MKBoost論文,這應該是正宗的MKB,它提出了一個框架,并提供了幾個formulation,然后與MKL做了比較。論文中全是公式,沒有看,以后需要的時候再研究吧。
MKL的經典實現有SimpleMKL,Shogun,SPG-GMKL,SMO-MKL,Google一下就可以找到。
如果只是要使用MKL,可以不看論文中的推導,更多的是看看上述幾種實現附帶的例子;可以看看MKL在跟蹤、圖像分類中的使用,輸入輸出是什么;可以看看這個和這個教程,簡單易懂。