日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

4、线性分类: SVM, Softmax

發(fā)布時間:2023/12/29 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 4、线性分类: SVM, Softmax 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

4、線性分類

上一課最我們介紹了圖像分類的問題,任務(wù)是從一個固定的類別集合中選一個分配給待識別的圖像。最后,我們描述了k-近鄰(KNN)分類器,它通過將待標(biāo)記的圖像與訓(xùn)練集中已經(jīng)標(biāo)記好的圖像進(jìn)行比較來標(biāo)記圖像。KNN有許多缺點:

  • 分類器必須記住所有的訓(xùn)練數(shù)據(jù),并將其存儲起來,以備將來與測試數(shù)據(jù)進(jìn)行比較。這是空間低效的,因為數(shù)據(jù)集的大小可能是千兆字節(jié)。
  • 分類測試圖像是昂貴的,因為它需要與所有訓(xùn)練圖像進(jìn)行比較

概述。我們現(xiàn)在要開發(fā)一種更強(qiáng)大的圖像分類方法,最終會擴(kuò)展到整個神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)。該方法有兩個主要組成部分:一個是評分函數(shù)(score function),它是原始圖像數(shù)據(jù)到類別分值的映射。另一個是損失函數(shù)(loss function),它是用來量化預(yù)測分類標(biāo)簽的得分與真實標(biāo)簽之間一致性的。然后,我們將此作為一個優(yōu)化問題處理,即調(diào)整評分函數(shù)的參數(shù),去最小化損失函數(shù)的值。

4.1 從圖像到分類評分的參數(shù)化映射

這種方法的第一個組成部分是定義將圖像的像素值映射到每個類的置信分?jǐn)?shù)的評分函數(shù)。假設(shè)訓(xùn)練數(shù)據(jù)有N個樣本,每個樣本有D個特征,全部的類型有K個。比如CIFAR-10數(shù)據(jù)庫,N為5萬,D=32 x 32 x 3 = 3072像素,K=10,因為有10個分類(狗,貓,車,等)。現(xiàn)在需要定義一個評分函數(shù),將像素數(shù)據(jù)映射到分類得分。?f:RD?RK

線性分類器。這是一個最簡單的評分函數(shù):

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?f(xi,W,b)=Wxi+b

這個公式假設(shè)將每個圖像的所有像素平坦化為一維向量(d?x 1維),Xi代表第i個像素的值。矩陣W(k x d維)和向量b(k x 1維)是函數(shù)的參數(shù)。在CIFAR-10中,Xi包含第i個圖像中的所有像素平坦化為單個[ 3072×1 ],W是[10×3072 ],B是[10×1 ],因此有3072個數(shù)字進(jìn)入函數(shù)(原始像素值)和10個數(shù)字出來(類分?jǐn)?shù))。W中的參數(shù)通常稱為權(quán)重,B稱為偏置向量,因為它影響輸出分?jǐn)?shù),但不與實際數(shù)據(jù)Xi交互。權(quán)重也稱為參數(shù),是一個意思。

有一些值得注意的事項

  • 首先,注意矩陣乘法WXi有效地、并行地評估10個單獨的分類器(每個類之一),其中W的每一行代表一個分類器。
  • 請注意,我們認(rèn)為輸入數(shù)據(jù)(Xi,Yi)是給定的和固定的,而W、B是需要調(diào)整的。我們的目標(biāo)是通過調(diào)整W、B這些值,讓計算得分與整個訓(xùn)練集上的實際標(biāo)記相匹配。我們將深入了解這是如何完成的。直觀地說,我們希望正確的分類比不正確的分類要多。
  • 這種方法的優(yōu)點是訓(xùn)練數(shù)據(jù)被用來學(xué)習(xí)參數(shù)W,B,但是一旦學(xué)習(xí)完成,我們可以丟棄整個訓(xùn)練集,只保留學(xué)習(xí)的參數(shù)。這是因為可以通過函數(shù)簡單地轉(zhuǎn)換新的測試圖像并基于計算的分?jǐn)?shù)進(jìn)行分類。
  • 最后,測試圖像的分類只涉及單個矩陣乘法和加法,這比將測試圖像與所有訓(xùn)練圖像進(jìn)行比較明顯快。

