交叉熵損失是分類任務中的常用損失函數,但是是否注意到二分類與多分類情況下的交叉熵形式上的不同呢?
兩種形式
這兩個都是交叉熵損失函數,但是看起來長的卻有天壤之別。為什么同是交叉熵損失函數,長的卻不一樣?
因為這兩個交叉熵損失函數對應不同的最后一層的輸出:
第一個對應的最后一層是softmax,第二個對應的最后一層是sigmoid
先來看下信息論中交叉熵的形式
交叉熵是用來描述兩個分布的距離的,神經網絡訓練的目的就是使 g(x) 逼近 p(x)。
softmax層的交叉熵
(x)是什么呢?就是最后一層的輸出 y 。
p(x)是什么呢?就是我們的one-hot標簽。我們帶入交叉熵的定義中算一下,就會得到第一個式子:
其中 j 代表樣本 x 屬於第 j 類。
sigmoid作為輸出的交叉熵
sigmoid作為最后一層輸出的話,那就不能吧最后一層的輸出看作成一個分布了,因為加起來不為1。
現在應該將最后一層的每個神經元看作一個分布,對應的 target 屬於二項分布(target的值代表是這個類的概率),那么第 i 個神經元交叉熵為:

所以最后一層總的交叉熵損失函數是:

但是在二分類中,邏輯回歸的交叉熵損失函數同樣具有兩種形式,其原因是由類別取值所導致的。
-
類別取值為0和1
-
邏輯回歸中我們給定的假設函數(目標函數)是給定x的條件下,預測其屬於類別1的概率,線性回歸中的目標函數是:
其中z是一個實數值,顯然不能直接作為邏輯分類的預測值,因此想辦法將其映射為概率值,引入了sigmoid函數,那么邏輯回歸的假設函數就是:
-
有了假設函數,我們先嘗試借鑒線性回歸的方式定義損失函數:
但是發現這樣的損失函數並不是一個嚴格的凸函數,容易陷入局部最優解,因此摒棄該損失函數。
由於我們引入的sigmoid可視作是類別為1的后驗概率(說白了,就是給一個x,那么可以通過sigmoid算出來該樣本點屬於類別1的概率),所以可以得到類別為1以及類別為0時的條件概率為:
上面兩式合並在一起:
-
MLE
ok,現在我們得到了邏輯回歸的分布函數(即最終的目標函數),那么我們現在為了唯一確定最優的模型,需要對模型中的參數進行估計。引入極大似然估計法,回憶一下MLE的目標,就是通過極大化已出現樣本的聯合概率來求解出我們認為最優的參數。
根據極大似然法以及聯合概率求解,得到:
為了簡化運算,我們對上面這個等式的兩邊取對數:
目標就是找到使得上式最大的參數w,沒錯,對上式加上負號,就得到了邏輯回歸的代價函數:
類別為 1 和 -1 的情況
首先回憶sigmoid的特殊性質:
如果 y = +1 時
如果 y = -1 時:
因為 y 取值為 +1 或 -1,可以把 y 值帶入,將上面兩個式子整合到一起:
引入MLE:
將sigmoid形式代入:
那么就推導出該情況下的交叉熵的損失函數形式了。
如果有N個樣本,那么:
-