原文 如何通俗的解釋交叉熵與相對熵?算法
相關公式:網絡
假設如今有一個樣本集中兩個機率分佈 p,q,其中 p 爲真實分佈,q 爲非真實分佈。假如,按照真實分佈 p 來衡量識別一個樣本所須要的編碼長度的指望爲:H(p)= 信息熵可是,若是採用錯誤的分佈 q 來表示來自真實分佈 p 的平均編碼長度,則應該是:H(p,q)= 交叉熵此時就將 H(p,q) 稱之爲交叉熵。相對熵 = 交叉熵 - 信息熵:
信息熵,是隨機變量或整個系統的不肯定性。熵越大,隨機變量或系統的不肯定性就越大。相對熵,用來衡量兩個取值爲正的函數或機率分佈之間的差別, 也叫KL距離, KL散度交叉熵,用來衡量在給定的真實分佈下,使用非真實分佈所指定的策略消除系統的不肯定性所須要付出的努力的大小。
在機器學習中,真實分佈 p爲觀測數據(標籤),非真實分佈q爲神經網絡計算的分佈,目的就是不停的訓練q,使得交叉熵不斷下降至最小。機器學習
討論這個問題須要從香農的信息熵開始。函數
小明在學校玩王者榮耀被發現了,爸爸被叫去開家長會,內心悲屈的很,就想法子懲罰小明。到家後,爸爸跟小明說:既然你犯錯了,就要接受懲罰,但懲罰的程度就看你聰不聰明瞭。這樣吧,咱們倆玩猜球遊戲,我拿一個球,你猜球的顏色,你每猜一次,無論對錯,你就一個星期不能玩王者榮耀,固然,猜對,遊戲中止,不然繼續猜。固然,當答案只剩下兩種選擇時,這次猜想結束後,不管猜對猜錯都能 100% 肯定答案,無需再猜一次,此時遊戲中止(由於好多人對策略1的結果有疑問,因此請注意這個條件)。學習
題目 1:爸爸拿來一個箱子,跟小明說:裏面有橙、紫、藍及青四種顏色的小球任意個,各顏色小球的佔比不清楚,如今我從中拿出一個小球,你猜我手中的小球是什麼顏色?編碼
爲了使被罰時間最短,小明發揮出最強王者的智商,瞬間就想到了以最小的代價猜出答案,簡稱策略 1,小明的想法是這樣的。spa
在這種狀況下,小明什麼信息都不知道,只能認爲四種顏色的小球出現的機率是同樣的。因此,根據策略 1,1/4 機率是橙色球,小明須要猜兩次,1/4 是紫色球,小明須要猜兩次,其他的小球相似,因此小明預期的猜球次數爲:3d
H = 1/4 * 2 + 1/4 * 2 + 1/4 * 2 + 1/4 * 2 = 2orm
題目 2:爸爸仍是拿來一個箱子,跟小明說:箱子裏面有小球任意個,但其中 1/2 是橙色球,1/4 是紫色球,1/8 是藍色球及 1/8 是青色球。我從中拿出一個球,你猜我手中的球是什麼顏色的?blog
小明畢竟是最強王者,仍然很快得想到了答案,簡稱策略 2,他的答案是這樣的。
在這種狀況下,小明知道了每種顏色小球的比例,好比橙色佔比二分之一,若是我猜橙色,頗有可能第一次就猜中了。因此,根據策略 2,1/2 的機率是橙色球,小明須要猜一次,1/4 的機率是紫色球,小明須要猜兩次,1/8 的機率是藍色球,小明須要猜三次,1/8 的機率是青色球,小明須要猜三次,因此小明預期的猜題次數爲:
H = 1/2 * 1 + 1/4 * 2 + 1/8 * 3 + 1/8 * 3= 1.75
題目 3:其實,爸爸只想讓小明意識到本身的錯誤,並非真的想罰他,因此拿來一個箱子,跟小明說:裏面的球都是橙色,如今我從中拿出一個,你猜我手中的球是什麼顏色?
最強王者怎麼可能不知道,確定是橙色,小明須要猜 0 次。
上面三個題目表現出這樣一種現象:針對特定機率爲 p 的小球,須要猜球的次數 = ,例如題目 2 中,1/4 是紫色球, = 2 次,1/8 是藍色球, = 3 次。那麼,針對整個總體,預期的猜題次數爲: ,這就是信息熵,上面三個題目的預期猜球次數都是由這個公式計算而來,第一題的信息熵爲 2,第二題的信息熵爲 1.75,最三題的信息熵爲 1 * = 0 。那麼信息熵表明着什麼含義呢?
信息熵表明的是隨機變量或整個系統的不肯定性,熵越大,隨機變量或系統的不肯定性就越大。上面題目 1 的熵 > 題目 2 的熵 > 題目 3 的熵。在題目 1 中,小明對整個系統一無所知,只能假設全部的狀況出現的機率都是均等的,此時的熵是最大的。題目 2 中,小明知道了橙色小球出現的機率是 1/2 及其餘小球各自出現的機率,說明小明對這個系統有必定的瞭解,因此係統的不肯定性天然會下降,因此熵小於 2。題目 3 中,小明已經知道箱子中確定是橙色球,爸爸手中的球確定是橙色的,於是整個系統的不肯定性爲 0,也就是熵爲 0。因此,在什麼都不知道的狀況下,熵會最大,針對上面的題目 1~~ 題目 3,這個最大值是 2,除此以外,其他的任何一種狀況,熵都會比 2 小。
因此,每個系統都會有一個真實的機率分佈,也叫真實分佈,題目 1 的真實分佈爲(1/4,1/4,1/4,1/4),題目 2 的真實分佈爲(1/2,1/4,1/8,1/8),而根據真實分佈,咱們可以找到一個最優策略,以最小的代價消除系統的不肯定性,而這個代價大小就是信息熵,記住,信息熵衡量了系統的不肯定性,而咱們要消除這個不肯定性,所要付出的【最小努力】(猜題次數、編碼長度等)的大小就是信息熵。具體來說,題目 1 只須要猜兩次就能肯定任何一個小球的顏色,題目 2 只須要猜想 1.75 次就能肯定任何一個小球的顏色。
如今回到題目 2,假設小明只是鑽石段位而已,智商沒王者那麼高,他使用了策略 1,即
爸爸已經告訴小明這些小球的真實分佈是(1/2,1/4, 1/8,1/8),但小明所選擇的策略卻認爲全部的小球出現的機率相同,至關於忽略了爸爸告訴小明關於箱子中各小球的真實分佈,而仍舊認爲全部小球出現的機率是同樣的,認爲小球的分佈爲(1/4,1/4,1/4,1/4),這個分佈就是非真實分佈。此時,小明猜中任何一種顏色的小球都須要猜兩次,即 1/2 * 2 + 1/4 * 2 + 1/8 * 2 + 1/8 * 2 = 2。
很明顯,針對題目 2,使用策略 1 是一個壞的選擇,由於須要猜題的次數增長了,從 1.75 變成了 2,小明少玩了 1.75 的王者榮耀呢。所以,當咱們知道根據系統的真實分佈制定最優策略去消除系統的不肯定性時,咱們所付出的努力是最小的,但並非每一個人都和最強王者同樣聰明,咱們也許會使用其餘的策略(非真實分佈)去消除系統的不肯定性,就比如如我將策略 1 用於題目 2(原來這就是我在白銀的緣由),那麼,當咱們使用非最優策略消除系統的不肯定性,所須要付出的努力的大小咱們該如何去衡量呢?
這就須要引入交叉熵,其用來衡量在給定的真實分佈下,使用非真實分佈所指定的策略消除系統的不肯定性所須要付出的努力的大小。
正式的講,交叉熵的公式爲: ,其中 表示真實分佈, 表示非真實分佈。例如上面所講的將策略 1 用於題目 2,真實分佈 , 非真實分佈 ,交叉熵爲 ,比最優策略的 1.75 來得大。
所以,交叉熵越低,這個策略就越好,最低的交叉熵也就是使用了真實分佈所計算出來的信息熵,由於此時 ,交叉熵 = 信息熵。這也是爲何在機器學習中的分類算法中,咱們老是最小化交叉熵,由於交叉熵越低,就證實由算法所產生的策略最接近最優策略,也間接證實咱們算法所算出的非真實分佈越接近真實分佈。
最後,咱們如何去衡量不一樣策略之間的差別呢?這就須要用到相對熵,其用來衡量兩個取值爲正的函數或機率分佈之間的差別,即:
KL(f(x) || g(x)) =
如今,假設咱們想知道某個策略和最優策略之間的差別,咱們就能夠用相對熵來衡量這二者之間的差別。即,相對熵 = 某個策略的交叉熵 - 信息熵(根據系統真實分佈計算而得的信息熵,爲最優策略),公式以下:
KL(p || q) = H(p,q) - H(p) =
因此將策略 1 用於題目 2,所產生的相對熵爲 2 - 1.75 = 0.25.
參考:
《數學之美》吳軍
還有,小明同窗,我幫你分析得這麼清楚,快帶我上王者。
做者:CyberRep連接:https://www.zhihu.com/question/41252833/answer/195901726來源:知乎著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。