ESC
输入关键词搜索文章
目录

率失真理论

信息论 · 第10章
允许一点失真,能把信息压到多低,这是有损压缩的理论底线
6核心概念
3率失真函数
8关键公式
4配图

前置知识回顾

率失真理论是信源编码的"有损版本",默认你已经掌握:

  • 互信息 $I(X;Y)$ 的定义与性质。去哪里补:第6章 互信息
  • 信道容量 $C = \max_{p(x)} I(X;Y)$ — 问的是"最多能传多少"。率失真问的是"最少要留多少"。去哪里补:第9章 信道容量
  • 高斯信道容量 $C = \frac12\log(1+P/N)$ — 与高斯信源率失真公式高度平行。去哪里补:第9章。
  • 熵函数 $H(p)$ 的凸性和二元形式。
10.1 · 问题动机
为什么无损压缩还不够

前面讲的信源编码基本都在回答一个问题:完全不失真地表示信息,平均至少要多少比特。但现实里的图像、音频、视频并不总要求逐点精确恢复。人眼更关心轮廓,人耳更关心可感知频段,传感系统也常允许一定均方误差。

于是新的问题出现了:

  • 如果允许重构和原信号之间存在有限偏差,码率能降到多低?
  • "允许的失真"怎么数学化?
  • 无损压缩里的熵 $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)$ — 对重构机制取最小互信息,问"最少必须保留多少",服务于高效压缩。

一最大一最小,恰好分别服务于可靠传输与高效压缩——这是同一枚硬币的两面。

PDF率失真理论的动机p.1
正在渲染 PDF 第 1 页…
率失真理论的动机(PDF 第 1 页) · 打开原文
10.2 · 模型定义
率失真模型是什么

设信源序列为 $X^n = (X_1,\dots,X_n)$,编码器把它压缩成一个索引 $W$

$$f_n:\mathcal X^n \to \{1,2,\dots,2^{nR}\}$$

译码器根据索引重构出

$$g_n:\{1,2,\dots,2^{nR}\} \to \hat{\mathcal X}^n$$

于是得到重构序列 $\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$ 组成。其平均失真为

$$d_n = \frac1n \sum_{i=1}^n \mathbb E\big[d(X_i,\hat X_i)\big]$$
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
和有损压缩系统的联系:JPEG 把图像变换到频域后,对不同频率系数分配不同精度——本质上是在做失真预算分配。MP3 利用感知模型把失真放在人耳不敏感的频带。率失真理论给所有这些实践划定了理论底线。
PDF率失真模型p.4
正在渲染 PDF 第 4 页…
率失真模型(PDF 第 4 页) · 打开原文
10.3 · 失真度量
失真度量怎么定义

失真函数

单字母失真函数是一个映射

$$d(x,\hat x):\mathcal X \times \hat{\mathcal X} \to [0,\infty)$$

它衡量源符号 $x$ 与重构符号 $\hat x$ 之间的差异。长度为 $n$ 的序列采用平均逐字母失真:

$$d(x^n,\hat x^n) = \frac1n \sum_{i=1}^n d(x_i,\hat x_i)$$
失真类型定义适用场景
汉明失真$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 灰度级可能几乎无感,医学影像里同样偏差却可能很关键。率失真理论给的是一套在指定评价标准下的极限。

PDF失真度量p.5
正在渲染 PDF 第 5 页…
失真度量(PDF 第 5 页) · 打开原文
10.4 · 核心定义
率失真函数 R(D) 的定义

若源是 i.i.d.,在失真约束 $D$ 下的率失真函数定义为

率失真函数(Rate-Distortion Function)

$$R(D) = \min_{p(\hat x|x):\ \mathbb E[d(X,\hat X)]\le D} I(X;\hat X)$$

这条定义需要逐句读:

  • $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)$ 相等。这意味着我们只需关注虚拟信道的互信息下界,就能确定理论极限。

PDF率失真函数定义p.8
正在渲染 PDF 第 8 页…
率失真函数定义(PDF 第 8 页) · 打开原文
10.5 · 基础性质
R(D) 的四条结构性质

$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)$最小互信息最少必须留多少?
10.6 · Bernoulli 信源
二元信源的率失真函数推导

$X \sim \mathrm{Bern}(p)$,取值为 $\{0,1\}$,失真度量为汉明失真

$$d(x,\hat x) = \mathbf 1\{x \ne \hat x\}$$

则平均失真约束变为

$$\mathbb E[d(X,\hat X)] = \Pr(X \ne \hat X) \le D$$

定理 1 · Bernoulli 信源的率失真函数

$$R(D) = H(p) - H(D), \qquad 0 \le D \le \min(p,1-p)$$

