機器學習的信息論基礎

由於csdn的markdown編輯器不支持latex一些語法導致有一些公式無法正常顯示,因此歡迎點擊本文原文 和 關注個人獨立域名博客:SnailDove

自信息1

信息論中,自信息(英語:self-information),由克勞德·香農提出,是與概率空間中的單一事件或離散隨機變量的值相關的信息量的量度。它用信息的單位表示,例如 bitnat或是hart,使用哪個單位取決於在計算中使用的對數的底。自信息的期望值就是信息論中的,它反映了隨機變量採樣時的平均不確定程度。

由定義,當信息被擁有它的實體傳遞給接收它的實體時,僅當接收實體不知道信息的先驗知識時信息纔得到傳遞。如果接收實體事先知道了消息的內容,這條消息所傳遞的信息量就是0。只有當接收實體對消息對先驗知識少於100%時,消息才真正傳遞信息。

因此,一個隨機產生的事件 ωn\omega _{n} 所包含的自信息數量,只與事件發生的機率相關。事件發生的機率越低,在事件真的發生時,接收到的信息中,包含的自信息越大。

I(ωn)=f(P(ωn)) {I} (\omega _{n})=f({P} (\omega _{n}))

如果 P(ωn)=1P{(\omega _{n})=1} ,那麼 I(ωn)=0I(\omega _{n})=0。如果 P(ωn)<1P (\omega _{n})<1 ,那麼 I(ωn)>0I (\omega _{n})>0

此外,根據定義,自信息的量度是非負的而且是可加的。如果事件 CC 是兩個獨立事件 AABB交集,那麼宣告 CC 發生的信息量就等於分別宣告事件 AA 和事件的信息量的 BB

{\displaystyle \operatorname {I} (C)=\operatorname {I} (A\cap B)=\operatorname {I} (A)+\operatorname {I} (B)}

因爲 AABB 是獨立事件,所以 CC 的概率爲

{\displaystyle \operatorname {P} (C)=\operatorname {P} (A\cap B)=\operatorname {P} (A)\cdot \operatorname {P} (B)}

應用函數 f()f(\cdot ) 會得到

{\displaystyle {\begin{aligned}\operatorname {I} (C)&=\operatorname {I} (A)+\operatorname {I} (B)\f(\operatorname {P} (C))&=f(\operatorname {P} (A))+f(\operatorname {P} (B))\&=f{\big (}\operatorname {P} (A)\cdot \operatorname {P} (B){\big )}\\end{aligned}}}

所以函數 f()f(\cdot ) 有性質

{\displaystyle f(x\cdot y)=f(x)+f(y)}

而對數函數正好有這個性質,不同的底的對數函數之間的區別只差一個常數

{\displaystyle f(x)=K\log(x)}

由於事件的概率總是在0和1之間,而信息量必須是非負的,所以 K<0K<0 。考慮到這些性質,假設事件 ωn\omega _{n} 發生的機率是 P(ωn)P(\omega _{n}) ,自信息 I(ωn)I(\omega _{n}) 的定義就是:

事件 ωn\omega _{n} 的概率越小, 它發生後的自信息量越大。

此定義符合上述條件。在上面的定義中,沒有指定的對數的基底:如果以 2 爲底,單位是bit。當使用以 e 爲底的對數時,單位將是 nat。對於基底爲 10 的對數,單位是 hart。

信息量的大小不同於信息作用的大小,這不是同一概念。信息量只表明不確定性的減少程度,至於對接收者來說,所獲得的信息可能事關重大,也可能無足輕重,這是信息作用的大小

信息熵2

熵的計算

