4、线性分类: SVM, Softmax
4、線性分類
上一課最我們介紹了圖像分類的問題,任務(wù)是從一個(gè)固定的類別集合中選一個(gè)分配給待識(shí)別的圖像。最后,我們描述了k-近鄰(KNN)分類器,它通過將待標(biāo)記的圖像與訓(xùn)練集中已經(jīng)標(biāo)記好的圖像進(jìn)行比較來標(biāo)記圖像。KNN有許多缺點(diǎn):
- 分類器必須記住所有的訓(xùn)練數(shù)據(jù),并將其存儲(chǔ)起來,以備將來與測(cè)試數(shù)據(jù)進(jìn)行比較。這是空間低效的,因?yàn)閿?shù)據(jù)集的大小可能是千兆字節(jié)。
- 分類測(cè)試圖像是昂貴的,因?yàn)樗枰c所有訓(xùn)練圖像進(jìn)行比較
概述。我們現(xiàn)在要開發(fā)一種更強(qiáng)大的圖像分類方法,最終會(huì)擴(kuò)展到整個(gè)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)。該方法有兩個(gè)主要組成部分:一個(gè)是評(píng)分函數(shù)(score function),它是原始圖像數(shù)據(jù)到類別分值的映射。另一個(gè)是損失函數(shù)(loss function),它是用來量化預(yù)測(cè)分類標(biāo)簽的得分與真實(shí)標(biāo)簽之間一致性的。然后,我們將此作為一個(gè)優(yōu)化問題處理,即調(diào)整評(píng)分函數(shù)的參數(shù),去最小化損失函數(shù)的值。
4.1 從圖像到分類評(píng)分的參數(shù)化映射
這種方法的第一個(gè)組成部分是定義將圖像的像素值映射到每個(gè)類的置信分?jǐn)?shù)的評(píng)分函數(shù)。假設(shè)訓(xùn)練數(shù)據(jù)有N個(gè)樣本,每個(gè)樣本有D個(gè)特征,全部的類型有K個(gè)。比如CIFAR-10數(shù)據(jù)庫,N為5萬,D=32 x 32 x 3 = 3072像素,K=10,因?yàn)橛?0個(gè)分類(狗,貓,車,等)?,F(xiàn)在需要定義一個(gè)評(píng)分函數(shù),將像素?cái)?shù)據(jù)映射到分類得分。?f:RD?RK
線性分類器。這是一個(gè)最簡(jiǎn)單的評(píng)分函數(shù):
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?f(xi,W,b)=Wxi+b
這個(gè)公式假設(shè)將每個(gè)圖像的所有像素平坦化為一維向量(d?x 1維),Xi代表第i個(gè)像素的值。矩陣W(k x d維)和向量b(k x 1維)是函數(shù)的參數(shù)。在CIFAR-10中,Xi包含第i個(gè)圖像中的所有像素平坦化為單個(gè)列[ 3072×1 ],W是[10×3072 ],B是[10×1 ],因此有3072個(gè)數(shù)字進(jìn)入函數(shù)(原始像素值)和10個(gè)數(shù)字出來(類分?jǐn)?shù))。W中的參數(shù)通常稱為權(quán)重,B稱為偏置向量,因?yàn)樗绊戄敵龇謹(jǐn)?shù),但不與實(shí)際數(shù)據(jù)Xi交互。權(quán)重也稱為參數(shù),是一個(gè)意思。
有一些值得注意的事項(xiàng):
- 首先,注意矩陣乘法WXi有效地、并行地評(píng)估10個(gè)單獨(dú)的分類器(每個(gè)類之一),其中W的每一行代表一個(gè)分類器。
- 請(qǐng)注意,我們認(rèn)為輸入數(shù)據(jù)(Xi,Yi)是給定的和固定的,而W、B是需要調(diào)整的。我們的目標(biāo)是通過調(diào)整W、B這些值,讓計(jì)算得分與整個(gè)訓(xùn)練集上的實(shí)際標(biāo)記相匹配。我們將深入了解這是如何完成的。直觀地說,我們希望正確的分類比不正確的分類要多。
- 這種方法的優(yōu)點(diǎn)是訓(xùn)練數(shù)據(jù)被用來學(xué)習(xí)參數(shù)W,B,但是一旦學(xué)習(xí)完成,我們可以丟棄整個(gè)訓(xùn)練集,只保留學(xué)習(xí)的參數(shù)。這是因?yàn)榭梢酝ㄟ^函數(shù)簡(jiǎn)單地轉(zhuǎn)換新的測(cè)試圖像并基于計(jì)算的分?jǐn)?shù)進(jìn)行分類。
- 最后,測(cè)試圖像的分類只涉及單個(gè)矩陣乘法和加法,這比將測(cè)試圖像與所有訓(xùn)練圖像進(jìn)行比較明顯快。
預(yù)報(bào):卷積神經(jīng)網(wǎng)絡(luò)也是將像上面所示的那樣精確地將圖像像素映射到分?jǐn)?shù),但是映射(F)將更加復(fù)雜,并且將包含更多的參數(shù)。
4.2 理解線性分類器
線性分類器是通過計(jì)算所有3個(gè)顏色通道的所有像素值的加權(quán)和,來計(jì)算一個(gè)類的得分。根據(jù)我們?yōu)檫@些權(quán)重設(shè)置的具體的值,該函數(shù)具有在圖像中的某些位置上喜歡或不喜歡(取決于每個(gè)權(quán)重的符號(hào))某些顏色的能力。例如,如果圖像的邊上有很多藍(lán)色(很可能對(duì)應(yīng)于水),那么“船”類更可能出現(xiàn)。你可能會(huì)期望“船”分類器在藍(lán)色通道權(quán)重更高(藍(lán)色增加船只的分?jǐn)?shù))和紅色/綠色通道中的權(quán)重更低(紅色/綠色的存在降低了船的分?jǐn)?shù))。
將圖像映射到類分?jǐn)?shù)的示例。為了可視化,我們假設(shè)圖像只有4個(gè)像素(簡(jiǎn)化為只有一個(gè)顏色通道),并且有3個(gè)分類(貓、狗、船)。我們將圖像像素拉伸成一個(gè)列,并執(zhí)行矩陣乘法以獲得每個(gè)類的分?jǐn)?shù)。請(qǐng)注意,這組特定的權(quán)重W根本不好:權(quán)重賦予這張貓圖像非常低的CAT得分,這組權(quán)重似乎相信它到了一只狗。
將圖像比喻為高維點(diǎn)。由于圖像被拉伸成高維列向量,所以我們可以將每個(gè)圖像解釋為該空間中的單個(gè)點(diǎn)(例如,CIFAR-10中的每個(gè)圖像是在32×32×3像素的3072維空間中的點(diǎn))。類似地,整個(gè)數(shù)據(jù)集是一個(gè)標(biāo)記好分類的點(diǎn)集。
由于我們定義了所有圖像像素的加權(quán)和作為每個(gè)類的得分,每個(gè)類得分是在這個(gè)空間上的線性函數(shù)。我們不能想象3072維空間,但是如果我們想象將這些維度擠壓成兩個(gè)維度,那么我們可以嘗試可視化分類器可能正在做什么:
圖像空間的簡(jiǎn)易表示,其中每個(gè)圖像是一個(gè)點(diǎn),并且有三個(gè)分類器。使用汽車分類器(紅色)的例子,紅線上的所有點(diǎn),為汽車類獲得零分的位置。紅色箭頭表示增加的方向,所以紅線右邊的所有點(diǎn)都有正的(線性增加的)分?jǐn)?shù),并且左邊的所有點(diǎn)都有負(fù)的(線性減小的)分?jǐn)?shù)。
正如我們上面看到的,W的每一行都是一個(gè)類的分類器。這些數(shù)字的幾何解釋是,當(dāng)我們改變W的某一行時(shí),像素空間中的對(duì)應(yīng)線將在不同的方向上旋轉(zhuǎn)。偏值b,則允許我們平移分類器線。如果沒有偏置項(xiàng),無論權(quán)重如何,在Xi=0的位置都將給出零分,因此所有的分類線都將被迫穿過原點(diǎn)。
將線性分類器理解為模板匹配器。權(quán)重W的另一種解釋是W的每一行對(duì)應(yīng)于一個(gè)分類的模板(或有時(shí)也稱為原型)。然后,通過將每個(gè)模板與圖像一起使用內(nèi)積(或點(diǎn)積)逐一進(jìn)行比較,得到圖像屬于每一個(gè)類的得分,以找到最適合的一個(gè)分類。使用這個(gè)術(shù)語,線性分類器就是在進(jìn)行模板匹配,其中模板是被學(xué)習(xí)得到的。另一種方法是,我們?nèi)匀挥行У厥褂米罱徲?jì)算,但不是使用成千上萬的訓(xùn)練圖像,我們?yōu)槊總€(gè)分類只使用一個(gè)單一的圖像(這個(gè)圖像是學(xué)習(xí)得到的,它不一定是訓(xùn)練集中的某個(gè)圖像),我們使用(負(fù))內(nèi)積作為距離而不是L1或L2距離。
略微往前看一步:這是在最后一個(gè)例子中從CIFAR-10學(xué)習(xí)得到的權(quán)重。你看,如預(yù)期的那樣,船模板包含許多藍(lán)色像素。因此,該模板一旦與海洋上的船只圖像匹配,就會(huì)得到高分。
另外,你看,馬分類器模板似乎包含雙頭馬,這是因?yàn)閿?shù)據(jù)集中的有馬臉朝左,有點(diǎn)馬臉朝右。線性分類器將數(shù)據(jù)中的這兩種模式合并成單個(gè)模板。類似地,汽車分類器似乎已經(jīng)將多個(gè)模式合并成一個(gè)單一模板,該模板必須從所有側(cè)面和所有顏色識(shí)別汽車。特別是,這個(gè)模板最終是紅色的,這暗示了CIFAR-10數(shù)據(jù)集中的紅色小汽車比任何其他顏色都多。線性分類器太弱,不能正確地解釋不同顏色的汽車,但我們將看到以后的神經(jīng)網(wǎng)絡(luò)將允許我們正確地解釋不同顏色的汽車。向前看一點(diǎn),神經(jīng)網(wǎng)絡(luò)將能夠在隱藏層中開發(fā)中間神經(jīng)元,可以檢測(cè)特定的汽車類型(例如面向左邊的藍(lán)色汽車,面向前方的藍(lán)色汽車等),并且下一層的神經(jīng)元可以通過計(jì)算每個(gè)汽車分類器的加權(quán)總,組合成更精確的汽車分類得分。
處理偏值的技巧,在進(jìn)一步學(xué)習(xí)前,要提一下這個(gè)經(jīng)常使用的技巧,將兩個(gè)參數(shù)W,b合并為一個(gè)?;叵胍幌?#xff0c;我們把得分函數(shù)定義為:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?f(xi,W,b)=Wxi+b
單獨(dú)跟蹤兩組參數(shù)(偏差b和權(quán)重W)有點(diǎn)麻煩。一個(gè)常用的技巧是將兩組參數(shù)組合成一個(gè)矩陣,將向量Xi增加一個(gè)維度即可,這個(gè)增加的維度的值總是保持常數(shù)1。這樣,新的得分函數(shù)將簡(jiǎn)化為單個(gè)矩陣乘法:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? f(xi,W)=Wxi
就我們的CIOFE10數(shù)據(jù)集來說,Xi現(xiàn)在是[3073×1 ]而不是[3072×1 ] -(增加保持常數(shù)1的一個(gè)特征),W現(xiàn)在是[10×3073 ]而不是[10×3072 ]。W中額外增加的列現(xiàn)在對(duì)應(yīng)于原來的偏置b。如下圖所示:
偏值處理技巧圖示。做一個(gè)矩陣乘法,然后添加一個(gè)偏置向量(左),等價(jià)于將一個(gè)常數(shù)為1的偏置維數(shù)加到所有輸入向量上,同時(shí)權(quán)重矩陣也增加一列 (偏置列,右)。如此,我們就只需要學(xué)習(xí)一個(gè)權(quán)重矩陣,而不是兩個(gè)矩陣(權(quán)重和偏差)。
圖像數(shù)據(jù)預(yù)處理。在上面的簡(jiǎn)明例子中,我們使用原始像素值(范圍從[ 0…255 ] ]。在機(jī)器學(xué)習(xí)實(shí)踐中,經(jīng)常對(duì)輸入特征做歸一化處理,是非常普遍的做法(在圖像的情況下,每個(gè)像素都被認(rèn)為是一個(gè)特征)。從每個(gè)特征中減去均值來對(duì)數(shù)據(jù)進(jìn)行中心化是很重要的。對(duì)應(yīng)處理圖像的場(chǎng)景,就是從訓(xùn)練圖像中,計(jì)算得到一個(gè)平均圖像,并從每個(gè)圖像減去它,轉(zhuǎn)換為像素在大約[-127…127 ]范圍內(nèi)的圖像。通常更進(jìn)一步的預(yù)處理是對(duì)每個(gè)輸入特征進(jìn)行縮放,使得其值取自[-1, 1 ]。其中,零均值中心可以說是非常重要的,等我們了解了梯度下降法后再詳察之。
4.3?損失函數(shù)
在前敘章節(jié)中,我們定義了從像素值到類分?jǐn)?shù)的函數(shù),該函數(shù)由一組權(quán)重W作為參數(shù)。此外,我們還發(fā)現(xiàn)我們對(duì)數(shù)據(jù)(Xi,Yi)沒有控制(它是固定的和給定的),但是我們能控制這些權(quán)重,并且我們想要將它們調(diào)整到要這樣的狀態(tài):讓預(yù)測(cè)的類得分與訓(xùn)練數(shù)據(jù)中的實(shí)際標(biāo)記一致為止。
例如,回到貓的示例圖像及其對(duì)“貓”、“狗”和“船”類的得分,我們看到那個(gè)例子中的特定權(quán)重集合不是很好:我們輸入一張貓圖的像素,但是貓分類的得分很低(-96.8),其他類別倒是更高(狗評(píng)分437.9和船舶評(píng)分61.95)。這樣的結(jié)果不爽,我們用損失函數(shù)(有時(shí)也被稱為成本函數(shù))來定量化這種不爽。直觀地說,如果我們把訓(xùn)練數(shù)據(jù)分類的工作做得不好,損失就會(huì)很高,如果我們做得好的話,損失就會(huì)很低。
4.3.1 多分類支持向量機(jī)損失
定義損失函數(shù)的方法很多。作為第一個(gè)例子,我們首先來開發(fā)一種常用的損失,稱為多分類支持向量機(jī)(SVM)損失。SVM損失的目標(biāo)是使用一些固定的余量Δ,“想要”每張圖片在正確的分類上得分遠(yuǎn)高于在錯(cuò)誤分類上的得分。
還是前述數(shù)據(jù)集,對(duì)于第i個(gè)樣例,我們給出了圖像Xi的像素和指定正確類的標(biāo)簽Yi。得分函數(shù)取像素并計(jì)算向量f(Xi,W)得到各分類的得分,記為S。例如,第j類的得分是:Sj= f(Xi,W)j。然后,將第i個(gè)示例的多類SVM損失記為如下所示:
舉例。讓我們用一個(gè)例子解釋,看看它是如何工作的。假設(shè)我們有三個(gè)分類,計(jì)算得分s=(13,-7,11],并且第一個(gè)類是真類(即yi= 0)。同時(shí)假設(shè)Δ(我們將很快詳細(xì)地討論的一個(gè)超參數(shù))是10。上面的表達(dá)式對(duì)所有不正確的類進(jìn)行了求和(j≠yi),因此我們得到了兩個(gè)公式:
Li=max(0,?7?13+10)+max(0,11?13+10)
你看,第一項(xiàng)給出零,因?yàn)閇-7 - 13+10 ]給出負(fù)數(shù),然后用最大(0,-)函數(shù)將其閾值化為零。這一項(xiàng)為0,因?yàn)檎_的類得分(13)大于錯(cuò)誤的類得分(-7)至少10的差距。事實(shí)上,差異是20,這遠(yuǎn)遠(yuǎn)大于10。但SVM只關(guān)心的差異是至少10,超過10以上都是0。第二項(xiàng)計(jì)算[ 11 - 13 + 10 ],給出8。也就是說,就算正確的分類得分高于不正確的分類(13>11),但不大于期望的10的差距(差異僅為2),還是有損失,這里損失達(dá)到8??傊?#xff0c;SVM損失函數(shù)希望正確的類Yi的分?jǐn)?shù)至少比不正確的類分?jǐn)?shù)大一個(gè)Δ這么多。否則就積累了損失。
這里我們使用線性得分?jǐn)?shù)函數(shù)(f(Xi,w)=WXi),因此我們也可以用這種等價(jià)形式寫損失函數(shù):
其中Wj是W的第j行,轉(zhuǎn)換為列。當(dāng)然,如果我們開始考慮更復(fù)雜形式的得分函數(shù),形式就不是這樣的了。
在結(jié)束這一部分之前,我們將提到的最后一個(gè)術(shù)語是,函數(shù)max(0,-)通常稱為鉸鏈損失。有時(shí)也使用平方鉸鏈損失SVM(或L2-SVM),它使用形式max(0,-)2,這樣對(duì)于差異的反應(yīng)更強(qiáng)烈(二次而不是線性)。非平方版本更常用,但在某些數(shù)據(jù)集中,平方鉸鏈損失函數(shù)工作的更好。到底使用線性差異還是平方差異,可以用交叉驗(yàn)證的方式確定。
損失函數(shù)是對(duì)預(yù)測(cè)訓(xùn)練數(shù)據(jù)不爽程度的度量
多類支持向量機(jī)“希望”正確的類得分高于所有其他類得分至少一個(gè)增量Δ。如果任何一個(gè)分類在紅色區(qū)域內(nèi)得分(或更高),則會(huì)累積損失。否則損失將為零。我們的目標(biāo)將是找到同時(shí)滿足訓(xùn)練數(shù)據(jù)中所有示例的約束的權(quán)重,并給出盡可能低的總損失。
正則化。上面給出的損失函數(shù)有一個(gè)問題。假設(shè)我們有一個(gè)數(shù)據(jù)集和一組參數(shù)W,它正確地對(duì)每個(gè)示例進(jìn)行分類(即所有的分?jǐn)?shù)都是滿足所有的邊界條件,并且對(duì)于所有i都是Li=0)。問題是,這組W不一定是唯一的:可能有許多類似的W,都能正確地分類的樣本數(shù)據(jù)。比如,如果一組參數(shù)W對(duì)所有的樣本數(shù)據(jù)能正確地進(jìn)行分類(因此每個(gè)樣本的損失為零),那么這些參數(shù)的任何一個(gè)倍數(shù)λW(λ>1)也將給出零損失,因?yàn)檫@個(gè)變換均勻地延伸所有的分?jǐn)?shù)值及其差異的絕對(duì)值。例如,如果正確的類和最近的不正確類之間的分?jǐn)?shù)的差值為15,那么將W的所有元素乘以2將使新差值為30。
換言之,我們希望對(duì)某些權(quán)重W的偏好進(jìn)行編碼,以消除這種歧義。我們可以通過用正則化懲罰R(W)來擴(kuò)展損失函數(shù)。最常見的正則化懲罰是L2范數(shù),它通過在所有參數(shù)上施加一個(gè)平方懲罰來阻止大的權(quán)重:
在上面的表達(dá)式中,我們對(duì)W的所有元素求平方和。注意正則化函數(shù)不是針對(duì)數(shù)據(jù)的函數(shù),它僅基于權(quán)重。包含正則化懲罰的多分類支持向量機(jī)損失,它由兩個(gè)部分組成:數(shù)據(jù)損失(這是所有樣本中的平均損失Li)和正則化損失:
將它以完整的形式展開:
其中N是訓(xùn)練樣本的數(shù)目。如上所示,我們將正則化懲罰附加到損失目標(biāo),由超參數(shù)λ加權(quán)。通常通過交叉驗(yàn)證來確定這個(gè)超參數(shù)λ。
最吸引人的特性是懲罰大的權(quán)重能夠提高模型的泛化能力,因?yàn)闆]有哪個(gè)維度能夠?qū)ψ罱K得分有很大的影響。例如,假設(shè)我們有一些輸入向量x= [1,1,1,1]和兩個(gè)權(quán)重向量W1= [1,0,0,0],W2= [0.25,0.25,0.25,0.25]。然后W1TX=W2TX=1,因此兩個(gè)權(quán)重向量都導(dǎo)致相同的點(diǎn)積,但是W1的L2懲罰為1,而W2的L2懲罰僅為0.25。因此,根據(jù)L2懲罰,權(quán)重向量W2將是優(yōu)選的,因?yàn)樗鼘?shí)現(xiàn)了較低的正則化損失。直觀地說,這是因?yàn)閃2中的權(quán)重較小且更舒緩。由于L2懲罰傾向于更小且更舒緩的權(quán)重向量,因此最終分類器傾向于考慮讓所有輸入特征都做出貢獻(xiàn),而不是只考慮少量特征(重團(tuán)隊(duì)精神,而不是個(gè)人英雄主義,^_^)。后續(xù)課堂會(huì)講到,這種效果可以提高分類器在測(cè)試圖像上的泛化性能,減少過擬合。
注意,偏值不具有相同的效果,因?yàn)椴煌跈?quán)重,它們對(duì)輸入維數(shù)的強(qiáng)度沒影響。因此,通常只對(duì)權(quán)重w進(jìn)行調(diào)整,而不是對(duì)偏差B進(jìn)行正則化。然而,在實(shí)踐中,這種影響很少。最后,由于正則化懲罰,我們不能在所有的樣例中獲得精確的0的損失,因?yàn)檫@只有在W=0這種不理智的設(shè)置下才是可能。
代碼(登錄青星人工智能研究中心下載)
SVM損失的目標(biāo)就是采取一種特定的方法來測(cè)量預(yù)測(cè)標(biāo)簽與實(shí)際標(biāo)簽的一致性。對(duì)訓(xùn)練集做出良好的預(yù)測(cè)等同于最小化損失。
所以,剩下所要做的就是想出一種方法來找到最小化該損失的權(quán)重??。
4.4 幾點(diǎn)討論
設(shè)置Δ。請(qǐng)注意,我們忽略了超參數(shù)Δ及其設(shè)置。它應(yīng)該設(shè)置什么值,必須交叉驗(yàn)證它嗎?事實(shí)證明,在所有情況下,這個(gè)超參數(shù)可以被安全地設(shè)置為Δ=1。超參數(shù)Δ和λ看起來像兩個(gè)不同的超參數(shù),但實(shí)際上它們都控制數(shù)據(jù)損失和正則損失之間的平衡。理解這一點(diǎn)的關(guān)鍵是權(quán)重W的量級(jí)直接影響得分(這也是它們的差異):當(dāng)我們縮小W內(nèi)的所有值時(shí),得分差異將變小,并且當(dāng)我們擴(kuò)大權(quán)重時(shí),得分差異將變得更高。因此,得分之間的余量(例如,Δ=1,或Δ=100)的確切值在某種意義上是沒有意義的,因?yàn)闄?quán)重可以任意地縮小或拉伸差異。因此,唯一真正需要權(quán)衡的是我們?cè)试S權(quán)重增長(zhǎng)多少(通過正則化強(qiáng)度λ)。
與二分類支持向量機(jī)的關(guān)系??赡苣阋郧敖佑|過二分類支持向量機(jī),其中第i個(gè)例子的損失這樣表示:
其中C是一個(gè)超參數(shù),并且是yi∈{?1,1}。這就是上述提出的多分類SVM在只有兩個(gè)分類情況下的特列。此外,在這個(gè)公式中的C和我們的公式中的λ?起到相同的作用,他們的關(guān)系是?C∝1λ。
基于原始形態(tài)的優(yōu)化。如果你以前接觸過支持向量機(jī)分類方法,你可能也聽過內(nèi)核,對(duì)偶,SMO等算法。在神經(jīng)網(wǎng)絡(luò)課程,我們將始終在無約束的原始形態(tài)上優(yōu)化目標(biāo)。許多這些目標(biāo)在技術(shù)上是不可微的(例如,max(x,y)函數(shù)就不可微,因?yàn)閤=y時(shí)有扭結(jié)。實(shí)際上這不是一個(gè)問題,通常使用梯度下降法就可以解決。
其它的多分類SVM形式:值得注意的是,在本節(jié)中提出的多類SVM是在多個(gè)類上建立SVM的幾種方法之一。另一種常用的形式是一對(duì)多(One-Vs-All,簡(jiǎn)稱OVA)SVM,它為每個(gè)類和所有其他類訓(xùn)練一個(gè)獨(dú)立的二分類SVM。相應(yīng)地,也有在實(shí)踐中不太常見的所有對(duì)所有(All-Vs-All,簡(jiǎn)稱AVA)策略。我們的公式遵循 Weston和沃特金斯 1999論文,這是一個(gè)比OVA更強(qiáng)大的版本(該版本可以實(shí)現(xiàn)零數(shù)據(jù)損失,但OVA不能。詳情可參閱論文)。你可以看到的最后一個(gè)公式是結(jié)構(gòu)化的SVM,它最大化了正確分類得分與不正確分類中得分最高的得分之間的差距。
4.5?Softmax 分類器
SVM是兩種常見的分類器之一。另一個(gè)流行的選擇是Softmax分類器,它具有不同的損失函數(shù)。如果你以前聽說過二元邏輯回歸分類器,那么二元邏輯回歸分類器泛化到多個(gè)類就是Softmax分類器。不同于SVM將F(Xi,W)的輸出作為每個(gè)類的得分(未校準(zhǔn)和可能難以解釋),Softmax分類器給出了更直觀的輸出(歸一化分類概率),還有一個(gè)概率解釋,后面馬上描述。在Softmax分類器的函數(shù)映射也是F(Xi;W)=WXi,但是我們現(xiàn)在將這些分?jǐn)?shù)解釋為每個(gè)類的未標(biāo)準(zhǔn)化的對(duì)數(shù)概率,并且將折葉損失(hinge loss)替換為交叉熵?fù)p失(cross-entropy loss)。損失函數(shù)改為交叉熵?fù)p失:
fjb表示第j個(gè)分類得分。全部的損失包括所有訓(xùn)練樣本的損失的平均數(shù)加上正則化項(xiàng)R(W)。函數(shù)?fj(z)=ezj∑kezk
稱為softmax 函數(shù):它需要向量的任意實(shí)值分?jǐn)?shù)(Z),并將其壓制成0到1之間的向量,向量的所有的值加起來合計(jì)為1。如果你第一次看到它,那么softmax函數(shù)中的全交叉熵?fù)p失函數(shù)可能看起來嚇人,但它實(shí)際上比較容易理解。
信息論觀點(diǎn)。"真"分布P與估計(jì)分布Q之間的交叉熵定義為:
Softmax分類器因此最小化了估計(jì)的類概率(如上面所示的q=efyi/∑jefj)和“真”分布之間的交叉熵。
在這個(gè)解釋中,“真實(shí)”分布就是所有概率密度都分布在正確的類別上(比如:p=[0,...1,...,0]中在的位置就有一個(gè)單獨(dú)的1)。還有,既然交叉熵可以寫成熵和相對(duì)熵(Kullback-Leibler divergence),并且delta函數(shù)的熵是0,那么就能等價(jià)的看做是對(duì)兩個(gè)分布之間的相對(duì)熵做最小化操作。換句話說,交叉熵?fù)p失函數(shù)“想要”預(yù)測(cè)分布的所有概率密度都在正確分類上。
譯者注:Kullback-Leibler差異(Kullback-Leibler Divergence)也叫做相對(duì)熵(Relative Entropy),它衡量的是相同事件空間里的兩個(gè)概率分布的差異情況。
概率論解釋。先看下面的公式:
P(yi∣xi;W)=efyi∑jefj
可以解釋為是給定圖像數(shù)據(jù)Xi,以為參數(shù),分配給正確分類標(biāo)簽的歸一化概率。為了理解這點(diǎn),請(qǐng)回憶一下Softmax分類器將輸出向量中的評(píng)分值解釋為沒有歸一化的對(duì)數(shù)概率。那么以這些數(shù)值做指數(shù)函數(shù)的冪就得到了沒有歸一化的概率,而除法操作則對(duì)數(shù)據(jù)進(jìn)行了歸一化處理,使得這些概率的和為1。從概率論的角度來理解,我們就是在最小化正確分類的負(fù)對(duì)數(shù)概率,這可以看做是在進(jìn)行最大似然估計(jì)(MLE)。該解釋的另一個(gè)好處是,損失函數(shù)中的正則化部分可以被看做是權(quán)重矩陣的高斯先驗(yàn),這里進(jìn)行的是最大后驗(yàn)估計(jì)(MAP)而不是最大似然估計(jì)。提及這些解釋只是為了讓讀者形成直觀的印象,具體細(xì)節(jié)就超過本課程范圍了。
實(shí)操事項(xiàng):數(shù)值穩(wěn)定。編程實(shí)現(xiàn)softmax函數(shù)計(jì)算的時(shí)候,中間項(xiàng)efyi因?yàn)楹?span style="color:#000000;">?∑jefjj
因?yàn)?/span>存在指數(shù)函數(shù),所以數(shù)值可能非常大。除以大數(shù)值可能導(dǎo)致數(shù)值計(jì)算的不穩(wěn)定,所以學(xué)會(huì)使用歸一化技巧非常重要。如果在分式的分子和分母都乘以一個(gè)常數(shù)C,并把它變換到求和之中,就能得到一個(gè)從數(shù)學(xué)上等價(jià)的公式:
efyi∑jefj=CefyiC∑jefj=efyi+logC∑jefj+logC
C的值可自由選擇,不會(huì)影響計(jì)算結(jié)果,通過使用這個(gè)技巧可以提高計(jì)算中的數(shù)值穩(wěn)定性。通常將設(shè)為。該技巧簡(jiǎn)單地說,就是應(yīng)該將向量中的數(shù)值進(jìn)行平移,使得最大值為0。代碼實(shí)現(xiàn)如下:
f = np.array([123, 456, 789]) # 例子中有3個(gè)分類,每個(gè)評(píng)分的數(shù)值都很大 p = np.exp(f) / np.sum(np.exp(f)) # 不妙:數(shù)值問題,可能導(dǎo)致數(shù)值爆炸# 那么將f中的值平移到最大值為0: f -= np.max(f) # f becomes [-666, -333, 0] p = np.exp(f) / np.sum(np.exp(f)) # 現(xiàn)在OK了,將給出正確結(jié)果讓人迷惑的命名規(guī)則:精確地說,SVM分類器使用的是折葉損失(hinge loss),有時(shí)候又被稱為最大邊界損失(max-margin loss)。Softmax分類器使用的是交叉熵?fù)p失(corss-entropy loss)。Softmax分類器的命名是從softmax函數(shù)那里得來的,softmax函數(shù)將原始分類評(píng)分變成正的歸一化數(shù)值,所有數(shù)值和為1,這樣處理后交叉熵?fù)p失才能應(yīng)用。注意從技術(shù)上說“softmax損失(softmax loss)”是沒有意義的,因?yàn)閟oftmax只是一個(gè)壓縮數(shù)值的函數(shù)。但是在這個(gè)說法常常被用來做簡(jiǎn)稱。
4.6 SVM vs. Softmax
下圖可能有助于闡明SOFTMax和SVM分類器之間的區(qū)別
SVM和Softmax分類器的不同處理方式的例子。兩個(gè)分類器都計(jì)算了同樣的分值向量f(本節(jié)中是通過矩陣乘來實(shí)現(xiàn))。不同之處在于對(duì)f中分值的解釋:SVM分類器將它們看做是分類評(píng)分,它的損失函數(shù)鼓勵(lì)正確的分類(本例中是藍(lán)色的類別2)的分值比其他分類的分值高出至少一個(gè)邊界值。Softmax分類器將這些數(shù)值看做是每個(gè)分類沒有歸一化的對(duì)數(shù)概率,鼓勵(lì)正確分類的歸一化的對(duì)數(shù)概率變高,其余的變低。SVM的最終的損失值是1.58,Softmax的最終的損失值是1.04(注意這個(gè)1.04 用的是自然對(duì)數(shù),不是以2,也不是以10為底),但要注意這兩個(gè)數(shù)值沒有可比性。只在給定同樣數(shù)據(jù),在同樣的分類器的損失值計(jì)算中,它們才有意義。
Softmax分類器為每個(gè)分類提供了“可能性”:SVM的計(jì)算是無標(biāo)定的,而且難以針對(duì)所有分類的評(píng)分值給出直觀解釋。Softmax分類器則不同,它允許我們計(jì)算出對(duì)于所有分類標(biāo)簽的可能性。舉個(gè)例子,針對(duì)給出的圖像,SVM分類器可能給你的是一個(gè)[12.5, 0.6, -23.0]對(duì)應(yīng)分類“貓”,“狗”,“船”。而softmax分類器可以計(jì)算出這三個(gè)標(biāo)簽的”可能性“是[0.9, 0.09, 0.01],這就讓你能看出對(duì)于不同分類準(zhǔn)確性的把握。為什么我們要在”可能性“上面打引號(hào)呢?這是因?yàn)榭赡苄苑植嫉募谢螂x散程度是由正則化參數(shù)λ直接決定的,λ是你能直接控制的一個(gè)輸入?yún)?shù)。舉個(gè)例子,假設(shè)3個(gè)分類的原始分?jǐn)?shù)是[1, -2, 0],那么softmax函數(shù)就會(huì)計(jì)算:
現(xiàn)在,如果正則化參數(shù)λ更大,那么權(quán)重W就會(huì)被懲罰的更多,然后他的權(quán)重?cái)?shù)值就會(huì)更小。這樣算出來的分?jǐn)?shù)也會(huì)更小,假設(shè)小了一半吧[0.5, -1, 0],那么softmax函數(shù)的計(jì)算就是:
?
現(xiàn)在看起來,概率的分布就更加分散了。還有,隨著正則化參數(shù)λ不斷增強(qiáng),權(quán)重?cái)?shù)值會(huì)越來越小,最后輸出的概率會(huì)接近于均勻分布。這就是說,softmax分類器算出來的概率最好是看成一種對(duì)于分類正確性的自信。和SVM一樣,數(shù)字間相互比較得出的大小順序是可以解釋的,但其絕對(duì)值則難以直觀解釋。
在實(shí)際使用中,SVM和Softmax經(jīng)常是相似的:通常說來,兩種分類器的表現(xiàn)差別很小,不同的人對(duì)于哪個(gè)分類器更好有不同的看法。相對(duì)于Softmax分類器,SVM更加“局部目標(biāo)化(local objective)”,這既可以看做是一個(gè)特性,也可以看做是一個(gè)劣勢(shì)??紤]一個(gè)評(píng)分是[10, -2, 3]的數(shù)據(jù),其中第一個(gè)分類是正確的。那么一個(gè)SVM()會(huì)看到正確分類相較于不正確分類,已經(jīng)得到了比邊界值還要高的分?jǐn)?shù),它就會(huì)認(rèn)為損失值是0。SVM對(duì)于數(shù)字個(gè)體的細(xì)節(jié)是不關(guān)心的:如果分?jǐn)?shù)是[10, -100, -100]或者[10, 9, 9],對(duì)于SVM來說沒設(shè)么不同,只要滿足超過邊界值等于1,那么損失值就等于0。
對(duì)于softmax分類器,情況則不同。對(duì)于[10, 9, 9]來說,計(jì)算出的損失值就遠(yuǎn)遠(yuǎn)高于[10, -100, -100]的。換句話來說,softmax分類器對(duì)于分?jǐn)?shù)是永遠(yuǎn)不會(huì)滿意的:正確分類總能得到更高的可能性,錯(cuò)誤分類總能得到更低的可能性,損失值總是能夠更小。但是,SVM只要邊界值被滿足了就滿意了,不會(huì)超過限制去細(xì)微地操作具體分?jǐn)?shù)。這可以被看做是SVM的一種特性。舉例說來,一個(gè)汽車的分類器應(yīng)該把他的大量精力放在如何分辨小轎車和大卡車上,而不應(yīng)該糾結(jié)于如何與青蛙進(jìn)行區(qū)分,因?yàn)閰^(qū)分青蛙得到的評(píng)分已經(jīng)足夠低了。
小結(jié)
總結(jié)如下:
- 定義了從圖像像素映射到不同類別的分類評(píng)分的評(píng)分函數(shù)。在本節(jié)中,評(píng)分函數(shù)是一個(gè)基于權(quán)重W和偏差b的線性函數(shù)。
- 與kNN分類器不同,參數(shù)方法的優(yōu)勢(shì)在于一旦通過訓(xùn)練學(xué)習(xí)到了參數(shù),就可以將訓(xùn)練數(shù)據(jù)丟棄了。同時(shí)該方法對(duì)于新的測(cè)試數(shù)據(jù)的預(yù)測(cè)非常快,因?yàn)橹恍枰c權(quán)重W進(jìn)行一個(gè)矩陣乘法運(yùn)算。
- 介紹了偏差技巧,讓我們能夠?qū)⑵钕蛄亢蜋?quán)重矩陣合二為一,然后就可以只跟蹤一個(gè)矩陣。
- 定義了損失函數(shù)(介紹了SVM和Softmax線性分類器最常用的2個(gè)損失函數(shù))。損失函數(shù)能夠衡量給出的參數(shù)集與訓(xùn)練集數(shù)據(jù)真實(shí)類別情況之間的一致性。在損失函數(shù)的定義中可以看到,對(duì)訓(xùn)練集數(shù)據(jù)做出良好預(yù)測(cè)與得到一個(gè)足夠低的損失值這兩件事是等價(jià)的。
現(xiàn)在我們知道了如何基于參數(shù),將數(shù)據(jù)集中的圖像映射成為分類的評(píng)分,也知道了兩種不同的損失函數(shù),它們都能用來衡量算法分類預(yù)測(cè)的質(zhì)量。但是,如何高效地得到能夠使損失值最小的參數(shù)呢?這個(gè)求得最優(yōu)參數(shù)的過程被稱為最優(yōu)化,將在下節(jié)課中進(jìn)行介紹。
斯坦福大學(xué)計(jì)算機(jī)視圖課程,青星人工智能研究中心翻譯整理
1、數(shù)據(jù)驅(qū)動(dòng)的圖像分類方法
2、最近鄰分類器
3、k - 最近鄰分類器及使用驗(yàn)證集取得超參數(shù)
4、線性分類: SVM, Softmax
5、優(yōu)化方法:隨機(jī)梯度下降法
6、反向傳播
7、神經(jīng)網(wǎng)絡(luò)一: 建立網(wǎng)絡(luò)架構(gòu)
8、神經(jīng)網(wǎng)絡(luò)二:設(shè)置數(shù)據(jù)和損失
9、神經(jīng)網(wǎng)絡(luò) 三:學(xué)習(xí)與評(píng)價(jià)
10、神經(jīng)網(wǎng)絡(luò)案例學(xué)習(xí)
11、卷積神經(jīng)網(wǎng)絡(luò):結(jié)構(gòu)、卷積/匯集層
12、理解與可視化卷積神經(jīng)網(wǎng)絡(luò)
13、傳承學(xué)習(xí)與卷積神經(jīng)網(wǎng)絡(luò)調(diào)諧
原文地址?CS231n Convolutional Neural Networks for Visual Recognition
總結(jié)
以上是生活随笔為你收集整理的4、线性分类: SVM, Softmax的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用py2exe生成一个exe文件
- 下一篇: iOS 字符串筛选手机号