NLP入門之信息熵
香農在《通信的數據理論》中,任何信息都存在冗餘,冗餘大小與信息中每個符號(數字、字母或單詞)的出現概率或者說不確定性有關,並且香農借鑒了熱力學的概念,把信息中排除了冗餘後的平均信息量稱為「信息熵」,對於任意一個隨機變數X,它的信息熵定義如下:
其中P(x)為事件x發生的概率。
通常,一個信源發送出什麼符號是不確定的,衡量它可以根據其出現的概率來度量。概率大,出現機會多,不確定性小;反之就大。
不確定性函數f是概率P的單調遞降函數;兩個獨立符號所產生的不確定性應等於各自不確定性之和,即 ,這稱為可加性。
為了更好理解熵這個概念,就那吳軍的《數學之美》中的例子來比劃一下吧。
題目:
假設世界盃決賽圈32強已經產生,那麼隨機變數「2018年俄羅斯世界盃足球賽32強中,誰是世界盃冠軍?」的信息量是多少呢?
計算:
根據香農的信息熵公式:
吳軍的書中給出了幾個結論:
- 32強球隊奪冠概率相同時,H=5。
- 是奪冠概率不同時,H<5。
- 是H不可能大於5。
結論其實就是H表達式出來後,關於32個變數都大於等於0,只和等於1的約束情況下,表達式的取值範圍的討論。
說了這麼多,關鍵點還沒有說到,那就是信息熵在自然語言處理裡面有什麼用呢?
在自然語言處理中,信息熵只反映內容的隨機性(不確定性)和編碼情況,與內容本身無關。
舉個例子:
一本50萬字的中文書平均有多少信息量。我們知道,常用的漢字約7000字。假如每個漢字等概率,假如每個漢字等概率,那麼大約需要約13比特(即13位二進位數, )表示一個漢字。
應用信息熵就是,一個漢字有7000種可能性,每個可能性等概率,所以一個漢字的信息熵是:
實際上由於前10%漢字占常用文本的95%以上,再考慮詞語等上下文,每個漢字的信息熵大約是5比特左右。所以一本50萬字的中文書,信息量大約是250萬比特。需要注意這裡的250萬比特是個平均數。
為了以後在nlp學習的過程中,對信息熵有比較清晰的認識,再梳理幾個概念:
- 條件熵
知道的信息越多,隨機事件的不確定性就越小。
定義式:
.
- 聯合熵
設X Y為兩個隨機變數,對於給定條件Y=y下,X的條件熵定義為:
- 互信息
兩個事件的互信息定義為:I(X;Y)=H(X)+H(Y)-H(X,Y),也就是用來衡量兩個信息的相關性大小的量。互信息是計算語言學模型分析的常用方法,它度量兩個對象之間的相互性。定義式:
- 左右熵
這個經常用來發現新詞。某篇文章中出現了兩次 AWC,一次BWD,那麼W的左側信息熵為: ,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:自然语言处理 |