香农定理解读

前言

领域 定理 出处
通信工程界(工程实践导向) 1. 源编码定理(无失真)
2. 信道编码定理(有噪声)
3. 信道容量定理 / 香农第三定理(无误码传输极限)
通信工程、信号系统、光通信教材常用
信息论学术体系(数学原始定义) 1. 无失真信源编码定理
2. 信道编码定理(有噪声信道)
3. 有失真信源编码定理(保失真度准则下的信源编码定理)
源自香农1948年论文的严格定义体系

信息量 (Information Content)

单个符号的不确定性,用来衡量“惊讶程度”:

I(x)=log2P(x)(1)I(x) = -\log_2 P(x)\tag{1}

出现概率越低的信息,包含的信息量越大。

如何理解信息量这个抽象物理概念?

假定我要传达某种物理状态的信息,这种物理状态总共存在八种情况,每种情况需要与一种表示方法一一对应,在机器语言——二进制中需要 log2(8)=3bit\log_2(8)=3 \,\text{bit} 信息来表示。如果我不知道一共存在多少种状态,仅知道某种状态发生的概率为 P(x)P(x),可以推广上面的办法,认为该信息需要 log2P(x)-\log_2 P(x) 的比特数表示

熵 (Entropy)

一个信源平均每个符号包含的信息量(即平均不确定度):

H(X)=iP(xi)log2P(xi)(2)H(X) = -\sum_{i} P(x_i)\log_2 P(x_i)\tag{2}

它是信息源的“无序程度”。熵越大,信息越丰富,也越难压缩。

互信息 (Mutual Information)

两个随机变量 X(输入)和 Y(输出)之间的共享信息量:

I(X;Y)=H(X)H(XY)(3)I(X;Y) = H(X) - H(X|Y)\tag{3}

代表接收端从输出 Y 中获得了多少关于输入 X 的确定性。它描述了“输入输出之间的关联强度”。

信道容量 (Channel Capacity)

信道能无误地传递信息的最大速率:

C=maxP(X)I(X;Y)(4)C = \max_{P(X)} I(X;Y)\tag{4}

它是信道的“极限速率”,由噪声与带宽共同决定。无论用什么编码,只要传输速率 R<CR < C,就存在一种编码方式可以使误码率趋近于零

香农理论的物理图像

含义 类比
信息熵 H(X)H(X) 不确定性 热力学熵
互信息 I(X;Y)I(X;Y) 有效传递信息量 能量传递效率
信道容量 CC 最大可传速率 管道通量极限

它体现了“信息守恒”思想:通信的过程就是在有限带宽、有限功率下,抵抗噪声、提取确定性的过程。


信息论中的三大定理

第一定理:无失真信源编码定理

平均每个符号的信息量不能压缩到低于熵 H(X)H(X)

即:

RsH(X)=log2(P(x))(5)R_s \ge H(X)=-\log_2(P(x))\tag{5}

数据压缩的下限

第二定理:信道编码定理(有噪信道)

若传输速率 R<CR < C,可使误码率趋近于零。若 R>CR > C,误码不可避免。

Rc<CPe0(6)R_c < C \Rightarrow P_e \to 0\tag{6}

这是我们常说的“香农极限”,工程上通常称为“香农第二定理”。

第三定理:有失真信源编码定理(保失真度准则)

这是在“允许一定失真”的情况下(比如图像压缩、语音压缩):

对于允许最大失真 DD 的编码,可以找到最小平均码率 R(D)R(D),它称为率失真函数(Rate–Distortion Function)

R(D)=minp(x^x):E[d(X,X^)]DI(X;X^)(7)R(D) = \min_{p(\hat{x}|x):E[d(X,\hat{X})]\le D} I(X;\hat{X})\tag{7}

也就是说:

  • 若你允许图像稍微模糊(有失真),
  • 那么可以进一步压缩,压缩比由 R(D)R(D) 决定。

这条定理从信息论角度定义了“压缩–失真之间的极限关系”,而不是通信系统的误码极限。


AWGN 信道下的香农信道容量定理

通信教材里的“香农第二定理/第三定理”其实指的是“容量定理”:

若传输速率 R<CR < C,存在编码方式使误码率趋近于 0;若 R>CR > C,任何编码都无法避免误码。

而容量的定义就是:

C=maxP(X)I(X;Y)(8)C = \max_{P(X)} I(X;Y)\tag{8}

