3.4 softmax迴歸
線性迴歸模型適用於輸出爲連續值的情景。在另一類情景中,模型輸出可以是一個像圖像類別這樣的離散值。對於這樣的離散值預測問題,我們可以使用諸如softmax迴歸在內的分類模型。和線性迴歸不同,softmax迴歸的輸出單元從一個變成了多個,且引入了softmax運算使輸出更適合離散值的預測和訓練。本節以softmax迴歸模型爲例,介紹神經網絡中的分類模型。
3.4.1 分類問題
考慮一個簡單的圖像分類問題,其輸入圖像的高和寬均爲2像素,且色彩爲灰度。這樣每個像素值都可以用一個標量表示。我們將圖像中的4像素分別記爲x1,x2,x3,x4。假設訓練數據集中圖像的真實標籤爲狗、貓或雞(假設可以用4像素表示出這3種動物),這些標籤分別對應離散值y1,y2,y3。
我們通常使用離散的數值來表示類別,例如y1=1,y2=2,y3=3。如此,一張圖像的標籤爲1、2和3這3個數值中的一個。雖然我們仍然可以使用迴歸模型來進行建模,並將預測值就近定點化到1、2和3這3個離散值之一,但這種連續值到離散值的轉化通常會影響到分類質量。因此我們一般使用更加適合離散值輸出的模型來解決分類問題。
3.4.2 softmax迴歸模型
softmax迴歸跟線性迴歸一樣將輸入特徵與權重做線性疊加。與線性迴歸的一個主要不同在於,softmax迴歸的輸出值個數等於標籤裏的類別數。因爲一共有4種特徵和3種輸出動物類別,所以權重包含12個標量(帶下標的w)、偏差包含3個標量(帶下標的b),且對每個輸入計算o1,o2,o3這3個輸出:
o1o2o3=x1w11+x2w21+x3w31+x4w41+b1,=x1w12+x2w22+x3w32+x4w42+b2,=x1w13+x2w23+x3w33+x4w43+b3.(式1)
下圖用神經網絡圖描繪了上面的計算。softmax迴歸同線性迴歸一樣,也是一個單層神經網絡。由於每個輸出o1,o2,o3的計算都要依賴於所有的輸入x1,x2,x3,x4,softmax迴歸的輸出層也是一個全連接層。
既然分類問題需要得到離散的預測輸出,一個簡單的辦法是將輸出值oi當作預測類別是i的置信度,並將值最大的輸出所對應的類作爲預測輸出,即輸出 iargmaxoi。例如,如果o1,o2,o3分別爲0.1,10,0.1,由於o2最大,那麼預測類別爲2,其代表貓。
然而,直接使用輸出層的輸出有兩個問題。一方面,由於輸出層的輸出值的範圍不確定,我們難以直觀上判斷這些值的意義。例如,剛纔舉的例子中的輸出值10表示“很置信”圖像類別爲貓,因爲該輸出值是其他兩類的輸出值的100倍。但如果o1=o3=103,那麼輸出值10卻又表示圖像類別爲貓的概率很低。另一方面,由於真實標籤是離散值,這些離散值與不確定範圍的輸出值之間的誤差難以衡量。
softmax運算符(softmax operator)解決了以上兩個問題。它通過下式將輸出值變換成值爲正且和爲1的概率分佈:
y^1,y^2,y^3=softmax(o1,o2,o3)(式2)
其中
y^1=∑i=13exp(oi)exp(o1),y^2=∑i=13exp(oi)exp(o2),y^3=∑i=13exp(oi)exp(o3).(式3)
容易看出y^1+y^2+y^3=1且0≤y^1,y^2,y^3≤1,因此y^1,y^2,y^3是一個合法的概率分佈。這時候,如果y^2=0.8,不管y^1和y^3的值是多少,我們都知道圖像類別爲貓的概率是80%。此外,我們注意到
iargmaxoi=iargmaxy^i(式4)
因此softmax運算不改變預測類別輸出。
3.4.3 單樣本分類的矢量計算表達式
爲了提高計算效率,我們可以將單樣本分類通過矢量計算來表達。在上面的圖像分類問題中,假設softmax迴歸的權重和偏差參數分別爲
W=⎣⎢⎢⎡w11w21w31w41w12w22w32w42w13w23w33w43⎦⎥⎥⎤,b=[b1b2b3],(式5)
設高和寬分別爲2個像素的圖像樣本i的特徵爲
x(i)=[x1(i)x2(i)x3(i)x4(i)],(式6)
輸出層的輸出爲
o(i)=[o1(i)o2(i)o3(i)],(式7)
預測爲狗、貓或雞的概率分佈爲
y^(i)=[y^1(i)y^2(i)y^3(i)].(式8)
softmax迴歸對樣本i分類的矢量計算表達式爲
o(i)y^(i)=x(i)W+b,=softmax(o(i)).(式9)
3.4.4 小批量樣本分類的矢量計算表達式
爲了進一步提升計算效率,我們通常對小批量數據做矢量計算。廣義上講,給定一個小批量樣本,其批量大小爲n,輸入個數(特徵數)爲d,輸出個數(類別數)爲q。設批量特徵爲X∈Rn×d。假設softmax迴歸的權重和偏差參數分別爲W∈Rd×q和b∈R1×q。softmax迴歸的矢量計算表達式爲
OY^=XW+b,=softmax(O),(式10)
其中的加法運算使用了廣播機制,O,Y^∈Rn×q且這兩個矩陣的第i行分別爲樣本i的輸出o(i)和概率分佈y^(i)。
3.4.5 交叉熵損失函數
前面提到,使用softmax運算後可以更方便地與離散標籤計算誤差。我們已經知道,softmax運算將輸出變換成一個合法的類別預測分佈。實際上,真實標籤也可以用類別分佈表達:對於樣本i,構造向量y(i)∈Rq ,使其第y(i)(樣本i類別的離散數值)個元素爲1,其餘爲0。這樣我們的訓練目標可以設爲使預測概率分佈y^(i)儘可能接近真實的標籤概率分佈y(i)。
可以像線性迴歸那樣使用平方損失函數∥y^(i)−y(i)∥2/2。然而,想要預測分類結果正確,其實並不需要預測概率完全等於標籤概率。例如,在圖像分類的例子裏,如果y(i)=3,那麼我們只需要y^3(i)比其他兩個預測值y^1(i)和y^2(i)大就行了。即使y^3(i)值爲0.6,不管其他兩個預測值爲多少,類別預測均正確。而平方損失則過於嚴格,例如y^1(i)=y^2(i)=0.2比y^1(i)=0,y^2(i)=0.4的損失要小很多,雖然兩者都有同樣正確的分類預測結果。
改善上述問題的一個方法是使用更適合衡量兩個概率分佈差異的測量函數。其中,交叉熵(cross entropy)是一個常用的衡量方法:
H(y(i),y^(i))=−j=1∑qyj(i)logy^j(i),(式11)
其中帶下標的yj(i)是向量y(i)中非0即1的元素,需要注意將它與樣本i類別的離散數值,即不帶下標的y(i)區分。在上式中,我們知道向量y(i)中只有第y(i)個元素yy(i)(i)爲1,其餘全爲0,於是H(y(i),y^(i))=−logy^y(i)(i)。也就是說,交叉熵只關心對正確類別的預測概率,因爲只要其值足夠大,就可以確保分類結果正確。當然,遇到一個樣本有多個標籤時,例如圖像裏含有不止一個物體時,我們並不能做這一步簡化。但即便對於這種情況,交叉熵同樣只關心對圖像中出現的物體類別的預測概率。
假設訓練數據集的樣本數爲n,交叉熵損失函數定義爲
ℓ(Θ)=n1i=1∑nH(y(i),y^(i)),(式12)
其中Θ代表模型參數。同樣地,如果每個樣本只有一個標籤,那麼交叉熵損失可以簡寫成ℓ(Θ)=−(1/n)∑i=1nlogy^y(i)(i)。從另一個角度來看,我們知道最小化ℓ(Θ)等價於最大化exp(−nℓ(Θ))=∏i=1ny^y(i)(i),即最小化交叉熵損失函數等價於最大化訓練數據集所有標籤類別的聯合預測概率。
3.4.6 模型預測及評價
在訓練好softmax迴歸模型後,給定任一樣本特徵,就可以預測每個輸出類別的概率。通常,我們把預測概率最大的類別作爲輸出類別。如果它與真實類別(標籤)一致,說明這次預測是正確的。在3.6節的實驗中,我們將使用準確率(accuracy)來評價模型的表現。它等於正確預測數量與總預測數量之比。
小結
- softmax迴歸適用於分類問題。它使用softmax運算輸出類別的概率分佈。
- softmax迴歸是一個單層神經網絡,輸出個數等於分類問題中的類別個數。
- 交叉熵適合衡量兩個概率分佈的差異。