1摘要分類在搜索引擎中的應(yīng)用非常廣泛,這種分類屬性可以方便在rank過程中針對不同類別實現(xiàn)不同的策略,來更好滿足用戶需求。本人接觸分類時間并不長,在剛用SVM做分類的時候?qū)σ粋€現(xiàn)象一直比較困惑,看到大家將各種不同類型特征,拼接在一起,組成龐大的高維特征向量,送給SVM,得到想要的分類準確率,一直不明白這些特征中,到底是哪些特征在起作用,哪些特征組合在一起才是最佳效果,也不明白為啥這些特征就能夠直接拼在一起,是否有更好的拼接方式?后來了解到核函數(shù)以及多核學習的一些思想,臨時抱佛腳看了點,對上面的疑問也能夠作一定解釋,正好拿來和大家一起探討探討,也望大家多多指點。本文探討的問題所列舉的實例主要是圍繞項目中的圖像分類展開,涉及SVM在分類問題中的特征融合問題。擴展開來對其他類型分類問題,理論上也適用。 關(guān)鍵詞: SVM 特征融合 核函數(shù) 多核學習 2基本概念闡述SVM:支持向量機,目前在分類中得到廣泛的應(yīng)用 特征融合:主要用來描述各種不同的特征融合方式,常見的方式有前期融合,就是前面所描述的將各個特征拼接在一起,后期融合本文后面會提到 核函數(shù):SVM遇到線性不可分問題時,可以通過核函數(shù)將向量映射到高維空間,在高維空間線性可分 多核學習:在利用SVM進行訓練時,會涉及核函數(shù)的選擇問題,譬如線性核,rbf核等等,多核即為融合幾種不同的核來訓練。 3應(yīng)用背景在圖片搜索中,會出現(xiàn)這樣的一類badcase,圖像的內(nèi)容和描述圖像的文本不一致,經(jīng)常會有文本高相關(guān),而圖像完全不一致的情況。解決這類問題的一個思路就是綜合利用圖像的內(nèi)容分類屬性和文本的query分類屬性,看兩者的匹配程度做相應(yīng)策略。 4分類方法的選取下面就可以談到本文的重點啦,那是如何對圖像分類的呢? 對分類熟悉的同學,馬上可能要說出,這還不easy,抽取各種特征,然后一拼接,隨便找個分類器,設(shè)定幾個參數(shù),馬上分類模型文件就出來啦,80%準確率沒問題。 那這個方法確實不錯也可行,但是有沒有可以改進的地方呢? 這里可能先要說明下圖像分類的一些特殊性。 圖像的分類問題跟一般的分類問題方法本質(zhì)上沒太大差異,主要差異體現(xiàn)在特征的抽取上以及特征的計算時間上。 圖像特征的抽取分為兩部分,一部分是針對通用圖像的特征,還有一部分則是針對特定類別抽取的特征。這些特征與普通的文本特征不一致的地方在于,一個圖像特征由于存在分塊、采樣、小波變換等,可能維度就已經(jīng)很高。譬如常見的MPEG-7標準中提到的一些特征,邊緣直方圖150維,顏色自相關(guān)特征512維等。在分類過程中,如果將這些特征拼接在一起直接就可能過千維,但是實際在標注樣本時,人工標注的正負樣本也才幾千張,所以在選擇分類器時,挑選svm,該分類器由于可以在眾多分類面中選擇出最優(yōu)分界面,以及在小樣本的學習中加入懲罰因子產(chǎn)生一定軟邊界,可以有效規(guī)避overfitting。 在特征的計算時間上,由于圖像處理涉及的矩陣計算過多,一個特征的計算時間慢的可以達到0.3秒,所以如何挑選出既有效又快速的特征也非常重要。 5兩種特征融合方式的比較那剛才的方法有什么問題呢? 仔細想想,大致存在以下幾點問題: 1. 你所提取的所有特征,全部串在一起,一定合適么?如果我想知道哪些特征組合在一起效果很好,該怎么辦? 2. 用svm進行學習時,不同的特征最適合的核函數(shù)可能不一樣,那我全部特征向量串在一起,我該如何選擇核函數(shù)呢? 3. 參數(shù)的選取。不同的特征即使使用相同的核,可能最適合的參數(shù)也不一樣,那么如何解決呢? 4. 全部特征都計算,計算時間的花銷也是挺大的 對于剛才的問題,如果用前期融合,可能是用下面方式來解決: 1. 根據(jù)經(jīng)驗,覺得在樣本中可能表現(xiàn)不錯的特征加進來,至于組合么,全部串在一起,或者選幾個靠譜的串一起,慢慢試驗,慢慢調(diào),看哪些特征有改進就融合在一起 2. 也是根據(jù)經(jīng)驗,選取普遍表現(xiàn)不錯的RBF核,總之結(jié)果應(yīng)該不會差 3. 交叉驗證是用來干嘛的?驗證調(diào)優(yōu)參數(shù)唄,全部特征融合在一起,再來調(diào),盡管驗證時間長,不要緊,反正模型是離線訓練的,多調(diào)會也沒關(guān)系。 那是否有更好的選擇方案呢? 多核學習(MKL)可能是個不錯的選擇,該方法屬于后期融合的一種,通過對不同的特征采取不同的核,對不同的參數(shù)組成多個核,然后訓練每個核的權(quán)重,選出最佳核函數(shù)組合來進行分類。 先看下簡單的理論描述: 普通SVM的分類函數(shù)可表示為: 其中為待優(yōu)化參數(shù),物理意義即為支持向量樣本權(quán)重,用來表示訓練樣本屬性,正樣本或者負樣本,為計算內(nèi)積的核函數(shù),為待優(yōu)化參數(shù)。 其優(yōu)化目標函數(shù)為: 其中用來描述分界面到支持向量的寬度,越大,則分界面寬度越小。C用來描述懲罰因子,而則是用來解決不可分問題而引入的松弛項。 在優(yōu)化該類問題時,引入拉格朗日算子,該類優(yōu)化問題變?yōu)椋?/p> 其中待優(yōu)化參數(shù)在數(shù)學意義上即為每個約束條件的拉格朗日系數(shù)。 而MKL則可認為是針對SVM的改進版,其分類函數(shù)可描述為: 其中,表示第K個核函數(shù),則為對應(yīng)的核函數(shù)權(quán)重。 其對應(yīng)的優(yōu)化函數(shù)可以描述為: 在優(yōu)化該類問題時,會兩次引入拉格朗日系數(shù),參數(shù)與之前相同,可以理解為樣本權(quán)重,而則可理解為核函數(shù)的權(quán)重,其數(shù)學意義即為對每個核函數(shù)引入的拉格朗日系數(shù)。具體的優(yōu)化過程就不描述了,不然就成翻譯論文啦~,大家感興趣的可以看后面的參考文檔。 通過對比可知,MKL的優(yōu)化參數(shù)多了一層其物理意義即為在該約束條件下每個核的權(quán)重。 Svm的分類函數(shù)形似上是類似于一個神經(jīng)網(wǎng)絡(luò),輸出由中間若干節(jié)點的線性組合構(gòu)成,而多核學習的分類函數(shù)則類似于一個比svm更高一級的神經(jīng)網(wǎng)絡(luò),其輸出即為中間一層核函數(shù)的輸出的線性組合。其示意圖如下: 在上圖中,左圖為普通SVM示例,而全圖則為MKL示例。其中為訓練樣本,而為不同的核函數(shù),為支持向量權(quán)重(假設(shè)三個訓練樣本均為支持向量),為核權(quán)重,y為最終輸出分類結(jié)果。 6實驗過程:以實際對地圖類別的分類為例,目前用于分類的特征有A,B,C,D,E,F(xiàn),G(分別用字母代表某特征),這些特征每個的維數(shù)平均幾百維。 準備工作: 1. 人工標注地圖類別正負樣本,本次標注正樣本176張,負樣本296張 2. 提取正負訓練樣本圖片的A~G各個特征 3. 歸一化特征 4. 為每個特征配置對應(yīng)的核函數(shù),以及參數(shù) 工具: Shogun工具盒:http://www./,其中關(guān)于該工具的下載,安裝,使用實例都有詳細說明。該工具除了提供多核學習接口之外,幾乎包含所有機器學習的工具,而且有多種語言源碼,非常方便使用。 結(jié)果測試: 經(jīng)過大約5分鐘左右的訓練,輸出訓練模型文件,以及包含的核函數(shù)權(quán)重、準確率。 在該實例中,7個特征分別用七個核,其權(quán)重算出來為: 0.048739 0.085657 0.00003 0.331335 0.119006 0.00000 0.415232, 最終在測試樣本上準確率為:91.6% 為了節(jié)省特征抽取的時間,考慮去掉權(quán)重較小的特征A、C、F, 拿剩下4個核訓練,幾分鐘后,得到核函數(shù)權(quán)重如下: 0.098070 0.362655 0.169014 0.370261, 最終在測試樣本上準確率為:91.4% 在這次訓練中,就可以節(jié)約抽取A、C、F特征的訓練時間,并且很快知道哪些特征組合在一起會有較好的結(jié)果。 實驗的幾點說明: 1. 該類別的分類,因為樣本在幾百的時候就已經(jīng)達到不錯效果,所以選取數(shù)目較少。 2. 該實驗是針對每個特征選擇一個核,且每個核配置固定參數(shù),實際中如果時間允許,可以考慮每個特征選不同核,同一核可以選取不同參數(shù),這樣可以得到稍微更好的結(jié)果。 參考文章: Large Scale Multiple Kernel Learning SimpleMKL Representing shape with a spatial pyramid kernel 參考代碼:http://www./doc/cn/current/libshogun_examples.html, 7個人經(jīng)驗與總結(jié):1. 多核學習在解釋性上比傳統(tǒng)svm要強。多核學習可以明顯的看到各個子核中哪些核在起作用,哪些核在一起合作效果比較好。 2. 關(guān)于參數(shù)優(yōu)化。曾經(jīng)做過實驗,關(guān)于同一特征選用同一核,但是不同參數(shù),組合成多個核,也可以提升分類準確率。 3. 多核學習相比前期特征融合在性能上會有3%~5%左右的提升。 4. 通過特征選擇,可以節(jié)約特征計算時間。 by wenshilei
覺得文章有用?立即:
和朋友一起 共學習 共進步!
|
|