softmax運算

一、softmax運算

分類問題需要得到離散的預測輸出,一個簡單的辦法是將輸出值oio_i當做預測類別是i的置信度,並將值最大的輸出所對應的類作爲預測輸出,即輸出argmaxioiargmax_io_i。例如,如果o1,o2,o3o_1,o_2,o_3分別爲0.1,10,0.1,由於o2o_2最大,那麼預測類別爲2。

然而,直接使用輸出層的輸出有兩個問題。一方面,由於輸出層的輸出值的範圍不確定,難以直觀判斷這些值的意義。例如,上面舉的例子中的輸出值10表示很置信圖像類別爲貓,因爲該輸出值是其它兩類的輸出值的100倍。但是如果o1=o3=103o_1=o_3=10^3,那麼輸出值10又表示圖像類別爲貓的概率很低。另一方面,由於真實標籤是離散值,這些離散值與不確定範圍的輸出值之間的誤差難以衡量。

softmax運算解決了以上兩個問題,它通過下面公式將輸出值變換成值爲正且和爲1的概率分佈:y1^,y2^,y3^=softmax(o1,o2,o3)\hat{y_1},\hat{y_2},\hat{y_3}=softmax(o_1,o_2,o_3)其中y1^=exp(o1)i=13exp(oi),y2^=exp(o2)i=13exp(oi),y3^=exp(o3)i=13exp(oi)\hat{y_1}=\frac{exp(o_1)}{\sum_{i=1}^3exp(o_i)},\hat{y_2}=\frac{exp(o_2)}{\sum_{i=1}^3exp(o_i)},\hat{y_3}=\frac{exp(o_3)}{\sum_{i=1}^3exp(o_i)}容易看出y1^+y2^+y3^=1\hat{y_1}+\hat{y_2}+\hat{y_3}=10y1^,y2^,y3^10\leq\hat{y_1},\hat{y_2},\hat{y_3}\leq1,因此y1^,y2^,y3^\hat{y_1},\hat{y_2},\hat{y_3}是一個合法的概率分佈。此外,argmaxioi=argmaxiyi^argmax_io_i=argmax_i\hat{y_i}因此softmax不改變預測類別輸出。

二、交叉熵損失函數

使用softmax運算可以更方便地與離散標籤計算誤差,softmax運算將輸出變換成一個合法的類別預測分佈。實際上,真實標籤也可以用類別分佈表達:對於樣本i,我們構造向量y(i)Rqy^{(i)}\in \mathbb{R}^q,使其第y(i)y^{(i)}(樣本i類別的離散數值)個元素爲1,其餘爲0。這樣訓練目標可以設爲使預測概率分佈y^(i)\hat{y}^{(i)}儘可能接近真實的標籤概率分佈y(i)y^{(i)}

我們可以像線性迴歸那樣使用平方損失函數y^(i)y(i)2/2||\hat{y}^{(i)}-y^{(i)}||^2/2。然而,想要預測分類結果正確,其實並不需要預測概率完全等於標籤概率。例如在圖像分類中,如果y(i)=3y^{(i)}=3,那麼只需要y^3(i)\hat{y}_3^{(i)}比其它兩個預測值y^1(i)\hat{y}_1^{(i)}y^2(i)\hat{y}_2^{(i)}大就可以了。即使y^3(i)\hat{y}_3^{(i)}的值爲0.6,不管其它兩個預測值是多少,類別預測均正確。而平方損失則過於嚴格,例如y^1(i)=y^2(i)=0.2\hat{y}_1^{(i)}=\hat{y}_2^{(i)}=0.2y^1(i)=0,y^2(i)=0.4\hat{y}_1^{(i)}=0,\hat{y}_2^{(i)}=0.4的損失要小得多,雖然兩者都有同樣正確的分類預測結果。

改善上述問題的一個方法是使用更適合衡量兩個概率分佈差異的測量函數。其中,交叉熵是一個常用的測量方法:H(y(i),y^(i))=j=1qyj(i)logy^j(i)H(y^{(i)},\hat{y}^{(i)})=-\sum_{j=1}^qy_j^{(i)}log\hat{y}_j^{(i)}其中帶下標的yj(i)y_j^{(i)}是向量y(i)y^{(i)}中非0即1的元素,需要注意將它與樣本i類別的離散數值,即不帶下標的y(i)y^{(i)}區分。在上式中,我們知道向量y(i)y^{(i)}中只有第y(i)y^{(i)}個元素yy(i)(i)y^{(i)}_{y^{(i)}}爲1,其餘全爲0。於是H(y(i),y^(i))=logy^y(i)(i)H(y^{(i)},\hat{y}^{(i)})=-log\hat{y}_{y^{(i)}}^{(i)}。也就是所,交叉熵只關心對正確類別的預測概率,因爲只要其值足夠大,就可以確保分類結果正確。當然,遇到一個樣本有多個標籤時,例如圖片裏含有不止一個物體時,並不能做這一步簡化。但即使對於這種情況,交叉熵同樣只關心對圖像中出現的物體類別的預測概率。

假設訓練數據集的樣本數爲n,交叉熵損失函數定義爲ι(θ)=1ni=1nH(y(i),y^(i))\iota (\theta)=\frac{1}{n}\sum_{i=1}^nH(y^{(i)},\hat{y}^{(i)})其中θ\theta代表模型參數。同樣地,如果每個樣本只有一個標籤,那麼交叉熵損失函數可以簡寫成ι(θ)=1ni=1nlogy^y(i)(i)\iota (\theta)=-\frac{1}{n}\sum_{i=1}^nlog\hat{y}_{y^{(i)}}^{(i)}。從另一個角度看,我們知道最小化ι(θ)\iota(\theta)等價於最大化exp(nι(θ))=i=1ny^y(i)(i)exp(-n\iota(\theta))=\prod_{i=1}^n\hat{y}^{(i)}_{y^{(i)}},即最小化交叉熵損失函數等價於最大化訓練數據集所有標籤類別的聯合預測概率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章