雷鋒網 AI 科技評論按:「熵」大概是統計學、資訊學裡最讓初學者愁腸百結的基本概念之一。我們都知道熵可以用來描述含有的資訊豐富程度的多少,但是具體是怎麼回事呢?這篇文章中雷鋒網(公衆号:雷鋒網) AI 科技評論将帶大家重新系統認識一下「熵」倒是在講什麼。

假設你在醫生辦公室中與三個等待的病人交流。三個病人都剛剛完成藥物測試,他們面臨着兩種可能的結果:患病或者未患病。假設這三個病人都充滿好奇心而且數學好。他們提前各自研究得到了自己患病的風險,并且想通過這些來确認自己的診斷結果。
病人 A 知道他自己有 95% 的可能會患病。對于病人 B,患病機率為 30%,病人 C 的患病未患病的機率都為 50%。
病房中的不确定性
首先我們專注于一個簡單的問題。在其他條件都相同的情況下,這三個病人中的哪個面臨着最大的不确定性?
這個問題的答案是顯而易見的,病人 C。他所面臨的是在這種情況下可能呢存在的最大程度的不确定性:就像醫療版本的抛硬币試驗一樣。
對于病人 A 來說,雖然他的情況不容樂觀,但是至少他對于是否患病這個問題有最小的不确定性。對于病人 B,他的不确定性在病人 A 和病人 C 之間。
這就是為什麼要引入熵這個概念的原因:描述一個狀況下的不确定性為在xx和xx之間,在日常生活環境下這種精細程度可能足夠了,但是對于機器學習任務來說,這種描述太寬泛了。
不确定性度量
熵允許我們對于生活中的一個重要問題:事情最終會發展到什麼樣的結果,進行精确度量和計算。
換種說法,熵是一種不确定性的度量。
在本篇文章中,熵都是指代香農熵(Shannon entropy)。其實還有幾種其他類型的熵,但是在自然語言處理或者機器學習領域中,我們提到的熵都是香農熵。
是以在沒有特意說明的情況下,下面就是熵的公式。對于事件X,有n種可能結果,且機率分别為p_1, ... p_n,公式為:
基本性質
如果你是第一次看到這個公式,你可能會提出一個問題:為什麼要用對數?為什麼這個公式就能夠度量不确定性?當然,還有為什麼要用字母H來表示熵?(表面上這個英文字母H是從希臘大寫字母Eta上演變過來的,但實際上為什麼采用了字母H來表示,還是有一段複雜的曆史的,感興趣的可以看這個問題:Why use H for entropy?)
對于很多情況下的問題,我認為從以下兩點切入是很好的選擇:(1)我所面對的這個數學結構有那些理想的屬性?(2)是否有其他結構也能夠滿足所有這些理想的屬性?
對于香農熵作為不确定性的度量來說,這兩個問題的答案分别是:(1)很多,(2)沒有。
我們來一個一個看我們希望熵的公式應該具有哪些性質。
基本性質1:均勻分布具有最大的不确定性
如果你的目标是減小不确定性,那麼一定要遠離均勻機率分布。
簡單回顧一下機率分布:機率分布是一個函數,對于每個可能的結果都有一個機率,且所有的機率相加等于 1。當所有可能的結果具有相同的可能性時,該分布為均勻分布。例如:抛硬币實驗(50% 和 50% 的機率), 均勻的骰子(每個面朝上的機率都為六分之一)。
均勻分布具有最大的熵
一個好的不确定性度量會在均勻分布時達到最大的值。熵滿足這個要求。給定 n 個可能的結果,最大的熵在所有結果的機率相同時得到。
下面是對于伯努利試驗中熵的圖像。(伯努利試驗有兩種可能的結果:p和1-p):
在伯努利試驗中,當p=0.5時,熵達到最大
基本性質2:對于獨立事件,不确定性是可加的
假設 A 和 B 是獨立事件。換句話講,知道事件 A 的結果并不會絲毫影響 B 的結果。
關于這兩個事件的不确定性應該是兩個事件單獨的不确定性的和,這也是我們希望熵的公式應該具備的性質。
對于獨立事件,不确定性是可加的
讓我們使用抛兩個硬币的試驗作為例子來使這個概念更加具體。我們既可以兩個硬币同時抛,也可以先抛一個硬币再抛另一個硬币。在兩種情況下,不确定性是相同的。
考慮兩個特殊的硬币,第一個硬币正面朝上 (H, Head) 的機率為80%,背面朝上 (T, Tail) 的機率為 20%。另一個硬币的正面朝上和反面朝上的機率分别為 60% 和 40%。如果我們同僚抛兩枚硬币,那麼有四種可能:正正,正反,反正,反反。對應的機率分别為[0.48, 0.32, 0.12, 0.08]。
兩個獨立事件的聯合熵等于獨立事件的熵的和
将這些機率帶入到熵的公式中,我們能夠看到:
就跟我們設想的一樣,兩個獨立事件的聯合熵等于各個獨立事件的熵的和。
基本性質3:加入發生機率為0的結果并不會有影響
假設有一個遊戲,獲勝條件如下:(a)隻要#1号結果出現,你就赢了。(b)你可以在兩個機率分布 A 和 B 中選一個進行遊戲。分布 A 有兩種可能,#1号結果為 80% 機率,#2号結果為 20% 機率。分布 B 有三種結果,#1号結果80%,#2号結果20%,#3号結果0%.
增加第三個機率為0的結果并不會有什麼不同
給定 A 和 B 兩個選擇,你會選哪個?可能正确的反應應該是聳聳肩或白個眼。第三個結果的加入并沒有增加或減少這個遊戲的不确定性。誰關心到底是用A還是B呀,因為用哪個都是一樣的。
熵的公式也滿足這個性質:
即,增加一個機率為0的結果,并不會影響對于不确定性的度量。
基本性質4:不确定性的度量應該是連續的
最後一個基本性質是連續性。
連續性的最直覺的解釋就是沒有斷開或者空洞。更精确的解釋是:輸出(在我們的場景下是不确定性)中任意小的變化,都可以由輸入(機率)中足夠小的變化得到。
對數函數在定義域上每個點都是連續的。在子集上有限數量函數的和和乘積也是連續的。由此可能得出熵函數也是連續的。
唯一性定理
Khinchin(1957)證明,滿足上述四種基本屬性的唯一函數族具有如下形式:
其中λ是正常數。Khinchin稱之為唯一性定理。将λ設為1,并使用以2為底的對數就得到了香農熵。
重申一下,使用熵作為不确定性度量是因為它具有我們期望的屬性,并且是從滿足上面提到的四個屬性的函數族中做出的很自然的選擇。
其他屬性
除了上述用于Khinchin的唯一性定理中的四個基本屬性,熵還具有一些其他的性質,下面就介紹其中的一些。
性質5:具有更多可能結果的均勻分布有更大的不确定性
比如你可以在抛硬币試驗和抛骰子試驗中做出一個選擇,如果硬币正面朝上或者骰子1那面朝上就算赢。你會選擇那個試驗?如果你想最大化收入,肯定會選擇硬币。如果隻是想體驗下不确定性,那可能就會選骰子。
随着等機率結果的數量的增加,不确定性的度量也應該增加。
這正是熵所做的:H(1/6, 1/6, 1/6, 1/6, 1/6, 1/6)> H(0.5, 0.5)
一般來說,L(k)為具有K個結果的均勻分布的熵,我們能夠得到:
對于m>n,有
性質6:事件擁有非負的不确定性
你知道什麼是負的不确定性嗎?反正我也不知道。
對于一個使用者友好的不确定性度量來說,無論輸入是什麼,應該總會傳回一個非負的結果。
熵的公式同樣滿足這個性質,我們來看一下公式:
機率是定義在0-1的範圍内的,是以是非負的。是以機率的對數是負的。機率乘機率的對數不會改變符号。是以求和之後應該是負的,最終負負得正。是以對于所有的輸入,熵都是非負的。
性質7:有确定結果的事件具有0不确定性
假設你擁有一個魔法硬币,無論你怎麼抛,硬币總是正面朝上。
你會怎麼量化這個魔法硬币的不确定性,或者其他情況下有确定結果的事件的不确定性?這中情況下就沒有不确定性,是以結果也很自然,不确定性為0。
熵的定義也滿足這個性質。
假設結果i一定會發生,即p_i=1, 是以H(X)為:
即,确定事件的熵為0。
性質8:調轉參數順序沒有影響
這是另一個顯而易見的理想性質。考慮兩種情況,第一個,抛硬币正面朝上的機率和背面朝上的機率分别為80%和20%。第二個情況裡機率正好相反:正面朝上和背面朝上的機率分别為20%和80%。
兩種抛硬币試驗都有相同的熵,即H(0.8, 0.2) = H(0.2, 0.8)。
更通用的形式,對于個結果的試驗,我們有:
實際上這對于有任何數量結果的試驗都适用。我們可以以任意的方式調整參數的順序,而所有的結果都是一樣的。
總結
回顧一下,香農熵是一種不确定性的度量。
它被廣泛的适用,因為它滿足了我們想要的一些标準(同時也是因為我們生活中充滿了不确定性)。唯一性定理告訴我們,隻有一個函數族具有我們想要的四種基本性質。香農熵是這個函數族的一個很自然的選擇。
熵的性質有(1)對于均勻分布有最大的熵;(2)對于獨立事件熵是可加的;(3)具有非零機率的結果數量增加,熵也會增加;(4)連續性;(5)非負性;(6)确定事件的熵為0;(7)參數排列不變性。
via TowardsDatascience,雷鋒網 AI 科技評論編譯