ZWZixi Wang
写作

写作 / 信息论

Shannon 信息论完全指南

从信息量、熵和互信息出发,理解压缩极限、信道容量、编码定理,以及它们与现代机器学习的关系。

香农信息论的核心,不是研究“信息表达了什么意义”,而是研究:

在不确定性存在时,如何定量描述信息,以及信息能够以多高的速率被可靠地传输或压缩。

香农在 1948 年发表《A Mathematical Theory of Communication》,建立了现代信息论。它把通信、压缩、噪声与编码统一成了一套数学框架。

一、香农首先做了一个关键抽象

一个通信系统可以写成:

信息源编码器信道解码器接收者\text{信息源} \rightarrow \text{编码器} \rightarrow \text{信道} \rightarrow \text{解码器} \rightarrow \text{接收者}

例如发送一句微信消息:

  • 信息源:想发送的文字;
  • 编码器:文字转成 UTF-8、数据包和无线信号;
  • 信道:网络、光纤或无线电;
  • 噪声:丢包、信号干扰和比特翻转;
  • 解码器:接收端恢复文字。

香农刻意不讨论这句话“有没有意义”,而只讨论:

  1. 发送前,接收者有多不确定;
  2. 收到消息后,不确定性减少了多少;
  3. 最少需要多少比特表示消息;
  4. 有噪声时,最多能以多快速度可靠传输。

这是信息论最深刻的思想之一:

信息不是某个符号本身,而是符号消除的不确定性。

二、信息量:越意外,信息越多

假设某个事件 xx 的概率是 p(x)p(x),香农定义它的信息量为:

I(x)=log2p(x)I(x) = -\log_2 p(x)

单位是 bit。概率越小,事件越意外,信息量越大。

p(x)=1p(x)=1,则 I(x)=0I(x)=0,所以“太阳明天会升起”几乎没有带来新信息。若 p(x)=12p(x)=\frac{1}{2},则:

I(x)=log212=1 bitI(x)=-\log_2\frac{1}{2}=1\text{ bit}

一次公平硬币的结果提供 1 bit 信息。若 p(x)=106p(x)=10^{-6},其信息量约为:

log210619.93 bits-\log_2 10^{-6}\approx19.93\text{ bits}

为什么使用对数?

因为独立事件的概率相乘,而我们希望信息量相加。两个独立事件 x,yx,y 满足:

p(x,y)=p(x)p(y)p(x,y)=p(x)p(y)

因此:

I(x,y)=logp(x,y)=logp(x)logp(y)=I(x)+I(y)I(x,y)=-\log p(x,y)=-\log p(x)-\log p(y)=I(x)+I(y)

三、熵:信息源平均产生多少信息

单个事件的信息量是 I(x)=log2p(x)I(x)=-\log_2p(x)。如果信息源可能产生多个结果,对信息量求期望,就得到

H(X)=xp(x)log2p(x)H(X)=-\sum_x p(x)\log_2p(x)

熵可以理解为平均不确定性、平均惊讶程度、平均信息量,或理想压缩所需平均比特数的下界。

公平硬币

公平硬币满足 p(0)=p(1)=12p(0)=p(1)=\frac{1}{2},因此:

H(X)=12log21212log212=1H(X)=-\frac{1}{2}\log_2\frac{1}{2}-\frac{1}{2}\log_2\frac{1}{2}=1

每次抛硬币平均产生 1 bit 信息。

严重偏置的硬币

假设 p(0)=0.99, p(1)=0.01p(0)=0.99,\ p(1)=0.01,则:

H(X)=0.99log20.990.01log20.010.081H(X)=-0.99\log_2 0.99-0.01\log_2 0.01\approx0.081

虽然每次结果仍然是 0 或 1,但平均信息量只有约 0.0810.081 bit,因为结果几乎总为 0,可预测性很强。连续抛很多次时,可以远低于“每次一个比特”进行压缩。

熵最大的情况

对于 nn 个可能结果,如果所有结果等概率,即 p(xi)=1np(x_i)=\frac{1}{n},熵达到最大值:

H(X)=log2nH(X)=\log_2n

分布越均匀,越难预测,熵越高;分布越集中,越容易预测,熵越低。

熵不是“混乱程度”的严格同义词。它描述的是概率分布上的不确定性。

四、第一大定理:信源编码定理

一个随机信息源理论上最多可以压缩到什么程度?答案是:

平均码长不能长期低于 H(X)\text{平均码长不能长期低于 }H(X)