其中 $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)$ 为虚拟信道的转移概率,记错误概率(失真)

$$\Pr(X \ne \hat X) = p(0) \cdot p(\hat x=1|X=0) + p(1) \cdot p(\hat x=0|X=1) = D$$

由互信息链式法则

$$I(X;\hat X) = H(X) - H(X|\hat X) = H(p) - H(\Pr(X \ne \hat X))$$

其中 $H(\Pr(X \ne \hat X))$ 是给定 $\hat X$$X$ 的条件熵。注意这里有一个关键事实:在汉明失真下,$H(X|\hat X)$ 由失真率 $D$ 唯一决定,与具体的 $p(\hat x|x)$ 无关——因为给定重构值后,源符号的正确与否就是确定性的。

所以

$$I(X;\hat X) = H(p) - H(D)$$

取最小值(实际上这个下界是可达到的),即得上式。

物理意义

  • $H(p)$ 是无损描述所需比特——信源本身的随机性
  • $H(D)$ 是允许错误带来的"可省掉的信息量"——错误率越高,可以压缩得越多

比如公平二元源 $p = 1/2$ 时,$H(p) = 1$ bit。若允许 $D = 0.1$ 的符号错误率,则

$$R(0.1) = 1 - H(0.1) \approx 1 - 0.469 = 0.531 \ \text{bit/symbol}$$

这说明允许 10% 错误后,每个二元符号只需约 0.531 bit,而不再需要 1 bit。

Bernoulli 信源的率失真函数 R(D)(固定 p = 0.5,D ∈ [0, 0.5])JSXGraph
Bernoulli 信源的率失真函数 R(D)(固定 p = 0.5,D ∈ [0, 0.5])

图中可见:当 $D = 0$ 时,$R(0) = H(1/2) = 1$ bit(无损);当 $D = 0.5$ 时,$R(D) = 0$,即任何压缩都无意义,直接传固定值即可。

PDF二元信源率失真函数p.14
正在渲染 PDF 第 14 页…
二元信源率失真函数(PDF 第 14 页) · 打开原文
10.7 · 高斯信源
高斯信源的率失真函数推导

设连续信源

$$X \sim \mathcal N(0,\sigma^2)$$

失真度量采用均方误差

$$d(x,\hat x) = (x - \hat x)^2$$

定理 2 · 高斯信源的率失真函数

$$R(D) = \frac12 \log \frac{\sigma^2}{D}, \qquad 0 < D \le \sigma^2$$

$D \ge \sigma^2$ 时,$R(D) = 0$

推导过程

对平方误差约束,可令误差 $Z = X - \hat X$,满足 $\mathbb E[Z^2] \le D$。由互信息恒等式

$$I(X;\hat X) = h(X) - h(X|\hat X)$$

其中 $h(X|\hat X) = h(Z|\hat X) \le h(Z)$,这里用了条件熵上界性质。而对固定方差的随机变量,高斯分布的熵最大:

$$h(Z) \le \frac12 \log(2\pi e \cdot D)$$

另一方面,对高斯源

$$h(X) = \frac12 \log(2\pi e \sigma^2)$$

因此

$$I(X;\hat X) \ge \frac12 \log(2\pi e\sigma^2) - \frac12 \log(2\pi eD) = \frac12 \log \frac{\sigma^2}{D}$$

再构造一个 jointly Gaussian 的测试信道即可达到这个下界,于是得到精确表达式。

为什么阈值正好是 $\sigma^2$当你什么都不传,直接令重构恒为 0 时,平均失真就是 $\mathbb E[(X-0)^2] = \sigma^2$。所以失真要求若比这还宽松,就连 1 bit 都不必发。

与信道容量的并排记忆

公式含义
$C = \frac12 \log(1 + P/N)$高斯信道最多能传多少
$R(D) = \frac12 \log(\sigma^2/D)$高斯信源最少要留多少

一个描述"信道最多能送多少",一个描述"信源至少要留多少"。两者都在用"固定方差下高斯熵最大"这条核心不等式。

高斯信源的率失真函数 R(D)(σ²=1,D ∈ [0, 1])JSXGraph
高斯信源的率失真函数 R(D)(σ²=1,D ∈ [0, 1])

图中可见:$D$ 越小,所需码率越大;当 $D$ 趋近于 0 时,$R(D) \to \infty$(这与连续信源需要无限比特描述的事实一致)。当 $D = 0.25$ 时,$R(D) = 0.5 \log_2 4 = 1$ bit/sample。

PDF高斯信源率失真函数p.18
正在渲染 PDF 第 18 页…
高斯信源率失真函数(PDF 第 18 页) · 打开原文
10.8 · 并联高斯信源
反注水法与注水法的对偶

