雷鋒網AI科技評論按:「熵」大概是統計學、信息學里最讓初學者愁腸百結的基本概念之一。我們都知道熵可以用來描述含有的信息豐富程度的多少,但是具體是怎么回事呢?這篇文章中雷鋒網AI科技評論將帶大家重新系統認識一下「熵」倒是在講什么。
假設你在醫生辦公室中與三個等待的病人交流。三個病人都剛剛完成藥物測試,他們面臨著兩種可能的結果:患病或者未患病。假設這三個病人都充滿好奇心而且數學好。他們提前各自研究得到了自己患病的風險,并且想通過這些來確認自己的診斷結果。
病人A知道他自己有95%的可能會患病。對于病人B,患病概率為30%,病人C的患病未患病的概率都為50%。
病房中的不確定性
首先我們專注于一個簡單的問題。在其他條件都相同的情況下,這三個病人中的哪個面臨著最大的不確定性?
這個問題的答案是顯而易見的,病人C。他所面臨的是在這種情況下可能呢存在的最大程度的不確定性:就像醫療版本的拋硬幣試驗一樣。
對于病人A來說,雖然他的情況不容樂觀,但是至少他對于是否患病這個問題有最小的不確定性。對于病人B,他的不確定性在病人A和病人C之間。
這就是為什么要引入熵這個概念的原因:描述一個狀況下的不確定性為在xx和xx之間,在日常生活環境下這種精細程度可能足夠了,但是對于機器學習任務來說,這種描述太寬泛了。
不確定性度量熵允許我們對于生活中的一個重要問題:事情最終會發展到什么樣的結果,進行精確度量和計算。
換種說法,熵是一種不確定性的度量。
在本篇文章中,熵都是指代香農熵(Shannonentropy)。其實還有幾種其他類型的熵,但是在自然語言處理或者機器學習領域中,我們提到的熵都是香農熵。
所以在沒有特意說明的情況下,下面就是熵的公式。對于事件X,有n種可能結果,且概率分別為p_1,...p_n,公式為:
基本性質如果你是第一次看到這個公式,你可能會提出一個問題:為什么要用對數?為什么這個公式就能夠度量不確定性?當然,還有為什么要用字母H來表示熵?(表面上這個英文字母H是從希臘大寫字母Eta上演變過來的,但實際上為什么采用了字母H來表示,還是有一段復雜的歷史的,感興趣的可以看這個問題:WhyuseHforentropy?)
對于很多情況下的問題,我認為從以下兩點切入是很好的選擇:(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)參數排列不變性。
viaTowardsDatascience,雷鋒網AI科技評論編譯