NLP入門之信息熵

香農在《通信的數據理論》中,任何信息都存在冗餘,冗餘大小與信息中每個符號(數字、字母或單詞)的出現概率或者說不確定性有關,並且香農借鑒了熱力學的概念,把信息中排除了冗餘後的平均信息量稱為「信息熵」,對於任意一個隨機變數X,它的信息熵定義如下:

H(X)=- sum_{xepsilon X}P(x)logP(x)

其中P(x)為事件x發生的概率。

通常,一個信源發送出什麼符號是不確定的,衡量它可以根據其出現的概率來度量。概率大,出現機會多,不確定性小;反之就大。

不確定性函數f是概率P的單調遞降函數;兩個獨立符號所產生的不確定性應等於各自不確定性之和,即 f(P_{1},P_{2})=f(P_{1})+f(P_{2}) ,這稱為可加性。

為了更好理解熵這個概念,就那吳軍的《數學之美》中的例子來比劃一下吧。

題目:

假設世界盃決賽圈32強已經產生,那麼隨機變數「2018年俄羅斯世界盃足球賽32強中,誰是世界盃冠軍?」的信息量是多少呢?

計算:

根據香農的信息熵公式:

H=-(p_{1}logp_{1}+p_{2}logp_{2}+....+p_{32}logp_{32})

吳軍的書中給出了幾個結論:

  1. 32強球隊奪冠概率相同時,H=5。
  2. 是奪冠概率不同時,H<5。
  3. 是H不可能大於5。

結論其實就是H表達式出來後,關於32個變數都大於等於0,只和等於1的約束情況下,表達式的取值範圍的討論。

說了這麼多,關鍵點還沒有說到,那就是信息熵在自然語言處理裡面有什麼用呢?

在自然語言處理中,信息熵只反映內容的隨機性(不確定性)和編碼情況,與內容本身無關。

舉個例子:

一本50萬字的中文書平均有多少信息量。我們知道,常用的漢字約7000字。假如每個漢字等概率,假如每個漢字等概率,那麼大約需要約13比特(即13位二進位數, 2^{13}=8192 )表示一個漢字。

應用信息熵就是,一個漢字有7000種可能性,每個可能性等概率,所以一個漢字的信息熵是:

H=-(frac{1}{7000}logfrac{1}{7000}+frac{1}{7000}logfrac{1}{7000}+....+frac{1}{7000}logfrac{1}{7000})approx13

實際上由於前10%漢字占常用文本的95%以上,再考慮詞語等上下文,每個漢字的信息熵大約是5比特左右。所以一本50萬字的中文書,信息量大約是250萬比特。需要注意這裡的250萬比特是個平均數。

為了以後在nlp學習的過程中,對信息熵有比較清晰的認識,再梳理幾個概念:

  • 條件熵

知道的信息越多,隨機事件的不確定性就越小。

定義式:

. H(X|Y)=sum_{xepsilon X,yepsilon Y}P(x|y)*logP(x|y)

  • 聯合熵

設X Y為兩個隨機變數,對於給定條件Y=y下,X的條件熵定義為:

H(X|Y)=sum_{xepsilon X}sum_{yepsilon Y}P(x,y)*logP(x,y)

  • 互信息

兩個事件的互信息定義為:I(X;Y)=H(X)+H(Y)-H(X,Y),也就是用來衡量兩個信息的相關性大小的量。互信息是計算語言學模型分析的常用方法,它度量兩個對象之間的相互性。定義式:

I(X;Y)=sum_{xepsilon X,yepsilon Y}P(x,y)*log{frac{P(x,y)}{P(x)P(y)}}

  • 左右熵

這個經常用來發現新詞。某篇文章中出現了兩次 AWC,一次BWD,那麼W的左側信息熵為: -frac{2}{3}log(frac{2}{3})--frac{1}{3}log(frac{1}{3}) ,2/3表示片語A在3次中出現了2次,B只出現了一次,故為1/3。

如果是AWC, BWC,那麼W右側就是0,因為是 -1log(1)。

如果某個詞左側的信息熵很大,右側信息熵很小,而他右側的詞左側信息熵很小,右側信息熵很大。形象描述為 X B C Y,B與C經常一同出現,但是X和Y經常變化,於是可以把B和C組合起來當成一個關鍵詞,這就是發現新詞的原理。

寫著寫著發現,2,4,7的頻率太高,自己整天都在寫寫寫,自己頂不住,而且有個更大的原因是,缺少時間思考,寫出來的東西思考的深度也不夠,所以改成3,5更新,最近幾篇將會是NLP相關的概念解讀。

今天就先到這裡,晚安。


推薦閱讀:

用卷積神經網路做情感分析時(句子級),為什麼輸入向量可以隨機初始化,在訓練的時候調整?
《Style Transfer in Text: Exploration and Evaluation》閱讀筆記
練習-word2vec

TAG:自然语言处理 |