若有多个独立高斯分量

$$X_i \sim \mathcal N(0,\sigma_i^2), \qquad i = 1,\dots,m$$

总平均失真约束为

$$\sum_{i=1}^m D_i \le D$$

总率失真函数为

$$R(D) = \sum_{i=1}^m \frac12 \log \frac{\sigma_i^2}{D_i}$$

其中最优失真分配由反注水法给出:

$$D_i = \min(\lambda, \sigma_i^2)$$

这里 $\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$方差大的高能量分量方差小的弱分量(允许最大失真)

两者是镜像关系:注水法把功率给好信道,反注水法把失真配额留给高能量分量。结构完全对偶,但优化方向相反。

反注水法失真分配可视化(三个高斯分量,σ² = {4, 1, 0.25})JSXGraph
反注水法失真分配可视化(三个高斯分量,σ² = {4, 1, 0.25})

上图中,水位线 $\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$

PDF并联高斯信源与反注水法p.22
正在渲染 PDF 第 22 页…
并联高斯信源与反注水法(PDF 第 22 页) · 打开原文
10.9 · 有损 vs 无损
有损压缩与无损压缩的对比
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
应用场景文本、代码、数据文件图像、音频、视频、医学影像
10.10 · 核心定理
率失真定理:香农第三定理

率失真定理(香农第三定理 / 有失真信源编码定理)

可达性:若 $R > R(D)$,则存在一列码率为 $R$ 的率失真码,使平均失真不超过 $D$

不可达性:若 $R < R(D)$,则任何码都做不到。

可达性证明的骨架和信道编码定理高度对应:

  1. 随机生成重构码书 $\hat X^n(w)$
  2. 给定源序列 $X^n$,寻找与之"失真典型"的码字
  3. 若找到则发送索引,译码端输出对应重构
  4. 利用典型性和大数定律证明高概率满足失真约束

失真典型序列

如果一对序列 $(x^n,\hat x^n)$ 的平均逐字母失真接近目标值 $D$,且联合经验分布接近某个测试信道 $p(\hat x|x)$,那它们就可以视为"匹配得足够好"。

和无损编码靠普通典型集、高斯信道靠联合典型集不同,率失真理论需要"失真典型"这个版本——因为现在不要求"译码得到的必须是原序列",而关心"译码得到的和原序列足够接近"。

逆定理则证明:任何失真不超过 $D$ 的编码,其码率都不能低于 $R(D)$。换句话说,$R(D)$ 不是某种聪明算法的成绩,而是整个世界的底线。

香农第三定理仍然只是存在性定理:至于最佳编码方法如何寻找,定理中并没有给出。如何计算符合实际信源的信息率失真函数 $R(D)$?如何寻找最佳编码方法才能达到信息压缩的极限值 $R(D)$?这是该定理在实际应用中存在的两大问题。
PDF率失真定理p.27
正在渲染 PDF 第 27 页…
率失真定理(PDF 第 27 页) · 打开原文
10.11 · 量化落地
一个具体计算例子

例题:高斯信源的率失真计算

题目:$X \sim \mathcal N(0,1)$,目标均方误差 $D = 0.25$。求理论最小码率。

  1. 识别分布与失真类型$\sigma^2 = 1$,失真度量为均方误差 MSE。
  2. 代入公式$R(D) = \frac12 \log_2 \frac{\sigma^2}{D} = \frac12 \log_2 \frac{1}{0.25}$
  3. 计算$R(0.25) = \frac12 \log_2 4 = \frac12 \times 2 = 1$ bit/sample

答案:理论最小码率为 $1$ bit/sample。

解读:要把单位方差高斯信号压到平均 MSE 为 0.25,理论上至少要 1 bit 每样本。若系统只有 0.5 bit/sample,就不可能达到这个保真度;若有 1.2 bit/sample,则存在足够好的长块编码可以逼近它。

例题:Bernoulli 信源的率失真计算

题目:$X \sim \mathrm{Bern}(0.3)$,汉明失真,允许错误率 $D = 0.1$,求 $R(D)$

  1. 计算 $H(p)$$H(0.3) = -0.3\log_2 0.3 - 0.7\log_2 0.7 \approx 0.881$ bit
  2. 计算 $H(D)$$H(0.1) = -0.1\log_2 0.1 - 0.9\log_2 0.9 \approx 0.469$ bit
  3. 代入公式$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。

易错点:注意 $\min(p, 1-p) = \min(0.3, 0.7) = 0.3$,而 $D = 0.1 < 0.3$,所以在定义域内。

复习速查

  • 定义$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)$ 则不可达。

参考来源