預(yù)報:卷積神經(jīng)網(wǎng)絡(luò)也是將像上面所示的那樣精確地將圖像像素映射到分?jǐn)?shù),但是映射(F)將更加復(fù)雜,并且將包含更多的參數(shù)。

4.2 理解線性分類器

線性分類器是通過計算所有3個顏色通道的所有像素值的加權(quán)和,來計算一個類的得分。根據(jù)我們?yōu)檫@些權(quán)重設(shè)置的具體的值,該函數(shù)具有在圖像中的某些位置上喜歡或不喜歡(取決于每個權(quán)重的符號)某些顏色的能力。例如,如果圖像的邊上有很多藍(lán)色(很可能對應(yīng)于水),那么“船”類更可能出現(xiàn)。你可能會期望“船”分類器在藍(lán)色通道權(quán)重更高(藍(lán)色增加船只的分?jǐn)?shù))和紅色/綠色通道中的權(quán)重更低(紅色/綠色的存在降低了船的分?jǐn)?shù))。

將圖像映射到類分?jǐn)?shù)的示例。為了可視化,我們假設(shè)圖像只有4個像素(簡化為只有一個顏色通道),并且有3個分類(貓、狗、船)。我們將圖像像素拉伸成一個列,并執(zhí)行矩陣乘法以獲得每個類的分?jǐn)?shù)。請注意,這組特定的權(quán)重W根本不好:權(quán)重賦予這張貓圖像非常低的CAT得分,這組權(quán)重似乎相信它到了一只狗。

將圖像比喻為高維點。由于圖像被拉伸成高維列向量,所以我們可以將每個圖像解釋為該空間中的單個點(例如,CIFAR-10中的每個圖像是在32×32×3像素的3072維空間中的點)。類似地,整個數(shù)據(jù)集是一個標(biāo)記好分類的點集。

由于我們定義了所有圖像像素的加權(quán)和作為每個類的得分,每個類得分是在這個空間上的線性函數(shù)。我們不能想象3072維空間,但是如果我們想象將這些維度擠壓成兩個維度,那么我們可以嘗試可視化分類器可能正在做什么:

圖像空間的簡易表示,其中每個圖像是一個點,并且有三個分類器。使用汽車分類器(紅色)的例子,紅線上的所有點,為汽車類獲得零分的位置。紅色箭頭表示增加的方向,所以紅線右邊的所有點都有正的(線性增加的)分?jǐn)?shù),并且左邊的所有點都有負(fù)的(線性減小的)分?jǐn)?shù)。

正如我們上面看到的,W的每一行都是一個類的分類器。這些數(shù)字的幾何解釋是,當(dāng)我們改變W的某一行時,像素空間中的對應(yīng)線將在不同的方向上旋轉(zhuǎn)。偏值b,則允許我們平移分類器線。如果沒有偏置項,無論權(quán)重如何,在Xi=0的位置都將給出零分,因此所有的分類線都將被迫穿過原點。

將線性分類器理解為模板匹配器。權(quán)重W的另一種解釋是W的每一行對應(yīng)于一個分類的模板(或有時也稱為原型)。然后,通過將每個模板與圖像一起使用內(nèi)積(或點積)逐一進(jìn)行比較,得到圖像屬于每一個類的得分,以找到最適合的一個分類。使用這個術(shù)語,線性分類器就是在進(jìn)行模板匹配,其中模板是被學(xué)習(xí)得到的。另一種方法是,我們?nèi)匀挥行У厥褂米罱徲嬎?#xff0c;但不是使用成千上萬的訓(xùn)練圖像,我們?yōu)槊總€分類只使用一個單一的圖像(這個圖像是學(xué)習(xí)得到的,它不一定是訓(xùn)練集中的某個圖像),我們使用(負(fù))內(nèi)積作為距離而不是L1或L2距離。

略微往前看一步:這是在最后一個例子中從CIFAR-10學(xué)習(xí)得到的權(quán)重。你看,如預(yù)期的那樣,船模板包含許多藍(lán)色像素。因此,該模板一旦與海洋上的船只圖像匹配,就會得到高分。