但在足够长的序列上,可以把平均码长做到任意接近 H(X)H(X)。这就是信源编码定理

假设字符只有 A 和 B,且 p(A)=0.9, p(B)=0.1p(A)=0.9,\ p(B)=0.1。若直接编码为 A → 0、B → 1,每个字符需要 1 bit。但大量字符中,真正经常出现的只是少数“典型序列”,因此可以把常见序列分配短编码,把不常见序列分配长编码。

理论极限是:

H(X)=0.9log20.90.1log20.10.469H(X)=-0.9\log_2 0.9-0.1\log_2 0.1\approx0.469

平均每个字符理论上只需要约 0.4690.469 bit,而不是 1 bit。

信息压缩的本质

压缩不是“删除信息”,而是:

利用概率分布中的非均匀性和冗余性。

英文中 the 比罕见单词更常见,所以应使用更短的表示。Huffman 编码、算术编码、Lempel-Ziv、PNG、ZIP 和神经网络压缩,本质上都在预测概率,并让高概率事件使用更短的码。

这与语言模型关系非常直接。如果模型给真实 token 的概率为 p(x)p(x),编码它所需的理想长度就是 log2p(x)-\log_2p(x)。因此,训练语言模型的交叉熵也可以理解为模型对数据进行无损压缩所需的平均编码长度。

五、联合熵与条件熵

对于两个随机变量 X,YX,Y,联合熵为:

H(X,Y)=x,yp(x,y)logp(x,y)H(X,Y)=-\sum_{x,y}p(x,y)\log p(x,y)

它表示同时描述 X,YX,Y 所需要的信息量,并满足链式法则:

H(X,Y)=H(X)+H(YX)H(X,Y)=H(X)+H(Y|X)

其中 H(YX)H(Y|X)条件熵,表示知道 XX 后,YY 还剩多少不确定性。

如果 Y=XY=X,则 H(YX)=0H(Y|X)=0;知道 XX 后,不需要额外信息就知道 YY。如果 X,YX,Y 完全独立,则 H(YX)=H(Y)H(Y|X)=H(Y),知道 XX 对预测 YY 没有帮助。

六、互信息

互信息定义为:

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

也可以写成:

I(X;Y)=H(X)+H(Y)H(X,Y)I(X;Y)=H(X)+H(Y)-H(X,Y)

它表示观察 YY 后,关于 XX 的不确定性减少了多少。

  • 完全独立:若 p(x,y)=p(x)p(y)p(x,y)=p(x)p(y),则 I(X;Y)=0I(X;Y)=0
  • 完全相同:若 Y=XY=X,则 I(X;Y)=H(X)I(X;Y)=H(X)
  • 部分相关:若 YY 是带噪声的 XX,则 0<I(X;Y)<H(X)0<I(X;Y)<H(X)

互信息比相关系数更一般。相关系数主要测量线性关系,而互信息可以检测更一般的统计依赖。例如 Y=X2Y=X^2,若 XX 关于 0 对称,二者的线性相关系数可能为 0,但显然并不独立。

七、KL 散度

KL 散度定义为:

DKL(PQ)=xP(x)logP(x)Q(x)D_{\mathrm{KL}}(P\|Q)=\sum_xP(x)\log\frac{P(x)}{Q(x)}

它描述真实分布是 PP,但错误地使用 QQ 进行编码时,会额外浪费多少比特。

KL 散度并不是严格意义上的距离,因为 DKL(PQ)DKL(QP)D_{\mathrm{KL}}(P\|Q)\neq D_{\mathrm{KL}}(Q\|P),而且通常不满足三角不等式。但它有一个关键性质:

DKL(PQ)0D_{\mathrm{KL}}(P\|Q)\geq0

当且仅当 P=QP=Q 时等于 0。

交叉熵为:

H(P,Q)=xP(x)logQ(x)H(P,Q)=-\sum_xP(x)\log Q(x)

并满足:

H(P,Q)=H(P)+DKL(PQ)H(P,Q)=H(P)+D_{\mathrm{KL}}(P\|Q)

因为训练数据分布 PP 固定,H(P)H(P) 是常数,所以最小化交叉熵等价于最小化 DKL(PQ)D_{\mathrm{KL}}(P\|Q)

八、通信中的噪声

考虑:

X信道YX\rightarrow\text{信道}\rightarrow Y

发送端发送 XX,接收端收到 YY。由于噪声,YY 不一定等于 XX

例如二元对称信道中,发送 0 或 1 都有概率 ϵ\epsilon 被翻转:

