香农定理解读

前言

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

信息量 (Information Content)

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

I(x)=−log⁡2P(x)(1)I(x) = -\log_2 P(x)\tag{1}

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

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

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

熵 (Entropy)

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

H(X)=−∑iP(xi)log⁡2P(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(X∣Y)(3)I(X;Y) = H(X) - H(X|Y)\tag{3}

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

信道容量 (Channel Capacity)

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

C=max⁡P(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)。

即:

Rs≥H(X)=−log⁡2(P(x))(5)R_s \ge H(X)=-\log_2(P(x))\tag{5}

是数据压缩的下限。

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

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

Rc<C⇒Pe→0(6)R_c < C \Rightarrow P_e \to 0\tag{6}

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

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

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

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

R(D)=min⁡p(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=max⁡P(X)I(X;Y)(8)C = \max_{P(X)} I(X;Y)\tag{8}

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

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

C=Blog⁡2(1+SNR)(9)C=B\log_2(1+\text{SNR})\tag{9}

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

公式数学层面推导

高斯信道模型

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

互信息公式为:

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

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

香农研究的信道为 AWGN:

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

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

求 h(Y|X)

因为 AWGN 中:

{Y∣X=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(Y∣X)=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(Y∣X)(15)I(X;Y)=h(Y)-h(Y|X)\tag{15}

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

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

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

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

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

其中 P 是信号功率。

然后:

Y=X+N∼N(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(Y∣X)=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=B⋅I(X;Y)=B⋅log⁡2(1+PN0B)(21)C = B \cdot I(X;Y) = B\cdot \log_2 \left(1 + \frac{P}{N_0 B}\right)\tag{21}

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

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

物理工程层面推导

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

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

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

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

    每符号信息量≤log⁡2(1+SNR)(23)\text{每符号信息量} \le \log_2(1+\text{SNR})\tag{23}

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

    C=Blog⁡2(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)ln⁡f(x) dx(28)h(f)= -\int f(x)\ln f(x)\,dx\tag{28}

构造拉格朗日函数

L=−∫fln⁡f dx+λ1(∫fdx−1)+λ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=−(ln⁡f+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}

整理:

ln⁡f=−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)=K⋅exp⁡[c⋅(x−μ′)2]K=exp⁡(μb−b24c+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=K∫exp⁡[c⋅(x−μ′)2]dx=1∫xf(x)dx=K∫xexp⁡[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}

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

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

1=∫−∞∞f(x) dx=K∫−∞∞ec(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=1−c∫−∞∞e−t2dt=π−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π−c⇒K=−cπ.(37)1 = K\frac{\sqrt{\pi}}{\sqrt{-c}} \quad\Rightarrow\quad K=\sqrt{\frac{-c}{\pi}}. \tag{37}

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

μ=∫xf(x) dx=K∫xec(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=K∫t2(−c)e−t2dt−c=K1(−c)3/2∫−∞∞t2e−t2dt.(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}

标准高斯积分:

∫−∞∞t2e−t2dt=π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) log⁡fZ(z) dz(52)h(Z) = -\int_{-\infty}^{+\infty} f_Z(z)\,\log f_Z(z)\,dz\tag{52}

高斯随机变量:

Z∼N(μ,σ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) 写出来

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

ln⁡fZ(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}

拆开:

ln⁡fZ(z)=ln⁡12πσ2+ln⁡exp⁡(−(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)ln⁡fZ(z) dz=−E[ln⁡fZ(Z)](57)h(Z) = -\int f_Z(z)\ln f_Z(z)\,dz = -\mathbb{E}[\ln f_Z(Z)]\tag{57}

代入刚才算出来的 ln⁡fZ(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}

常数合并进对数

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

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

于是:

h(Z)=12ln⁡(2πσ2)+12ln⁡e=12ln⁡(2πσ2⋅e)=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 换成 log⁡2\log_2 即可:

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