cs231n-(2)線性分類器:SVM和Softmax

概述:上節講到了圖像分類以及kNN算法,kNN用作圖像分類效果並不好。效果更好的分類算法是神經網絡和卷積神經網絡,它主要包括2部分
1、評分函數score function,把原數據映射爲一個得分。
2、損失函數loss function,衡量預測得分和真實標籤之間的差距。
最終的優化問題是最小化損失函數。

圖像到標籤得分的參數映射

首先定義圖像像素數據到各個類別得分的映射。定義幾個符號,訓練集爲xiRD ,訓練集的每個元素有個對應的標籤yii=1Nyi1K 。即訓練集有N 個數據,維度爲D ,每個訓練數據對應一個標籤yi ,標籤總共有K 類。以CIFAR-10爲例,N=50,000,D=32×32×3=3072,K=10 。定義評分函數f:RDRK

線性分類器

一個常用的映射函數爲

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

xi 是圖像數據,展開爲一個列向量[D x 1]。矩陣W(維度[K x D])和向量b(維度[K x1])是函數的參數,分爲被稱爲權重和偏置。
需要注意:
1、Wxi 得到的乘積是個列向量[K x 1],K個值對應K類。
2、優化的目的就是讓上面函數的得分儘量和真實標籤的值接近。
3、訓練結束後,可以丟棄訓練數據,只使用學到的參數值即可預測。
4、預測時只是矩陣的相乘和相加,速度很快。

解釋線性分類器:
線性分類器是計算圖像所有像素值的加權和,圖像包括3個顏色通道。根據我們隊權重(正/負)的設置,映射函數可以喜好或討厭某一類顏色。例如,對於“船”這個類別,藍色(海水)可能會在圖像佔比較大比例。這樣在分類“船”時,藍色對應的通道的可能會有比較多的正權重,而紅色和綠色通道可能會有比較多的負權重。
下面是一個圖像分的例子:
cs231n2_01.jpeg
可以看出,更加傾向認爲是一隻狗。

類比高維空間

圖像被展開爲高維空間的列向量,可以把圖像當做高維空間的一個點(例如CIFAR-10的中圖像是3072維度空間的一個點)。線性分類函數就是來劃分這個高維空間,假設這個高維空間是2維的,可視化後如下:
cs231n_02.jpeg
上圖表示圖像空間,每個點都是一個圖像。矩陣W 的每一行都是一條直線,控制其方向,b 控制平移,直線上的點對應的得分爲0,

線性分類器看做模板匹配

權重矩陣W的每一行可以看做匹配某一類的模板,每一類的打分就是圖像和對應類別模板的乘積。下圖是CIFAR-10訓練後的模板的可視化圖像:
cs231n_3.jpeg
可以看出“船”的模板包含很多藍色的像素,這樣會給藍色通道像素分值比較高。

偏置技巧

可以把上面公式中,後面加的權重放到前面的矩陣乘法中,技巧就拓展矩陣多出一列,輸入數據多出一維,最終公式變爲:

f(xi,W)=Wxi

通過下圖一看便知
cs231n2_04.jpeg

數據預處理

圖像的像素範圍是[0…255],但是在機器學習中經常要將特徵歸一化。經常用到的是把數據中心化center your data,通過減去每個特徵的均值來做到的。例如減去像素的均值,可以是範圍變爲[-127…127]。有時還做進一步處理,使範圍變爲[-1,1]。0均值中心化非常重要,學了梯度下降就可以理解這一點了。

損失函數

前面通過評分函數來計算屬於每一類的得分。這裏通過損失函數來計算對得分的滿意程度。損失函數又稱作代價函數目標。結果越好,損失函數值將越低,結果越差,損失函數的值將越高。

多類SVM loss

這裏定義SVM的loss函數。SVM loss會使正確類別的得分比錯誤類別的得分至少高Δ 。用s 代表分數,第i個圖像對應第j類的得分sj=f(xi,W)j ,那麼多類別SVM對於第i個圖像的loss爲

Li=jyimax(0,sjsyi+Δ)

一個例子
假設有3個類別,對應的得分s=[13,7,11],真實類別是yi=0Δ=10 。損失函數有2項
Li=max(0,713+10)+max(0,1113+10)

上式中第一項爲0,因爲-7分值和真實得分相差20,大於Δ ;,第二項就不爲0了,因爲11分值和13只相差2,所以Loss函數就不爲0了。
這一節是將線性分類器,所以Loss函數有以下形式
Li=jyimax(0,wTjxiwTyixi+Δ)

下圖就是多類別SVM loss可視化圖。
cs231n_05.jepg
上面損失函數有叫做hinge loss,形式爲max(0,) ,有時會使square hinge loss(或L2-SVM)來代替,形式爲max(0,)2

正則化