这个定理不依赖于 AWGN,不依赖调制,不依赖“电平判决”任何工程细节。

教材中的香农信道容量公式

C=Blog2(1+SNR)(9)C=B\log_2(1+\text{SNR})\tag{9}

实际上是定义式在 AWGN 信道模型下的一个特例求解结果

公式数学层面推导

高斯信道模型

AWGN 下香农信道容量就是对互信息求极值

互信息公式为:

I(X;Y)=h(Y)h(YX)(10)I(X;Y)=h(Y)-h(Y|X)\tag{10}

这里 h()h(\cdot)微分熵(连续随机变量的熵)。

香农研究的信道为 AWGN:

Y=X+N,NN(0,N0B)(11)Y = X + N,\quad N \sim \mathcal{N}(0, N_0 B)\tag{11}

噪声是高斯的,并且独立于输入信号。

求 h(Y|X)

因为 AWGN 中:

{YX=x}=x+N(12)\{Y|X=x\} = x + N\tag{12}

这是一个均值为 xx、方差为 N0BN_0B 的高斯随机变量。

高斯变量的微分熵(后面附推导过程):

h(Z)=12log(2πeσ2)(13)h(Z)=\frac{1}{2}\log(2\pi e \sigma^2)\tag{13}

所以:

h(YX)=12log(2πeN0B)(14)h(Y|X) = \frac{1}{2}\log (2\pi e N_0 B)\tag{14}

这一项与输入分布无关(因为噪声固定)

最大化 h(Y)

注意:

I(X;Y)=h(Y)h(YX)(15)I(X;Y)=h(Y)-h(Y|X)\tag{15}

既然第二项是常数,容量最大化问题变成:

找到一种输入分布 p(x)p(x),使输出 Y=X+NY = X+N 的熵最大。

这就是香农推导的关键,香农最大熵定理:在给定方差的所有实函数中,高斯分布的熵最大(后面附推导过程)。

这给出了 AWGN 信道的最优输入分布:

XN(0,P)(16)X\sim \mathcal{N}(0, P)\tag{16}

其中 P 是信号功率。

然后:

Y=X+NN(0,P+N0B)(17)Y = X+N \sim \mathcal{N}(0, P + N_0 B)\tag{17}

于是输出熵为:

h(Y)=12log(2πe(P+N0B))(18)h(Y) = \frac{1}{2}\log(2\pi e (P+N_0 B))\tag{18}

互信息计算

代入互信息公式:

I(X;Y)=h(Y)h(YX)=12log(2πe(P+N0B))12log(2πeN0B)=12log(1+PN0B)(19)I(X;Y)=h(Y)-h(Y|X)=\frac{1}{2}\log(2\pi e (P+N_0 B))-\frac{1}{2}\log(2\pi e N_0 B)= \frac{1}{2}\log\left(1 + \frac{P}{N_0 B}\right)\tag{19}

单位为 bit / symbol(如果 log 底为 2)

每秒可传多少 symbol?

由于带宽为 B,每秒可传 2B 个独立实采样(奈奎斯特频率)。

但每两个实采样可组成一个复符号,因此有效独立符号率为:

symbol rate=B(20)\text{symbol rate} = B\tag{20}

所以信道容量:

C=BI(X;Y)=Blog2(1+PN0B)(21)C = B \cdot I(X;Y) = B\cdot \log_2 \left(1 + \frac{P}{N_0 B}\right)\tag{21}

这就得到了著名的香农信道容量公式:

C=Blog2(1+SNR)(22)\boxed{C = B\log_2(1+\mathrm{SNR})}\tag{22}

物理工程层面推导

  1. 带宽限制:
    根据奈奎斯特采样定理,为了避免混叠,若每秒最多 2B2B 个采样点,则基带带宽为 BB,有效符号率约为 BB

  2. 信号分辨能力:
    接收端在噪声方差 dn2d_n^2 下,可分辨信号功率范围 ds2d_s^2 被噪声“模糊”为 ds2=ds2+dn2d_s'^2 = d_s^2 + d_n^2

  3. 独立符号区分数:
    电平数近似为功率比 ds2/dn2=1+SNRd_s'^2/d_n^2=1+\text{SNR},因为你必须以至少一个噪声功率为标准做归一化,否则电平间距低于噪声,无法分辨相邻的两个电平,必然造成误码且无法解决。

  4. 每符号信息量(单符号比特数):
    以至少一个噪声功率为标准做归一化,那么就存在一个最大单符号信息量

    每符号信息量log2(1+SNR)(23)\text{每符号信息量} \le \log_2(1+\text{SNR})\tag{23}

  5. 最大每秒信息量(信道容量):
    最大每秒信息量 = 符号率 × 单符号比特数

    C=Blog2(1+SNR)(24)\boxed{C = B \log_2(1+\text{SNR})}\tag{24}