P(YX)=ϵP(Y\neq X)=\epsilon

即使信道有噪声,能否仍然做到几乎零错误传输?香农的答案是:可以,但发送速率不能超过信道容量。

九、信道容量

信道容量定义为:

C=maxp(x)I(X;Y)C=\max_{p(x)}I(X;Y)

它表示通过这个信道,每次使用最多能够可靠传输多少 bit 信息。对输入分布 p(x)p(x) 取最大值,是因为不同输入分布可能产生不同的信息传输效率。

对于错误率为 ϵ\epsilon 的二元对称信道:

C=1H2(ϵ)C=1-H_2(\epsilon)

其中:

H2(ϵ)=ϵlog2ϵ(1ϵ)log2(1ϵ)H_2(\epsilon)=-\epsilon\log_2\epsilon-(1-\epsilon)\log_2(1-\epsilon)
  • ϵ=0\epsilon=0,则 C=1C=1
  • ϵ=0.5\epsilon=0.5,则 C=0C=0,输出与输入完全无关;
  • ϵ=1\epsilon=1,每个 bit 都必然翻转,容量反而仍为 1,因为接收者只需再次翻转。

真正最糟的是 ϵ=0.5\epsilon=0.5,因为此时输出完全随机。

十、第二大定理:有噪信道编码定理

假设信道容量是 CC,传输速率是 RR

如果 R<CR<C,那么存在某种编码方法,使得当码长足够大时,错误概率可以任意接近 0。如果 R>CR>C,那么无论使用什么编码方法,都不可能实现任意可靠的通信。

噪声并不意味着通信必然出错。只要传输速率低于信道容量,就可以通过适当编码将错误率压到任意低。

关键是加入冗余。例如把 0 编码为 000、把 1 编码为 111,收到 010 时可以通过多数投票判断原始信息是 0。

重复码效率很低。现代纠错码使用更精巧的结构,例如 Hamming code、Reed-Solomon code、Turbo code、LDPC code 和 Polar code。

香农没有直接告诉人们最好的编码算法是什么。他证明了:

好编码一定存在,并且存在一个不可突破的理论极限。

十一、信源编码与信道编码

这两个过程方向相反。

信源编码删除冗余,目标是压缩:

原始数据更短表示\text{原始数据}\rightarrow\text{更短表示}

信道编码加入冗余,目标是纠错:

压缩后的数据加入结构化冗余\text{压缩后的数据}\rightarrow\text{加入结构化冗余}

完整通信系统通常是:

数据压缩最简表示纠错编码可抗噪表示\text{数据}\xrightarrow{\text{压缩}}\text{最简表示}\xrightarrow{\text{纠错编码}}\text{可抗噪表示}

压缩删除可预测冗余,纠错加入可用于恢复的冗余,两者并不矛盾。

十二、信源-信道分离定理

如果信息源的熵率是 HH,信道容量是 CC,只要 H<CH<C,原则上就可以先进行最优压缩,再进行最优信道编码,从而实现可靠传输。

这意味着压缩算法、纠错算法和物理信道可以分别设计。不过,在有限码长、实时通信和语义通信等场景下,联合信源-信道编码有时会优于严格分离。

十三、典型集

假设从分布 p(x)p(x) 中独立采样 nn 次:

X1,X2,,XnX_1,X_2,\dots,X_n

绝大多数概率会集中在一个“典型集”中。典型序列大约有 2nH(X)2^{nH(X)} 个,每个典型序列的概率大约是 2nH(X)2^{-nH(X)}

虽然所有可能序列有 Xn|\mathcal{X}|^n 个,但真正承载绝大部分概率质量的序列只有约 2nH(X)2^{nH(X)} 个,所以只需要大约 nH(X)nH(X) 个 bit 来区分它们。

这就是熵成为压缩极限的核心原因。

十四、信息论不等于“语义理论”

香农明确把语义问题排除在通信工程之外。例如“今天下雨”和“地球将在一分钟后毁灭”,如果字符长度和概率结构相似,香农信息量可能接近,但后一句在人类意义上显然更加重要。

香农信息论衡量的不是事实的真理、意义、价值、知识的重要程度或人类理解程度,而是:

在一个概率模型下,消息消除了多少统计不确定性。

这既是它的局限,也是它的力量。排除语义后,理论变得高度普适和可计算。

十五、与机器学习的关系

1. 交叉熵损失

分类模型常用的损失是:

L=logpθ(yx)\mathcal{L}=-\log p_\theta(y|x)

