交叉熵公式的幾個問題
本小白在學習過程中在很多地方都遇到過交叉熵公式,一般我們遇到的是這樣的:
然而在學習cs231線性分類(softmax)那一節的時候也遇到了交叉熵,包括一些博客和資料中,它們形式是這樣的:
作爲小白的我瞬間懵逼了,之前看了Michael Nielsen的《神經網絡與深度學習》,其中講softmax那一層的時候,用的是對數似然(log-likelihood)代價函數。用x表示訓練輸出,y表示對應目標輸出,則對數似然代價函數爲:
爲第L層第y個輸出值。我們暫且爲上述三個代價函數命名爲C1、C2和C3,便於後邊討論。懵不懵!C1和C2交叉熵什麼關係,C2和C3又有點異曲同工之妙。
對上述問題的幾點結論
這裏先給出結論。查閱了一些資料和blog,得出了幾點結論
注意二分類的交叉熵和多分類問題的交叉熵形式不一樣。
-
二分類交叉熵形式如下:
-
多分類交叉熵形式如下:
-
歸納問題中公式出現的場景,當交叉熵前接的是 sigmoid 層的時候,交叉熵形式用 C1,當前面接的是 softmax 層的時候,交叉熵形式用 C2。因爲 sigmoid 是二分類的分類器,softmax 是歸一化多分類的分類器,這也側面印證了上面的兩個結論。
-
C3 的log似然函數也接在 softmax 層後邊,那它和 C2 背景是一樣的。對於多分類問題,每個樣本只有一個標籤,因而 C2 的累加項中只有一項不爲0,其餘p(x)均爲0,因而 C2 經過化簡即可得到 C3,注意深度學習中 log 和 ln 代表一個意思,很多教程都是混合是使用,都作爲 ln 來看。
對於結論的一些解答
首先我們需要區分 二分類、多分類、多標籤和多輸出問題的基本概念:
二分類問題:表示分類任務中有兩個類別,輸出用0或1表示,二分類的每個樣本都有一個標籤0或者1;
多分類問題:分類任務有多個類別,其每個樣本也只有一個標籤,輸出一般用概率表示;
多標籤分類:一個樣本可以有多個標籤,比如水果盤裏有蘋果和梨子,那麼標籤中代表蘋果梨子都有;
多輸出分類:多個多分類或多標籤的組合分類。如一個網絡同時預測服飾款式類型和顏色類型。
這裏我們討論二分類問題和多分類問題,這一默認對於一個樣本只有一個標籤,即是蘋果就是蘋果,大棗就是大棗,梨子就是梨子,不帶水果拼盤這樣玩的。
我們再很多地方都看到由相對熵(KL散度)推導出交叉熵的,對於兩個概率分佈和,其相對熵爲:
p(x)爲真實分佈,即我們所講的標籤y的分佈,爲已知,所以爲已知,而未知,就是我們需要關心的交叉熵。交叉熵公式已經知道啦,即:
現在我們進行二分類的討論,二分類下爲二項分佈,因而分類器輸出第 i 個神經元交叉熵爲:
即上述C1的公式。再來看看多分類情況。這裏 p(x) 是標籤值(one-hot),比如三個分類,某個樣本屬於第一個分類,標籤值爲1 0 0。代入上述的交叉熵公式,即得:
其中,p_i是輸出正確分類的標籤值,其爲1。因而又可以寫爲:
該式和C3對數似然代價函數一致。這也就解釋了C1和C2在搭配softmax時,即多分類情況下公式是一樣的。
另外,前文已述二分類和多分類情況下交叉熵推導結果不一,因此也有人建議採用 Kears 中的命名方法,對於二分類的交叉熵損失函數稱之爲 “二分類交叉熵損失函數”,對於多分類的交叉熵損失函數稱之爲"多類別交叉熵損失函數"。至於我們平時使用,清楚怎麼回事就行啦
以上
參考:
[1]: https://juejin.im/post/5b38971be51d4558b10aad26
[2]: https://www.zhihu.com/question/41252833