交叉熵最直白易懂的理解,看完一定會大有收穫的!!

交叉熵最直白易懂的理解,看完一定會大有收穫的!

交叉熵——機器學習、深度學習中重要的概念,它是分類問題中不可或缺的概念,我們經常說交叉熵損失函數。可是究竟什麼是交叉熵,為什麼它是一種損失函數?怎麼理解交叉熵?本文拋棄大量的數學公式推導,通過幾個簡單的例子,認識交叉熵、解釋交叉熵。通過幾個簡單的例子來解釋和總結什麼是交叉熵( Cross Entropy) 以及機器學習分類問題中為什麼使用交叉熵。

交叉熵最直白易懂的理解,看完一定會大有收穫的!!

第一個例子

假設隨機從一個口袋裡取硬幣, 口袋裡有一個藍色的, 一個紅色的, 一個綠色的, 一個橘色的。

交叉熵最直白易懂的理解,看完一定會大有收穫的!!

取出一個硬幣之後, 每次問一個問題, 然後做出判斷, 目標是, 問最少的問題, 得到正確答案. 其中一個最好的設計問題的策略如下:

交叉熵最直白易懂的理解,看完一定會大有收穫的!!

每一個硬幣有1/4的概率被選中, 1/4(機率) * 2道題目 * 4顆球 = 2,平均需要問兩道題目才能找出不同顏色的球,也就是說期望值為2,就是熵(entropy)

第二個例子

例子變了, 變成了袋子中1/8的硬幣是綠色的, 1/8 的是橘色的, 1/4 是紅色的, 1/2 是藍色的, 這時最優的問題的策略如下:

交叉熵最直白易懂的理解,看完一定會大有收穫的!!

1/2 的概率是藍色, 只需要1個問題就可以知道是或者不是, 1/4 的概率是紅色, 需要2個問題, 按照這個邏輯, 猜中硬幣需要的問題的期望是 1/2×1+1/4×2+1/8×3+1/8×3=1.75

第三個例子

假設袋子中全部是藍色的硬幣, 那麼, 這時候, 需要 0 個問題就可以猜到硬幣, 即

log21=0。 需要注意的是, 只有當知道袋子中全部是藍色的硬幣的時候需要的問題是 0 個.

總結上面的例子, 假設一種硬幣出現的概率是 p, 那麼, 猜中該硬幣的所需要的問題數是log2(1/Pi)。例如, p=1/4, log24=2。

在這個問題中, 問題個數的期望是

交叉熵最直白易懂的理解,看完一定會大有收穫的!!

這個式子就是

的表達式. 簡單來說, 其意義就是在最優化策略下, 猜到顏色所需要的問題的個數。熵代表的是隨機變量或整個系統的不確定性,熵越大,隨機變量或系統的不確定性就越大。

現在已經瞭解了熵是什麼, 那麼, 下面解釋交叉熵(cross entropy) 的含義.對於第二個例子, 如果仍然使用第一個例子中的策略, 如下圖:

交叉熵最直白易懂的理解,看完一定會大有收穫的!!

1/8 的概率, 硬幣是橘色, 需要兩個問題, 1/2 的概率是藍色, 仍然需要兩個問題, 也就是說,認為小球的分佈為(1/4,1/4,1/4,1/4),這個分佈就是非真實分佈。平均來說, 需要的問題數是 1/8×2+1/8×2+1/4×2+1/2×2=2。 因此, 在例子二中使用例子一的策略是一個比較差的策略. 其中2是這個方案中的交叉熵。而最優方案的交叉熵是1.75。

給定一個策略, 交叉熵就是在該策略下猜中顏色所需要的問題的期望值。更普遍的說,交叉熵用來衡量在給定的真實分佈下,使用非真實分佈所指定的策略消除系統的不確定性所需要付出成本的大小。交叉的字面意思在於:真實分佈與非真實分佈的交叉。給定一個方案, 越優的策略, 最終的交叉熵越低。具有最低的交叉熵的策略就是最優化策略,也就是上面定義的熵。因此, 在機器學習中, 我們需要最小化交叉熵。

數學上來講, 交叉熵就是

交叉熵最直白易懂的理解,看完一定會大有收穫的!!

其中, p 是真正的概率, 例如例子二中, 橘色和綠色是 1/8, 紅色是 1/4, 藍色是 1/2。p^是錯誤地假設了的概率, 例如, 在例子二中我們錯誤地假設了所有的顏色的概率都是 1/4。p和 p^ 可能有點容易混淆. 記住一點, log是用來計算在 你的策略下猜中所需要的問題數, 因此, log中需要的是你的預測概率 p^。在決策樹中, 如果建立的樹不是最優的, 結果就是對於輸出的概率分佈的假設是錯誤地, 導致的直接結果就是交叉熵很高。交叉熵不僅僅應用在決策樹中, 在其他的分類問題中也有應用。

分類問題

在二分類問題中, 標籤 y 是 1 的似然是對於標籤 y 的預測 y^, 同樣的, 標籤是 0 的似然是 1−y^. 我們需要最大化似然函數, 而且, 由於二分類問題的特殊性, 根據伯努力分佈(Bernoulli distribution),可以把似然函數寫成

交叉熵最直白易懂的理解,看完一定會大有收穫的!!

當 y=1 的時候, 第二項為 1, 因此, 優化的是 y^

當 y=0 的時候, 第一項為 1, 優化的是 1−y^.對上面的似然函數取對數, 結果是:

交叉熵最直白易懂的理解,看完一定會大有收穫的!!

最大化似然函數, 就是對上面表達式取負然後最小化。也是交叉熵的表達式。 交叉熵有時候也被稱為

對數損失函數。注意與上邊例子區別是多了個負號,上邊例子是消除不確定性需要付出的成本;而現在這個加了負號的交叉熵,則是最終的目標函數。

舉例來說, 假設我有 3 枚硬幣, 正正反, 記為 1,1,0. 預測結果是 0.8, 0.9, 0.3, 那麼, 交叉熵的均值是:

−1/3(1×log0.8+1×log0.9+(1−0)×log(1−0.3))

假設有一個完美的算法, 直接預測出了 1,1,0, 那麼交叉熵的結果就是 0。

總結:

為什麼交叉熵客棧已作為損失函數?

因為上代表的是不確定的程度,不確定性也可以理解為一種誤差,如果求出來的和真實是一樣的,交叉熵就是0。所以,我們發現,交叉熵和我們更加容易理解的平方損失是一樣,他們所要達到的目的也是相同的,這就是我們為什麼經常說要使得交叉熵損失函數最小,這和平方損失最小實際上是一樣的。



分享到:


相關文章: