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