1. 程式人生 > >通俗的解釋交叉熵與相對熵

通俗的解釋交叉熵與相對熵

其中 函數 tar 大小 四種 表示 static nbsp 如果

原文  如何通俗的解釋交叉熵與相對熵?

相關公式:

假設現在有一個樣本集中兩個概率分布 p,q,其中 p 為真實分布,q 為非真實分布。假如,按照真實分布 p 來衡量識別一個樣本所需要的編碼長度的期望為: H(p)= 技術分享圖片 但是,如果采用錯誤的分布 q 來表示來自真實分布 p 的平均編碼長度,則應該是: H(p,q)= 技術分享圖片 此時就將 H(p,q) 稱之為交叉熵。交叉熵的計算方式如下: 對於離散變量采用以下的方式計算:H(p,q)= 技術分享圖片
對於連續變量采用以下的方式計算: 技術分享圖片
信息熵,是隨機變量或整個系統的不確定性。熵越大,隨機變量或系統的不確定性就越大。 相對熵,用來衡量兩個取值為正的函數或概率分布之間的差異。 交叉熵,用來衡量在給定的真實分布下,使用非真實分布所指定的策略消除系統的不確定性所需要付出的努力的大小。
相對熵 = 交叉熵 - 信息熵: 技術分享圖片

在機器學習中,真實分布 p為觀測數據(標簽),非真實分布q為神經網絡計算的分布,目的就是不停的訓練q,使得交叉熵不斷降低至最小。


討論這個問題需要從香農的信息熵開始。

小明在學校玩王者榮耀被發現了,爸爸被叫去開家長會,心裏悲屈的很,就想法子懲罰小明。到家後,爸爸跟小明說:既然你犯錯了,就要接受懲罰,但懲罰的程度就看你聰不聰明了。這樣吧,我們倆玩猜球遊戲,我拿一個球,你猜球的顏色,你每猜一次,不管對錯,你就一個星期不能玩王者榮耀,當然,猜對,遊戲停止,否則繼續猜。當然,當答案只剩下兩種選擇時,此次猜測結束後,無論猜對猜錯都能 100% 確定答案,無需再猜一次,此時遊戲停止(因為好多人對策略1的結果有疑問,所以請註意這個條件)。

題目 1:爸爸拿來一個箱子,跟小明說:裏面有橙、紫、藍及青四種顏色的小球任意個,各顏色小球的占比不清楚,現在我從中拿出一個小球,你猜我手中的小球是什麽顏色?

為了使被罰時間最短,小明發揮出最強王者的智商,瞬間就想到了以最小的代價猜出答案,簡稱策略 1,小明的想法是這樣的。

技術分享圖片

在這種情況下,小明什麽信息都不知道,只能認為四種顏色的小球出現的概率是一樣的。所以,根據策略 1,1/4 概率是橙色球,小明需要猜兩次,1/4 是紫色球,小明需要猜兩次,其余的小球類似,所以小明預期的猜球次數為:

H = 1/4 * 2 + 1/4 * 2 + 1/4 * 2 + 1/4 * 2 = 2

題目 2:爸爸還是拿來一個箱子,跟小明說:箱子裏面有小球任意個,但其中 1/2 是橙色球,1/4 是紫色球,1/8 是藍色球及 1/8 是青色球。我從中拿出一個球,你猜我手中的球是什麽顏色的?

小明畢竟是最強王者,仍然很快得想到了答案,簡稱策略 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.

參考:

《數學之美》吳軍

Information entropy

還有,小明同學,我幫你分析得這麽清楚,快帶我上王者。

作者:CyberRep
鏈接:https://www.zhihu.com/question/41252833/answer/195901726
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

通俗的解釋交叉熵與相對熵