另外,你看,馬分類器模板似乎包含雙頭馬,這是因為數(shù)據(jù)集中的有馬臉朝左,有點馬臉朝右。線性分類器將數(shù)據(jù)中的這兩種模式合并成單個模板。類似地,汽車分類器似乎已經(jīng)將多個模式合并成一個單一模板,該模板必須從所有側(cè)面和所有顏色識別汽車。特別是,這個模板最終是紅色的,這暗示了CIFAR-10數(shù)據(jù)集中的紅色小汽車比任何其他顏色都多。線性分類器太弱,不能正確地解釋不同顏色的汽車,但我們將看到以后的神經(jīng)網(wǎng)絡(luò)將允許我們正確地解釋不同顏色的汽車。向前看一點,神經(jīng)網(wǎng)絡(luò)將能夠在隱藏層中開發(fā)中間神經(jīng)元,可以檢測特定的汽車類型(例如面向左邊的藍(lán)色汽車,面向前方的藍(lán)色汽車等),并且下一層的神經(jīng)元可以通過計算每個汽車分類器的加權(quán)總,組合成更精確的汽車分類得分。

處理偏值的技巧,在進(jìn)一步學(xué)習(xí)前,要提一下這個經(jīng)常使用的技巧,將兩個參數(shù)W,b合并為一個。回想一下,我們把得分函數(shù)定義為:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?f(xi,W,b)=Wxi+b

單獨跟蹤兩組參數(shù)(偏差b和權(quán)重W)有點麻煩。一個常用的技巧是將兩組參數(shù)組合成一個矩陣,將向量Xi增加一個維度即可,這個增加的維度的值總是保持常數(shù)1。這樣,新的得分函數(shù)將簡化為單個矩陣乘法:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? f(xi,W)=Wxi

就我們的CIOFE10數(shù)據(jù)集來說,Xi現(xiàn)在是[3073×1 ]而不是[3072×1 ] -(增加保持常數(shù)1的一個特征),W現(xiàn)在是[10×3073 ]而不是[10×3072 ]。W中額外增加的列現(xiàn)在對應(yīng)于原來的偏置b。如下圖所示:

偏值處理技巧圖示。做一個矩陣乘法,然后添加一個偏置向量(左),等價于將一個常數(shù)為1的偏置維數(shù)加到所有輸入向量上,同時權(quán)重矩陣也增加一列 (偏置列,右)。如此,我們就只需要學(xué)習(xí)一個權(quán)重矩陣,而不是兩個矩陣(權(quán)重和偏差)。

圖像數(shù)據(jù)預(yù)處理。在上面的簡明例子中,我們使用原始像素值(范圍從[ 0…255 ] ]。在機(jī)器學(xué)習(xí)實踐中,經(jīng)常對輸入特征做歸一化處理,是非常普遍的做法(在圖像的情況下,每個像素都被認(rèn)為是一個特征)。從每個特征中減去均值來對數(shù)據(jù)進(jìn)行中心化是很重要的。對應(yīng)處理圖像的場景,就是從訓(xùn)練圖像中,計算得到一個平均圖像,并從每個圖像減去它,轉(zhuǎn)換為像素在大約[-127…127 ]范圍內(nèi)的圖像。通常更進(jìn)一步的預(yù)處理是對每個輸入特征進(jìn)行縮放,使得其值取自[-1, 1 ]。其中,零均值中心可以說是非常重要的,等我們了解了梯度下降法后再詳察之。

4.3?損失函數(shù)

在前敘章節(jié)中,我們定義了從像素值到類分?jǐn)?shù)的函數(shù),該函數(shù)由一組權(quán)重W作為參數(shù)。此外,我們還發(fā)現(xiàn)我們對數(shù)據(jù)(Xi,Yi)沒有控制(它是固定的和給定的),但是我們能控制這些權(quán)重,并且我們想要將它們調(diào)整到要這樣的狀態(tài):讓預(yù)測的類得分與訓(xùn)練數(shù)據(jù)中的實際標(biāo)記一致為止。

例如,回到貓的示例圖像及其對“貓”、“狗”和“船”類的得分,我們看到那個例子中的特定權(quán)重集合不是很好:我們輸入一張貓圖的像素,但是貓分類的得分很低(-96.8),其他類別倒是更高(狗評分437.9和船舶評分61.95)。這樣的結(jié)果不爽,我們用損失函數(shù)(有時也被稱為成本函數(shù))來定量化這種不爽。直觀地說,如果我們把訓(xùn)練數(shù)據(jù)分類的工作做得不好,損失就會很高,如果我們做得好的話,損失就會很低。

