信息论(英语:information theory)是应用数学、电子学和计算机科学的一个分支,涉及信息的量化、存储和通信等。信息论是由克劳德·香农发展,用来找出信号处理与通信操作的基本限制,如数据压缩、可靠的存储和数据传输等。自创立以来,它已拓展应用到许多其他领域,包括统计推断、自然语言处理、密码学、神经生物学、进化论和分子编码的功能、生态学的模式选择、热物理、量子计算、语言学、剽窃检测、模式识别、异常检测和其他形式的数据分析。
熵是信息的一个关键度量,通常用一条消息中需要存储或传输一个符号的平均比特数来表示。熵衡量了预测随机变量的值时涉及到的不确定度的量。例如,指定掷硬币的结果(两个等可能的结果)比指定掷骰子的结果(六个等可能的结果)所提供的信息量更少(熵更少)。
信息论将信息的传递作为一种统计现象来考虑,给出了估算通信信道容量的方法。信息传输和信息压缩是信息论研究中的两大领域。这两个方面又由信道编码定理、信源-信道隔离定理相互联系。
信息论的基本内容的应用包括无损数据压缩(如ZIP文件)、有损数据压缩(如MP3和JPEG)、信道编码(如数字用户线路(DSL))。这个领域处在数学、统计学、计算机科学、物理学、神经科学和电机工程学的交叉点上。信息论对航海家深空探测任务的成败、光盘的发明、手机的可行性、互联网的发展、语言学和人类感知的研究、对黑洞的了解,以及许多其他领域都影响深远。信息论的重要子领域有信源编码、信道编码、算法复杂性理论、算法信息论、信息论安全性和信息度量等。
信息论简述
信息论的主要内容可以类比人类最广泛的交流手段——语言来阐述。
一种简洁的语言(以英语为例)通常有两个重要特点: 首先,最常用的词(比如”a”、”the”、”I”)应该比不太常用的词(比如”benefit”、”generation”、”mediocre”)要短一些;其次,如果句子的某一部分被漏听或者由于噪声干扰(比如一辆车辆疾驰而过)而被误听,听者应该仍然可以抓住句子的大概意思。而如果把电子通信系统比作一种语言的话,这种健壮性(robustness)是不可或缺的。将健壮性引入通信是通过信道编码完成的。信源编码和信道编码是信息论的基本研究课题。
注意这些内容同消息的重要性之间是毫不相干的。例如,像“多谢;常来”这样的客套话与像“救命”这样的紧急请求在说起来、或者写起来所花的时间是差不多的,然而明显后者更重要,也更有实在意义。信息论却不考虑一段消息的重要性或内在意义,因为这些是数据的质量的问题而不是数据量(数据的长度)和可读性方面上的问题,后者只是由概率这一因素单独决定的。
信息的度量
信息熵
美国数学家克劳德·香农被称为“信息论之父”。人们通常将香农于1948年10月发表于《贝尔系统技术学报》上的论文《通信的数学理论》作为现代信息论研究的开端。这一文章部分基于哈里·奈奎斯特和拉尔夫·哈特利于1920年代先后发表的研究成果。在该文中,香农给出了信息熵的定义:
{\displaystyle H(X)=\mathbb {E} _{X}[I(x)]=\sum _{x\in {\mathcal {X}}}^{}p(x)\log _{2}({\frac {1}{p(x)}})}
其中{\mathcal {X}}为有限个事件x的集合,X是定义在{\mathcal {X}}上的随机变量。信息熵是随机事件不确定性的度量。
信息熵与物理学中的热力学熵有着紧密的联系:
{\displaystyle S(X)=k_{B}H(X)}
其中S(X)为热力学熵,H(X)为信息熵,k_{B}为波兹曼常数。 事实上这个关系也就是广义的波兹曼熵公式,或是在正则系综内的热力学熵表示式。如此可知,玻尔兹曼与吉布斯在统计物理学中对熵的工作,启发了信息论的熵。
信息熵是信源编码定理中,压缩率的下限。当我们用少于信息熵的信息量做编码,那么我们一定有信息的损失。香农在大数定律和渐进均分性的基础上定义了典型集和典型序列。典型集是典型序列的集合。因为一个独立同分布的X序列属于由X定义的典型集的概率大约为1,所以只需要将属于典型集的无记忆X信源序列编为唯一可译码,其他序列随意编码,就可以达到几乎无损失的压缩。
例子
若S为一个三个面的骰子,
P(面一)=1/5,
P(面二)=2/5,
P(面三)=2/5
{\displaystyle 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)}
联合熵与条件熵
联合熵(Joint Entropy)由熵的定义出发,由联合分布,我们有:
{\displaystyle H(X,Y)=\sum _{x\in {\mathcal {X}}}\sum _{y\in {\mathcal {Y}}}^{}p(x,y)\log({\frac {1}{p(x,y)}})}
条件熵(Conditional Entropy),顾名思义,从条件概率p(y|x)做定义:
{\displaystyle H(Y|X)=\sum _{x\in {\mathcal {X}}}\sum _{y\in {\mathcal {Y}}}^{}p(x,y)\log({\frac {1}{p(y|x)}})}
因为由贝叶斯法则,我们有{\displaystyle p(x,y)=p(y|x)p(x)},带入联合熵的定义,可以分离出条件熵,于是得到联合熵与条件熵的关系式:
{\displaystyle H(X,Y)=H(X)+H(Y|X)=H(Y)+H(X|Y)=H(Y,X)}
链式法則
我们可以再对联合熵与条件熵的关系做推广,假设现在有n个随机变量{\displaystyle X_{i},i=1,2,…,n},重复分离出条件熵,我们有:
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})
他的意义显而易见,假如我们接收一段数列{\displaystyle {X_{1},X_{2},…,X_{n}}},且先收到X_1,再来是X_2,依此类推。那么收到X_1后总消息量为{\displaystyle H(X_{1})},收到X_2后总消息量为{\displaystyle H(X_{1})+H(X_{2}|X_{1})},直到收到X_{n}后我们的总消息量应为{\displaystyle H(X_{1},…,X_{n})},于是这个接收过程中就给出了链式法則。
互信息
互信息(Mutual Information)是另一有用的信息度量,它是指两个事件集合之间的相关性。两个事件X和Y的互信息定义为:
{\displaystyle 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之前,我们的不确定性是{\displaystyle H(X)},得到Y后,不确定性是{\displaystyle H(X|Y)}。所以一旦得到Y后,我们消除了{\displaystyle H(X)-H(X|Y)}的不确定量,这就是Y对X的信息量。
如果X,Y互为独立,则{\displaystyle H(X,Y)=H(X)+H(Y)},于是I(X;Y)=0。
又因为{\displaystyle H(X|Y)\leq H(X)},所以
{\displaystyle I(X;Y)\leq \min(H(X),H(Y))},其中等号成立条件为Y=g(X),g是一个双射函数
互信息与G检验以及皮尔森卡方检验有着密切的联系。
跟概率有关内容,可以参考极客本系列文章的《概率分布》。