資訊理論

資訊理論（information theory）是應用數學、電子學和電腦科學的一個分支，涉及資訊的量化、存儲和通信等。資訊理論是由克勞德·香農發展，用來找出信號處理與通信操作的基本限制，如數據壓縮、可靠的存儲和數據傳輸等。自創立以來，它已拓展應用到許多其他領域，包括統計推斷、自然語言處理、密碼學、神經生物學、進化論和分子編碼的功能、生態學的模式選擇、熱物理、量子計算、語言學、剽竊檢測、模式識別、異常檢測和其他形式的數據分析。

熵是資訊的一個關鍵度量，通常用一條消息中需要存儲或傳輸一個符號率的平均比特數來表示。熵衡量了預測隨機變量的值時涉及到的不確定度的量。例如，指定擲硬幣的結果（兩個等可能的結果）比指定擲骰子的結果（六個等可能的結果）所提供的資訊量更少（熵更少）。

資訊理論將資訊的傳遞作為一種統計現象來考慮，給出了估算通信信道容量的方法。資訊傳輸和資訊壓縮是資訊理論研究中的兩大領域。這兩個方面又由信道編碼定理、信源－信道隔離定理相互聯繫。

資訊理論的基本內容的應用包括無損數據壓縮（如ZIP文件）、有損數據壓縮（如MP3和JPEG）、信道編碼（如數字使用者線路（DSL））。這個領域處在數學、統計學、電腦科學、物理學、神經科學和電機工程學的交叉點上。資訊理論對航海家深空探測任務的成敗、光碟的發明、手機的可行性、網際網路的發展、語言學和人類感知的研究、對黑洞的了解，以及許多其他領域都影響深遠。資訊理論的重要子領域有信源編碼、信道編碼、演算法複雜性理論、演算法資訊理論、資訊理論安全性和資訊度量等。

## 簡述

資訊理論的主要內容可以類比人類最廣泛的交流手段——語言來闡述。

一種簡潔的語言（以英語為例）通常有兩個重要特點：

首先，最常用的詞（比如"a"、"the"、"I"）應該比不太常用的詞（比如"benefit"、"generation"、"mediocre"）要短一些；其次，如果句子的某一部分被漏聽或者由於噪聲干擾（比如一輛車輛疾馳而過）而被誤聽，聽者應該仍然可以抓住句子的大概意思。而如果把電子通信系統比作一種語言的話，這種健壯性（robustness）是不可或缺的。將健壯性引入通信是通過信道編碼完成的。信源編碼和信道編碼是資訊理論的基本研究課題。

注意這些內容同消息的重要性之間是毫不相干的。例如，像「多謝；常來」這樣的客套話與像「救命」這樣的緊急請求在說起來、或者寫起來所花的時間是差不多的，然而明顯後者更重要，也更有實在意義。資訊理論卻不考慮一段消息的重要性或內在意義，因為這些是數據的質量的問題而不是數據量（數據的長度）和可讀性方面上的問題，後者只是由機率這一因素單獨決定的。

## 資訊的度量

### 資訊熵

美國數學家克勞德·香農被稱為「資訊理論之父」。人們通常將香農於1948年10月發表於《貝爾系統技術學報》上的論文《通信的數學理論》作為現代資訊理論研究的開端。這一文章部分基於哈里·奈奎斯特和拉爾夫·哈特利於1920年代先後發表的研究成果。在該文中，香農給出了資訊熵的定義：

$$H(X)=\mathbb{E}_{X} [I(x)] =\sum_{x\in\mathcal{X}}^{}p(x)\log_2\left(\frac{1}{p(x)}\right)$$

其中$\mathcal{X}$為有限個事件x的集合，$X$是定義在$\mathcal{X}$上的隨機變量。資訊熵是隨機事件不確定性的度量。

資訊熵與物理學中的熱力學熵有著緊密的聯繫:

$$S(X)=k_BH(X)$$

其中S(X)為熱力學熵，H(X)為資訊熵，$k_B$為波茲曼常數。

事實上這個關係也就是廣義的波茲曼熵公式，或是在正則系綜內的熱力學熵表示式。如此可知，玻爾茲曼與吉布斯在統計物理學中對熵的工作，啟發了資訊論的熵。