上面提到的loss函數有bug。設想以下,假設假設評價函數能正確預測所有分類,且損失函數Li=0;這樣權重並不是唯一的。因爲如果一組權重W符合這樣的要求,那麼λW也符合這樣的要求(λ>1 。如果得到評價函數的值不爲0,那麼評價函數的值也會放大λ 倍。

可以通過對W加上些限制來移除上面的不確定性,得到一個唯一確定的權重係數矩陣。一般是通過正則化懲罰來實現R(W)來實現。最常用的懲罰是 L2 範數:

R(W)=klW2k,l

這個公式中不包含數據,是和數據無關的的loss。這樣Li就由2項組成了:data lossregularization loss
L=1NiLidata loss+λR(W)regularization loss

展開後形式如下:
L=1Nijyi[max(0,f(xi;W)jf(xi;W)yi+Δ)]+λklW2k,l

上式中λ是一個超參數,通過使用交叉驗證來設置它。

引入正則化懲罰還可以帶來其他許多性質,後面章節會提到。例如,在SVM中引入正則化後就有了最大間隔max margin這一性質,詳細參考cs229

正則化一個很好的性質是懲罰了大的權重值,這一可以提高模型泛化能力。限制權重大小後,沒有那一維數據可能單獨對評價函數帶來很大影響。例如輸入數據x=[1,1,1,1,1],有兩組權重w1=[1,0,0,0],w2=[0.25,0.25,0.25,0.25],內積相等wT1x=wT2x=1。但是L2懲罰不同,對於w1是1.0,而對於w2是0.25,因此w2優於w1。直觀上看,w2更小,卻值更加分散,這樣輸入數據的所有維度都會對評價函數有影響,而不是僅僅幾個維度數據主要決定評價函數。因此,會有更好的泛化性能,減小過擬合。

需要注意,正則化只是針對權重W,而不針對偏差b,因爲偏差對輸入數據各個維度大小沒有影響影響,它只是控制分類器的平移。

實踐注意事項

設置ΔΔ 這個超參數一個常用的值是Δ=1.0 。超參數Δλ 看上去是不同的超參數,實際上它們有同樣的功能:平衡目標函數中的data loss和regularization loss。權重W的幅度直接影響評價函數的得分,例如放大權重幅度,得分也會變大,不同類別之間的得分差異也就變大了。Δ 是控制不同類別之間的得分差異,其他小可以通過放大或縮小權重幅度來控制。實際上權重的平衡是允許幅度有多大變化(通過λ 來控制)。

和二項SVM關係:二項SVM是多項SVM的一個特例。

在原始形式中優化:如果以前學過SVMs,可能會聽過核方法、對偶、SMO算法等。在神經網絡中,往往使用目標函數的原始形式。許多模板函數在技術上不可分,但是實際中可以使用次梯度。

其他形式的SVM:本節的多類SVM只是一種,還有其他形式。

Softmax分類器

除了SVM分類器外,還有一種常用的叫做Softmax分類器,它是二元邏輯迴歸泛化到多元的情況。Softmax分類器的輸出不是得分,而是對應類別的概率。Softmax分類器中,映射函數f(xi;W)=Wxi並沒改變,把得分當做未歸一化的對數概率,把hinge loss替換爲交叉熵 loss:

Li=logefyijefjor equivalentlyLi=fyi+logjefj

其中,fj表示第j類的得分。整個數據集的loss是Li加上正則化項R(W)。函數fj(z)=ezjkezk叫做softmax函數,它把得分向量轉換爲概率向量。

信息論角度:一個真實分佈p和其估計分佈q的交叉熵定義如下:

H(p,q)=xp(x)logq(x)

Softmax分類器是最小化估計的分佈(q=efyi/jefj )和真實分佈(p=[0,...,1,...,0] ,只有第yi 個爲1)之間交叉熵。交叉熵可以看做熵和相對熵的和相對熵的和H(p,q)=H(p)+DKL(p||q),真實分佈p的熵是零,所以最小化交叉熵等價於最小化相對熵。

概率解釋:公式

P(yixi;W)=efyijefj

已知輸入數據xi和權重參數W,上式可以看做對應類別yi的歸一化概率。評價函數的輸出向量沒有歸一化,直接當做對數概率的輸入,之後用對數概率除以所有概率的和來進行歸一化,這樣概率的和爲1。從概率論角度看,我們再最小化正確分類的負概率(即最大化正確分類的概率),這是最大似然估計(Maximum Likelihood Estimation)。這樣損失函數中的正則化部分R(W)可以看過權重矩陣W的高斯先驗,這樣最大似然估計變成了最大後驗概率估計(Maximum a posteriori)。

實踐問題:數值穩定:當寫代碼實現Softmax函數時,會涉及到efyijefj,因爲指數的原因,這些數值可能會非常大。除以很大的數值可能會引起數值不穩定,可以使用歸一化的技巧。在分子和分母同時乘以一個常數,分數的數值不變:

efyijefj=CefyiCjefj=efyi+logCjefj+logC

C通常設爲logC=maxxifj,這樣分數向量中最大的值爲0。

SVM vs. Softmax

下面圖像可以幫助對比兩者區別
cs231n2_06.jpeg

Softmax分類器計算每類的概率:SVM計算每類的得分,這樣不易直接解釋。Softmax計算每類的概率。超參數λ控制概率的集中或離散程度。

實踐中,SVM和Softmax常常是相似的:SVM和Softmax性能差別不大,不同的人對哪種效果更好持不同的觀點。和Softmax相比,SVM更加局部化(local objective),它只關心小於間隔Δ 的部分,例如Δ=1 ,那麼分值[10, -100, -100]和[10, 9, 9]對於SVM來說,其loss函數值相同;但是對於softmax就不同了。Softmax的loss函數只有在完全正確情況下才會爲0。

總結

1、定義了評價函數,線性函數的評價函數依賴權重W和偏置b
2、和kNN使用不一樣,參數化方法訓練時間比較久,預測只是矩陣相乘。
3、通過一個trick,可以把偏置加入到矩陣相乘中。
4、定義了loss 函數,介紹了常用的SVM和Softmax loss。對比了兩者的區別。

如果求解最優的參數,這設計到優化,是下一屆講解的問題。

拓展閱讀

Deep Learning using Linear Support Vector Machines

發佈了280 篇原創文章 · 獲贊 326 · 訪問量 125萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章