這個“熵“並不是指熱力學上熵的概念,而是由信息論男神克勞德·艾爾伍德·香農(Claude Elwood Shannon )在1948年提出的“信息熵“,用來描述信息的不確定程度。
信息熵公式
這個聽起來很神奇的概念,其實蘊含着最朴素最簡潔的思想,看下去你就能體會這一點了。
先來問個問題,如果給你一顆骰子,你覺得分別擲到1,2,…,6的概率是多少?
我覺得你肯定會立刻就回到我,答案是1/6。
很好,如果你知道答案是1/6,就說明其實你已經掌握了最大熵原理。
對於這個骰子問題,我們並不知道它到底是均勻的還是不均勻的,我們唯一知道的條件是1-6出現的總概率總是等於1的。
我們把這個已知的條件稱為“約束條件“。除了約束條件,我們對這個骰子一無所知,所以最符合現實的假設就是這個骰子是個均勻的骰子,每一點出現的概率是一個等概率事件。
所謂的最大熵原理其實就是指包含已知信息,不做任何未知假設,把未知事件當成等概率事件處理。
好,再來看個例子,假設你去參加抽獎活動,有5個盒子ABCDE,獎品就放在這5個盒子中的一個,請問獎品在ABCDE盒子里的概率分別是多少?
其實和骰子問題一樣,我們除了知道獎品一定在其中一個盒子里(約束條件),但是對獎品到底在哪個盒子里一點額外的信息都沒有,所以只能假設獎品在每個盒子里的概率都是1/5(等概率)。
這時有個圍觀抽獎多時的吃瓜群眾根據他的觀察事實決定給你點提示,他說,獎品在A和B盒子里的概率總共是3/10。
也就是說此時你知道了額外信息:P(A)+P(B)=3/10,你得到了新的約束條件。
那么這個時候我再問你,獎品分別在各個盒子里的概率是多少呢?
根據最大熵原理,我們加入新的約束條件,然后繼續把剩下的做等概率處理。
雖然P(A)+P(B)=3/10,但是我們並不知道A和B各自的貢獻是多少,所以也只能假設它們兩個貢獻依然是平均的,所以各自就是3/20。
因為P(A)+P(B)=3/10,所以P(C)+P(D)+P(E)=7/10,但是我們依然不知道這三者的貢獻,所以還是假設它們等概率,因此每一項就是7/30。
這就是通過最大熵原理處理概率問題了。
怎么樣?是不是很簡單?現在你估計要問這種簡單的道理為什么還要搞出什么最大熵原理?
因為只有引入“信息熵“的概率,我們才可以把上述這些個看起來很簡單的例子“量化“,然后用它來解決更加復雜的問題。
現在我們來看看信息熵到底是怎么定義的,(其實就是上面那張香農的圖)。一個系統的信息熵其實就是系統中每一個事件的概率乘以log概率,然后把所有事件相加后取負數。
因為概率總是在0-1之間,所以log后會小於0,取了負號以后熵就是正數了。
log如果以2為底數的話,信息熵的單位就是比特(bit),以e為底數的話,信息熵的單位就是奈特(nat),以10為底數的話,單位就是哈脫特(hat)。
我們來看一枚硬幣的例子,對於一枚均勻硬幣,拋一次,正面朝上和背面朝上的概率各為0.5。
那么它總共的信息熵就是log2,如果以2為底計算話就是1bit的信息熵。
根據我們之前講過的例子,0.5這個概率應該是滿足最大熵原理的(等概率)。
既然我們已經明確給出了信息熵的定義那么根據這個公式計算的話能不能得到0.5這個概率使系統的熵最大呢?
換言之,等概率讓系統的熵最大到底是不是真的?
為了驗證這一點,我們假設拋硬幣出現正面的概率是p,那么出現背面的概率就是1-p(注意,1-p其實就是包含了約束條件,因為兩者的總和總是1)。
接下來我們要找到一個p,讓H(P)最大,也就是熵最大。
求最大也就是求這個函數的極值,學過高數的小伙伴們都知道對於這個問題,求導等於0。也就是說H(P)’=0的解,函數在這點的值不是最大就是最小。
我們解方程H(P)’=0,得到當p=0.5的時候,函數H(P)達到極值(此時是極大值,你可以代入其它p值,會發現結果比p=0.5的時候小。)。
所以也就是說p=0.5的時候(等概率),系統的熵最大。
硬幣是一個二元系統(一正一反兩個概率),我們也可以把這個結論推廣到一般情況:對於一個有n個事件的系統,每一個事件發生的概率為pi,唯一已知的約束條件是事件發生的總和等於1。
為了求出滿足最大熵的事件概率pi,我們首先構造Lagrange函數:就是把需要滿足的約束條件加到H(P)后(見第二項)。
然后老規矩,求這個函數的極值,還是求導等於0。
求解得到的pi具有未知參數λ(來自約束項),於是我們可以利用約束條件進一步求解。
最終我們會發現,對於一個含有n個事件的系統,熵最大時,事件的概率必然滿足等概率。
所以對於一個符合最大熵原理的擲骰子模型,每一點出現的概率就是1/6,對於一個從5個盒子中抽獎的事件,獎品在每個盒子中的概率就是1/5。
至此,我們可以發現信息熵的定義的確能夠描述並且量化那些生活中看起來很簡單但是卻總覺得有點說不清楚的問題。
由於下面要繼續用到Lagrange乘子法,所以我們給大家簡單解釋下這個到底是什么東西。
對於一般的求極值問題我們都知道,求導等於0就可以了。但是如果我們不但要求極值,還要求一個滿足一定約束條件的極值,那么此時就可以構造Lagrange函數,其實就是把約束項添加到原函數上,然后對構造的新函數求導。
看張圖就很容易理解了。
對於一個要求極值的函數f(x,y),圖上的藍圈就是這個函數的等高圖,就是說f(x,y)=C1,C2,…Cn分別代表不同的數值(每個值代表一圈,等高圖),我要找到一組(x,y),使它的Ci值越大越好,但是這點必須滿足約束條件g(x,y)(在黃線上)。
也就是說f(x,y)和g(x,y)相切,或者說它們的梯度▽f和▽g平行,因此它們的梯度(偏導)成倍數關系(假設為λ倍)。
因此把約束條件加到原函數后再對它求導,其實就等於滿足了下圖上的式子。
大致理解了Lagrange乘子法的意義后,我們來用數學化的信息熵定義解決之前提過的多了一個約束條件的盒子抽獎問題。
為了方便描述,我們用數字12345代替字母ABCDE,因此這個系統中一共有5個概率,分別是p1,p2,p3,p4,p5。
並且包含兩個約束條件:1. 總概率和=1; 2. p1+p2=3/10。
根據之前的解釋,為了求解包含約束條件的函數極值,我們構造Lagrange函數:
由於系統中包含兩個約束條件,所以添加兩項,兩個參數λ0,λ1(當有n個約束條件時,就是添加n項,λ0,λ1,…,λn)。
對概率pi求偏導等於0(首先固定λ0,λ1,假設它們是已知參數):
根據上式,我們可以解得:
之后代入之前構造的Lagrange函數,並對λ求偏導,目的在於尋找使L最大的λ:
最后,我們可以解出:
結果與我們之前的直觀計算結果是相同的,再一次證明,最大熵原理就是對於未知信息的等概率處理。
好了,至此我覺得你應該已經了解了什么是最大熵原理,並且如何根據最大熵原理處理系統中的概率問題。
再次強調一下最大熵原理的本質:系統中事件發生的概率滿足一切已知約束條件,不對任何未知信息做假設,也就是對於未知的,當作等概率處理。
當使用數學方法計算時,尋找滿足系統的熵最大時的事件概率。
我們之前提過信息熵表示不確定程度,所以熵最大,也就是系統的不確定程度最大,系統中沒有任何個人的主觀假設。
以硬幣為例,你當然也可以硬幣正面出現的概率是0.6,背面是0.4,但是這種假設中就包含了你的個人假設,並不是完全客觀的,當然你可以通過后續實驗驗證你的觀點,但是在一開始,在你沒有得到任何信息的前提下,假設正面和背面出現的概率各是0.5才是最客觀的。
這里我們只是通過簡單的例子讓大家理解最大熵原理,在語音處理等領域,很多時候是無法直接通過代入約束條件得到滿足極值的解的,也就是說往往當你得到了pi(λ)后(用λ表示的pi)后,便無法繼續通過對λ求偏導得到最終pi。
所以則需要通過迭代算法等數值解法繼續求解pi,這里我們就不展開了,有興趣的小伙伴們可以查閱諸如改進的迭代尺度法和牛頓法等(參考資料)。
參考資料:
1.《統計學習方法》李航
2.《數學之美》 吳軍
3.《最大熵學習筆記》http://blog.csdn.net/itplus/article/details/26549871