4.3.1 多分類支持向量機(jī)損失

定義損失函數(shù)的方法很多。作為第一個例子,我們首先來開發(fā)一種常用的損失,稱為多分類支持向量機(jī)(SVM)損失。SVM損失的目標(biāo)是使用一些固定的余量Δ,“想要”每張圖片在正確的分類上得分遠(yuǎn)高于在錯誤分類上的得分。

還是前述數(shù)據(jù)集,對于第i個樣例,我們給出了圖像Xi的像素和指定正確類的標(biāo)簽Yi。得分函數(shù)取像素并計算向量f(Xi,W)得到各分類的得分,記為S。例如,第j類的得分是:Sj= f(Xi,W)j。然后,將第i個示例的多類SVM損失記為如下所示:

舉例。讓我們用一個例子解釋,看看它是如何工作的。假設(shè)我們有三個分類,計算得分s=(13,-7,11],并且第一個類是真類(即yi= 0)。同時假設(shè)Δ(我們將很快詳細(xì)地討論的一個超參數(shù))是10。上面的表達(dá)式對所有不正確的類進(jìn)行了求和(j≠yi),因此我們得到了兩個公式:

Li=max(0,?7?13+10)+max(0,11?13+10)

你看,第一項給出零,因為[-7 - 13+10 ]給出負(fù)數(shù),然后用最大(0,-)函數(shù)將其閾值化為零。這一項為0,因為正確的類得分(13)大于錯誤的類得分(-7)至少10的差距。事實上,差異是20,這遠(yuǎn)遠(yuǎn)大于10。但SVM只關(guān)心的差異是至少10,超過10以上都是0。第二項計算[ 11 - 13 + 10 ],給出8。也就是說,就算正確的分類得分高于不正確的分類(13>11),但不大于期望的10的差距(差異僅為2),還是有損失,這里損失達(dá)到8。總之,SVM損失函數(shù)希望正確的類Yi的分?jǐn)?shù)至少比不正確的類分?jǐn)?shù)大一個Δ這么多。否則就積累了損失。

這里我們使用線性得分?jǐn)?shù)函數(shù)(f(Xi,w)=WXi),因此我們也可以用這種等價形式寫損失函數(shù):

其中Wj是W的第j行,轉(zhuǎn)換為列。當(dāng)然,如果我們開始考慮更復(fù)雜形式的得分函數(shù),形式就不是這樣的了。

在結(jié)束這一部分之前,我們將提到的最后一個術(shù)語是,函數(shù)max(0,-)通常稱為鉸鏈損失。有時也使用平方鉸鏈損失SVM(或L2-SVM),它使用形式max(0,-)2,這樣對于差異的反應(yīng)更強(qiáng)烈(二次而不是線性)。非平方版本更常用,但在某些數(shù)據(jù)集中,平方鉸鏈損失函數(shù)工作的更好。到底使用線性差異還是平方差異,可以用交叉驗證的方式確定。

損失函數(shù)是對預(yù)測訓(xùn)練數(shù)據(jù)不爽程度的度量

多類支持向量機(jī)“希望”正確的類得分高于所有其他類得分至少一個增量Δ。如果任何一個分類在紅色區(qū)域內(nèi)得分(或更高),則會累積損失。否則損失將為零。我們的目標(biāo)將是找到同時滿足訓(xùn)練數(shù)據(jù)中所有示例的約束的權(quán)重,并給出盡可能低的總損失。

正則化。上面給出的損失函數(shù)有一個問題。假設(shè)我們有一個數(shù)據(jù)集和一組參數(shù)W,它正確地對每個示例進(jìn)行分類(即所有的分?jǐn)?shù)都是滿足所有的邊界條件,并且對于所有i都是Li=0)。問題是,這組W不一定是唯一的:可能有許多類似的W,都能正確地分類的樣本數(shù)據(jù)。比如,如果一組參數(shù)W對所有的樣本數(shù)據(jù)能正確地進(jìn)行分類(因此每個樣本的損失為零),那么這些參數(shù)的任何一個倍數(shù)λW(λ>1)也將給出零損失,因為這個變換均勻地延伸所有的分?jǐn)?shù)值及其差異的絕對值。例如,如果正確的類和最近的不正確類之間的分?jǐn)?shù)的差值為15,那么將W的所有元素乘以2將使新差值為30。

