MathLabs

应用与计算数学

信息论

用熵来量化信息量与通信极限的理论,由克劳德·香农创立。

直观猜谜游戏与一条消息究竟传递了多少信息

设想有人抛一枚硬币并告诉你结果。如果硬币是均匀的,每次你都会学到真正令人意外的东西——正面和反面出现的可能性相同,所以你无法提前猜到结果。如果硬币几乎总是正面朝上,听到「正面」几乎没有告诉你任何新东西(你早就料到了),而听到罕见的「反面」则是一个携带更多信息的小小惊喜。信息论把这种日常直觉——罕见、意外的结果比预期中、可预测的结果携带更多信息——变成一个精确的数字。

一条开口向下的抛物线,在水平轴中心达到峰值,在两端降到较低的值,展示了二元熵函数的形状:在两端为零,在概率二分之一处达到最大。
所绘曲线 y=−2x2+1y = -2x^2 + 1 与二元熵函数 H(p)H(p) 具有相同的定性形状:在两端附近很小,在中间达到唯一的峰值。H(p)H(p) 本身在 p=0p=0 和 p=1p=1 处为零(没有意外——结果是确定的),并在 p=0.5p=0.5 处达到峰值(意外最大——均匀硬币)。

中学比特、意外程度与熵公式

定义: 香农熵

对于以概率 pip_i(i=1,…,ni = 1, \dots, n)取值 ii 的随机变量 XX,香农熵 H(X)H(X) 是每个结果的平均意外比特数:H(X)=−∑i=1npilog⁡2piH(X) = -\sum_{i=1}^n p_i \log_2 p_i。项 −log⁡2pi-\log_2 p_i 是结果 ii 的「意外程度」——当 pip_i 小时(罕见、意外)较大,当 pi=1p_i = 1 时(确定、无意外)为 00——而 H(X)H(X) 按每个结果实际发生的频率加权,对这种意外程度取平均。

H(X)=−∑i=1npilog⁡2piH(X) = -\sum_{i=1}^n p_i \log_2 p_i

这里 nn 是可能结果的个数,pip_i 是结果 ii 的概率(满足 ∑ipi=1\sum_i p_i = 1),以 22 为底的对数意味着 H(X)H(X) 以比特为单位度量。最重要的特殊情形是只有两个结果、概率分别为 pp 和 1−p1-p 的硬币:H(p)=−plog⁡2p−(1−p)log⁡2(1−p)H(p) = -p\log_2 p - (1-p)\log_2(1-p),称为二元熵函数。

H(p)=−plog⁡2p−(1−p)log⁡2(1−p)H(p) = -p\log_2 p - (1-p)\log_2(1-p)
几个示例分布的熵,单位为比特
分布熵 H(X)H(X)
均匀硬币,p=(0.5, 0.5)p=(0.5,\,0.5)11 比特(对2个结果为最大值)
偏置硬币,p=(0.9, 0.1)p=(0.9,\,0.1)≈0.469\approx 0.469 比特
在 88 个结果上均匀分布33 比特(=log⁡28=\log_2 8)
确定性分布,p=(1, 0)p=(1,\,0)00 比特(完全没有意外)

大学吉布斯不等式、最优编码与信道容量

给定同一 nn 个结果上的两个概率分布 pp 和 qq,Kullback–Leibler 散度 D(p∥q)D(p\|q) 度量了当结果实际服从 pp 却假设其服从 qq 时「浪费」了多少:D(p∥q)=∑ipilog⁡2piqiD(p\|q) = \sum_{i} p_i \log_2\frac{p_i}{q_i}。这个量正是熵之所以如此表现、以及为何没有编码能突破熵这一下界的根源——两者都是下述不等式的推论。

对同一 nn 个结果上的任意两个概率分布 p=(p1,…,pn)p=(p_1,\dots,p_n) 和 q=(q1,…,qn)q=(q_1,\dots,q_n)(所有 pi,qi>0p_i, q_i > 0),有 D(p∥q)≥0D(p\|q) \ge 0,且等号 D(p∥q)=0D(p\|q) = 0 成立当且仅当 p=qp = q。

为什么成立?

对数是凹函数,因此「平均而言」它位于其切线下方。吉布斯不等式正是将詹森不等式应用于凹函数 log⁡2\log_2(以 pp 加权):它表明,若在对数内部把每个比值 qi/piq_i/p_i 替换为其 pp-加权平均值(恰好等于 11),只会使总和增大,从而迫使该散度必须非负。

证明