如果有一枚理想的硬幣,其出現正面和反面的機會相等,則拋硬幣事件的熵等於其能夠達到的最大值。我們無法知道下一個硬幣拋擲的結果是什麼,因此每一次拋硬幣都是不可預測的。因此,使用一枚正常硬幣進行若干次拋擲,這個事件的熵是一比特,因爲結果不外乎兩個——正面或者反面,可以表示爲0, 1編碼,而且兩個結果彼此之間相互獨立。若進行n獨立實驗,則熵爲n,因爲可以用長度爲n比特流表示。[1]但是如果一枚硬幣的兩面完全相同,那個這個系列拋硬幣事件的熵等於零,因爲結果能被準確預測。現實世界裏,我們收集到的數據的熵介於上面兩種情況之間。

另一個稍微複雜的例子是假設一個隨機變量X,取三種可能值 x1,x2,x3\begin{matrix}x_{1},x_{2},x_{3}\end{matrix},概率分別爲 12,14,14\begin{matrix}{\frac {1}{2}},{\frac {1}{4}},{\frac {1}{4}}\end{matrix},那麼編碼平均比特長度是:12×1+14×2+14×2=32\begin{matrix}{\frac {1}{2}}\times 1+{\frac {1}{4}}\times 2+{\frac {1}{4}}\times 2={\frac {3}{2}}\end{matrix}。其熵爲3/2。

因此熵實際是對隨機變量的比特量和順次發生概率相乘再總和的數學期望

定義

依據Boltzmann’s H-theorem,香農把隨機變量X的熵值 Η(希臘字母Eta)定義如下,其值域爲x1,,xn{x_1, \ldots, x_n}

其中,P爲X概率質量函數(probability mass function),E爲期望函數,而I(X)是X的信息量(又稱爲自信息)。I(X)本身是個隨機變數。

當取自有限的樣本時,熵的公式可以表示爲:

在這裏b對數所使用的,通常是2,自然常數e,或是10。當b = 2,熵的單位是bit;當b = e,熵的單位是nat;而當b = 10,熵的單位是Hart。

pip_i = 0時,對於一些 i 值,對應的被加數 0logb00 log_b 0 的值將會是0,這與極限一致。

信息論3

2.2.1 熵

熵(entropy) 是信息論的基本概念。如果X是一個離散型隨機變量, 取值空間爲R, 其概率分佈爲p(x) =P(X=x) , x∈R。 那麼, X的熵H(X) 定義爲式(2-22) :

(2-22)H(X)=xRp(x)log2p(x) H(X)=-\sum\limits_{x\in \mathbf{R}}\mathcal{p(x)log_{2}p(x)} \tag{2-22}

其中, 約定0log0=0。 H(X) 可以寫爲H(p) 。 由於在公式(2-22) 中對數以2爲底, 該公式定義的熵的單位爲二進制位(bit) 。 通常將 log2p(x)\mathcal{log_2p(x)} 簡寫成 log p(x)\mathcal{log\ p(x)}

熵又稱爲自信息(self-information) , 可以視爲描述一個隨機變量的不確定性的數量 。 它表示信源X每發一個符號(不論發什麼符號) 所提供的平均信息量[姜丹, 2001] 。 一個隨機變量的熵越大, 它的不確定性越大, 那麼, 正確估計其值的可能性就越小。 越不確定的隨機變量越需要大的信息量用以確定其值。

例2-3 假設a, b, c, d, e, f 6個字符在某一簡單的語言中隨機出現,每個字符出現的概率分別爲: 1/8, 1/4, 1/8, 1/4, 1/8和1/8。 那麼, 每個字符的熵爲

這個結果表明, 我們可以設計一種編碼, 傳輸一個字符平均只需要2.5個比特:

字符: a b c d e f編碼:100 00 101 01 110 111 \text{字符: a b c d e f} \\ \text{編碼:100 00 101 01 110 111}

