[数学理论]最大熵模型
轉載于http://blog.csdn.net/lg1259156776/
最大熵模型總結
摘要
本文對最大熵模型進行了系統性的學習和總結,從不同的角度來解讀熵的概念以及最大熵的內涵。對最大熵的具體應用進行了梳理,并介紹了與最大熵相關的一些概念,最后通過一個簡單的demo來對最大熵模型進行直觀的認識和感悟。
引言
熵,忘了第一次接觸是在物理課上還是在化學課上,總之是描述系統的無序性或者混亂狀態,跟熱力學第二定律的宏觀方向性有關:在不加外力的情況下,總是往混亂狀態改變;跟化學反應的方向性有關,總是往能量降低的方向改變。印象中,熵總是與能量與混亂狀態聯系在一起。最近讀吳軍的《數學之美》最大熵一章節,對于這個最大熵模型有了重新的認識,同時由于在近期的學術論文研究中需要借助最大熵進行決策,因此才促成此次對最大熵模型的總結。
統計建模方法是用來modeling隨機過程行為的。在構造模型時,通常供我們使用的是隨機過程的采樣,也就是訓練數據。這些樣本所具有的知識(較少),事實上,不能完整地反映整個隨機過程的狀態。建模的目的,就是將這些不完整的知識轉化成簡潔但準確的模型。我們可以用這個模型去預測隨機過程未來的行為。
在統計建模這個領域,指數模型被證明是非常好用的。因此,自世紀之交以來,它成為每個統計物理學家們手中不可或缺的工具。最大熵模型是百花齊放的指數模型的一種,它表示的這類分布有著有趣的數學和哲學性質。盡管最大熵的概念可以追溯到遠古時代,但直到近年來計算機速度提升之后,才允許我們將最大熵模型應用到統計評估和模式識別的諸多現實問題中(最大熵才在現實問題上大展身手)。
熵的概念
物理學的熵
描述事物無序性的參數,熵越大則無序性越強。從宏觀方面講(根據熱力學定律),一個體系的熵等于其可逆過程吸收或耗散的熱量除以它的絕對溫度。從微觀講,熵是大量微觀粒子的位置和速度的分布概率的函數。
自然界的一個基本規律就是熵遞增原理,即,一個孤立系統的熵,自發性地趨于極大,隨著熵的增加,有序狀態逐步變為混沌狀態,不可能自發地產生新的有序結構,這意味著自然界越變越無序。實際上就是熱力學第二定律。
信息論的熵
熵
在物理學中,熵是描述客觀事物無序性的參數。信息論的開創者香農認為,信息(知識)是人們對事物了解的不確定性的消除或減少。他把不確定的程度稱為信息熵。設隨機變量ξ,他有A1、A2….An共n個不同的結果,每個結果出現的概率為p1,p2….pn,那么ξ的不確定度,即信息熵為:
熵越大,越不確定。熵為0,事件是確定的。例如拋硬幣,每次事件發生的概率都是1/2的話,那么熵=1:H(X)=?(0.5log0.5+0.5log0.5)=1。
聯合熵
兩個隨機變量X,Y的聯合分布,可以形成聯合熵Joint Entropy,用H(X,Y)表示。
條件熵
有時候我們知道x,y變量不是相互獨立的,y的作用會影響x的發生,舉個例子就是監督學習了,有了標記y之后肯定會對x的分布有影響,生成x的概率就會發生變化,x的信息量也會變化。那么此時X的不確定度表示為:
H(X|Y)=∑(x,y)∈X×Yp(x,y)log1p(x|y) 這個其實就是條件熵Conditional Entropy。很顯然,Y加入進來進行了標記之后,就引入了知識了,所以會減小X的不確定性,也就是減小了熵。所以知識能夠減小熵。比如在自然語言的統計模型中,一元模型就是通過某個詞本身的概率分布來消除不確定因素;而二元及更高階的語言模型則還使用了上下文的信息,那就能準確預測出一個句子中當前詞匯。在數學上可以嚴格地證明為什么這些相關的信息也能夠用來消除不確定性,下面的公式就表明了這個性能:
H(X)≥H(X|Y) 當多了Y的信息之后,關于X的不確定性下降了,在自然語言統計模型中,如果把Y看成是前一個字,那么在數學上就證明了二元模型應該比一元模型要好。同理,可以定義兩個條件的條件熵,如下公式:
H(X|Y,Z)=∑(x,y,z)∈X×Y×Zp(x,y,z)log1p(x|y,z) 還可以證明H(X|Y)≥H(X|Y,Z),也就是說三元模型要比二元模型好些。
一個有趣的問題是:上述式子等號什么時候成立?等號成立說明了增加了信息,但是不確定性卻沒改變,這說明獲取的信息對于要研究的事物絲毫沒有關系。也就是說在概率是統計獨立的。
相對熵
又稱互熵,交叉熵,鑒別信息,Kullback熵,Kullback-Leible散度等。設p(x)、q(x)是X中取值的兩個概率分布(x為在X這個隨機變量中取值),則p對q的相對熵是
在一定程度上,相對熵可以度量兩個隨機變量的“距離”,且有D(p||q) ≠D(q||p)。
相對熵有如下的三條結論:
上面提到了相對熵是不對稱的,有D(p||q) ≠D(q||p),這樣使用起來不方便,詹森和香農提出了一種新的相對熵計算方法,將上面的不等式兩邊取平均,如下:
相對熵最早是用在信號處理上,如果兩個隨機信號相對熵越小,說明這兩個信號越接近,否則信號的差異性越大。后來研究信息處理的學者們用來衡量兩段信息的相似程度,比如說如果一篇文章是照抄或者改寫另一篇,那么這兩篇文章中詞頻分布的相對熵就非常小,接近于0。
相對熵在自然語言處理中還有很多應用,比如用來衡量兩個常用詞(在語法和語義上)不同文本中的概率分布,看它們是否同義。另外,利用相對熵,還可以得到信息檢索中最重要的一個概念:詞頻率-逆向文檔頻率(TF-IDF)。
互信息
兩個隨機變量X,Y的互信息,定義為X,Y的聯合分布和獨立分布乘積的相對熵,用表示I(X,Y)
且有I(X,Y)=D(P(X,Y) || P(X)P(Y))。計算下H(Y)-I(X,Y)的結果,如下:
通過上面的計算過程,發現有H(Y)-I(X,Y) =H(Y|X)。故通過條件熵的定義,有:H(Y|X) = H(X,Y) - H(X),而根據互信息定義展開得到H(Y|X) = H(Y) - I(X,Y),把前者跟后者結合起來,便有I(X,Y)= H(X) + H(Y) - H(X,Y),此結論被多數文獻作為互信息的定義。
關于互信息,參考《數學之美》,想再多說幾句:
當獲取的信息和要研究的事物“有關系”時,這些信息才能用來幫助消除不確定性。比如常識告訴我們,隨機事件“今天北京下雨”與另一個隨機變量“過去二十四個小時北京空氣濕度”的相關性就很大,但是到底有多大呢?再比如,“過去二十四個小時北京空氣濕度”與“舊金山的天氣”似乎就相關性不大,如何度量這種相關性呢?香農提出了互信息(Mutual Information)作為兩個隨機事件相關性的度量。
現在清楚了,所謂兩個事件相關性的量化度量,就是在了解其中一個Y的前提下,對消除另一個X不確定性所提供的信息量。當X和Y完全不相關時,取值為0,也就是前面所講的等號成立的條件;而當X和Y完全相關時,取值為1。
熵編碼
熵編碼即編碼過程中按熵原理不丟失任何信息的編碼。信息熵為信源的平均信息量(不確定性的度量)。常見的熵編碼有:香農(Shannon)編碼、哈夫曼(Huffman)編碼和算術編碼(arithmetic coding)。
其中哈夫曼編碼可以參看我的另一篇博文《數據結構(三):非線性邏輯結構-特殊的二叉樹結構:堆、哈夫曼樹、二叉搜索樹、平衡二叉搜索樹、紅黑樹、線索二叉樹》中有著詳細而且精彩地論述。
熵和主觀概率
因為熵用概率表示,所以這涉及到主觀概率。概率用于處理知識的缺乏(概率值為1表明對知識的完全掌握,這就不需要概率了),而一個人可能比另一個人有著更多的知識,所以兩個觀察者可能會使用不同的概率分布,也就是說,概率(以及所有基于概率的物理量)都是主觀的。在現代的主流概率論教材中,都采用這種主觀概率的處理方法。
熵的性質
當所有概率相等時,熵取得最大值
上面關于熵的公式有一個性質:假設可能狀態的數量有限,當所有概率相等時,熵取得最大值。
在只有兩個狀態的例子中,要使熵最大,每個狀態發生的概率都是1/2,如下圖所示:
- 1
- 2
- 3
小概率事件發生時攜帶的信息量比大概率事件發生時攜帶的信息量多
實際上信息量與人們的驚奇度是相關的,比如你認為湖人隊奪冠的概率非常高,結果湖人隊以大比分0:4被橫掃出局了,這個消息讓你感到很吃驚。實際上就是湖人隊被0:4橫掃這件事情的信息量非常大,你認為是屬于小概率事件,認為它幾乎不可能發生,但是它一旦發生了你就感到很吃驚。相反,當湖人隊順利奪冠,你就不會有什么驚奇的表情了。
最大熵原理
吳軍《數學之美》中關于最大熵的論述
最大熵原理指出,當我們需要對一個隨機事件的概率分布進行預測時,我們的預測應當滿足全部已知的條件,而對未知的情況不要做任何主觀假設。在這種情況下,概率分布最均勻,預測的風險最小。因為這時概率分布的信息熵最大,所以人們稱這種模型叫“最大熵模型”。我們常說,不要把所有的雞蛋放在一個籃子里,其實就是最大熵原理的一個樸素的說法,因為當我們遇到不確定性時,就要保留各種可能性。說白了,就是要保留全部的不確定性,將風險降到最小。
下面是吳軍在AT&T實驗室做最大熵模型報告時所進行的解釋:
帶去了一個色子,問聽眾”每個面朝上的概率分別是多少”,所有人都說是等概率,即各點的概率均為1/6。這種猜測當然是對的。我問聽眾們為什么,得到的回答是一致的:對這個”一無所知”的色子,假定它每一個朝上概率均等是最安全的做法。(你不應該主觀假設它象韋小寶的色子一樣灌了鉛。)從投資的角度看,就是風險最小的做法。從信息論的角度講,就是保留了最大的不確定性,也就是說讓熵達到最大。接著,我又告訴聽眾,我的這個色子被我特殊處理過,已知四點朝上的概率是三分之一,在這種情況下,每個面朝上的概率是多少?這次,大部分人認為除去四點的概率是1/3,其余的均是 2/15,也就是說已知的條件(四點概率為1/3)必須滿足,而對其余各點的概率因為仍然無從知道,因此只好認為它們均等。注意,在猜測這兩種不同情況下的概率分布時,大家都沒有添加任何主觀的假設,諸如四點的反面一定是三點等等。(事實上,有的色子四點反面不是三點而是一點。)這種基于直覺的猜測之所以準確,是因為它恰好符合了最大熵原理。
實際上這個論述跟上面熵的性質相對應,在沒有先驗知識的情況下,對不同情況選擇等概率是最安全的,也就是對應最大熵原理,數學描述為:
利用最大熵原理求解問題
一個快餐店提供3種食品:漢堡(B)、雞肉(C)、魚(F)。價格分別是1元、2元、3元。已知人們在這家店的平均消費是1.75元,求顧客購買這3種食品的概率。
如果你假設一半人買魚另一半人買雞肉,那么根據熵公式,這不確定性就是1位(熵等于1)。但是這個假設很不合適,因為它超過了你所知道的事情。我們已知的信息是:
{p(B)+p(C)+p(F)=11?p(B)+2?p(C)+3?p(F)=1.75
對前兩個約束,兩個未知概率可以由第三個量來表示,可以得到:
把上式代入熵的表達式中,熵就可以用單個概率 p(F) 來表示。對這個單變量優化問題,很容易求出 p(F)=0.216 時熵最大,有 p(B)=0.466, p(C)=0.318 和 S=1.517。
下面給出最為暴力的求解方式,在可行域內,遍歷所有的頻率,然后求出最大熵所對應的pF,之后就可以分別計算出pB,pC和S了。
%% 要保證pB,pC和pF都在0,1之間,pF的取值是約束的 %概率約束關系 pF = 0.001 : 0.001 : 0.325; pB = 0.25 + pF; pC = 0.75 - 2*pF; %信息熵 Hp = -(pB.*log2(pB) + pC.*log2(pC) + pF.*log2(pF)); %求取最大熵 [max_Hp,max_pF] = max(Hp); %繪圖直觀視圖 plot(pF, Hp); grid on; set(gca,'XTickMode','manual','XTick',[0,pF(max_pF),0.325]); set(gca,'YTickMode','manual','YTick',[0,max_Hp],Hp(end));- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
以上,我們根據未知的概率分布表示了約束條件,又用這些約束條件消去了兩個變量,用剩下的變量表示熵,最后求出了熵最大時剩余變量的值,結果就求出了一個符合約束條件的概率分布,它有最大不確定性,我們在概率估計中沒有引入任何偏差。
最大熵模型的一個經典的例子
堅持無偏原則
一篇文章中出現了“學習”這個詞,那這個詞是主語、謂語、還是賓語呢?換言之,已知“學習”可能是動詞,也可能是名詞,故“學習”可以被標為主語、謂語、賓語、定語等等。
- 令x1表示“學習”被標為名詞, x2表示“學習”被標為動詞。
- 令y1表示“學習”被標為主語, y2表示被標為謂語, y3表示賓語, y4表示定語。
p(x1)+p(x2)=1∑i=14p(yi)=1 根據無偏原則,得到如下的推測:
p(x1=p(x2)=0.5p(y1)=p(y2)=p(y3)=p(y4)=0.25
進一步,若已經知道“學習”被標為定語的可能性很小,只有0.05,即p(y4)=0.05,此時依然根據無偏原則得到:
p(x1=p(x2)=0.5p(y1)=p(y2)=p(y3)=0.953
當“學習”被標作動詞的時候,它被標作謂語的概率為0.95,即p(y2|x1)=0.95,此時仍然按照需要堅持無偏見原則,使得概率分布盡量平均。但怎么樣才能得到盡量無偏見的分布?事實上,概率平均分布 等價于 熵最大。于是,問題便轉化為了:計算X和Y的分布,使得H(Y|X)達到最大值,并且滿足下述條件:
p(x1)+p(x2)=1∑i=14p(yi)=1p(y4)=0.05p(y2|x1)=0.95
故要最大化下述式子:
且滿足以下4個約束條件:
p(x1)+p(x2)=1∑i=14p(yi)=1p(y4)=0.05p(y2|x1)=0.95
最大熵模型的公式表示
至此,我們可以寫出最大熵模型的一般表達式了,如下:
其中,P={p | p是X上滿足條件的概率分布}
后面還有一系列的推導,最后由lagrange函數將原約束最優化問題轉換為無約束的最優化的對偶問題。也就是《數學之美》中給出的最大熵模型。這里因為在我的學習中沒有涉及到具體深入應用,不希望在這上面花費太多功夫,具體的推導過程可以參看博文《最大熵模型中的數學推導》。
參考文獻
http://www.zhizhihu.com/html/y2011/3500.html
http://www.52nlp.cn/mit-nlp-fifth-lesson-maximum-entropy-and-log-linear-models-fifth-part
http://blog.csdn.net/lg1259156776/article/details/47271673
http://www.kuqin.com/shuoit/20141027/342889.html
總結
以上是生活随笔為你收集整理的[数学理论]最大熵模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 本地域名转向Hosts文件位置
- 下一篇: NAT模式实现虚拟机共享主机网络