資訊熵是信源編碼定理中，壓縮率的下限。若編碼所用的資訊量少於資訊熵，則一定有資訊的損失。香農在大數定律和漸進均分性的基礎上定義了典型集和典型序列。典型集是典型序列的集合。因為一個獨立同分布的$X$序列屬於由$X$定義的典型集的機率大約為1，所以只需要將屬於典型集的無記憶$X$信源序列編為唯一可譯碼，其他序列隨意編碼，就可以達到幾乎無損失的壓縮。

#### 例子

設有一個三個面的骰子，三面分別寫有$1, 2, 3$，$X$為擲得的數，擲得各面的機率為

$$\begin{align}\mathbb P(X = 1) & =1/5, \\ \mathbb P(X = 2) & =2/5, \\ \mathbb P(X = 3) & = 2/5, \end{align}$$

則

$$H(X)=\frac{1}{5}\log_2 (5)+\frac{2}{5}\log_2\left(\frac{5}{2}\right)+\frac{2}{5}\log_2\left(\frac{5}{2}\right) \approx 1.522 .$$

### 聯合熵與條件熵

聯合熵（Joint Entropy）由熵的定義出發，計算聯合分布的熵：

$$H(X,Y)=\sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}^{}p(x,y)\log\left(\frac{1}{p(x,y)}\right).$$

條件熵（Conditional Entropy），顧名思義，是以條件機率$p(y|x)$計算：

$$H(Y|X)=\sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}^{}p(x,y)\log\left(\frac{1}{p(y|x)}\right).$$

由貝氏定理，有$p(x,y)=p(y|x)p(x)$，代入聯合熵的定義，可以分離出條件熵，於是得到聯合熵與條件熵的關係式:

$$H(X,Y)=H(X)+H(Y|X)=H(Y)+H(X|Y)=H(Y,X).$$

#### 鏈式法則

可以再對聯合熵與條件熵的關係做推廣，假設現在有$n$個隨機變量$X_i, i=1,2,...,n$，重複分離出條件熵，有：

$$\begin{align} H(X_1,X_2,...,X_n)&=H(X_1)+H(X_2,...,X_n|X_1)\\ &=H(X_1)+H(X_2|X_1)+H(X_3,...,X_n|X_1,X_2)\\ &=H(X_1)+\sum_{i=2}^{n}H(X_i|X_1,...,X_{i-1})\end{align}.$$

其直觀意義如下：假如接收一段數列$\{X_1,X_2,...,X_n\}$，且先收到$X_1$，再來是$X_2$，依此類推。那麼收到$X_1$後總資訊量為$H(X_1)$，收到$X_2$後總資訊量為$H(X_1)+H(X_2|X_1)$，直到收到$X_n$後，總資訊量應為$H(X_1,...,X_n)$，於是這個接收過程給出了鏈式法則。

### 互信息

互信息（Mutual Information）是另一有用的資訊度量，它是指兩個事件集合之間的相關性。兩個事件$X$和$Y$的互信息定義為：

$$I(X;Y) = H(X)-H(X|Y)=H(X) + H(Y) - H(X, Y)=H(Y)-H(Y|X)=I(Y;X).$$

其意義為，$Y$包含$X$的多少資訊。在尚未得到$Y$之前，對$X$的不確定性是$H(X)$，得到$Y$後，不確定性是$H(X|Y)$。所以一旦得到$Y$，就消除了$H(X)-H(X|Y)$的不確定量，這就是$Y$對$X$的資訊量。

如果$X,Y$互為獨立，則$H(X,Y)=H(X)+H(Y)$，於是$I(X;Y)=0$。

又因為$H(X|Y)\leq H(X)$，所以

$$I(X;Y)\leq \min(H(X),H(Y)),$$

其中等號成立條件為$Y=g(X)$，$g$是一個對射函數。

互信息與G檢驗以及皮爾森卡方檢定有著密切的聯繫。

## 應用

資訊理論被廣泛應用在：

- 編碼理論
- 密碼學
- 數據傳輸
- 數據壓縮
- 檢測理論
- 估計理論
- 數據加密