計算語言學(xué)的數(shù)學(xué)基礎(chǔ)
信息論基礎(chǔ)
1. 理解熵的最初提出
考慮以下的最優(yōu)編碼問題:
有A,B兩個站點要傳輸關(guān)于甲乙兩個人是否在房間的信息授滓,根據(jù)大量的以往的經(jīng)驗屈暗,甲乙兩個人在房間的狀態(tài)可能性如下表所示副编,A發(fā)送信息党窜,B接受信息壳澳,發(fā)送的信息是二進(jìn)制的又谋。
房間狀態(tài) | 房間沒有人 | 只有甲在房間 | 只有乙在房間 | 兩人都在房間 |
---|---|---|---|---|
概率 | 0.5 | 0.125 | 0.125 | 0.25 |
我們要讓發(fā)送的二進(jìn)制信息能夠反映出甲乙的狀態(tài)荞胡,所以要對信息進(jìn)行編碼妈踊。
我們可以使用兩位二進(jìn)制數(shù)據(jù)。
00 表示 房間沒有人
01 表示 只有甲在房間
10 表示 只有乙在房間
11 表示都在房間
這樣的話 平均發(fā)送的信息編碼長度是 2 位(每次都是2位)泪漂。
其實我們可以使用長度不同的編碼廊营。比如使用
0 表示 房間沒有人
10 表示 兩個人都在房間
110 表示 只有甲在房間
111 表示 只有乙在房間
注意:編碼問題,上述為什么沒有使用到1萝勤,1不是更加短嗎露筒?可以這么理解B在接收信息的時候,是按位的敌卓。比如說110慎式,先接收1,發(fā)現(xiàn)沒有1狀態(tài)就繼續(xù)接收1,發(fā)現(xiàn)沒有11瘪吏,就繼續(xù)接收0癣防,發(fā)現(xiàn)110是事先商量好的狀態(tài),所以就可以解碼成 只有甲在房間肪虎,如果說使用了1狀態(tài)進(jìn)行編碼了劣砍,那么收到110就可能認(rèn)為A發(fā)送了3次,分別是1狀態(tài)1狀態(tài)0狀態(tài)
而這樣的編碼的平均發(fā)送的信息編碼長度是
所以這樣的編碼是更好的扇救,而且其實這個編碼對于這個問題是最優(yōu)的刑枝。
其實這個問題的解決就是構(gòu)造哈夫曼編碼樹。另外我們可以考慮迅腔,如果計算機(jī)每次發(fā)送的不是二進(jìn)制装畅,而是三進(jìn)制或者是十進(jìn)制,那么我們?nèi)绾未_定最優(yōu)的編碼呢沧烈?其實這個是多叉哈夫曼編碼樹掠兄,同樣是貪心的思想,但是要多考慮一下樹結(jié)構(gòu)的完整性锌雀,才能夠貪心正確蚂夕。
而香農(nóng)就是直接把上面的流程轉(zhuǎn)化成了公式的形式。對于傳輸二進(jìn)制信息腋逆,給我們其信息狀態(tài)的概率分布婿牍,那么每個狀態(tài)應(yīng)該給的編碼長度是。比如說上面的 房間沒有人的概率是
, 而
從而給編碼為1惩歉。 其余的也可以進(jìn)行計算等脂,不再重復(fù)。
那么平均發(fā)送的信息的編碼長度就是 撑蚌。而最后這個期望值就是熵最初的定義上遥,可以理解為在一個編碼問題中最優(yōu)編碼下的發(fā)送一個信息的平均需要二進(jìn)制信息的位數(shù)。
2.現(xiàn)在熵的演化和作用
Def : 針對一個隨機(jī)變量X争涌,其有熵的定義為
可以發(fā)現(xiàn)的是相比之前的熵粉楚,現(xiàn)在這個定義的熵稠项。
(1)log底是可以自己設(shè)置的了涂身。
(2) 沒有向上取了胖秒。
其實也可以理解济欢,對于(1)可以更加靈活了,甚至可以去考慮非二進(jìn)制下最優(yōu)編碼娜遵,并且香農(nóng)在提出這個的時候是按照10的,此時單位叫做香農(nóng)。(可能有錯)但是a其實一般都不是十分重要害晦,因為不同底只相差一個倍數(shù)關(guān)系。對于(2)因為我們要推廣到更大的使用范圍上,不拘泥于實際編碼中壹瘟,我們的碼位是一個整數(shù)鲫剿。
基本的熵的性質(zhì),最大值稻轨,最小值灵莲,以及熵表示信息的混亂程度不贅述。
3. 各種熵
聯(lián)合熵:
Def:針對兩個隨機(jī)變量X,Y,設(shè)其聯(lián)合分布密度為p(x,y),X,Y的聯(lián)合熵定義為:
條件熵:
Def:針對兩個隨機(jī)變量X,Y,設(shè)其聯(lián)合分布密度為p(x,y),則給定X下Y的條件熵定義為:
注:條件熵的推導(dǎo)是很有啟發(fā)的殴俱,第一式子是定義政冻,最后一個式子一般用來計算,并且可以知道條件熵的定義和一般人想像的不太一樣线欲,不是明场。
理解:
(1)先區(qū)分和
這兩個東西
前者是在給定X下(所謂給定X是給定X分布,不是X已經(jīng)具體某個值了)Y的條件熵李丰。
后者是在X已經(jīng)是具體某個值下的Y的條件熵苦锨。
前者是后者關(guān)于X的期望。
(2)千萬不要理解是
這個“分布”的熵趴泌,因為這個
根本就不是一個分布舟舒。我們提到的條件分布都是在
下
的分布,也就是
才是一個分布嗜憔。從而對于
有了進(jìn)一步的認(rèn)識秃励。并且對于
的定義應(yīng)該可以理解為是合理的。
鏈?zhǔn)揭?guī)則:
鏈?zhǔn)揭?guī)則的推導(dǎo):
理解:這個鏈?zhǔn)揭?guī)則是很重要的痹筛,可以引出互信息莺治。
互信息
這個互信息是基于上述的鏈?zhǔn)揭?guī)則的。
理解:
(1)有一種比較經(jīng)典的理解方式是信息增益帚稠。熵表示數(shù)據(jù)的信息量谣旁,數(shù)據(jù)混亂度越高,信息量越大滋早。而是X的信息量榄审。
是給定Y分布下的X的信息量。那么
也就是說給不給定Y對X信息量的變化影響杆麸。
(2)互信息用在決策樹特征選擇搁进。
針對自然語言處理里的熵和互信息。
- 詞熵(熵率):(待理解多狀態(tài)和多隨機(jī)變量的區(qū)別)
為了能夠?qū)蓚€不同分布的熵進(jìn)行比較昔头,實際情況就如同上面多個最優(yōu)編碼問題之間比如問題1是甲乙兩個人在不在房間饼问,狀態(tài)有4個。問題2是甲乙丙三個人在不在房間揭斧,狀態(tài)有8個莱革。這樣這兩個問題分布的熵是不好進(jìn)行比較的。因為明顯8個狀態(tài)的優(yōu)勢比較大。求和數(shù)目變多了盅视。所以我們應(yīng)該關(guān)注每個狀態(tài)的混亂度(如果從最初的提出捐名,就是每個狀態(tài)所占用的平均二進(jìn)制編碼的平均位數(shù))。
- 點間互信息:
這個是具體兩個事件之間的互信息闹击。不是兩個隨機(jī)變量的镶蹋。在自然語言處理當(dāng)中。對于詞向量{X1,X2}赏半。往往研究的是X1=‘a(chǎn)’ X2='b' 的相互之間的關(guān)系贺归。
相對熵(KL散度):
理解:
相對熵反應(yīng)了對于一個隨機(jī)變量,我們猜測的分布和實際的分布的差異除破。所以可以很直接就能發(fā)現(xiàn)牧氮,我們可以使用這個相對熵來對概率模型進(jìn)行評價。
交叉熵:
理解:
對于相對熵
對于這個式子我們進(jìn)行展開瑰枫。