| SVM(support victor machine) 1、支持向量機(jī)發(fā)展歷史 
 
 1963年,Vapnik在解決模式識(shí)別問(wèn)題時(shí)提出了支持向量方法。起決定性作用的樣本為支持向量 1971年,Kimeldorf構(gòu)造基于支持向量構(gòu)建核空間的方法 1995年,Vapnik等人正式提出統(tǒng)計(jì)學(xué)習(xí)理論。 通俗來(lái)講,SVM是一種二類分類模型,其基本模型定義為特征空間上的間隔最大的線性分類器,即支持向量機(jī)的學(xué)習(xí)策略便是間隔最大化,最終可轉(zhuǎn)化為一個(gè)凸二次規(guī)劃問(wèn)題的求解。 二類分類模型 —— 這里我們考慮的是一個(gè)兩類的分類問(wèn)題,就是將一堆數(shù)據(jù)集通過(guò)建立模型將其分成兩類,典型的二類分類模型,有neural network的感知器,   線性分類器 ——   其中,數(shù)據(jù)點(diǎn)用 x ( x 是 n 維向量)來(lái)表示,wT 中的 T 代表轉(zhuǎn)置,而類別用 y 來(lái)表示,可以取 1 或者 -1 ,分別代表兩個(gè)不同的類。一個(gè)線性分類器的學(xué)習(xí)目標(biāo)就是要在 n 維的數(shù)據(jù)空間中找到一個(gè)分類 超平面 ,其方程可以表示為: wTx+b=0 上面給出了線性分類的定義描述,但或許讀者沒(méi)有想過(guò):為何用y取1 或者 -1來(lái)表示兩個(gè)不同的類別呢?其實(shí),這個(gè)1或-1的分類標(biāo)準(zhǔn)起源于logistic回歸。 間隔——首先,講講‘間隔’的來(lái)源,如上圖所述,可以有無(wú)窮個(gè)線性分類器將數(shù)據(jù)集分開(kāi),但是如何描述最好的分類器呢?   
 如上圖的Margin width就是兩條邊緣之間的間距。注意,區(qū)別于求歐式空間內(nèi)兩個(gè)向量的距離(2-范數(shù))。2.常用的機(jī)器學(xué)習(xí)方法比較 
 
 
 上個(gè)世紀(jì)90年代,支持向量機(jī)獲得全面發(fā)展,在實(shí)際應(yīng)用中,獲得比較滿意的效果,成為機(jī)器學(xué)習(xí)領(lǐng)域的標(biāo)準(zhǔn)工具. 1)概率分布的方法-------------Bayes方法, GMMs 用于復(fù)雜分布建模 2)決策樹(shù)的方法(C4.5)---屬性具有明確含義時(shí)使用,一種經(jīng)典的方法 3)近鄰分類-----------------------簡(jiǎn)單的方法,如果樣本有代表性,維數(shù)不高時(shí)好用 4)支撐向量機(jī)--------------------高維空間的小樣本學(xué)習(xí) 5)Boosting算法-----------------大量訓(xùn)練樣本下可以取得好的效果,速度很快 6)人工神經(jīng)網(wǎng)絡(luò)ANN----------大量訓(xùn)練樣本下可以取得好的效果,速度較慢 例如,手寫體數(shù)字識(shí)別例子——貝爾實(shí)驗(yàn)室對(duì)美國(guó)郵政手寫數(shù)字庫(kù)進(jìn)行的實(shí)驗(yàn),該數(shù)據(jù)共包含7291個(gè)訓(xùn)練樣本,2007個(gè)測(cè)試數(shù)據(jù),輸入數(shù)據(jù)的維數(shù)為16x16維   VC維與經(jīng)驗(yàn)風(fēng)險(xiǎn) ——— 
 
 Vapnik-Chervonenkis (VC) dimension,VC 維定義為一組函數(shù),如平面、直線等在空間打散(任意分類)樣本的能力。   
 正是因?yàn)镾VM關(guān)注的是VC維,后面我們可以看到,SVM解決問(wèn)題的時(shí)候,和樣本的維數(shù)是無(wú)關(guān)的(甚至樣本是上萬(wàn)維的都可以,這使得SVM很適合用來(lái)解決文本分類的問(wèn)題,當(dāng)然,有這樣的能力也因?yàn)橐肓撕撕瘮?shù))。 結(jié)構(gòu)風(fēng)險(xiǎn)最小化原則 ——— 
 
 結(jié)構(gòu)風(fēng)險(xiǎn)最小聽(tīng)上去很陌生,但是我們從學(xué)初中物理就明白相似的概念——測(cè)量誤差與實(shí)際誤差之間的差別,其實(shí)說(shuō)的也無(wú)非是下面這回事。 機(jī)器學(xué)習(xí)本質(zhì)上就是一種對(duì)問(wèn)題真實(shí)模型的逼近(我們選擇一個(gè)我們認(rèn)為比較好的近似模型,這個(gè)近似模型就叫做一個(gè)假設(shè)),但毫無(wú)疑問(wèn),真實(shí)模型一定是不知道的(如果知道了,我們干嗎還要機(jī)器學(xué)習(xí)?直接用真實(shí)模型解決問(wèn)題不就可以了?對(duì)吧,哈哈)既然真實(shí)模型不知道,那么我們選擇的假設(shè)與問(wèn)題真實(shí)解之間究竟有多大差距,我們就沒(méi)法得知。比如說(shuō)我們認(rèn)為宇宙誕生于150億年前的一場(chǎng)大爆炸,這個(gè)假設(shè)能夠描述很多我們觀察到的現(xiàn)象,但它與真實(shí)的宇宙模型之間還相差多少?誰(shuí)也說(shuō)不清,因?yàn)槲覀儔焊筒恢勒鎸?shí)的宇宙模型到底是什么。 這個(gè)與問(wèn)題真實(shí)解之間的誤差,就叫做風(fēng)險(xiǎn)(更嚴(yán)格的說(shuō),誤差的累積叫做風(fēng)險(xiǎn))。我們選擇了一個(gè)假設(shè)之后(更直觀點(diǎn)說(shuō),我們得到了一個(gè)分類器以后),真實(shí)誤差無(wú)從得知,但我們可以用某些可以掌握的量來(lái)逼近它。最直觀的想法就是使用分類器在樣本數(shù)據(jù)上的分類的結(jié)果與真實(shí)結(jié)果(因?yàn)闃颖臼且呀?jīng)標(biāo)注過(guò)的數(shù)據(jù),是準(zhǔn)確的數(shù)據(jù))之間的差值來(lái)表示。這個(gè)差值叫做經(jīng)驗(yàn)風(fēng)險(xiǎn)Remp(w)。以前的機(jī)器學(xué)習(xí)方法都把經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化作為努力的目標(biāo),但后來(lái)發(fā)現(xiàn)很多分類函數(shù)能夠在樣本集上輕易達(dá)到100%的正確率,在真實(shí)分類時(shí)卻一塌糊涂(即所謂的推廣能力差,或泛化能力差)。此時(shí)的情況便是選擇了一個(gè)足夠復(fù)雜的分類函數(shù)(它的VC維很高),能夠精確的記住每一個(gè)樣本,但對(duì)樣本之外的數(shù)據(jù)一律分類錯(cuò)誤?;仡^看看經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化原則我們就會(huì)發(fā)現(xiàn),此原則適用的大前提是經(jīng)驗(yàn)風(fēng)險(xiǎn)要確實(shí)能夠逼近真實(shí)風(fēng)險(xiǎn)才行(行話叫一致),但實(shí)際上能逼近么?答案是不能,因?yàn)闃颖緮?shù)相對(duì)于現(xiàn)實(shí)世界要分類的文本數(shù)來(lái)說(shuō)簡(jiǎn)直九牛一毛,經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化原則只在這占很小比例的樣本上做到?jīng)]有誤差,當(dāng)然不能保證在更大比例的真實(shí)文本上也沒(méi)有誤差。 統(tǒng)計(jì)學(xué)習(xí)因此而引入了泛化誤差界的概念,就是指真實(shí)風(fēng)險(xiǎn)應(yīng)該由兩部分內(nèi)容刻畫,一是經(jīng)驗(yàn)風(fēng)險(xiǎn),代表了分類器在給定樣本上的誤差;二是置信風(fēng)險(xiǎn),代表了我們?cè)诙啻蟪潭壬峡梢孕湃畏诸惼髟谖粗谋旧戏诸惖慕Y(jié)果。很顯然,第二部分是沒(méi)有辦法精確計(jì)算的,因此只能給出一個(gè)估計(jì)的區(qū)間,也使得整個(gè)誤差只能計(jì)算上界,而無(wú)法計(jì)算準(zhǔn)確的值(所以叫做泛化誤差界,而不叫泛化誤差)。 置信風(fēng)險(xiǎn)與兩個(gè)量有關(guān),一是樣本數(shù)量,顯然給定的樣本數(shù)量越大,我們的學(xué)習(xí)結(jié)果越有可能正確,此時(shí)置信風(fēng)險(xiǎn)越??;二是分類函數(shù)的VC維,顯然VC維越大,推廣能力越差,置信風(fēng)險(xiǎn)會(huì)變大。 泛化誤差界的公式為:R(w)≤Remp(w)+Ф(n/h) 線性SVM —— 
 
 1.SVM從線性可分情況下的分類面發(fā)展而來(lái) 2.Margin最大化分類面不僅僅要求經(jīng)驗(yàn)風(fēng)險(xiǎn)盡可能的小,且使分類間隔最大 把一個(gè)空間按照類別切分兩部分的平面,在二維空間中,分類面相當(dāng)于一條直線,三維空間中相當(dāng)于一個(gè)平面,高維空間為超平面 線性分類面函數(shù)形式為:f(x)=wTx+b,(wT,b是分類面函數(shù)參數(shù),x是輸入的樣本, wT權(quán)向量,b是偏移量 )   過(guò)兩類樣本中離分類面最近的點(diǎn)且平行于分類面的訓(xùn)練樣本就叫做支持向量      線性SVM求解 —— (此段借用**博客,寫的實(shí)在是簡(jiǎn)單明了) 凸二次規(guī)劃,在這個(gè)問(wèn)題中,自變量就是w,而目標(biāo)函數(shù)是w的二次函數(shù),所有的約束條件都是w的線性函數(shù)(哎,千萬(wàn)不要把xi當(dāng)成變量,它代表樣本,是已知的),這種規(guī)劃問(wèn)題有個(gè)很有名氣的稱呼——二次規(guī)劃(Quadratic Programming,QP),而且可以更進(jìn)一步的說(shuō),由于它的可行域是一個(gè)凸集,因此它是一個(gè)凸二次規(guī)劃。 讓我再一次比較完整的重復(fù)一下我們要解決的問(wèn)題:我們有屬于兩個(gè)類別的樣本點(diǎn)(并不限定這些點(diǎn)在二維空間中)若干,如圖,   
 
 圓形的樣本點(diǎn)定為正樣本(連帶著,我們可以把正樣本所屬的類叫做正類),方形的點(diǎn)定為負(fù)例。我們想求得這樣一個(gè)線性函數(shù)(在n維空間中的線性函數(shù)):g(x)=wx+b 使得所有屬于正類的點(diǎn)x+代入以后有g(shù)(x+)≥1,而所有屬于負(fù)類的點(diǎn)x-代入后有g(shù)(x-)≤-1(之所以總跟1比較,無(wú)論正一還是負(fù)一,都是因?yàn)槲覀児潭碎g隔為1,注意間隔和幾何間隔的區(qū)別)。代入g(x)后的值如果在1和-1之間,我們就拒絕判斷。 求這樣的g(x)的過(guò)程就是求w(一個(gè)n維向量)和b(一個(gè)實(shí)數(shù))兩個(gè)參數(shù)的過(guò)程(但實(shí)際上只需要求w,求得以后找某些樣本點(diǎn)代入就可以求得b)。因此在求g(x)的時(shí)候,w才是變量。 你肯定能看出來(lái),一旦求出了w(也就求出了b),那么中間的直線H就知道了(因?yàn)樗褪莣x+b=0嘛,哈哈),那么H1和H2也就知道了(因?yàn)槿呤瞧叫械?,而且相隔的距離還是||w||決定的)。那么w是誰(shuí)決定的?顯然是你給的樣本決定的,一旦你在空間中給出了那些個(gè)樣本點(diǎn),三條直線的位置實(shí)際上就唯一確定了(因?yàn)槲覀兦蟮氖亲顑?yōu)的那三條,當(dāng)然是唯一的),我們解優(yōu)化問(wèn)題的過(guò)程也只不過(guò)是把這個(gè)確定了的東西算出來(lái)而已。 樣本確定了w,用數(shù)學(xué)的語(yǔ)言描述,就是w可以表示為樣本的某種組合:w=α1x1+α2x2+…+αnxn,式子中的αi是一個(gè)一個(gè)的數(shù)(在嚴(yán)格的證明過(guò)程中,這些α被稱為拉格朗日乘子),而xi是樣本點(diǎn),因而是向量,n就是總樣本點(diǎn)的個(gè)數(shù)。為了方便描述,以下開(kāi)始嚴(yán)格區(qū)別數(shù)字與向量的乘積和向量間的乘積,我會(huì)用α1x1表示數(shù)字和向量的乘積,而用<x1,x2>表示向量x1,x2的內(nèi)積(也叫點(diǎn)積,注意與向量叉積的區(qū)別)。因此g(x)的表達(dá)式嚴(yán)格的形式應(yīng)該是:g(x)=<w,x>+b 但是上面的式子還不夠好,你回頭看看圖中正樣本和負(fù)樣本的位置,想像一下,我不動(dòng)所有點(diǎn)的位置,而只是把其中一個(gè)正樣本點(diǎn)定為負(fù)樣本點(diǎn)(也就是把一個(gè)點(diǎn)的形狀從圓形變?yōu)榉叫危?,結(jié)果怎么樣?三條直線都必須移動(dòng)(因?yàn)閷?duì)這三條直線的要求是必須把方形和圓形的點(diǎn)正確分開(kāi))!這說(shuō)明w不僅跟樣本點(diǎn)的位置有關(guān),還跟樣本的類別有關(guān)(也就是和樣本的“標(biāo)簽”有關(guān))。因此用下面這個(gè)式子表示才算完整:w=α1y1x1+α2y2x2+…+αnynxn(式1) 其中的yi就是第i個(gè)樣本的標(biāo)簽,它等于1或者-1。其實(shí)以上式子的那一堆拉格朗日乘子中,只有很少的一部分不等于0(不等于0才對(duì)w起決定作用),這部分不等于0的拉格朗日乘子后面所乘的樣本點(diǎn),其實(shí)都落在H1和H2上,也正是這部分樣本(而不需要全部樣本)唯一的確定了分類函數(shù),當(dāng)然,更嚴(yán)格的說(shuō),這些樣本的一部分就可以確定,因?yàn)槔绱_定一條直線,只需要兩個(gè)點(diǎn)就可以,即便有三五個(gè)都落在上面,我們也不是全都需要。這部分我們真正需要的樣本點(diǎn),就叫做支持(撐)向量?。诌€挺形象吧,他們“撐”起了分界線。) 于是,我們可以定義Lagrange函數(shù):L(w,b,a)如下:   凸二次空間 —— 由拉格朗日函數(shù)引出二次函數(shù)的最值問(wèn)題。 前面在討論的線性分類器,器如其名,只能對(duì)線性可分的樣本做處理。如果提供的樣本線性不可分,結(jié)果很簡(jiǎn)單,線性分類器的求解程序會(huì)無(wú)限循環(huán),永遠(yuǎn)也解不出來(lái)。這必然使得它的適用范圍大大縮小,而它的很多優(yōu)點(diǎn)我們實(shí)在不原意放棄,怎么辦呢?是否有某種方法,讓線性不可分的數(shù)據(jù)變得線性可分呢? 
 有!其思想說(shuō)來(lái)也簡(jiǎn)單,來(lái)用一個(gè)二維平面中的分類問(wèn)題作例子,你一看就會(huì)明白。事先聲明,下面這個(gè)例子是網(wǎng)絡(luò)早就有的,在此借用,并加進(jìn)了我自己的解說(shuō)而已。 例子是下面這張圖:   我們把橫軸上端點(diǎn)a和b之間紅色部分里的所有點(diǎn)定為正類,兩邊的黑色部分里的點(diǎn)定為負(fù)類。試問(wèn)能找到一個(gè)線性函數(shù)把兩類正確分開(kāi)么?不能,因?yàn)槎S空間里的線性函數(shù)就是指直線,顯然找不到符合條件的直線。   但我們可以找到一條曲線,例如上面這一條: 顯然通過(guò)點(diǎn)在這條曲線的上方還是下方就可以判斷點(diǎn)所屬的類別(你在橫軸上隨便找一點(diǎn),算算這一點(diǎn)的函數(shù)值,會(huì)發(fā)現(xiàn)負(fù)類的點(diǎn)函數(shù)值一定比0大,而正類的一定比0小)。這條曲線就是我們熟知的二次曲線,它的函數(shù)表達(dá)式可以寫為(問(wèn)題只是它不是一個(gè)線性函數(shù),但是,下面要注意看了,新建一個(gè)向量y和a:):   
 
 這樣g(x)就可以轉(zhuǎn)化為f(y)=<a,y>,你可以把y和a分別回帶一下,看看等不等于原來(lái)的g(x)。用內(nèi)積的形式寫你可能看不太清楚,實(shí)際上f(y)的形式就是:g(x)=f(y)=ay 在任意維度的空間中,這種形式的函數(shù)都是一個(gè)線性函數(shù)(只不過(guò)其中的a和y都是多維向量罷了),因?yàn)樽宰兞縴的次數(shù)不大于1。 看出妙在哪了么?原來(lái)在二維空間中一個(gè)線性不可分的問(wèn)題,映射到四維空間后,變成了線性可分的!因此這也形成了我們最初想解決線性不可分問(wèn)題的基本思路——向高維空間轉(zhuǎn)化,使其變得線性可分。 而轉(zhuǎn)化最關(guān)鍵的部分就在于找到x到y(tǒng)的映射方法。遺憾的是,如何找到這個(gè)映射,沒(méi)有系統(tǒng)性的方法(也就是說(shuō),純靠猜和湊)。具體到我們的文本分類問(wèn)題,文本被表示為上千維的向量,即使維數(shù)已經(jīng)如此之高,也常常是線性不可分的,還要向更高的空間轉(zhuǎn)化。其中的難度可想而知。   由上圖得到啟發(fā),在低維不可分的情況下找到某種映射(核函數(shù))使得投影到高維空間下線性可分。 核函數(shù)------ 如果 K(xi,xj) 總可以寫成 K(xi,xj)= φ(xi)T*φ(xj) (T是φ(xi)的轉(zhuǎn)置),則K可以做 核函數(shù) | 
|  | 
來(lái)自: imelee > 《深度學(xué)習(xí)》