从对所有 x>0x > 0 成立的初等不等式 ln⁡x≤x−1\ln x \le x - 1 出发,等号仅在 x=1x=1 处成立(这是因为 f(x)=ln⁡x−(x−1)f(x) = \ln x - (x-1) 满足 f(1)=0f(1)=0,f′(x)=1/x−1f'(x) = 1/x - 1,当 x<1x<1 时为正、当 x>1x>1 时为负,故 ff 在 x=1x=1 处有唯一的最大值)。两边除以 ln⁡2\ln 2 得到 log⁡2x≤(x−1)/ln⁡2\log_2 x \le (x-1)/\ln 2。

对每个 ii 令 x=qi/pix = q_i/p_i 应用此式:log⁡2(qi/pi)≤(qi/pi−1)/ln⁡2\log_2(q_i/p_i) \le (q_i/p_i - 1)/\ln 2。两边乘以 pi>0p_i > 0(不改变不等号方向)并对 ii 求和:∑ipilog⁡2(qi/pi)≤1ln⁡2∑i(qi−pi)=1ln⁡2(∑iqi−∑ipi)=1ln⁡2(1−1)=0\sum_i p_i \log_2(q_i/p_i) \le \frac{1}{\ln 2}\sum_i (q_i - p_i) = \frac{1}{\ln 2}\left(\sum_i q_i - \sum_i p_i\right) = \frac{1}{\ln 2}(1 - 1) = 0,因为 pp 与 qq 都是和为 11 的概率分布。

左边恰好是 −D(p∥q)-D(p\|q)(注意对数内是 qi/piq_i/p_i 而非 pi/qip_i/q_i 所带来的符号翻转),因此这就证明了 D(p∥q)≥0D(p\|q) \ge 0。

处处等号成立要求对每个满足 pi>0p_i > 0 的 ii,ln⁡x≤x−1\ln x \le x-1 都取等号,而这仅当所有这样的 ii 都满足 qi/pi=1q_i/p_i = 1 时才会发生,即 p=qp = q。

为了高效存储或传输 XX 的结果,我们给每个结果 ii 分配一个长度为 lil_i 的二进制码字,并使任何码字都不是另一个码字的前缀(前缀码),这样接收方就能对码字流即时且无歧义地解码。并非任意一组长度都可以实现:前缀码的长度必须满足克拉夫特不等式,∑i=1n2−li≤1\sum_{i=1}^n 2^{-l_i} \le 1。

∑i=1n2−li≤1\sum_{i=1}^n 2^{-l_i} \le 1

对于熵为 H(X)H(X) 的信源 XX,任意前缀码的平均码长 LL 都满足 L≥H(X)L \ge H(X),并且存在一个前缀码满足 H(X)≤L<H(X)+1H(X) \le L < H(X) + 1。

为什么成立?

下界表明熵是一个坚硬的底线:任何无损前缀码平均而言都无法优于每个符号 H(X)H(X) 比特,因为做得更好就要求编码所诱导的分布以吉布斯不等式所禁止的方式偏离 XX 的真实分布。上界表明这个底线几乎可以达到:把每个理想长度 −log⁡2pi-\log_2 p_i 向上取整为整数,平均浪费不到一比特。

证明

对于下界,设 lil_i 为任意前缀码的长度,则 ∑i=1n2−li≤1\sum_{i=1}^n 2^{-l_i} \le 1 成立。令 qi=2−li/Zq_i = 2^{-l_i}/Z,其中 Z=∑j2−lj≤1Z=\sum_j 2^{-l_j} \le 1,于是 qq 是一个概率分布。由吉布斯不等式,0≤D(p∥q)=∑ipilog⁡2(pi/qi)=∑ipilog⁡2pi−∑ipilog⁡2(2−li/Z)=−H(X)+∑ipili+log⁡2Z0 \le D(p\|q) = \sum_i p_i \log_2(p_i/q_i) = \sum_i p_i\log_2 p_i - \sum_i p_i \log_2(2^{-l_i}/Z) = -H(X) + \sum_i p_i l_i + \log_2 Z。由于 Z≤1Z \le 1,故 log⁡2Z≤0\log_2 Z \le 0,因此 0≤−H(X)+L+log⁡2Z≤−H(X)+L0 \le -H(X) + L + \log_2 Z \le -H(X) + L,整理即得 L≥H(X)L \ge H(X)。

对于上界(可达性),对每个 ii 选取 li=⌈−log⁡2pi⌉l_i = \lceil -\log_2 p_i \rceil(将理想长度向上取整为最近的整数)。这些长度满足克拉夫特不等式,因为 2−li≤2−(−log⁡2pi)=pi2^{-l_i} \le 2^{-(-\log_2 p_i)} = p_i,所以 ∑i2−li≤∑ipi=1\sum_i 2^{-l_i} \le \sum_i p_i = 1;根据 Kraft–McMillan 构造,这样的长度总能实现为一个真正的前缀码(在二叉树中逐层分配二进制串来构造编码)。

由向上取整的定义,li<−log⁡2pi+1l_i < -\log_2 p_i + 1。乘以 pi≥0p_i \ge 0 并对 ii 求和得到 L=∑ipili<∑ipi(−log⁡2pi+1)=H(X)+1L = \sum_i p_i l_i < \sum_i p_i(-\log_2 p_i + 1) = H(X) + 1。

结合两部分,这一构造达到了 H(X)≤L<H(X)+1H(X) \le L < H(X) + 1。

现在假设消息通过一个有噪信道发送:当发送 XX 时接收方看到的是 YY,噪声可能翻转符号。互信息 I(X;Y)=H(X)−H(X∣Y)I(X;Y) = H(X) - H(X\mid Y) 度量了平均而言有多少关于 XX 的比特能在噪声中幸存下来——它等于 XX 的熵减去看到 YY 后剩余的不确定性 H(X∣Y)H(X\mid Y)。信道容量 C=max⁡p(x)I(X;Y)C = \max_{p(x)} I(X;Y) 是通过选择最优输入分布 p(x)p(x) 所能达到的最大互信息。

I(X;Y)=H(X)−H(X∣Y)I(X;Y) = H(X) - H(X\mid Y)
C=max⁡p(x)I(X;Y)C = \max_{p(x)} I(X;Y)

最简单的有噪信道是二元对称信道(BSC):每个发送的比特都以交叉概率 pp 独立地被翻转。其容量恰好是 C=1−H(p)C = 1 - H(p),用到了前面同样的二元熵函数 H(p)H(p)——这是信源编码与信道编码这两部分理论之间一座简洁的桥梁。

对于容量为 CC 的离散无记忆信道,只要使用足够长的分组码,在任何满足 R<CR < C 的传输速率 RR(每次信道使用的比特数)下都可以实现可靠通信(错误概率 Pe→0P_e \to 0);反之,在任何 R>CR > C 的速率下,都不存在能使 Pe→0P_e \to 0 的编码方案。

为什么成立?

容量不仅仅是一个方便的公式——它是一堵真实存在的墙。低于它时,把每条消息展开到足够长的分组上,可以让看似随机的码字在噪声中依然可区分,从而把错误率降到零;高于它时,无论编码多么巧妙,信道破坏信息的速度都快于任何编码所能保护的速度。

证明

**逆定理(R>C⇒Pe↛0R > C \Rightarrow P_e \not\to 0)。** Fano 不等式限制了在给定有噪输出的情况下,接收方对消息剩余的不确定性:H(X∣Y)≤1+Pelog⁡2(n−1)H(X\mid Y) \le 1 + P_e \log_2(n-1),其中 nn 是可能消息的个数。同时,信道的数据处理结构迫使每次使用都满足 I(X;Y)≤CI(X;Y) \le C,因此在 NN 次信道使用组成的一个分组上,接收方能提取的总信息至多为 NCNC 比特。若真实速率 R>CR > C(每次使用),则消息携带 NRNR 比特的熵,但信道大约只能提供其中 NC<NRNC < NR 比特;此时 Fano 不等式迫使 PeP_e 在 NN 增大时始终远离 00,因为剩余的不确定性 H(X∣Y)H(X\mid Y) 无法被消除。

**可达性概述(R<C⇒Pe→0R < C \Rightarrow P_e \to 0)。** 固定一个能达到容量的输入分布 p(x)p(x),从 p(x)Np(x)^N 中独立随机生成 2NR2^{NR} 个长度为 NN 的码字,构成码本。解码时,接收方寻找与接收序列联合典型(即统计模式表现得像真正的输入-输出对)的唯一码字。由于 R<CR < C,候选码字数(2NR2^{NR})远小于统计上可区分的信道输出数(≈2NC\approx 2^{NC}),因此当 N→∞N \to \infty 时,某个未发送的其他码字恰好与接收序列联合典型的概率会缩小到 00,平均到码本的随机选择上,解码错误概率也随之缩小——因此至少存在一个码本能达到任意小的 PeP_e。

几种标准离散信道的容量
信道容量 CC
无噪声二元信道每次使用 11 比特
交叉概率为 pp 的二元对称信道C=1−H(p)C = 1 - H(p)
擦除概率为 pp 的二元擦除信道C=1−pC = 1-p
p=0.5p=0.5(完全有噪)二元对称信道C=0C = 0(没有信息能够通过)

大学实际应用与典型例题

每一种压缩或传输数据的数字技术都依赖于这两个定理。信源编码是 ZIP、JPEG 和 MP3 压缩的基础(尽量接近数据的熵);信道编码是 Wi-Fi、深空通信和二维码的基础(加入恰好足够抵御噪声的冗余,但不超过 CC 所要求的量)。

例题: 构造一个恰好达到熵下界的编码

某传感器以概率 p=(0.5, 0.25, 0.125, 0.125)p=(0.5,\,0.25,\,0.125,\,0.125) 报告四种状态之一。求 H(X)H(X),给出满足克拉夫特不等式取等号的前缀码长度 lil_i,并检验所得平均长度 LL 是否恰好等于熵下界。

解答

首先直接由公式计算熵:每一项为 −pilog⁡2pi-p_i\log_2 p_i,得到 −0.5log⁡20.5=0.5-0.5\log_2 0.5 = 0.5,−0.25log⁡20.25=0.5-0.25\log_2 0.25 = 0.5,以及两项各为 −0.125log⁡20.125=0.375-0.125\log_2 0.125 = 0.375。求和:H(X)=0.5+0.5+0.375+0.375=1.75H(X) = 0.5+0.5+0.375+0.375 = 1.75 比特。

由于这里每个概率都是2的幂(2−1,2−2,2−3,2−32^{-1}, 2^{-2}, 2^{-3}, 2^{-3}),理想码长 −log⁡2pi-\log_2 p_i 已经是整数:l=(1,2,3,3)l = (1, 2, 3, 3)。验证克拉夫特不等式:2−1+2−2+2−3+2−3=0.5+0.25+0.125+0.125=12^{-1}+2^{-2}+2^{-3}+2^{-3} = 0.5+0.25+0.125+0.125 = 1,恰好取等号,因此存在恰好具有这些长度的前缀码(例如 0,10,110,1110, 10, 110, 111)。

平均码长为 L=∑ipili=0.5(1)+0.25(2)+0.125(3)+0.125(3)=0.5+0.5+0.375+0.375=1.75L = \sum_i p_i l_i = 0.5(1) + 0.25(2) + 0.125(3) + 0.125(3) = 0.5+0.5+0.375+0.375 = 1.75 比特。

所以 L=H(X)=1.75L = H(X) = 1.75 恰好相等,以等号达到无噪声信源编码定理的下界——这恰恰是因为该分布是二进制的(每个概率都是2的幂),因此把长度取整为整数时没有浪费任何一比特。

例题: 有噪存储芯片需要多少冗余

某闪存单元每个存储比特的原始翻转概率为 p=0.11p=0.11,将其建模为二元对称信道。计算信道容量 CC,并解释这对于要可靠读回数据、需要将多少原始存储容量用于纠错冗余意味着什么。

解答

首先计算 p=0.11p=0.11 处的二元熵:−0.11log⁡20.11≈0.350-0.11\log_2 0.11 \approx 0.350,−0.89log⁡20.89≈0.150-0.89\log_2 0.89 \approx 0.150,所以 H(0.11)≈0.500H(0.11) \approx 0.500 比特。

于是容量为 C=1−H(0.11)≈1−0.500=0.500C = 1 - H(0.11) \approx 1 - 0.500 = 0.500(每个原始存储比特)比特。

这意味着,原则上,一旦加入纠错冗余,原始存储容量中只有大约一半能够可靠地承载信息——每个原始单元速率 RR 接近 C≈0.5C \approx 0.5 比特,是在该信道上任何纠错码在把错误概率推向零的同时所能达到的最佳值;试图达到更高速率的编码无论设计多么精巧都无法做到可靠。

实际中,真正的闪存控制器会使用 BCH 或 LDPC 等纠错码,其速率会被安全地选在这个 0.50.5 比特的理论上限之下,用部分余量换取实际可行的译码复杂度和有限的分组长度。

某信源有三个等可能的结果,p=(1/3, 1/3, 1/3)p=(1/3,\,1/3,\,1/3)。H(X)H(X) 是多少?

根据吉布斯不等式,对于两个概率分布 p,qp, q,D(p∥q)D(p\|q) 可能的最小值是多少?

对于熵为 H(X)H(X) 的信源,关于最优前缀码平均长度 LL,香农无噪声信源编码定理保证了下列哪个陈述?

某二元对称信道的交叉概率为 p=0.5p=0.5(每个比特恰好以二分之一的概率被翻转)。它的容量 CC 是多少?

参考文献

  1. Claude E. Shannon (1948). A Mathematical Theory of Communication
  2. Thomas M. Cover, Joy A. Thomas (2006). Elements of Information Theory
  3. David J. C. MacKay (2003). Information Theory, Inference, and Learning Algorithms
  4. Erdal Arıkan (2009). Channel Polarization: A Method for Constructing Capacity-Achieving Codes for Symmetric Binary-Input Memoryless Channels · arXiv:0807.3917