最大微分熵推导(推导高斯分布)

用拉格朗日乘子法最大化微分熵

我们想在以下约束下最大化熵:

  1. PDF 积分为 1

    f(x)dx=1(25)\int f(x)dx = 1\tag{25}

  2. 均值固定

    xf(x)dx=μ(26)\int x f(x)dx = \mu\tag{26}

  3. 方差固定

    (xμ)2f(x)dx=σ2(27)\int (x-\mu)^2 f(x)dx = \sigma^2\tag{27}

目标函数(要最大化)

h(f)=f(x)lnf(x)dx(28)h(f)= -\int f(x)\ln f(x)\,dx\tag{28}

构造拉格朗日函数

L=flnfdx+λ1(fdx1)+λ2(xfdxμ)+λ3((xμ)2fdxσ2)(29)\mathcal{L} = -\int f\ln f \, dx + \lambda_1\left(\int f dx -1\right) + \lambda_2\left(\int x f dx -\mu\right) + \lambda_3\left(\int (x-\mu)^2 f dx -\sigma^2\right)\tag{29}

f(x)f(x) 求变分导数(functional derivative):

δLδf=(lnf+1)+λ1+λ2x+λ3(xμ)2=0(30)\frac{\delta \mathcal{L}}{\delta f} = -(\ln f + 1) + \lambda_1 + \lambda_2 x + \lambda_3 (x-\mu)^2 = 0\tag{30}

整理:

lnf=1+λ1+λ2x+λ3(xμ)2(31)\ln f = -1 + \lambda_1 + \lambda_2 x + \lambda_3 (x-\mu)^2\tag{31}

对两边取指数:

f(x)=exp(a+bx+c(xμ)2)(32)f(x) = \exp(a + b x + c (x-\mu)^2)\tag{32}

这个形式只有在 c < 0 时才可积收敛。

可以看到,该概率密度函数为自然对数指数的二次型形式,该形式在 c < 0 时必然能够化为高斯分布的形式。

将指数里的二次型补成平方项,令 μ=μb2c\mu'=\mu-\frac{b}{2c},(17)就能化为