換言之,我們希望對某些權(quán)重W的偏好進(jìn)行編碼,以消除這種歧義。我們可以通過用正則化懲罰R(W)來擴(kuò)展損失函數(shù)。最常見的正則化懲罰是L2范數(shù),它通過在所有參數(shù)上施加一個平方懲罰來阻止大的權(quán)重:

在上面的表達(dá)式中,我們對W的所有元素求平方和。注意正則化函數(shù)不是針對數(shù)據(jù)的函數(shù),它僅基于權(quán)重。包含正則化懲罰的多分類支持向量機(jī)損失,它由兩個部分組成:數(shù)據(jù)損失(這是所有樣本中的平均損失Li)和正則化損失

將它以完整的形式展開:

其中N是訓(xùn)練樣本的數(shù)目。如上所示,我們將正則化懲罰附加到損失目標(biāo),由超參數(shù)λ加權(quán)。通常通過交叉驗證來確定這個超參數(shù)λ

最吸引人的特性是懲罰大的權(quán)重能夠提高模型的泛化能力,因為沒有哪個維度能夠?qū)ψ罱K得分有很大的影響。例如,假設(shè)我們有一些輸入向量x= [1,1,1,1]和兩個權(quán)重向量W1= [1,0,0,0],W2= [0.25,0.25,0.25,0.25]。然后W1TX=W2TX=1,因此兩個權(quán)重向量都導(dǎo)致相同的點積,但是W1的L2懲罰為1,而W2的L2懲罰僅為0.25。因此,根據(jù)L2懲罰,權(quán)重向量W2將是優(yōu)選的,因為它實現(xiàn)了較低的正則化損失。直觀地說,這是因為W2中的權(quán)重較小且更舒緩。由于L2懲罰傾向于更小且更舒緩的權(quán)重向量,因此最終分類器傾向于考慮讓所有輸入特征都做出貢獻(xiàn),而不是只考慮少量特征(重團(tuán)隊精神,而不是個人英雄主義,^_^)。后續(xù)課堂會講到,這種效果可以提高分類器在測試圖像上的泛化性能,減少過擬合。

注意,偏值不具有相同的效果,因為不同于權(quán)重,它們對輸入維數(shù)的強(qiáng)度沒影響。因此,通常只對權(quán)重w進(jìn)行調(diào)整,而不是對偏差B進(jìn)行正則化。然而,在實踐中,這種影響很少。最后,由于正則化懲罰,我們不能在所有的樣例中獲得精確的0的損失,因為這只有在W=0這種不理智的設(shè)置下才是可能。

代碼(登錄青星人工智能研究中心下載)

SVM損失的目標(biāo)就是采取一種特定的方法來測量預(yù)測標(biāo)簽與實際標(biāo)簽的一致性。對訓(xùn)練集做出良好的預(yù)測等同于最小化損失。

所以,剩下所要做的就是想出一種方法來找到最小化該損失的權(quán)重??。

4.4 幾點討論

設(shè)置Δ。請注意,我們忽略了超參數(shù)Δ及其設(shè)置。它應(yīng)該設(shè)置什么值,必須交叉驗證它嗎?事實證明,在所有情況下,這個超參數(shù)可以被安全地設(shè)置為Δ=1。超參數(shù)Δλ看起來像兩個不同的超參數(shù),但實際上它們都控制數(shù)據(jù)損失和正則損失之間的平衡。理解這一點的關(guān)鍵是權(quán)重W的量級直接影響得分(這也是它們的差異):當(dāng)我們縮小W內(nèi)的所有值時,得分差異將變小,并且當(dāng)我們擴(kuò)大權(quán)重時,得分差異將變得更高。因此,得分之間的余量(例如,Δ=1,或Δ=100)的確切值在某種意義上是沒有意義的,因為權(quán)重可以任意地縮小或拉伸差異。因此,唯一真正需要權(quán)衡的是我們允許權(quán)重增長多少(通過正則化強(qiáng)度λ)。

與二分類支持向量機(jī)的關(guān)系。可能你以前接觸過二分類支持向量機(jī),其中第i個例子的損失這樣表示:

其中C是一個超參數(shù),并且是yi{?1,1}。這就是上述提出的多分類SVM在只有兩個分類情況下的特列。此外,在這個公式中的C和我們的公式中的λ?起到相同的作用,他們的關(guān)系是?C∝1λ

