svm的一些理解(网上收集)
機器學習(Machine Learning, ML)的目的是根據給定的訓練樣本求對某系統輸入輸出之間依賴關系的估計,使它(這種關系)能夠對未知輸出做出盡可能準確地預測。機器學習至今沒有一個精確的公認的定義。作為人工智能(Artificial Intelligence, AI)的一個重要研究領域,ML的研究工作主要圍繞學習機理、學習方法和面向任務這三個基本方面進行研究。模式識別、函數逼近和概率密度估計是三類基本的ML問題。
?
從數學的角度來考慮,機器學習問題就是已知n個獨立同分布的觀測樣本,在同一組預測函數中求一個最優的函數對依賴關系進行估計,使期望風險R[f]最小。損失函數是評價預測準確程度的一種度量,它與預測函數f(x)密切相關。而f(x)的期望風險依賴于概率分布和損失函數,前者是客觀存在的,后者是根據具體問題選定的,帶有(主觀的)人為的或偏好色彩。期望風險的大小直觀上可以理解為,當我們用f(x)進行預測時,“平均”的損失程度,或“平均”犯錯誤的程度。
?
但是,只有樣本卻無法計算期望風險,因此,傳統的學習方法用樣本定義經驗風險Remp[f]作為對期望風險的估計,并設計學習算法使之最小化。即所謂的經驗風險最小化(Empirical Risk Minimization, ERM)歸納原則。經驗風險是用損失函數來計算的。對于模式識別問題的損失函數來說,經驗風險就是訓練樣本錯誤率;對于函數逼近問題的損失函數來說,就是平方訓練誤差;而對于概率密度估計問題的損失函數來說,ERM準則就等價于最大似然法。事實上,用ERM準則代替期望風險最小化并沒有經過充分的理論論證,只是直觀上合理的想當然做法。也就是說,經驗風險最小不一定意味著期望風險最小。其實,只有樣本數目趨近于無窮大時,經驗風險才有可能趨近于期望風險。但是很多問題中樣本數目離無窮大很遠,那么在有限樣本下ERM準則就不一定能使真實風險較小啦。ERM準則不成功的一個例子就是神經網絡的過學習問題(某些情況下,訓練誤差過小反而導致推廣能力下降,或者說是訓練誤差過小導致了預測錯誤率的增加,即真實風險的增加)。
?
統計學習理論(Statistical Learning Theory, SLT)和支持向量機(Support Vector Machine, SVM)建立了一套較好的有限訓練樣本下機器學習的理論框架和通用方法,既有嚴格的理論基礎,又能較好地解決小樣本、非線性、高維數和局部極小點等實際問題,其核心思想就是學習機器(又叫預測函數,或學習函數,或學習模型)F要與有限的訓練樣本相適應。在學習算法中需要選擇恰當的F,這里的關鍵因素是F的大小,或者F的豐富程度,或者說F的“表達能力”,VC維(Vapnik-Chervonenkis Dimension)就是對這種“表達能力”的一種描述。
?
VC維的定義如下:對于一個指示函數集,如果存在h個樣本能夠被函數集中的函數按所有可能的2的h次冪種形式分開,則稱函數集能夠把h個樣本都打散,h的最大值就是函數集的VC維。VC維是SLT中的一個重要概念,它是函數集學習性能的重要指標。目前尚沒有通用的關于任意函數集VC維計算的理論,只知道一些特殊的函數集的VC維。比如,在n維空間中線性分類器和線性實函數的VC維是 n+1,而 f(x,a) = sin(ax) 的VC維則為無窮大。對于給定的學習函數集,如何(用理論或實驗的方法)計算其VC維是當前統計學習理論中有待研究的一個問題。
?
由上文可知,在有限樣本情況下,僅僅用ERM來近似期望風險是行不通的。統計學習理論給出了期望風險 R[f] 與經驗風險 Remp[f] 之間關系:R[f] <= ( Remp[f] + e )。其中 e = g(h/n) 為置信區間,e 是VC維 h 的增函數,也是樣本數n的減函數。右端稱為結構風險,它是期望風險 R[f] 的一個上界。經驗風險的最小依賴較大的 F (樣本數較多的函數集)中某個 f 的選擇,但是 F 較大,則VC維較大,就導致置信區間 e 變大,所以要想使期望風險 R[f] 最小,必須選擇合適的 h 和 n 來使不等式右邊的結構風險最小,這就是結構風險最小化(Structural Risk Minimization, SRM)歸納原則。實現SRM的思路之一就是設計函數集的某種結構使每個子集中都能取得最小的經驗風險(如使訓練誤差為0),然后只需選擇適當的子集使置信范圍最小,則這個子集中使經驗風險最小的函數就是最優函數。SVM方法實際上就是這種思想的具體實現。
???????????????????????????????????????????????????????????????????????????????????????????????
SVM是一種基于統計的學習方法,它是對SRM的近似。概括地說,SVM就是首先通過用內積函數定義的非線性變換將輸入空間變換到一個高維空間,然后再在這個空間中求(廣義)最優分類面的分類方法。
?
?
名詞解釋1——支持向量機:“機(machine,機器)”實際上是一個算法。在機器學習領域,常把一些算法看作是一個機器(又叫學習機器,或預測函數,或學習函數)。“支持向量”則是指訓練集中的某些訓練點的輸入 xi 。它是一種有監督(有導師)學習方法,即已知訓練點的類別,求訓練點和類別之間的對應關系,以便將訓練集按照類別分開,或者是預測新的訓練點所對應的類別。
?
名詞解釋2——符號函數:sgn(a) = 1, a >= 0;sgn(a) = -1, a < 0.
?
一般地,考慮 n 維空間上的分類問題,它包含 n 個指標和 l 個樣本點。記這 l 個樣本點的集合為 T = {(x1,y1),...,(xl,yl)},其中 xi 是輸入指標向量,或稱輸入,或稱模式,其分量稱為特征,或屬性,或輸入指標;yi 是輸出指標向量,或稱輸出,i = 1,...,l。 這 l 個樣本點組成的集合稱為訓練集,所以我們也稱樣本點位訓練點。
?
對于訓練集來說,有線性可分、近似線性可分和線性不可分等三種情況,這就是分類問題的三種類型。其實,無論是哪類問題,都有對應的分類機,這將在以下的內容中進行詳細闡述。那么,有人可能會問,什么叫線性可分?通俗地講,就是可以用一條或幾條直線把屬于不同類別的樣本點分開。實際上,求解分類問題,就是要求出這條或這幾條直線!那么,問題是:怎么求?這里先以二維兩類線性可分的分類問題為例,做個詳細的說明,然后再過渡到多類分類問題。
?
首先,回憶一下平面(二維)坐標系中某條直線的方程。還記得直線的一般方程
Ax + By + C = 0 (公式一)
吧,我們引入向量的概念,則該方程可以寫成{x,y}與{A,B}的內積加上C等于0,即
{A,B}·{x,y} + C = 0
你還記得法向量和方向向量的概念嗎?其實{A,B}就是法向量,而{B,-A}就是方向向量了。那么我們可以把直線的一般方程簡化成為
w·x + b = 0 (公式二)
的形式(因為這個式子是大家最常用的嘛)。注意:(公式二)中的 x 和(公式一)中的 x 不同,前者一個二維向量,后者是一個實數。
?
對于兩類問題,如果將某一直線兩側的樣本點分為正類和負類,則用符號函數的方式推斷點 x 所對應的類別 y 的決策函數如下:
y? = f(x) = sgn((w·x) + b) (公式三)
根據符號函數的定義,很明顯 y 的取值要么是 1 ,要么是 -1,也就是說樣本點的類別只有 1 和 -1 兩類。此時的分類問題是:對于任意給定的一個新的模式 x ,根據訓練集推斷它所對應的輸出 y 是 1 還是 -1。這就是線性可分的分類問題,也是一個模式識別問題,我們要做的工作就是要求出 w 和 b 。
?
直接求這兩個參數基本上不太可能,除了訓練集我們又沒有別的信息可以利用,這可如何是好?前輩們給出了一個絕妙的方法——就是所求得的預測函數 f(x) 對原有樣本的分類錯誤率最小。那么,問題又出來了,這個錯誤率咋算?損失函數就是專門用來評價預測準確程度的一種度量,而且模式識別問題使用的正是“0-1損失函數”。根據我的上一篇學習體會——《從機器學習到支持向量機》http://axywestwind.bokee.com/viewdiary.14525093.html中的闡述,使(公式三)中的 f(x) 的預測誤差最小的問題轉化成期望誤差最小、經驗風險最小,最后在統計學習理論中又轉化為結構風險最小(Structural Risk Minimization, SRM)。而實現SRM的思路之一就是設計預測函數集的某種結構使每個子集中都能取得最小的經驗風險(如使訓練誤差為0),然后只需選擇適當的子集使置信范圍最小,則這個子集中使經驗風險最小的函數就是最優函數。SVM方法實際上就是這種思想的具體實現,它是對SRM的近似。說了半天,終于和上次的內容連接上了。但是,為了求解SRM這個最小化問題,還得將它轉化成數學形式。
?
SVM方法是從線性可分情況下的最優分類面提出的,它是實現統計學習理論思想的方法。什么是最優分類面呢?這要從最優分類線說起。所謂最優分類線就是要求分類線不但能將兩類無錯誤地分開,而且要使兩類的分類間隔最大。前者是保證經驗風險最小(如使訓練誤差為0),而使分類間隔最大實際上就是使推廣性的界中的置信范圍最小,從而使真實風險最小。推廣到高維空間,最優分類線就成為最優分類面。
?
那么如何構造這個最優分類面呢?方法有 2 個:平分最近點法和最大間隔法。有趣的是,這兩個方法殊途同歸,它們求解得到的是同一個超平面(由三個定理聯合起來證明了這個結論)。由這三個定理可知,這兩個方法與一個最優化問題求解方法等價,這個方法就稱為“線性可分支持向量分類機”。其實,這個分類機是將最大間隔法求解最優分類面的最優化問題轉化為其對偶問題,從而通過求解相對簡單的對偶問題來求解原分類問題的算法。隨后引入松弛變量和懲罰因子來解決非線性分類問題,并且允許一定的分類錯誤(軟間隔),最終得到非線性軟間隔的標準的 C-支持向量機(C-SVC)。其中的巧妙之處就在于把一個復雜的最優化問題的求解簡化為對原有樣本數據的內積運算。我們要做的就是選擇適當的核函數及其參數、懲罰因子就可以了。
?
概括地說,SVM就是首先通過用內積函數定義的非線性變換將輸入空間變換到一個高維空間,然后再在這個空間中求(廣義)最優分類面的分類方法。
?
那么,如何通過計算機來求解這個內積運算呢?且聽下回分解!下次會介紹選塊算法、分解算法,并重點介紹由分解算法改進得到的最經典的 SMO 算法。
?
?
?
?
?
目錄
1.提出背景
2.算法思想
3.算法描述
a) Chunking算法
b) Qsuna算法
4.算法優越性討論
a) 人工神經網絡
b) 支持向量機
c) ANN的缺點
d) VM的優點
5.主要應用領域
1.提出背景
支持向量機SVM ( Support Vector Machines)是由Vanpik領導的AT&TBell實驗室研究小組在1963年提出的一種新的非常有潛力的分類技術, SVM是一種基于統計學習理論的模式識別方法,主要應用于模式識別領域。由于當時這些研究尚不十分完善,在解決模式識別問題中往往趨于保守,且數學上比較艱澀,因此這些研究一直沒有得到充的重視。直到90年代,一個較完善的理論體系—統計學習理論 ( StatisticalLearningTheory,簡稱SLT) 的實現和由于神經網絡等較新興的機器學習方法的研究遇到一些重要的困難,比如如何確定網絡結構的問題、過學習與欠學習問題、局部極小點問題等,使得SVM 迅速發展和完善,在解決小樣本、非線性及高維模式識別問題中表現出許多特有的優勢,并能夠推廣應用到函數擬合等其他機器學習問題中,從此迅速的發展起來。
?
2.算法思想
支撐向量機主要采用了分解算法思想,它將QP問題分解為一系列規模較小的子問題,希望通過對子問題的迭代求解,得到QP問題的全局最優解。這樣解決了存儲空間受限的問題,另一方面,要使算法可行,還必須解決諸如分解策略,迭代算法的收斂性,收斂條件,優化時間,以及如何利用解的稀疏性來優化加快速度等問題。
SVM的關鍵在于核函數,這也是最喜人的地方。低維空間向量集通常難于劃分,解決的方法是將它們映射到高維空間。但這個辦法帶來的困難就是計算復雜度的增加,而核函數正好巧妙地解決了這個問題。也就是說,只要選用適當的核函數,我們就可以得到高維空間的分類函數。在SVM理論中,采用不同的核函數將導致不同的SVM算法
3.算法描述
3.1 Chunking算法
Chunking算法是V.Va pnik等人提出的一種求解QP問題的算法。它可看成是一種不完全的分解算法。算法將原先的QP問題分解成一系列待優化的子問題。任何一個子問題都維護一個與其相關的變量的子集,在優化過程中保持其他的變量值不變。子問題維護所有上一步優化后得到的非零變量,及其它違反KKT條件最嚴重的M個變量。這樣經過反復迭代優化,最終將得到QP問題的全局最優解。
算法描述
1.選擇初始子問題,包括選擇問題的規模nl,待優化的變量子集及每次添加進優化子集的違反KKT條件的變量數目M。
2.采 用一種QP優化器求解上述子問題,得到一個分類器。
3.用剩余訓練樣本測試上述分類器,采用KKT條件評價測試結果。如果所有變量都滿足KKT條件,則結束訓練;否則,選擇違反KKT條件最劇烈的M個變量,并與上一步優化得到的非零值變量構成待優化子問題,重復第2步。
3.2 Osuna算法
199 7年 ,E dgarOs una[49.50]提出一個求解SVM中問題的分解算法,既是把一個大型QP問題分解成一個小型QP問題組成的序列,在上一步的QP子問題中至少加入一個違反KKT條件的點而構成下一步的QP子問題,每一步優化目標函數的值并始終保持滿足約束條件,從而使這些QP子問題構成的序列收斂,直至最后所有的點都滿足KKT條件,也即得到了原問題的解。
4.算法優越性討論
本部分主要討論了支持向量機與目前非常流行的人工神經網絡相比,具有的優越性,僅供參考。
4.1 人工神經網絡
神經網絡是基于傳統統計學的基礎上的。傳統統計學研究的內容是樣本無窮大時的漸進理論,即當樣本數據趨于無窮多時的統計性質,而實際問題中樣本數據往往是有限的。因此,假設樣本數據無窮多,并以此推導出的各種算法很難在樣本數據有限時取得理想的應用效果。
4.2? 支持向量機
支持向量機是基于統計學理論的基礎上的,可以克服神經網絡難以避免的問題。通過支持向量機在逼近能力方面與BP網絡仿真結果的比較表明,支持向量機具有較強的逼近能力和泛化能力。
4.3 人工神經網絡存在的一些缺陷
人工神經網絡是目前研究較多的交叉學科,由于通過選擇適當的隱單元數和網絡層次,前饋網絡能以任意精度逼近非線性函數(Funahashi,1989),因此神經網絡技術被廣泛應用到工業過程的建模與控制中,并取得了巨大成功。盡管如此,神經網絡仍存在一些缺陷:
(1)網絡結構需要事先指定或應用啟發算法在訓練過程中修正,這些啟發算法難以保證網絡結構的最優化;
(2)網絡權系數的調整方法存在局限性;
(3)神經網絡易陷入局部最優,有些甚至無法得到最優解;
(4)過分依賴學習樣本,即模型性能的優劣過分依賴于模型訓練過程中樣本數據,而大多數情況下,樣本數據是有限的。除次,許多實際問題中的輸入空間是高維的,樣本數據僅是輸入空間中的稀疏分布,即使能得到高質量的訓練數據,數據量必然很大。但是樣本數要是很多的話,必然使訓練時間大大增加;
(5)目前尚無一種理論能定量的分析神經網絡的訓練過程的收斂速度,及收斂速度的決定條件,并對其加以控制;
(6)神經網絡的優化目標是基于經驗的風險最小化,這就不能保證網絡的泛化能力。盡管存在以上問題,神經網絡仍然取得了很多成功應用,其原因在于,神經網絡的設計與設計者有很大的關系。設計者若在網絡設計過程中有效的利用了自己的經驗知識和先驗知識,可能會得到較理想的網絡結構。因此,神經網絡系統的優劣是因人而異的。
4.4 支持向量機的新特點
支持向量機是以統計學理論為基礎的,因而具有嚴格的理論和數學基礎,可以不象神經網絡的結構設計需要依賴于設計者的經驗知識和先驗知識。支持向量機與神經網絡的學習方法相比,支持向量機具有以下特點:
(1)支持向量機是基于結構風險最小化(SRM,structuralriskminimization)原則,保證學習機器具有良好的泛化能力;
(2)解決了算法復雜度與輸入向量密切相關的問題;
(3)通過引用核函數,將輸入空間中的非線性問題映射到高維特征空間中在高維空間中構造線性函數判別;
(4)支持向量機是以統計學理論為基礎的,與傳統統計學習理論不同。它主要是針對小樣本情況,且最優解是基于有限的樣本信息,而不是樣本數趨于無窮大時的最優解;
(5)算法可最終轉化為凸優化問題,因而可保證算法的全局最優性,避免了神經網絡無法解決的局部最小問題;
(6)支持向量機有嚴格的理論和數學基礎,避免了神經網絡實現中的經驗成分。
5.主要應用領域
現在已經在許多領域,如:生物信息 學,文本和手寫識別等,都取得了成功的應用。
?
?
?
Solu兄要我寫點什么,可實在知道的很少,只好寫寫自己看書看論文的經過。 所以這一切是從SVM開始的。我喜歡通過一些直觀的東西理解,所以下面的討論就集中在二類問題上(y=-1 or +1),并且樣本數據是二維的(X=(x1,x2))。平面上的點的二分類問 題。我們的目標是從一堆訓練數據(比如L個(xi,yi)對,這里還要做限制,就是這些數據是 來自一個潛在分布,并且相互之間是獨立的,這些限制對于Vapnik證明的那些界是必要的 )中學到一些什么,我們把目標再定低一點,希望學到給定樣本數據Xt,如何推出它的類別 Yt。 該如何處理這種問題呢?一種簡單的方法就是我們假定這些數據(或其背后的分布)來 自于(或者足夠接近)某個候選模型集,這樣問題就進一步簡化了,變成了一個搜索問題 (如何在某個候選集中選一個模型使得其能夠較好地解釋訓練數據)。看來好像問題已經 簡化得很厲害了,但這里還有兩個問題,首先到底在一個什么樣的模型集中搜索,其次什 么是“比較好的解釋”,前者是模型復雜度的問題,也就是正則化的問題,后者則是損失 函數的問題。(當然這里還有很多很多的問題,如先驗知識、數據中是否有噪聲、樣本數 據的各維中是否有冗余是否相關等等)。 我們先看看模型復雜度,無論是奧姆斯剃刀理論還是“殺雞焉用宰牛刀”都告訴我們, 對于簡單的問題不要用太復雜的方法。但標準是什么呢?如何分辨指甲刀和西瓜刀呢?通 常我們要看這把刀能干什么(并且是至多能做什么)。這里要解決的問題是分類,那么要 看的就是一個模型集的分類能力(給定某個樣本數據x,給出其相應的類別,也就是說所謂 “分類”可以看作對樣本數據的解釋)。VC維就是描述這種能力的一種度量。一個模型集 是由很多模型組成的,每個模型可以對樣本數據做出一種解釋(也就是給定任意樣本數據 使用該模型可以給出一個確定的類別),一個模型集的VC維是一個正整數,表示使用這個 模型集可以“至多”“任意”解釋的樣本數據的個數。例如一個模型集的VC維是3,就表示 這個模型集可以“至多”“任意”解釋3個樣本數據,所謂“任意解釋”,就是給定3個樣 本數據(x1,x2,x3),我們可以在這個模型集中找到2^3=8個模型,每個模型分別 給出不同的類別給這3個樣本數據(如,模型f1將x1,x2,x3,分類為-1-1-1,f2為-1-1+1,.. .,f8為+1+1+1),所謂“至多”就是我們只能“找到”(也就是說不要求任意3個樣本數據 可以被任意解釋)3個樣本數據被任意解釋而無法找到4個。 VC維的意義主要 是在概念上而非計算上,因為通常很多模型的VC維都是無法求得的。 但也有一些特殊的模型集的VC維是可以直接求得的,比如n維空間的所有“超平面”的 VC維就是n+1。我們回到上面的問題設定,我們考慮2維平面上所有的直線組成的模型集( 易見每條直線都可以將整個平面分為兩部分,+1類,-1類,線上的部分可以隨便 算到+1類或-1類),我們發現我們可以很容易找到3個點(樣本數據),只要這3個點不共 線,我們便可以找到8條直線給出這3個點的所有的類別可能。但 4個點卻無法找到,可以 證明n維空間的所有超平面的VC維就是n+1。 這樣一來使用超平面就可以方便的控制模型的復雜度,但這里存在一個問題,那就是這 里的VC維是與樣本數據的維數相關的,這為后面使用核方法就造成了困難。所以考慮另一 種相近的模型集,這個模型集里的模型是一個個“超平板”--帶有確定厚度的 超平面,每個“超平板”將空間分為兩部分,自己再占一部分,自己占的這部分不做解釋 (拒絕分類)(由于VC維是能夠“找到”若干個樣本,所以盡管不是對整個樣本空間進行 解釋,但并不影響VC維的計算。那這樣做影響了什么呢?這是個問題)。并且Vapnik 證明了這個板的厚度是這個模型集的VC維的上界,從而控制模型集的復雜度可以通過控制 板的厚度來實現。這是一個重要的進步,這個模型集的復雜度與樣本數據的維數無關了, 也使得SVM使用kernel trick成為可能。 為什么厚的板的VC維就小呢?Learing with kernels里面有個很好的圖。簡單起見,我 們去掉超平面的那個常數項,考慮2維平面,也就是所有的超平板都過原點,假定樣本數據 都分布在半徑為R的以原點為圓心的圓內,可見隨著板的厚度的增加,我們就沒有辦法再找 到3個點能夠被任意解釋了。也就是說盡管在一個很高維的空間我們仍舊可以通過控制板的 厚度,使得我們的模型集的復雜度不是很大。(但這里有對數據分布的限制,那個R,這會 造成什么問題呢? 這是個問題)。 這個板的厚度也就是通常提到的分類面的margin,對于這個margin還有很多其他的解釋 ,如margin引入了robust啊等等,但我覺得對于SVM關鍵是維數無關。
?
前面提到一個分類器的訓練包含兩個問題損失函數以及正則化(很多監督學習算法的目 標函數也都是不同的損失函數與不同的正則化項的組合)。前者是衡量當前候選分類器在 訓練數據上的性能(對應貝葉斯方法中的似然函數),后者則是衡量當前學習器所來自的 模型集的復雜度(對應貝葉斯方法中的先驗概率)。Vapnik關于分類器的推廣能力的界也 就是這兩部分,也就是說如果我們能在一個非常簡單的模型集中找到一個分類器,使得其 能非常好地解釋訓練數據(具有很小的損失),那么這個分類器將會以很大的概率在未來 的數據上表現很好。這也就引出了Vapnik的結構風險最小化,所謂結構風險最小化也就是 首先確定一組嵌套的模型集(F1包含于F2。。。FN),并且隨著下標的增加模型集的VC維也 隨之增加,也就是從模型集F1開始模型集變得越來越復雜。我們從每個模型集中選出一個 分類器(f1,f2,...,fN),使得每個分類器均在各自的模型集中使得損失函數最小。這樣 我們就同時獲得上面兩個問題(模型復雜度以及候選分類器在訓練集上的損失)的答案。 利用Vapnik的界在模型復雜度與訓練集上的表現進行折中,我們就可以找到一個最佳的分 類器了。 這個指導原則其實也可以從“奧姆斯剃刀理論(如無必要勿增實體)”來解釋。 但要找到能夠實現結構風險最小化的算法是很困難的,Vapnik找了二十多年(我的估計 )。最后找到了SVM,并且SVM也成了最好的分類算法之一,但戲劇化的是:SVM為什么會有 如此優異的性能卻并不是前面的margin theory以及結構風險最小化所能解釋的。直到今天 這個問題似乎還不是很清楚,后面我還想稍微(我知道的非常有限)提一些這方面的工作 。 實現結構風險最小化存在兩個困難,首先如前面提過的大多數的模型集的VC維是無法得 到的,其次便是這一組嵌套的模型集還應當足夠的復雜(也就是有足夠的能力去解釋復雜 的數據)。前面的一個問題使用線性模型集可以得到其相應的VC維,并且通過使用margin ,我們還可以得到一個維數無關的對于模型集的VC維的估計。后面一個問題的答案則要由 核方法(kernel methods)來回答。 線性模型集無法處理線性不可分的情況,如當年的感知器無法處理異或問題,從而使得 神經網絡沉寂多年。所謂異或問題,假設4個樣本點,+1類為點(1,1)和點(-1,-1),-1類為 點點(-1,1) 和點(1,-1),可見從所有2維平面上的直線中尋找,我們也無法找到一條直 線能夠解決到這樣的問題(使得兩類樣本分別在直線的兩側)。 為了能夠處理線性不可分的情況,我們把樣本數據映射到更高維的空間去(x->ph(x), 簡單起見,我們假設x在d維歐氏空間,ph(x)在D維歐氏空間,D>d,ph(x)所在的空間常被 稱之為“特征空間”),這時有個Cover's Theorem,這個定理保證在維度越高數據越可能 是線性可分。也就是我們將在這個高維空間尋找超平面,希望這個超平面能夠分類訓練數 據(使得兩類樣本分別在直線的兩側)。但空間的維數越高,所使用的超平面集的VC維就 越大。但這時上面的margin theory就可以發揮作用了,我們不使用超平面,而使用超平板 集,只要這些板的厚度足夠,我們依舊可以控制模型集的VC維(復雜度)。 那么直接使用某個函數ph(.)進行映射,之后在ph(.)的空間中尋找最厚的并且能正確分 類訓練數據的超平板,不就可以了嗎?困難之處在于,由于往往我們需要將訓練數據映射 到相當高維的空間(比如手寫數字識別中使用5階多項式就相當于將數據映射到了一個10^ 10的高維空間),從而使得計算具體的ph(x)變得非常困難。 無論“奧姆斯剃刀理論”或者“沒有免費的午餐(凡事都要付出代價)”,都告訴我們 別做多余的事,仔細研究我們面臨的問題(將數據映射到高維空間,尋找具有最大厚度的 超平面,使用這個超平面對將來的數據進行分類),我們其實不需要高維空間數據具體的 值(即我們不需要確切的ph(x)),我們只需要知道的是任意兩個輸入空間的數據Xi與Xj映 射到高維空間后他們之間的內積(也就是 < ph(Xi), ph(Xj)>,內積是一個標量,可以看 作是兩個向量,ph(Xi)與 ph(Xj),之間的相似程度)。并且我們發現數學中有一類雙變元 函數就具有這樣的特性(k(Xi, Xj)= < ph(Xi), ph(Xj)>),這樣一來我們就不需要去考慮 具體映射(ph(x))的形式了,我們只需要知道通過使用核函數(前面的那個雙變元函數) 就可以得到數據被映射到高維空間后的內積。 這樣一來,只要一個學習算法只需要知道數據間的內積,那么他就可以通過使用核函數 從而被核化,從而就有了核PCA,核LDA等等一大批kernel methods,也成就了Scholkopf, Smola等人。 仍舊是“沒有免費的午餐”,我們不去求具體的映射(ph(x)),那么我們付出的代價 是什么呢?不知道具體的映射,僅知道任意向量間的內積,使得我們無法知道向量與原點 的關系,但這一點對于我們尋找超平面劃分數據是沒有影響的。 至此SVM產生所面臨的困難全被掃除了。有趣的是關于核函數的文章是1990發的,92年 Vapnik提出了SVM,不知kernel trick是不是老瓦的最后障礙。 放假在家手邊資料很少,所以很多都是信口開河,大家要有所警惕啊
總結
以上是生活随笔為你收集整理的svm的一些理解(网上收集)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: learning中的数学
- 下一篇: svm涉及的一些概念