Skip to content

香农信息论:信道里能可靠传多少比特

WARNING

🧪 Beta公测版本提示:教程主体已完成,正在优化细节,欢迎大家提Issue反馈问题或建议。

笔记本里已有一章 信息论精简:那是给机器学习的——熵、交叉熵、KL。上一章 熵与条件熵 已经有 H(XY)本章是香农原来的通信问题:信源 → 编码 → 噪声信道 → 译码 → 信宿;互信息 I(X;Y) 与容量 C=maxI(X;Y);二元对称信道(BSC)上 C=1h2(p)。无噪压缩见 信源编码;有噪加冗余见 信道编码。读完再进 量子信息,把比特换成量子比特。

两章不要混:精简章几乎不谈编码定理;本章几乎不谈反向 KL 或 ELBO。需要从 BSC 的条件熵推到容量公式时,点开「逐步推导」。


一、香农通信模型

一条消息要经过会出错的管道。模型拆成五块:信源产生符号;编码器变成适合信道的信号;信道用条件分布 p(yx) 掺噪声;译码器从 Y 恢复 X;信宿接收。

香农通信模型

图解说明:绿到粉五段。中间紫块画的是 BSC:比特以概率 p 翻转、以 1p 原样通过。右下:互信息 I(X;Y)=H(X)H(XY);容量是对输入分布取最大;码率 R<C 时存在编码使误差随码长趋于 0(信道编码定理)。

BSC 是最小非平凡信道:输入输出都是 {0,1},对称翻转。交叉概率 p=0 时容量 1 bit/次;p=1/2 时输出与输入独立,容量 0

保姆级:容量不是「调制速率」。 Wi-Fi 广告里的 Gbps 是符号率乘调制阶数,没有扣掉噪声。香农容量是:在这种噪声下,你还想让差错概率任意小,平均每个信道使用最多能扛多少信息比特。超过它,码再聪明也不行;低于它,码够长就行(存在性;构造是下一章 Hamming 以及现代 LDPC / Polar 的事)。


二、二元熵

公平硬币最难猜;确定性硬币熵为 0。伯努利参数 p 的熵(bit,用 log2

h2(p)=plog2p(1p)log2(1p),

p=1/2 取到 1,在 01 两端为 0。这就是精简章里 H(p) 的二元特例;本章要用它写信道容量,而不是写交叉熵损失。

demo 左图就是这条鼓起来的曲线。终端核对 h2(0.5)=1


三、互信息与容量

I(X;Y)=H(Y)H(YX)=H(X)H(XY).

直觉:看见 Y 之后,X 的不确定度掉了多少。Venn 图上是两圈重叠。

互信息

图解说明:左圈 H(X)、右圈 H(Y)、重叠 I(X;Y)、独有部分是条件熵;全部并起来是联合熵 H(X,Y)

对 BSC,H(YX)=h2(p)(噪声与输入独立)。于是

I(X;Y)=h2(P(Y=1))h2(p).

当输入公平 P(X=1)=1/2Y 也公平,I=1h2(p)。可以证明这就是最大值,故

CBSC(p)=1h2(p).

容量不是「传得快就能快」,而是可靠通信的速率上界。超过它,无论码多聪明,误差都不能任意小。

量子侧会把 I(X;Y) 换成 Holevo 量等,但「噪声信道有一个不可逾越的速率」这句话仍在;见 量子信息

逐步推导:BSC 上 I(X;Y)=H(Y)h2(p),以及公平输入达到容量(点击展开)

BSC:Y=XZZBern(p)X 独立。固定 X=x,输出就是「以 p 翻转」,所以 H(YX=x)=h2(p),对 x 平均仍是 h2(p)。因此

I(X;Y)=H(Y)H(YX)=H(Y)h2(p).

Y 仍是伯努利,参数

P(Y=1)=P(X=1)(1p)+P(X=0)p.

q=P(X=1),则 P(Y=1)=q(1p)+(1q)p。二元熵 h21/2 最大、值为 1,所以 H(Y)1,等号当 P(Y=1)=1/2。对对称 BSC,取 q=1/2 即可让 Y 公平,于是 I=1h2(p)。任何偏置都会让 H(Y)<1,互信息更小。故最大值就是容量。

demo 取翻转 p=0.11(接近早期深空码工作点量级):

h2(0.11)0.4999,C0.5001 bit/use.

右图绿线扫描 q=P(X=1),拱形最高点应贴着水平虚线 Cp=0C=1p=1/2h2=1C=0——输出是公平噪声,与输入无关。

逐步推导:信道编码定理在说什么(典型集直觉,不是完整证明)(点击展开)

把信道独立使用 n 次。大约有 2nH(Y) 种「看起来合理」的输出序列,每种输入大约对应 2nH(YX) 种输出云。可分辨的输入云个数大约是

2nH(Y)2nH(YX)=2nI(X;Y)2nC.

你若只挑选 M=2nR 个码字且 R<C,可以把云摆得几乎不重叠,译码「最近云」的差错随 n 趋于 0R>C 时云必然叠,差错有下界。这就是信道编码定理的存在性;Hamming(7,4) 是 n=7 的手工码,不是这个极限。BSC 上把 I 最大化就得到上一则里的 C=1h2(p)。短码怎么做见 Hamming


四、代码在做什么

demo.pyh2(p) 全曲线,以及 C(p)=1h2(p);并在固定翻转 p=0.11 下扫描输入偏置 P(X=1),画出 I(X;Y),水平虚线是容量。终端打印 h2(0.5)=1 与该 BSC 的 C

二元熵与 BSC 容量

p=0.11 接近早期深空码的工作点量级:容量明显小于 1,但远大于 0——值得编码,也必须编码。


五、小结

概念一句话
通信模型信源 / 编码 / 信道 / 译码 / 信宿
h2(p)一比特伯努利的不确定度
I(X;Y)观测 Y 减少了多少对 X 的不确定
容量 Cmaxp(x)I(X;Y);BSC 为 1h2(p)
与 ML 章精简章用同一熵写损失;本章用它写信道

机器学习里的交叉熵 / KL 请走 信息论精简。下一章 信源编码H 变成码长;连续噪声见 高斯信道。量子信道与纠缠请走 量子信息全景

📥 Code

FileViewDownload
demo.pyOpenDownload
exercise.pyOpenDownload

参考

  1. Shannon, “A Mathematical Theory of Communication” (1948)
  2. Cover & Thomas, Elements of Information Theory
  3. MacKay, Information Theory, Inference, and Learning Algorithms