率失真理论
前置知识回顾
率失真理论是信源编码的"有损版本",默认你已经掌握:
前面讲的信源编码基本都在回答一个问题:完全不失真地表示信息,平均至少要多少比特。但现实里的图像、音频、视频并不总要求逐点精确恢复。人眼更关心轮廓,人耳更关心可感知频段,传感系统也常允许一定均方误差。
于是新的问题出现了:
- 如果允许重构和原信号之间存在有限偏差,码率能降到多低?
- "允许的失真"怎么数学化?
- 无损压缩里的熵 $H(X)$,在有损情形里由谁接班?
率失真理论给出的答案是:在失真约束 $D$ 下,最小可达码率由率失真函数 $R(D)$ 决定。
率失真与信道容量的对偶
信道容量:$C = \max_{p(x)} I(X;Y)$ — 对信道取最大互信息,问"最多能传多少",服务于可靠传输。
率失真函数:$R(D) = \min_{p(\hat x|x):\mathbb E[d(X,\hat X)]\le D} I(X;\hat X)$ — 对重构机制取最小互信息,问"最少必须保留多少",服务于高效压缩。
一最大一最小,恰好分别服务于可靠传输与高效压缩——这是同一枚硬币的两面。
设信源序列为 $X^n = (X_1,\dots,X_n)$,编码器把它压缩成一个索引 $W$:
译码器根据索引重构出
于是得到重构序列 $\hat X^n = g_n(f_n(X^n))$。这里:
- $\mathcal X$:源字母表
- $\hat{\mathcal X}$:重构字母表
- $R$:每个源符号允许使用的平均比特数
和无损编码最大区别在于:现在不要求 $\hat X^n = X^n$,只要求它们足够接近,接近程度由失真函数来衡量。
率失真码
一个 $(n, M)$ 率失真码由编码函数 $f_n: \mathcal X^n \to \{1,\dots,M\}$ 和译码函数 $g_n: \{1,\dots,M\} \to \hat{\mathcal X}^n$ 组成。其平均失真为
graph LR
Xn["信源序列 X^n"]
fn["编码器 f_n
X^n → {1,...,2^{nR}}"]
W["索引 W"]
gn["译码器 g_n
{1,...,2^{nR}} → X̂^n"]
Xhat["重构序列 X̂^n"]
Xn --> fn --> W --> gn --> Xhat
style Xn fill:#dbeafe
style Xhat fill:#fef9c3
style fn fill:#d1fae5
style gn fill:#d1fae5
失真函数
单字母失真函数是一个映射
它衡量源符号 $x$ 与重构符号 $\hat x$ 之间的差异。长度为 $n$ 的序列采用平均逐字母失真:
| 失真类型 | 定义 | 适用场景 |
|---|---|---|
| 汉明失真 | $d(x,\hat x) = \mathbf 1\{x \ne \hat x\}$ | 离散符号错误检测 |
| 平方误差 | $d(x,\hat x) = (x - \hat x)^2$ | 连续值重构、图像/音频 |
| 绝对误差 | $d(x,\hat x) = |x - \hat x|$ | 鲁棒回归、感知权衡 |
为什么一定要先定义失真?因为"压缩得好不好"不是客观唯一的。图像里一个像素偏 1 灰度级可能几乎无感,医学影像里同样偏差却可能很关键。率失真理论给的是一套在指定评价标准下的极限。
若源是 i.i.d.,在失真约束 $D$ 下的率失真函数定义为
率失真函数(Rate-Distortion Function)
这条定义需要逐句读:
- $p(\hat x|x)$:把源符号随机映射到重构符号的"虚拟信道"——这是理解率失真最关键的地方
- $\mathbb E[d(X,\hat X)]\le D$:平均失真不能超过允许上限 $D$
- $I(X;\hat X)$:重构里真正保留下来的关于源的信息量
- 取最小值:在达到该保真度的所有方案中,找出必须保留的信息最少是多少
虚拟信道的物理意义
编码和译码组合起来,本质上是在做一件事:把原随机变量 $X$ 变成另一个随机变量 $\hat X$。无论中间用了码本、索引还是查表,最后关心的都是:
- $\hat X$ 和 $X$ 有多像 — 体现为失真约束 $\mathbb E[d(X,\hat X)]\le D$
- $\hat X$ 里保留了多少关于 $X$ 的信息 — 体现为互信息 $I(X;\hat X)$
因此可以把整个编码器 + 译码器抽象成一个从 $X$ 到 $\hat X$ 的条件分布 $p(\hat x|x)$。在所有满足保真度约束的抽象映射里,互信息最低的那条曲线,就是任何实际编码都无法突破的理论下界。
物理意义:在允许平均失真不超过 $D$ 的前提下,每个源符号至少需要多少 bit 才能描述。它是有损压缩世界里对应于熵 $H(X)$ 的基本函数。
信息率失真函数定理(香农第三定理的核心)
对于 i.i.d. 信源 $X$ 和有界失真函数 $d(x,\hat x)$,率失真函数 $R(D)$ 与上述信息率失真函数 $\min I(X;\hat X)$ 相等。这意味着我们只需关注虚拟信道的互信息下界,就能确定理论极限。
$R(D)$ 有几条必须熟悉的结构性质:
| 性质 | 内容 | 直觉来源 |
|---|---|---|
| 单调不增 | $D_1 < D_2 \Rightarrow R(D_1) \ge R(D_2)$ | 放松约束不可能需要更多码率 |
| 凸性 | $R(D)$ 是关于 $D$ 的凸函数 | 时间共享:混合编码不会降低效率 |
| 无损极限 | $R(0) = H(X)$(若零失真等价于完全重构) | 退化为无损熵编码 |
| 零率极限 | 当 $D \ge D_{\max}$ 时,$R(D) = 0$ | 什么都不传,只输出固定值 |
这里 $D_{\max}$ 表示即使完全不传信息,只输出一个固定重构值(如均值),也能达到的最小平均失真。
考试里经常会问:为什么 $R(D)$ 不会上升?为什么是凸的?这两问其实分别对应"放松约束不可能更差"和"时间共享"两个基本逻辑。
与信道容量的完整对比
| 量 | 定义 | 优化方向 | 回答的问题 |
|---|---|---|---|
| 信道容量 $C$ | $\max_{p(x)} I(X;Y)$ | 最大互信息 | 最多能传多少? |
| 率失真函数 $R(D)$ | $\min_{p(\hat x|x):E[d]\le D} I(X;\hat X)$ | 最小互信息 | 最少必须留多少? |
设 $X \sim \mathrm{Bern}(p)$,取值为 $\{0,1\}$,失真度量为汉明失真
则平均失真约束变为
定理 1 · Bernoulli 信源的率失真函数
其中 $H(\cdot)$ 是二元熵函数 $H(q) = -q\log q - (1-q)\log(1-q)$。当 $D \ge \min(p,1-p)$ 时,$R(D) = 0$。
推导过程
设 $p(\hat x|x)$ 为虚拟信道的转移概率,记错误概率(失真)
由互信息链式法则
其中 $H(\Pr(X \ne \hat X))$ 是给定 $\hat X$ 时 $X$ 的条件熵。注意这里有一个关键事实:在汉明失真下,$H(X|\hat X)$ 由失真率 $D$ 唯一决定,与具体的 $p(\hat x|x)$ 无关——因为给定重构值后,源符号的正确与否就是确定性的。
所以
取最小值(实际上这个下界是可达到的),即得上式。
物理意义
- $H(p)$ 是无损描述所需比特——信源本身的随机性
- $H(D)$ 是允许错误带来的"可省掉的信息量"——错误率越高,可以压缩得越多
比如公平二元源 $p = 1/2$ 时,$H(p) = 1$ bit。若允许 $D = 0.1$ 的符号错误率,则
这说明允许 10% 错误后,每个二元符号只需约 0.531 bit,而不再需要 1 bit。
图中可见:当 $D = 0$ 时,$R(0) = H(1/2) = 1$ bit(无损);当 $D = 0.5$ 时,$R(D) = 0$,即任何压缩都无意义,直接传固定值即可。
设连续信源
失真度量采用均方误差
定理 2 · 高斯信源的率失真函数
当 $D \ge \sigma^2$ 时,$R(D) = 0$。
推导过程
对平方误差约束,可令误差 $Z = X - \hat X$,满足 $\mathbb E[Z^2] \le D$。由互信息恒等式
其中 $h(X|\hat X) = h(Z|\hat X) \le h(Z)$,这里用了条件熵上界性质。而对固定方差的随机变量,高斯分布的熵最大:
另一方面,对高斯源
因此
再构造一个 jointly Gaussian 的测试信道即可达到这个下界,于是得到精确表达式。
与信道容量的并排记忆
| 公式 | 含义 |
|---|---|
| $C = \frac12 \log(1 + P/N)$ | 高斯信道最多能传多少 |
| $R(D) = \frac12 \log(\sigma^2/D)$ | 高斯信源最少要留多少 |
一个描述"信道最多能送多少",一个描述"信源至少要留多少"。两者都在用"固定方差下高斯熵最大"这条核心不等式。
图中可见:$D$ 越小,所需码率越大;当 $D$ 趋近于 0 时,$R(D) \to \infty$(这与连续信源需要无限比特描述的事实一致)。当 $D = 0.25$ 时,$R(D) = 0.5 \log_2 4 = 1$ bit/sample。
若有多个独立高斯分量
总平均失真约束为
总率失真函数为
其中最优失真分配由反注水法给出:
这里 $\lambda$ 由总失真约束 $\sum_i D_i = D$ 确定。
反注水法的直观理解
想象有一条水平线(水位)$\lambda$:
- 对于方差 $\sigma_i^2 > \lambda$ 的分量,把失真配额设为 $\lambda$,剩余的失真容忍度"淹没"在统一水位之下(即用满 $\sigma_i^2$)
- 对于方差 $\sigma_i^2 \le \lambda$ 的分量,把失真配额设为 $\sigma_i^2$,即允许最大失真——因为这些分量本身变化就不大,精细描述它们不划算
直觉上:方差大的分量更"值得"花码率去精细刻画,因此给它更小的失真预算;方差很小的分量甚至可以直接被淹没在统一水位之下,不必专门分配码率。
与注水法的对偶
| 场景 | 分配的量 | 优先照顾的对象 | 水位线以下 |
|---|---|---|---|
| 信道注水法(第9章) | 功率 $P_i$ | 信道增益大的好信道 | 噪声大的差信道(不分配功率) |
| 压缩反注水法(第10章) | 失真配额 $D_i$ | 方差大的高能量分量 | 方差小的弱分量(允许最大失真) |
两者是镜像关系:注水法把功率给好信道,反注水法把失真配额留给高能量分量。结构完全对偶,但优化方向相反。
上图中,水位线 $\lambda = 1$:方差为 4 的 $X_1$ 分量只分配 $D_1 = 1$ 的失真预算(其余 3 单位被淹在水位线下);方差为 1 的 $X_2$ 恰好在水位线上,分得 $D_2 = 1$;方差为 0.25 的 $X_3$ 完全淹没,分得最大失真 $D_3 = 0.25$。总失真 $D = 2.25$。
graph LR
subgraph 无损压缩
HX["H(X) = 信源熵"]
lossless["无损编码"]
Xrec["X̂ = X
(逐点恢复)"]
end
subgraph 有损压缩
RD["R(D) = 率失真函数"]
lossy["有损编码"]
Xhat_d["X̂ ≈ X
(失真约束)"]
end
HX --> lossless --> Xrec
RD --> lossy --> Xhat_d
style HX fill:#dbeafe
style RD fill:#fef9c3
style Xrec fill:#d1fae5
style Xhat_d fill:#fde68a
| 维度 | 无损压缩 | 有损压缩 |
|---|---|---|
| 理论极限 | $H(X)$ | $R(D)$ |
| 恢复标准 | $\hat X = X$(精确) | $\mathbb E[d(X,\hat X)] \le D$(允许偏差) |
| 优化方向 | 最小互信息 → 取最大 | 最小互信息 → 取最小 |
| 典型算法 | Huffman、LZ、算术编码 | JPEG、MP3、AAC、AVC、HEVC |
| 应用场景 | 文本、代码、数据文件 | 图像、音频、视频、医学影像 |
率失真定理(香农第三定理 / 有失真信源编码定理)
可达性:若 $R > R(D)$,则存在一列码率为 $R$ 的率失真码,使平均失真不超过 $D$。
不可达性:若 $R < R(D)$,则任何码都做不到。
可达性证明的骨架和信道编码定理高度对应:
- 随机生成重构码书 $\hat X^n(w)$
- 给定源序列 $X^n$,寻找与之"失真典型"的码字
- 若找到则发送索引,译码端输出对应重构
- 利用典型性和大数定律证明高概率满足失真约束
失真典型序列
如果一对序列 $(x^n,\hat x^n)$ 的平均逐字母失真接近目标值 $D$,且联合经验分布接近某个测试信道 $p(\hat x|x)$,那它们就可以视为"匹配得足够好"。
和无损编码靠普通典型集、高斯信道靠联合典型集不同,率失真理论需要"失真典型"这个版本——因为现在不要求"译码得到的必须是原序列",而关心"译码得到的和原序列足够接近"。
逆定理则证明:任何失真不超过 $D$ 的编码,其码率都不能低于 $R(D)$。换句话说,$R(D)$ 不是某种聪明算法的成绩,而是整个世界的底线。
例题:高斯信源的率失真计算
题目:设 $X \sim \mathcal N(0,1)$,目标均方误差 $D = 0.25$。求理论最小码率。
- 识别分布与失真类型:$\sigma^2 = 1$,失真度量为均方误差 MSE。
- 代入公式:$R(D) = \frac12 \log_2 \frac{\sigma^2}{D} = \frac12 \log_2 \frac{1}{0.25}$
- 计算:$R(0.25) = \frac12 \log_2 4 = \frac12 \times 2 = 1$ bit/sample
答案:理论最小码率为 $1$ bit/sample。
例题:Bernoulli 信源的率失真计算
题目:设 $X \sim \mathrm{Bern}(0.3)$,汉明失真,允许错误率 $D = 0.1$,求 $R(D)$。
- 计算 $H(p)$:$H(0.3) = -0.3\log_2 0.3 - 0.7\log_2 0.7 \approx 0.881$ bit
- 计算 $H(D)$:$H(0.1) = -0.1\log_2 0.1 - 0.9\log_2 0.9 \approx 0.469$ bit
- 代入公式:$R(0.1) = H(0.3) - H(0.1) \approx 0.881 - 0.469 = 0.412$ bit/symbol
答案:$R(0.1) \approx 0.412$ bit/symbol。
复习速查
- 定义:$R(D) = \min_{p(\hat x|x):\mathbb E[d(X,\hat X)]\le D} I(X;\hat X)$,物理意义是"在允许平均失真 $D$ 下,每个源符号至少需要多少 bit"。
- 虚拟信道:编码器+译码器抽象为从 $X$ 到 $\hat X$ 的条件分布 $p(\hat x|x)$,在所有满足保真度约束的映射中取互信息最小的那条曲线。
- 对偶:$C = \max I(X;Y)$(最多传多少)vs $R(D) = \min I(X;\hat X)$(最少留多少)。
- Bernoulli:$R(D) = H(p) - H(D)$(汉明失真),$0 \le D \le \min(p,1-p)$。
- 高斯:$R(D) = \frac12 \log(\sigma^2/D)$(平方误差),$0 < D \le \sigma^2$。
- 反注水法:$D_i = \min(\lambda, \sigma_i^2)$,把失真配额留给方差大的分量——与信道注水法镜像对偶。
- 香农第三定理:$R > R(D)$ 则可达,$R < R(D)$ 则不可达。
参考来源
- PDF课程课件:第十章 率失真理论p.1正在渲染 PDF 第 1 页…
课程课件:第十章 率失真理论(PDF 第 1 页) · 打开原文 - Stanford EE376A: Information Theory and Statistics — Lecture Notes
- METU EE533 Information Theory Notes
- Cover & Thomas, Elements of Information Theory, 2nd Edition, Chapter 10
- Rate Distortion Theory (INRIA lecture notes)