从编码角度看,它表示使用模型 pθp_\theta 编码真实标签所需的码长。模型预测越准确,码长越短。

2. 最大似然估计

最大化 ilogpθ(xi)\sum_i\log p_\theta(x_i) 等价于最小化 ilogpθ(xi)-\sum_i\log p_\theta(x_i),也就是最小化数据的编码长度。概率模型训练可以理解为寻找一个能够最好压缩数据的模型。

3. 语言模型与困惑度

语言模型的平均交叉熵为:

H=1Ni=1Nlog2p(xix<i)H=-\frac{1}{N}\sum_{i=1}^{N}\log_2p(x_i|x_{<i})

困惑度为 PPL=2H\mathrm{PPL}=2^H。如果 H=3H=3,那么 PPL=8\mathrm{PPL}=8,可粗略理解为模型在每个位置面对相当于 8 个等概率候选。

4. 表征学习

假设神经网络得到表征 ZZ。我们希望 I(Z;Y)I(Z;Y) 较大,即 ZZ 包含关于任务标签 YY 的信息;同时可能希望 I(Z;X)I(Z;X) 不要过大,即压缩掉输入 XX 中与任务无关的细节。

这形成信息瓶颈思想:

maxI(Z;Y)βI(Z;X)\max I(Z;Y)-\beta I(Z;X)

不过,在确定性深度网络和连续变量中,直接使用互信息会遇到定义、估计和无穷值问题,不能把这个公式过度字面化。

5. 对比学习

InfoNCE 等对比学习目标常被解释为对互信息下界的优化:拉近相关样本、推远不相关样本,让表征保留跨视图共享信息。但对比学习的成功也不能简单归结为“最大化互信息”,因为过多互信息可能保留无关因素。

6. 生成模型

变分自编码器中的 ELBO:

Eq(zx)[logp(xz)]DKL(q(zx)p(z))\mathbb{E}_{q(z|x)}[\log p(x|z)]-D_{\mathrm{KL}}(q(z|x)\|p(z))

其中 KL 项控制潜变量分布与先验之间的偏离。扩散模型、流模型和语言模型也都与概率建模、熵、似然和编码存在深刻联系。

十六、信息依赖于观察者的模型

事件的信息量是 logp(x)-\log p(x),但这里的 p(x)p(x) 来自观察者使用的概率模型。

例如“明天东京下雪”,对不了解东京气候的人可能很意外,对掌握准确天气预报的人却可能完全不意外。信息量不是消息完全内在的属性,而是相对于某个概率分布定义的。

异常检测因此常用 logpθ(x)-\log p_\theta(x) 作为异常分数。但这会出现“似然悖论”:深度生成模型可能给某些分布外数据更高似然,因为似然还受低层统计特征影响,并不等价于语义上的异常。

十七、香农理论真正革命性的地方

香农理论并不只是提出了熵公式。它最革命性的贡献有三个:

  1. 信息可以脱离具体载体。文字、声音、图片和视频最终都可以转成 bit;
  2. 噪声存在并不阻止可靠通信。编码可以把逻辑错误率降到极低;
  3. 存在清晰的理论极限。数据的压缩程度和信道的传输能力都有不可突破的边界。

这使通信从经验工程变成了极限可证明的数学学科。

十八、用一句话总结每个概念

概念公式直觉
信息量I(x)=logp(x)I(x)=-\log p(x)单个事件有多意外
H(X)=E[logp(X)]H(X)=\mathbb{E}[-\log p(X)]一个随机变量平均有多少不确定性
条件熵H(XY)H(X\mid Y)知道 YY 后,XX 还剩多少不确定性
互信息I(X;Y)=H(X)H(XY)I(X;Y)=H(X)-H(X\mid Y)YY 消除了多少关于 XX 的不确定性
KL 散度DKL(PQ)D_{\mathrm{KL}}(P\|Q)用错误模型描述真实分布时,多付出的编码代价
信道容量C=maxp(x)I(X;Y)C=\max_{p(x)}I(X;Y)一个信道能够可靠传输信息的最大速率

十九、最核心的两条结论

压缩极限

无损压缩的平均码长极限是熵\boxed{\text{无损压缩的平均码长极限是熵}}

通信极限

低于信道容量时,可以实现任意可靠的通信\boxed{\text{低于信道容量时,可以实现任意可靠的通信}}

更抽象地说:

熵描述信息源产生信息的速度,信道容量描述通信系统搬运信息的速度。 只要信息产生速度低于信道搬运速度,就可以可靠通信。