在只掌握關於未知分佈的部分知識的情況下, 符合已知知識的概率分佈可能有多個, 但使熵值最大的概率分佈最真實地反映了事件的分佈情況, 因爲熵定義了隨機變量的不確定性, 當熵最大時, 隨機變量最不確定, 最難準確地預測其行爲。 也就是說, 在已知部分知識的前提下,關於未知分佈最合理的推斷應該是符合已知知識最不確定或最大隨機的推斷。 最大熵概念被廣泛地應用於自然語言處理中, 通常的做法是, 根據已知樣本設計特徵函數, 假設存在 kk 個特徵函數 fi(i1,2,,k)f_i(i=1,2, \ldots, k) ,它們都在建模過程中對輸出有影響, 那麼, 所建立的模型應滿足所有這些特徵的約束, 即所建立的模型p應該屬於這k個特徵函數約束下所產生的所有模型的集合C。 使熵H(p) 值最大的模型用來推斷某種語言現象存在的可能性, 或者作爲進行某種處理操作的可靠性依據, 即:

p^=argmaxpCH(p) \hat{p}=\underset{p\in C}{\arg max}H(p)

2.2.2 聯合熵和條件熵

如果X, Y是一對離散型隨機變量X, Y~p(x, y) , X, Y的聯合熵(joint entropy) H(X, Y) 定義爲

(2-23)H(X,Y)=xXyYp(x,y)log p(x) H(X,Y) = -\sum\limits_{x\in X}\sum\limits_{y\in Y}p(x, y)log\ p(x) \tag{2-23}

聯合熵實際上就是描述一對隨機變量平均所需要的信息量。給定隨機變量X的情況下, 隨機變量Y的條件熵(conditional entropy) 由式(2-24) 定義:

KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ H(Y|X) &= \sum…

將式(2-23) 中的聯合概率log p(x, y) 展開,
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ H(X, Y) &= -\s…
可得我們稱式(2-25) 爲熵的連鎖規則(chain rule for entropy) 。 推廣到一般情況, 有
H(X1,X2,,Xn)H(X1)H(X2X1)++H(XnX1, ,Xn1) H(X_1, X_2, \ldots, Xn) = H(X_1) + H(X_2|X_1) + \ldots + H(X_n|X_1, \cdots, X_{n-1})

例2-4 假設某一種語言的字符有元音和輔音兩類, 其中, 元音隨機變量V={a, i, u}, 輔音隨機變量C={p, t, k}。 如果該語言的所有單詞都由輔音-元音(consonant-vowel, C-V) 音節序列組成, 其聯合概率分佈P(C, V) 如表2-1所示。