f(x)=Kexp[c(xμ)2]K=exp(μbb24c+a)=常数(33)\begin{aligned} f(x)&=K\cdot\exp[c\cdot(x-\mu')^2]\\ K&=\exp(\mu b-\frac{b^2}{4c}+a)=\text{常数} \end{aligned}\tag{33}

我们不必纠结常数 KK 中的各个系数具体是多少,因为这个常数后面做归一化的时候能够直接计算出来。

根据前面最大熵优化的约束

{f(x)dx=Kexp[c(xμ)2]dx=1xf(x)dx=Kxexp[c(xμ)2]dx=μ(xμ)2f(x)dx=K(xμ)2exp[c(xμ)2]dx=σ2(34)\left\{ \begin{aligned} &\int f(x)dx=K\int \exp[c\cdot(x-\mu')^2]dx = 1\\ &\int x f(x)dx = K\int x \exp[c\cdot(x-\mu')^2]dx=\mu\\ &\int (x-\mu)^2 f(x) dx = K\int (x-\mu)^2 \exp[c\cdot(x-\mu')^2] dx = \sigma^2 \end{aligned} \right. \tag{34}

现在要求解该积分方程组,得到 ccKKμ\mu' 的解。

先用归一化求 K 和 c 的关系

1=f(x)dx=Kec(xμ)2dx(35)1=\int_{-\infty}^{\infty} f(x)\,dx =K\int_{-\infty}^{\infty} e^{c(x-\mu')^2}dx\tag{35}

t=c(xμ)t=\sqrt{-c}(x-\mu'),则 dx=dt/cdx=dt/\sqrt{-c},得到

ec(xμ)2dx=1cet2dt=πc(36)\int_{-\infty}^{\infty} e^{c(x-\mu')^2}dx =\frac{1}{\sqrt{-c}}\int_{-\infty}^{\infty} e^{-t^2}dt =\frac{\sqrt{\pi}}{\sqrt{-c}}\tag{36}

所以

1=KπcK=cπ.(37)1 = K\frac{\sqrt{\pi}}{\sqrt{-c}} \quad\Rightarrow\quad K=\sqrt{\frac{-c}{\pi}}. \tag{37}

再用均值约束得到 μ’= μ

μ=xf(x)dx=Kxec(xμ)2dx.(38)\mu = \int x f(x)\,dx=K\int x e^{c(x-\mu')^2}dx.\tag{38}

xx 写成 μ+(xμ)\mu' + (x-\mu')

μ=K[μ+(xμ)]ec(xμ)2dx=Kμec(xμ)2dx+K(xμ)ec(xμ)2dx.(39)\mu =K\int \big[\mu' + (x-\mu')\big]e^{c(x-\mu')^2}dx =K\mu'\int e^{c(x-\mu')^2}dx +K\int (x-\mu')e^{c(x-\mu')^2}dx.\tag{39}

第二项是奇函数积分(关于 μ\mu' 对称):

(xμ)ec(xμ)2dx=0.(40)\int_{-\infty}^{\infty} (x-\mu')e^{c(x-\mu')^2}dx = 0.\tag{40}

第一项用归一化结果 ec(xμ)2dx=1/K\int e^{c(x-\mu')^2}dx = 1/K

μ=Kμ1K=μ.(41)\mu = K\mu' \cdot \frac{1}{K} = \mu'.\tag{41}

所以直接得到

μ=μ.(42)\boxed{\mu'=\mu}.\tag{42}

这就把 μ\muμ\mu' 的“冲突”解决了,配方出来的中心 μ\mu' 必须等于约束中的均值 μ\mu,也就是(17)里的 b=0b=0

用方差约束求 c

现在已经知道 μ=μ\mu'=\mu,第三个约束变成

σ2=(xμ)2f(x)dx=K(xμ)2ec(xμ)2dx.(43)\sigma^2 = \int (x-\mu)^2 f(x)\,dx= K\int (x-\mu)^2 e^{c(x-\mu)^2}dx.\tag{43}

同样令 t=c(xμ)t=\sqrt{-c}(x-\mu)dx=dt/cdx=dt/\sqrt{-c}

σ2=Kt2(c)et2dtc=K1(c)3/2t2et2dt.(44)\sigma^2 = K\int \frac{t^2}{(-c)} e^{-t^2}\frac{dt}{\sqrt{-c}} = K\frac{1}{(-c)^{3/2}}\int_{-\infty}^{\infty} t^2 e^{-t^2}dt.\tag{44}

标准高斯积分:

t2et2dt=π2.(45)\int_{-\infty}^{\infty} t^2 e^{-t^2}dt = \frac{\sqrt{\pi}}{2}.\tag{45}

代入得到

σ2=K1(c)3/2π2.(46)\sigma^2 = K\frac{1}{(-c)^{3/2}}\cdot\frac{\sqrt{\pi}}{2}. \tag{46}

把(22)中 K=c/πK=\sqrt{-c/\pi} 代入(31):

σ2=cπ1(c)3/2π2=12(c).(47)\sigma^2 = \sqrt{\frac{-c}{\pi}}\cdot\frac{1}{(-c)^{3/2}}\cdot\frac{\sqrt{\pi}}{2} = \frac{1}{2(-c)}.\tag{47}

所以

c=12σ2.(48)\boxed{c = -\frac{1}{2\sigma^2}}.\tag{48}

回代求 K

c=1/(2σ2)c = -1/(2\sigma^2) 带回 (A):

K=cπ=12σ2π=12πσ2.(49)K = \sqrt{\frac{-c}{\pi}} = \sqrt{\frac{1}{2\sigma^2\pi}} = \frac{1}{\sqrt{2\pi\sigma^2}}.\tag{49}

最终结果

三参数全解出来:

μ=μ,c=12σ2,K=12πσ2.(50)\mu' = \mu,\qquad c = -\frac{1}{2\sigma^2},\qquad K = \frac{1}{\sqrt{2\pi\sigma^2}}.\tag{50}

因此

f(x)=12πσ2exp[(xμ)22σ2].(51)f(x)=\frac{1}{\sqrt{2\pi\sigma^2}} \exp\left[-\frac{(x-\mu)^2}{2\sigma^2}\right].\tag{51}

就是标准的高斯分布,也满足一开始设定的三个最大熵约束。

高斯分布微分熵推导

连续随机变量 ZZ 的微分熵定义是:

h(Z)=+fZ(z)logfZ(z)dz(52)h(Z) = -\int_{-\infty}^{+\infty} f_Z(z)\,\log f_Z(z)\,dz\tag{52}

高斯随机变量:

ZN(μ,σ2)(53)Z \sim \mathcal{N}(\mu,\sigma^2)\tag{53}

它的概率密度为:

fZ(z)=12πσ2exp((zμ)22σ2)(54)f_Z(z) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(z-\mu)^2}{2\sigma^2}\right)\tag{54}

先把 log f(z) 写出来

我们要算的是 logfZ(z)\log f_Z(z),一般先用自然对数(底 ee),后面再换成 log2\log_2

lnfZ(z)=ln[12πσ2exp((zμ)22σ2)](55)\ln f_Z(z) = \ln \left[\frac{1}{\sqrt{2\pi\sigma^2}} \exp\Big(-\frac{(z-\mu)^2}{2\sigma^2}\Big)\right]\tag{55}

拆开:

lnfZ(z)=ln12πσ2+lnexp((zμ)22σ2)(56)\ln f_Z(z) = \ln \frac{1}{\sqrt{2\pi\sigma^2}} + \ln \exp\Big(-\frac{(z-\mu)^2}{2\sigma^2}\Big)\tag{56}

把熵写成“期望”的形式

熵的定义:

h(Z)=fZ(z)lnfZ(z)dz=E[lnfZ(Z)](57)h(Z) = -\int f_Z(z)\ln f_Z(z)\,dz = -\mathbb{E}[\ln f_Z(Z)]\tag{57}

代入刚才算出来的 lnfZ(Z)\ln f_Z(Z) 带入:

h(Z)=E[12ln(2πσ2)(Zμ)22σ2]=E[12ln(2πσ2)+(Zμ)22σ2](58)h(Z) = -\mathbb{E}\left[-\frac{1}{2}\ln(2\pi\sigma^2) - \frac{(Z-\mu)^2}{2\sigma^2}\right] = \mathbb{E}\left[\frac{1}{2}\ln(2\pi\sigma^2) + \frac{(Z-\mu)^2}{2\sigma^2}\right]\tag{58}

把常数从期望里拿出来

12ln(2πσ2)\frac{1}{2}\ln(2\pi\sigma^2) 是常数,不依赖 ZZ,所以:

h(Z)=12ln(2πσ2)+12σ2E[(Zμ)2](59)h(Z) = \frac{1}{2}\ln(2\pi\sigma^2) + \frac{1}{2\sigma^2}\mathbb{E}\big[(Z-\mu)^2\big]\tag{59}

这里 E[(Zμ)2]\mathbb{E}[(Z-\mu)^2] 就是方差:

E[(Zμ)2]=σ2(60)\mathbb{E}[(Z-\mu)^2] = \sigma^2\tag{60}

代入:

h(Z)=12ln(2πσ2)+12σ2σ2=12ln(2πσ2)+12(61)h(Z) = \frac{1}{2}\ln(2\pi\sigma^2) + \frac{1}{2\sigma^2}\cdot \sigma^2 = \frac{1}{2}\ln(2\pi\sigma^2) + \frac{1}{2}\tag{61}

常数合并进对数

因为 lne=1\ln e = 1,所以:

12=12lne(62)\frac{1}{2} = \frac{1}{2}\ln e\tag{62}

于是:

h(Z)=12ln(2πσ2)+12lne=12ln(2πσ2e)=12ln(2πeσ2)(63)h(Z) = \frac{1}{2}\ln(2\pi\sigma^2) + \frac{1}{2}\ln e = \frac{1}{2}\ln\big(2\pi\sigma^2 \cdot e\big) = \frac{1}{2}\ln(2\pi e\sigma^2)\tag{63}

这就是常见的自然对数形式:

h(Z)=12ln(2πeσ2)(单位:nat)(64)\boxed{h(Z)=\frac{1}{2}\ln(2\pi e\sigma^2)} \quad\text{(单位:nat)}\tag{64}

如果想要 bit 为单位,把 ln\ln 换成 log2\log_2 即可:

h(Z)=12log2(2πeσ2)(65)h(Z) = \frac{1}{2}\log_2(2\pi e\sigma^2)\tag{65}