基于原始形態(tài)的優(yōu)化。如果你以前接觸過支持向量機(jī)分類方法,你可能也聽過內(nèi)核,對偶,SMO等算法。在神經(jīng)網(wǎng)絡(luò)課程,我們將始終在無約束的原始形態(tài)上優(yōu)化目標(biāo)。許多這些目標(biāo)在技術(shù)上是不可微的(例如,max(x,y)函數(shù)就不可微,因為x=y時有扭結(jié)。實際上這不是一個問題,通常使用梯度下降法就可以解決。

其它的多分類SVM形式:值得注意的是,在本節(jié)中提出的多類SVM是在多個類上建立SVM的幾種方法之一。另一種常用的形式是一對多(One-Vs-All,簡稱OVA)SVM,它為每個類和所有其他類訓(xùn)練一個獨立的二分類SVM。相應(yīng)地,也有在實踐中不太常見的所有對所有(All-Vs-All,簡稱AVA)策略。我們的公式遵循 Weston和沃特金斯 1999論文,這是一個比OVA更強(qiáng)大的版本(該版本可以實現(xiàn)零數(shù)據(jù)損失,但OVA不能。詳情可參閱論文)。你可以看到的最后一個公式是結(jié)構(gòu)化的SVM,它最大化了正確分類得分與不正確分類中得分最高的得分之間的差距。

4.5?Softmax 分類器

SVM是兩種常見的分類器之一。另一個流行的選擇是Softmax分類器,它具有不同的損失函數(shù)。如果你以前聽說過二元邏輯回歸分類器,那么二元邏輯回歸分類器泛化到多個類就是Softmax分類器。不同于SVM將F(Xi,W)的輸出作為每個類的得分(未校準(zhǔn)和可能難以解釋),Softmax分類器給出了更直觀的輸出(歸一化分類概率),還有一個概率解釋,后面馬上描述。在Softmax分類器的函數(shù)映射也是F(Xi;W)=WXi,但是我們現(xiàn)在將這些分?jǐn)?shù)解釋為每個類的未標(biāo)準(zhǔn)化的對數(shù)概率,并且將折葉損失(hinge loss)替換為交叉熵?fù)p失cross-entropy loss)。損失函數(shù)改為交叉熵?fù)p失

fjb表示第j個分類得分。全部的損失包括所有訓(xùn)練樣本的損失的平均數(shù)加上正則化項R(W)。函數(shù)?fj(z)=ezj∑kezk

稱為softmax 函數(shù):它需要向量的任意實值分?jǐn)?shù)(Z),并將其壓制成0到1之間的向量,向量的所有的值加起來合計為1。如果你第一次看到它,那么softmax函數(shù)中的全交叉熵?fù)p失函數(shù)可能看起來嚇人,但它實際上比較容易理解。

信息論觀點。"真"分布P與估計分布Q之間的交叉熵定義為:

Softmax分類器因此最小化了估計的類概率(如上面所示的q=efyi/∑jefj)和“真”分布之間的交叉熵。

在這個解釋中,“真實”分布就是所有概率密度都分布在正確的類別上(比如:p=[0,...1,...,0]中在的位置就有一個單獨的1)。還有,既然交叉熵可以寫成熵和相對熵(Kullback-Leibler divergence),并且delta函數(shù)的熵是0,那么就能等價的看做是對兩個分布之間的相對熵做最小化操作。換句話說,交叉熵?fù)p失函數(shù)“想要”預(yù)測分布的所有概率密度都在正確分類上。

譯者注:Kullback-Leibler差異(Kullback-Leibler Divergence)也叫做相對熵(Relative Entropy),它衡量的是相同事件空間里的兩個概率分布的差異情況。

概率論解釋先看下面的公式:

P(yi∣xi;W)=efyi∑jefj