根據表2-1中的聯合概率, 我們不難算出p, t, k, a, i, u這6個字符的邊緣概率分別爲: 1/8, 3/4, 1/8, 1/2, 1/4, 1/4。 但需要注意的是, 這些邊緣概率是基於音節的, 每個字符的概率是其基於音節的邊緣概率的1/2, 因此, p, t, k, a, i, u 6個字符中的每個字符的概率值實際上爲: 1/16, 3/8, 1/16, 1/4, 1/8, 1/8。
現在來求聯合熵。 計算聯合熵的方法有多種, 以下采用的是連鎖規則方法。
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ H(C) &= -\sum\…
根據表2-1給出的聯合概率和邊緣概率, 容易計算出條件概率。 例如,
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ p(\mathrm{a|p}…
爲了簡化起見, 我們將條件熵 c=p,t,kH(Vc)=c=p,t,kp(Vc)log2p(Vc)\sum\limits_{c=p,t,k}H(V|c) = - \sum\limits_{c=p,t,k}p(V|c)\mathrm{log_2}p(V|c) 記爲 H(12,12,0)H(\frac{1}{2}, \frac{1}{2}, 0) 。 其他的情況類似。 因此, 我們得到如下條件熵:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ H(V|C) &= \sum…
因此,
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ H(C, V) &= H(C…
一般地, 對於一條長度爲n的信息, 每一個字符或字的熵爲
(2-26)Hrate=1nH(X1n)=1nx1np(x1n)log p(x1n) H_{rate}=\frac{1}{n}H(X_{1n}) = -\frac{1}{n}\sum\limits_{x_{1n}}p(x_{1n})\mathrm{log}\,p(x_{1n}) \tag{2-26}
這個數值稱爲熵率(entropy rate) 。 其中, 變量 X1nX_{1n} 表示隨機變量序列 (X1,X2,,Xn),x1n(x1,x2,,xn)(X_1, X_2, \ldots, X_n), x_{1n}=(x_1, x_2, \ldots, x_n) 。 以後我們採用類似的符號標記。

如果假定一種語言是由一系列符號組成的隨機過程, L(Xi)L=(X_i) ,例如, 某報紙的一批語料, 那麼, 我們可以定義這種語言L的熵作爲其隨機過程的熵率, 即
(2-27)Hrate(L)=limn1nH(X1,X2, ,Xn) H_{rate}(L) = \lim_{n\rightarrow\infty}{1\over n}H(X_1, X_2, \cdots, X_n) \tag{2-27}
我們之所以把語言L的熵率看作語言樣本熵率的極限, 因爲理論上樣本可以無限長。

2.2.3 互信息

根據熵的連鎖規則, 有
H(X,Y)H(X)H(YX)H(Y)H(XY) H(X, Y) =H(X) +H(Y|X) =H(Y) +H(X|Y)
因此,
H(X)H(XY)H(Y)H(YX) H(X) - H(X|Y) =H(Y) - H(Y|X)
這個差叫做X和Y的互信息(mutual information, MI) , 記作I(X; Y) 。或者定義爲: 如果(X, Y) ~p(x, y) , 則X, Y之間的互信息 I(X;Y) =H(X)- H(X|Y) 。

I(X; Y) 反映的是在知道了Y的值以後X的不確定性的減少量。 可以理解爲Y的值透露了多少關於X的信息量。互信息和熵之間的關係可以用圖2-1表示。

如果將定義中的H(X) 和H(X|Y) 展開, 可得
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ I(X;Y) &= H(X)…

由於H(X|X) =0, 因此,
H(X)H(X)H(XX)I(X;X) H(X) =H(X) -H(X|X) =I(X;X)
這一方面說明了爲什麼熵又稱爲自信息, 另一方面說明了兩個完全相互依賴的變量之間的互信息並不是一個常量, 而是取決於它們的熵

實際上, 互信息體現了兩變量之間的依賴程度: 如果 I(X;Y)0I(X; Y) \gg 0 , 表明X和Y是高度相關的; 如果 I(X;Y)=0I(X; Y) = 0 , 表明X和Y是相互獨立的; 如果 I(X;Y)0I(X; Y) \ll 0 , 表明Y的出現不但未使X的不確定性減小, 反而增大了 X的不確定性, 常是不利的 。 平均互信息量是非負的。同樣, 我們可以推導出條件互信息和互信息的連鎖規則
(2-29)I(X;YZ)=I((X;Y)Z)=H(XZ)H(XY,Z) I(X;Y|Z) = I((X;Y)|Z) = H(X|Z) - H(X|Y,Z) \tag{2-29}

KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ I(X_{1n};Y) &=…

互信息在詞彙聚類(word clustering) 、 漢語自動分詞、 詞義消歧等問題的研究中具有重要用途。

2.2.4 相對熵

相對熵(relative entropy) 又稱Kullback-Leibler差異(KullbackLeibler divergence) , 或簡稱KL距離, 是衡量相同事件空間裏兩個概率分佈相對差距的測度。 兩個概率分佈p(x) 和q(x) 的相對熵定義爲
(2-31)D(pq)=xXp(x)logp(x)q(x) D(p\|q) = \sum\limits_{x\in X}p(x)log\frac{p(x)}{q(x)} \tag{2-31}
該定義中約定 0log(0/q)0,plog(p/0)0\mathrm{log}(0/q) =0, p\mathrm{log}(p/0) =\infty 。 表示成期望值爲
(2-32)D(pq)=Ep(logp(x)q(x)) D(p\|q) = E_p\left(\mathrm{log}\frac{p(x)}{q(x)}\right) \tag{2-32}
顯然, 當兩個隨機分佈完全相同時, 即p=q, 其相對熵爲0。 當兩個隨機分佈的差別增加時, 其相對熵期望值也增大

互信息實際上就是衡量一個聯合分佈與獨立性差距多大的測度:
(2-33)I(X;Y)=D(p(x,y)p(x)p(y)) I(X;Y)=D(p(x,y)\|p(x)p(y)) \tag{2-33}
證明:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ I(X,Y)&=H(X)-H…
同樣, 我們也可以推導出條件相對熵和相對熵的連鎖規則:
(2-34)D(p(yx)q(yx))=xp(x)yp(yx)logp(yx)q(yx) D(p(y|x)\|q(y|x)) =\sum\limits_{x}p(x)\sum\limits_{y}p(y|x)\mathrm{log}\frac{p(y|x)}{q(y|x)} \tag{2-34}

(2-35)D(p(x,y)q(x,y))=D(p(x)q(x))+D(p(yx)q(yx)) D(p(x,y)\|q(x,y))=D(p(x)\|q(x))+D(p(y|x)\|q(y|x)) \tag{2-35}

2.2.5 交叉熵

根據前面熵的定義, 知道熵是一個不確定性的測度, 也就是說, 我們對於某件事情知道得越多, 那麼, 熵就越小, 因而對於試驗的結果我們越不感到意外。 交叉熵的概念就是用來衡量估計模型與真實概率分佈之間差異情況的。如果一個隨機變量X~p(x) , q(x) 爲用於近似p(x) 的概率分佈, 那麼, 隨機變量X和模型q之間的交叉熵(cross entropy) 定義爲
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ H(X,q) &= H(X)…
由此, 可以定義語言 L(Xi)p(x)L=(X_i) \sim p(x) 與其模型q的交叉熵爲
(2-37)H(L,q)=limn1nx1nx1n H(L,q)=-\lim_{n\rightarrow \infty}\frac{1}{n}\sum\limits_{x_1^n}\mathrm{x_1^n} \tag{2-37}
其中, X1nx1,x2,,xnX_1^n=x_1, x_2, \ldots , x_n ,爲 L 的語句, p(X1n)p(X_1^n) 爲 L 中 X1nX_1^n 的概率,q(X1n)q(X_1^n) 爲模型 q 對 X1nX_1^n 的概率估計。 至此, 仍然無法計算這個語言的交叉熵, 因爲我們並不知道真實概率 p(X1n)p(X_1^n) , 不過可以假設這種語言是“理想”的, 即n趨於無窮大時, 其全部“單詞”的概率和爲1。 也就是說, 根據信息論的定理: 假定語言L是穩態(stationary) 遍歷的(ergodic) 隨機過程, L與其模型q的交叉熵計算公式就變爲
(2-38)H(L,q)=limn1nlogq(x1n) H(L,q)=-\lim_{n\rightarrow\infty}\frac{1}{n}\mathrm{log}q(x_1^n) \tag{2-38}
由此, 可以根據模型q和一個含有大量數據的L的樣本來計算交叉熵。 在設計模型q時, 目的是使交叉熵最小, 從而使模型最接近真實的概率分佈p(x) 。 一般地, 在n足夠大時我們近似地採用如下計算方法:
(2-39)H(L,q)1nlogq(x1n) H(L, q) \approx -\frac{1}{n}\mathrm{log}q(x_1^n) \tag{2-39}
交叉熵與模型在測試語料中分配給每個單詞的平均概率所表達的含義正好相反, 模型的交叉熵越小, 模型的表現越好。

引用


  1. wkipedia 自信息 ↩︎

  2. wikipedia 信息熵 ↩︎

  3. 統計自然語言處理,第2版,宗慶成 ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章