自然語言處理起航篇之資訊理論基礎(上)

在自然語言處理領域,資訊理論的基礎必不可少。信息這個概念比較抽象,我們常說對某一件事情獲取的信息有很多或很少,但很難說清信息到底有多少。如何對信息進行量化度量?本文對一些概念進行了總結歸納。如下圖所示:

主要涉及各種熵的概念。下面依次進行介紹。

1 熵

熵又稱自信息,可以視為描述一個隨機變數的不確定性的數量(即不確定性的多少)。它表示信源 X 每發一個符號所提供的平均信息量,用於量化信息的度量。比如,如果我們需要了解一件非常不確定的事,或是我們一無所知的事情,就需要了解大量的與該事件相關的信息。相反,如果我們對某件事已經有了較多的了解,那麼不需要太多的信息就能把這件事搞清楚。這個信息的量就是用信息熵來度量,度量單位是比特(bit)。

對於一個變數 xin R ,如果它的發生概率為 p(x) ,那麼,x的熵定義為  H(x) = -sum_{xin R}{p(x) log_2 p(x)} 。假設 R = {x1,x2,...,xn},當n越大時,我們可以看到變數x的不確定就越大,因為它的取值範圍更大了;因此由上述熵的定義可知,熵也就越大了。這樣就是說要搞清變數x(一個事件)所需要的信息量也就越大了。

2 條件熵

在一次考試中,我們想知道小明的成績能考多少(一件事),如果沒有其他任何額外信息的話,我們是很難去猜測小明到底能考多少分的;但是如果我們又知道了小明在前幾次考試中的分數都在80至85分之間波動的,而且還有上升的趨勢,那麼我們現在就可以放心大膽的猜測這次小明能考的分數應該在85分左右了。

從上述例子可以看到,隨著我們知道的信息越多,隨機事件(小明的考試分數)的不確定性就越小。為嚴格描述這些"相關的"信息,以便幫我們消除不確定性,為此,研究者們提出了條件熵的概念。假設我們知道除了x之外,y的一些情況(比如一句話中某個詞的前一個詞的情況),包括它和x一起出現的概率,即x,y的聯合概率分布;以及在y取不同值時x的概率分布,即條件概率分布。則可以定義在Y的條件下X的條件熵為:

H(X|Y) = - sum_{xin X, yin Y}{P(x,y).log P(x|y)}

我們可以證明 H(X)>=H(X|Y) ,也就是說多了Y的信息,關於X的不確定性下降了。等號成立時,說明我們獲取的信息和我們要研究的事物沒有關係,因此信息增多了,不確定性卻沒有降低。

3 互信息

上一節我們知道,隨著我們知道的信息越多,隨機事件的不確定性就會減小。但是這個減少的信息量是多少呢?正好,互信息可用來度量這個減小的量。即知道了Y的值以後X的不確定性的減少量。可以理解為Y的值透露了多少關於X的信息量。也即,「互信息」可以用來對兩個隨機事件「相關性」的量化度量。

假定有兩個隨機事件X和Y,他們的互信息定義如下:

I(X;Y)=sum_{xin X,yin Y}{P(x,y)logfrac{P(x,y)}{P(x)P(y)}}

從上式可以看出,互信息就是隨機事件X的不確定性(熵H(X)),以及在知道隨機變數Y條件下的不確定性(條件熵H(X|Y))之間的差異,即:

I(X;Y)=H(X)-H(X|Y)

推導如下:

sum_{xin X,yin Y}{P(x,y)logfrac{P(x,y)}{P(x)P(y)}}\ = sum P(x,y)logP(x,y) +sum P(x,y)logfrac{1}{P(x)}+sum P(x,y)logfrac{1}{P(y)}\ =-H(X,Y)+H(X)+H(Y)\ =H(X)-H(X|Y)

互信息是一個取值在0到min(H(X), H(Y))之間的函數,當X和Y完全相關時,他取值為1;當他們完全無關時,取值為0 。互信息被廣泛用於度量語言現象的相關性。

4 相對熵

相對熵也叫交叉熵,用來衡量相關性,但與互信息不同的是它用來衡量兩個取值為正數的函數的相似性。定義如下:

KL(f(x)||g(x))=sum_{xin X}f(x)logfrac{f(x)}{g(x)}

三條結論:

  1. 對於兩個完全相同的函數,它們的相對熵等於0
  2. 相對熵越大,函數之間的差異越大,反之~
  3. 對於概率分布或者概率密度函數,如果取值均大於0,相對熵可以度量兩個隨機分布的差異性

在自然語言處理領域,相對熵的應用很多,可以用它都得到信息檢索中的一個重要概念,TF-IDF。

參考資料:

1、吳軍,《數學之美》

2、宗成慶,《統計自然語言處理》

推薦閱讀:

PaperWeekly 第53期 | 更別緻的詞向量模型:Simpler GloVe - Part 2
線下沙龍 x 北京 | NLP專題技術分享會,佔座全憑手速!
論文推薦:機器閱讀理解,問答系統,對話生成 | 本周值得讀 #36
SEO詞庫清洗詞和歸類相關問題?

TAG:自然语言处理 | 机器学习 |