可以解釋為是給定圖像數(shù)據(jù)Xi,以為參數(shù),分配給正確分類標(biāo)簽的歸一化概率。為了理解這點,請回憶一下Softmax分類器將輸出向量中的評分值解釋為沒有歸一化的對數(shù)概率。那么以這些數(shù)值做指數(shù)函數(shù)的冪就得到了沒有歸一化的概率,而除法操作則對數(shù)據(jù)進(jìn)行了歸一化處理,使得這些概率的和為1。從概率論的角度來理解,我們就是在最小化正確分類的負(fù)對數(shù)概率,這可以看做是在進(jìn)行最大似然估計(MLE)。該解釋的另一個好處是,損失函數(shù)中的正則化部分可以被看做是權(quán)重矩陣的高斯先驗,這里進(jìn)行的是最大后驗估計(MAP)而不是最大似然估計。提及這些解釋只是為了讓讀者形成直觀的印象,具體細(xì)節(jié)就超過本課程范圍了。

實操事項:數(shù)值穩(wěn)定編程實現(xiàn)softmax函數(shù)計算的時候,中間項efyi因為和?∑jefjj
因為存在指數(shù)函數(shù),所以數(shù)值可能非常大。除以大數(shù)值可能導(dǎo)致數(shù)值計算的不穩(wěn)定,所以學(xué)會使用歸一化技巧非常重要。如果在分式的分子和分母都乘以一個常數(shù)C
,并把它變換到求和之中,就能得到一個從數(shù)學(xué)上等價的公式:

efyi∑jefj=CefyiC∑jefj=efyi+logC∑jefj+logC

C的值可自由選擇,不會影響計算結(jié)果,通過使用這個技巧可以提高計算中的數(shù)值穩(wěn)定性。通常將設(shè)為。該技巧簡單地說,就是應(yīng)該將向量中的數(shù)值進(jìn)行平移,使得最大值為0。代碼實現(xiàn)如下:

f = np.array([123, 456, 789]) # 例子中有3個分類,每個評分的數(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),有時候又被稱為最大邊界損失(max-margin loss)。Softmax分類器使用的是交叉熵?fù)p失(corss-entropy loss)。Softmax分類器的命名是從softmax函數(shù)那里得來的,softmax函數(shù)將原始分類評分變成正的歸一化數(shù)值,所有數(shù)值和為1,這樣處理后交叉熵?fù)p失才能應(yīng)用。注意從技術(shù)上說“softmax損失(softmax loss)”是沒有意義的,因為softmax只是一個壓縮數(shù)值的函數(shù)。但是在這個說法常常被用來做簡稱。

4.6 SVM vs. Softmax

下圖可能有助于闡明SOFTMax和SVM分類器之間的區(qū)別

SVM和Softmax分類器的不同處理方式的例子。兩個分類器都計算了同樣的分值向量f(本節(jié)中是通過矩陣乘來實現(xiàn))。不同之處在于對f中分值的解釋:SVM分類器將它們看做是分類評分,它的損失函數(shù)鼓勵正確的分類(本例中是藍(lán)色的類別2)的分值比其他分類的分值高出至少一個邊界值。Softmax分類器將這些數(shù)值看做是每個分類沒有歸一化的對數(shù)概率,鼓勵正確分類的歸一化的對數(shù)概率變高,其余的變低。SVM的最終的損失值是1.58,Softmax的最終的損失值是1.04(注意這個1.04 用的是自然對數(shù),不是以2,也不是以10為底),但要注意這兩個數(shù)值沒有可比性。只在給定同樣數(shù)據(jù),在同樣的分類器的損失值計算中,它們才有意義。

Softmax分類器為每個分類提供了“可能性”:SVM的計算是無標(biāo)定的,而且難以針對所有分類的評分值給出直觀解釋。Softmax分類器則不同,它允許我們計算出對于所有分類標(biāo)簽的可能性。舉個例子,針對給出的圖像,SVM分類器可能給你的是一個[12.5, 0.6, -23.0]對應(yīng)分類“貓”,“狗”,“船”。而softmax分類器可以計算出這三個標(biāo)簽的”可能性“是[0.9, 0.09, 0.01],這就讓你能看出對于不同分類準(zhǔn)確性的把握。為什么我們要在”可能性“上面打引號呢?這是因為可能性分布的集中或離散程度是由正則化參數(shù)λ直接決定的,λ是你能直接控制的一個輸入?yún)?shù)。舉個例子,假設(shè)3個分類的原始分?jǐn)?shù)是[1, -2, 0],那么softmax函數(shù)就會計算:

現(xiàn)在,如果正則化參數(shù)λ更大,那么權(quán)重W就會被懲罰的更多,然后他的權(quán)重數(shù)值就會更小。這樣算出來的分?jǐn)?shù)也會更小,假設(shè)小了一半吧[0.5, -1, 0],那么softmax函數(shù)的計算就是:

