完美解釋交叉熵

2020-12-17 AI火箭營

通過幾個簡單的例子來解釋和總結什麼是交叉熵( 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 的似然是 1y^. 我們需要最大化似然函數, 而且, 由於二分類問題的特殊性, 根據伯努力分布(Bernoulli distribution),可以把似然函數寫成

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

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

最大化似然函數, 就是對上面表達式取負然後最小化。也是交叉熵的表達式。 交叉熵有時候也被稱為對數損失函數。注意與上邊例子區別是多了個負號,上邊例子是消除不確定性需要付出的成本;而現在這個加了負號的交叉熵,則是最終的目標函數。

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

1/3(1×log0.8+1×log0.9+(10)×log(10.3))

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

相關焦點

  • 熵、交叉熵和KL散度的基本概念和交叉熵損失函數的通俗介紹
    但是,由於當今龐大的庫和框架的存在以及它們的易用性,我們中的大多數人常常在不了解熵的核心概念的情況下著手解決問題。所以,在這篇文章中,讓我們看看熵背後的基本概念,把它與交叉熵和KL散度聯繫起來。我們還將查看一個使用損失函數作為交叉熵的分類問題的示例。什麼是熵?
  • Softmax函數與交叉熵
    交叉熵說交叉熵之前先介紹相對熵,相對熵又稱為KL散度(Kullback-Leibler Divergence),用來衡量兩個分布之間的距離,記為關於熵與交叉熵等概念,可以參考該博客再做了解。回到我們多分類的問題上,真實的類標籤可以看作是分布,對某個樣本屬於哪個類別可以用One-hot的編碼方式,是一個維度為
  • 為什麼交叉熵(cross-entropy)可以用於計算代價?
    在不同領域熵有不同的解釋,比如熱力學的定義和資訊理論也不大相同。要想明白交叉熵(Cross Entropy)的意義,可以從熵(Entropy) -> KL散度(Kullback-Leibler Divergence) -> 交叉熵這個順序入手。當然,也有多種解釋方法[1]。
  • 透徹講解~交叉熵代價函數
    我們如下定義這個神經元的交叉嫡代價函數:關於輸出層的權重的偏導數為交叉熵在分類問題中的應用交叉熵損失函數應用在分類問題中時,不管是單分類還是多分類,類別的標籤都只能是 0 或者 1。交叉熵代價函數對權重求導的證明交叉熵代價函數的定義:所以其向量形式是對偏置用同樣的方法可得交叉熵的含義和來源我們對於交叉熵的討論聚焦在代數分析和代碼實現
  • 機器學習小知識: 圖解熵、交叉熵和 KL-散度
    交叉熵是分類問題中最常用的損失函數之一。但是由於如今有大量容易上手的現成庫和框架,我們大多數人常常在沒有真正了解熵的核心概念的情況下,就可以熟練地解決問題。在本文中,讓我們研究一下熵這個概念背後的基本直覺,並將其與交叉熵、KL-散度相關聯。我們還將使用交叉熵作為損失函數,結合一個實例來看看它在分類問題中的應用。1什麼是熵?
  • 可視化理解二值交叉熵/對數損失
    動機我一直在尋找一個可以向學生展示的以清晰簡潔可視化的方式解釋二值交叉熵/對數損失背後概念的博客文章。我們已經成功地計算了這個玩具示例的二值交叉熵/對數損失。是0.3329!這篇文章並不傾向於從數學上解釋……但是對於一些的讀者,希望了解熵,對數在所有方面的作用,好, 我們開始吧:-)分布讓我們從點的分布開始。
  • 【小知識】Softmax函數與交叉熵
    交叉熵說交叉熵之前先介紹相對熵,相對熵又稱為KL散度(Kullback-Leibler Divergence),用來衡量兩個分布之間的距離,記為關於熵與交叉熵等概念,可以參考該博客再做了解。回到我們多分類的問題上,真實的類標籤可以看作是分布,對某個樣本屬於哪個類別可以用One-hot的編碼方式,是一個維度為
  • 關於交叉熵損失
    將熵、相對熵以及交叉熵的公式放到一起,這樣兩個分布的交叉熵H(p,q)也就等價於最小化這兩個分布的相對熵DKL(p∥q)。設p(x)是目標分布(訓練數據的分布),我們的目標的就讓訓練得到的分布q(x)儘可能的接近p(x),這時就可以最小化DKL(p∥q),等價於最小化交叉熵H(p,q) 。
  • Pytorch 中交叉熵 Loss 趣解
    背景最近一直在總結Pytorch中Loss的各種用法,交叉熵是深度學習中最常用的計算方法,寫這個稿子把交叉熵的來龍去脈做一個總結。KL散度與交叉熵理解了信息量和信息熵之後,接下來就是交叉熵的概念了。介紹交叉熵之前,Loss是繞不開的。
  • 小孩都看得懂的熵、交叉熵和 KL 散度
    主題:複習一下熵現在我們知道最優編碼長度就是熵(通常上面一節解釋,希望現在可以秒懂熵的公式)。>(不直觀,接受吧少年)    Hq(p) ≠ Hp(q)    熵比交叉熵要小,那兩者之間的差距是什麼?如果某件事本身越不確定,而當你知道發生了什麼時,你得到的信息也就越多。
  • 熵、交叉熵和散度,這是一篇最純碎的理解!
    主題:複習一下熵現在我們知道最優編碼長度就是熵(通常上面一節解釋,希望現在可以秒懂熵的公式)。反過來,如果用威少編碼來發送哈登動作分布的信息,得到信息平均編碼長度就也叫做交叉熵。正規定義:使用專門為另一個分布製作的密碼錶來發送某個分布中事件的信息,此時信息的平均編碼長度定義為交叉熵(cross-entropy)。
  • 什麼是交叉熵啊?| 小白深度學習入門
    大家在學習深度學習的過程中,都會碰到cross-entropy這個詞,中文叫「交叉熵」,多麼高大上的名詞!
  • Softmax和交叉熵的深度解析和Python實現
    當中,老師一定會告訴你在全連接層後面應該加上 Softmax 函數,如果正常情況下(不正常情況指的是類別超級多的時候)用交叉熵函數作為損失函數,你就一定可以得到一個讓你基本滿意的結果。這就使得分類問題能更好的用統計學方法去解釋了。使用 Python,我們可以這麼去實現 Softmax 函數:
  • 簡單的交叉熵,你真的懂了嗎?
    引言        我們都知道損失函數有很多種:均方誤差(MSE)、SVM的合頁損失(hinge loss)、交叉熵(cross entropy)。這幾天看論文的時候產生了疑問:為啥損失函數很多用的都是交叉熵(cross entropy)?其背後深層的含義是什麼?如果換做均方誤差(MSE)會怎麼樣?下面我們一步步來揭開交叉熵的神秘面紗。2.
  • 交叉熵(Cross Entropy)從原理到代碼解讀
    原理部分:要想搞懂交叉熵需要先清楚一些概念,順序如下:==1.自信息量—>2.信息熵(熵)—>3.相對熵(KL散度)—>4.交叉熵==1.自信息量隨機事件交叉熵=信息熵+相對熵為什麼這麼定義呢,先看相對熵,我們對相對熵計算公式展開得:可以看出相對熵展開後的第一項正好是信息熵的負值。
  • 機器學習最常用的損失函數之交叉熵
    作者 rtygbwwwerr huangjx36編輯 zenRRan 稍有修改連結https://blog.csdn.net/rtygbwwwerr/article/details/50778098https://blog.csdn.net/huangjx36/article/details/78147617交叉熵是一個在
  • 簡單的交叉熵損失函數,你真的懂了嗎?
    說起交叉熵損失函數「Cross Entropy Loss」,腦海中立馬浮現出它的公式:我們已經對這個交叉熵函數非常熟悉,大多數情況下都是直接拿來使用就好。但是它是怎麼來的?為什麼它能表徵真實樣本標籤和預測概率之間的差值?上面的交叉熵函數是否有其它變種?也許很多朋友還不是很清楚!
  • 你還認為似然函數跟交叉熵是一個意思呀?
    似然函數不就是交叉熵嗎?」「機器學習中的似然函數怎麼看起來跟概率統計課本裡的不一樣呢?」「學長學長,我把這個model的輸出接上交叉熵後怎麼報錯了?」 「似然函數」名字的意義已經在以前的多篇文章中提過了,更通用的定義來說,似然函數就是衡量當前模型參數對於已知樣本集X的解釋情況,通用的表現形式如下:
  • 為什麼分類問題的損失函數採用交叉熵而不是均方誤差MSE
    我們可以回憶下交叉熵Loss和均方差Loss定義是什麼:最小均方誤差,MSE(Mean Squared Error)Loss交叉熵當label = 1,也即 ,交叉熵損失函數 如圖所示,可知交叉熵損失函數的值域為
  • 你是否有過疑問:為啥損失函數很多用的都是交叉熵(cross entropy)?
    引言我們都知道損失函數有很多種:均方誤差(MSE)、SVM的合頁損失(hinge loss)、交叉熵(cross entropy)。這幾天看論文的時候產生了疑問:為啥損失函數很多用的都是交叉熵(cross entropy)?其背後深層的含義是什麼?如果換做均方誤差(MSE)會怎麼樣?下面我們一步步來揭開交叉熵的神秘面紗。2.