?

現(xiàn)在看起來,概率的分布就更加分散了。還有,隨著正則化參數(shù)λ不斷增強(qiáng),權(quán)重數(shù)值會越來越小,最后輸出的概率會接近于均勻分布。這就是說,softmax分類器算出來的概率最好是看成一種對于分類正確性的自信。和SVM一樣,數(shù)字間相互比較得出的大小順序是可以解釋的,但其絕對值則難以直觀解釋。

在實際使用中,SVM和Softmax經(jīng)常是相似的:通常說來,兩種分類器的表現(xiàn)差別很小,不同的人對于哪個分類器更好有不同的看法。相對于Softmax分類器,SVM更加“局部目標(biāo)化(local objective)”,這既可以看做是一個特性,也可以看做是一個劣勢。考慮一個評分是[10, -2, 3]的數(shù)據(jù),其中第一個分類是正確的。那么一個SVM()會看到正確分類相較于不正確分類,已經(jīng)得到了比邊界值還要高的分?jǐn)?shù),它就會認(rèn)為損失值是0。SVM對于數(shù)字個體的細(xì)節(jié)是不關(guān)心的:如果分?jǐn)?shù)是[10, -100, -100]或者[10, 9, 9],對于SVM來說沒設(shè)么不同,只要滿足超過邊界值等于1,那么損失值就等于0。

對于softmax分類器,情況則不同。對于[10, 9, 9]來說,計算出的損失值就遠(yuǎn)遠(yuǎn)高于[10, -100, -100]的。換句話來說,softmax分類器對于分?jǐn)?shù)是永遠(yuǎn)不會滿意的:正確分類總能得到更高的可能性,錯誤分類總能得到更低的可能性,損失值總是能夠更小。但是,SVM只要邊界值被滿足了就滿意了,不會超過限制去細(xì)微地操作具體分?jǐn)?shù)。這可以被看做是SVM的一種特性。舉例說來,一個汽車的分類器應(yīng)該把他的大量精力放在如何分辨小轎車和大卡車上,而不應(yīng)該糾結(jié)于如何與青蛙進(jìn)行區(qū)分,因為區(qū)分青蛙得到的評分已經(jīng)足夠低了。

小結(jié)

總結(jié)如下:

  • 定義了從圖像像素映射到不同類別的分類評分的評分函數(shù)。在本節(jié)中,評分函數(shù)是一個基于權(quán)重W和偏差b的線性函數(shù)。
  • 與kNN分類器不同,參數(shù)方法的優(yōu)勢在于一旦通過訓(xùn)練學(xué)習(xí)到了參數(shù),就可以將訓(xùn)練數(shù)據(jù)丟棄了。同時該方法對于新的測試數(shù)據(jù)的預(yù)測非常快,因為只需要與權(quán)重W進(jìn)行一個矩陣乘法運算。
  • 介紹了偏差技巧,讓我們能夠?qū)⑵钕蛄亢蜋?quán)重矩陣合二為一,然后就可以只跟蹤一個矩陣。
  • 定義了損失函數(shù)(介紹了SVM和Softmax線性分類器最常用的2個損失函數(shù))。損失函數(shù)能夠衡量給出的參數(shù)集與訓(xùn)練集數(shù)據(jù)真實類別情況之間的一致性。在損失函數(shù)的定義中可以看到,對訓(xùn)練集數(shù)據(jù)做出良好預(yù)測與得到一個足夠低的損失值這兩件事是等價的。

現(xiàn)在我們知道了如何基于參數(shù),將數(shù)據(jù)集中的圖像映射成為分類的評分,也知道了兩種不同的損失函數(shù),它們都能用來衡量算法分類預(yù)測的質(zhì)量。但是,如何高效地得到能夠使損失值最小的參數(shù)呢?這個求得最優(yōu)參數(shù)的過程被稱為最優(yōu)化,將在下節(jié)課中進(jìn)行介紹。

斯坦福大學(xué)計算機(jī)視圖課程,青星人工智能研究中心翻譯整理

1、數(shù)據(jù)驅(qū)動的圖像分類方法

2、最近鄰分類器

3、k - 最近鄰分類器及使用驗證集取得超參數(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í)與評價

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的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。