数据率失真理论(Rate distortion theory)或称信息率-失真理论(information rate-distortion theory)是信息论的主要分支,其的基本问题可以归结如下:对于一个给定的信源(source, input signal)分布与失真度量,在特定的码率下能达到的最小期望失真是多少;或者为了满足一定的失真限制,可允许的最大码率为何, D D D 定义为失真的符号。

要完全避免失真几乎不可能。处理信号时必须允许有限度的失真﹐可减小所必需的信息率。1959年﹐Claude Shannon 首先发表《逼真度准则下的离散信源编码定理》一文,提出了率失真函数的概念。

我们通常都通过一个失真度量(distortion measure)来衡量一个随机变量以及它的表示(representation)之间的距离。下面以一个例子为开始,介绍具体的率失真理论中的一些定义与定理。


1. 一个例子

假设一个随机变量 X X X,其一个表示定义为 X ^ ( X ) \hat{X}(X) X^(X),若我们使用 R R R个比特(bit)来表示 X X X,每个比特的数值为 0 0 0或 1 1 1,那么函数 X ^ \hat{X} X^可以有 2 R 2^R 2R中不同取值,那么我们现在的问题是找到一个 X ^ \hat{X} X^的最优值集(称为再生点(reproduction points)或码点(code points)),而目的是通过最小化定义的一个失真度量得到。

现在我们假设 X ∼ N ( 0 , σ 2 ) X \sim \mathcal{N}\left(0, \sigma^{2}\right) X∼N(0,σ2),同时假设一个平方误差的失真度量。目的则要通过最小化 E ( X − X ^ ( X ) ) 2 E(X-\hat{X}(X))^{2} E(X−X^(X))2从 2 R 2^R 2R个不同值中找到最优的 X ^ \hat{X} X^。举一个简单的例子,假设我们现在只能用一个比特来表示,那么 X ^ \hat{X} X^可以有两个不同的取值。由于分布是关于 0 0 0对称的,因此我们将是否 X > 0 X>0 X>0作为两种不同取值的划分标准。为使平方误差达到最小,函数 X ^ \hat{X} X^应该取其所在区域上 X X X的条件均值。将正态分布截断的分布称为半正态分布(Half-normal distribution),其期望为: 2 / π σ {\sqrt {2/\pi}} \sigma 2/π ​σ,因此有:
X ^ ( x ) = { 2 π σ if  x ≥ 0 , − 2 π σ if  x < 0. \hat{X}(x)= \begin{cases}\sqrt{\frac{2}{\pi}} \sigma & \text { if } x \geq 0, \\ -\sqrt{\frac{2}{\pi}} \sigma & \text { if } x<0 .\end{cases} X^(x)=⎩⎨⎧​π2​ ​σ−π2​ ​σ​ if x≥0, if x<0.​
而当比特数提升到两个甚至更多之后,区域的划分方法就不再这么简单了,需要将实轴划分为多个区域。但这些区域该如何划分,再生点应该怎样选取?为此,引入关于最优区域划分和再生点选取的两个性质:

  • 给定一个再生点的集合 { X ^ ( w ) } \{\hat{X}(w)\} {X^(w)},通过将源随机变量 X X X映射到最接近它的表示 X ^ ( w ) \hat{X}(w) X^(w)来最小化失真。由这个映射定义的 X X X的区域集称为由再生点定义的Voronoi或Dirichlet划分(partition)。
  • 再生点应该在各自划分到的区域上使条件期望失真最小化。

由上述两个性质可以得到一个简单算法:

  1. 首先从某个再生点集合开始,找到最优的再生区域集(在失真度量下的最邻近的区域);
  2. 再确定出这些区域的相应最优再生点。

迭代重复上述两个步骤,直到算法收敛于失真的一个局部极小值。


2. 一些定义

前面的例子中假设需要量化的是单个随机变量,而通常实际情况中,我们通常假设 n n n个独立同分布的随机变量集合,共需要 n R nR nR比特来表示。

假设某信号源产生的序列(信源序列) X 1 , X 2 , ⋯ , X n ∼ i . i . d . p ( x ) X_1, X_2, \cdots, X_n \stackrel{i.i.d.}{\sim}p(x) X1​,X2​,⋯,Xn​∼i.i.d.p(x),信源序列 X n X^n Xn的编码用 f n ( X n ) ∈ { 1 , 2 , … , 2 n R } f_{n}\left(X^{n}\right) \in\left\{1,2, \ldots, 2^{n R}\right\} fn​(Xn)∈{1,2,…,2nR}进行表示, X n X^n Xn的译码则用估计形式 X ^ n \hat{X}^n X^n表示。具体如下图所示:

失真函数/度量: 失真函数(distortion function)或失真度量(distortion measure)指从信源空间与再生空间的乘积空间到非负实数集上的映射:
d : X × X ^ → R + d: \mathcal{X} \times \hat{\mathcal{X}} \rightarrow \mathcal{R}^{+} d:X×X^→R+
失真函数 d ( x , x ^ ) d(x,\hat{x}) d(x,x^)是用来刻画使用 x ^ \hat{x} x^表示 x x x时的代价度量。

常用的失真函数

  1. 汉明(Hamming)失真
    d ( x , x ^ ) = { 0 当  x = x ^ 1 当  x ≠ x ^ , d(x, \hat{x})= \begin{cases}0 & \text { 当 } x=\hat{x} \\ 1 & \text { 当 } x \neq \hat{x},\end{cases} d(x,x^)={01​ 当 x=x^ 当 x​=x^,​
    其期望 E d ( x , x ^ ) = Pr ( X ≠ X ^ ) Ed(x, \hat{x})=\text{Pr}(X\neq \hat{X}) Ed(x,x^)=Pr(X​=X^)。直观上来理解,就是我们只关注原始字母与恢复字母是否相等,若相等,则失真为 0 0 0,若不相等,则失真为 1 1 1(无论多不相等均为 1 1 1)。

  2. 绝对值失真
    d ( x , x ^ ) = ∣ x − x ^ ∣ d(x, \hat{x})=\left|x-\hat{x}\right| d(x,x^)=∣x−x^∣

  3. 平方误差失真
    d ( x , x ^ ) = ( x − x ^ ) 2 d(x, \hat{x})=(x-\hat{x})^{2} d(x,x^)=(x−x^)2
    平方误差失真为最常用的一种失真函数(前面简单例子中所使用的度量)。其优点在于简单,且与最小二乘法联系紧密。但在某些如图像或语音编码等应用中,其并非是一个合适的度量,例如在很多图像与语音的编码中,两个图像或者语音人工看起来是一致的,但实际的平方误差相差会比较大。

序列失真: 序列 x n x^{n} xn到 x ^ n \hat{x}^{n} x^n的失真定义为:
d ( x n , x ^ n ) = 1 n ∑ i = 1 n d ( x i , x ^ i ) d\left(x^{n}, \hat{x}^{n}\right)=\frac{1}{n} \sum_{i=1}^{n} d\left(x_{i}, \hat{x}_{i}\right) d(xn,x^n)=n1​i=1∑n​d(xi​,x^i​)
这种定义是一种平均值的定义,此外也可以定义为每个字符失真的最大值。

操作意义下信源的率失真码:一个 ( 2 n R , n ) (2^{nR},n) (2nR,n)率失真码(rate distortion code)包括一个编码函数:
f n : X n → { 1 , 2 , … , 2 n R } f_{n}: \mathcal{X}^{n} \rightarrow\left\{1,2, \ldots, 2^{n R}\right\} fn​:Xn→{1,2,…,2nR}
和一个译码(再生)函数:
g n : { 1 , 2 , … , 2 n R } → χ ^ n g_{n}:\left\{1,2, \ldots, 2^{n R}\right\} \rightarrow \hat{\chi}^{n} gn​:{1,2,…,2nR}→χ^​n
这个 ( 2 n R , n ) (2^{nR},n) (2nR,n)码的失真定义为
D = E ⁡ d ( X n , g n ( f n ( X n ) ) ) D=\operatorname{E}d\left(X^{n}, g_{n}\left(f_{n}\left(X^{n}\right)\right)\right) D=Ed(Xn,gn​(fn​(Xn)))
其中所取的期望是针对 X X X的概率分布而言,有:
D = ∑ x n p ( x n ) d ( x n , g n ( f n ( x n ) ) ) D=\sum_{x^{n}} p\left(x^{n}\right) d\left(x^{n}, g_{n}\left(f_{n}\left(x^{n}\right)\right)\right) D=xn∑​p(xn)d(xn,gn​(fn​(xn)))
将 n n n元组 g n ( 1 ) , g n ( 2 ) , … , g n ( 2 n R ) g_{n}(1), g_{n}(2), \ldots, g_{n}\left(2^{n R}\right) gn​(1),gn​(2),…,gn​(2nR) 定义为 X ^ n ( 1 ) , … , X ^ n ( 2 n R ) \hat{X}^{n}(1), \ldots, \hat{X}^{n}(2^{n R}) X^n(1),…,X^n(2nR),称为码簿(codebook), f n − 1 ( 1 ) , … , f n − 1 ( 2 n R ) f_{n}^{-1}(1), \ldots, f_{n}^{-1}\left(2^{n R}\right) fn−1​(1),…,fn−1​(2nR)为分配区域(assignment regions),

下面为了刻画如何尽可能优的进行传输,提出了几个概念:

  • 若存在一组率失真编码 ( 2 n R , n ) (2^{nR}, n) (2nR,n),使得
    lim ⁡ n → ∞ E d ( X n , g n ( f n ( X n ) ) ) ⩽ D \lim _{n \rightarrow \infty} E d\left(X^{n}, g_{n}\left(f_{n}\left(X^{n}\right)\right)\right) \leqslant D n→∞lim​Ed(Xn,gn​(fn​(Xn)))⩽D
    则称率失真对 ( R , D ) (R, D) (R,D)是可达的

  • 信源的率失真区域是所有可达率失真对 ( R , D ) (R, D) (R,D)的闭包(Closure)。

  • 率失真函数(rate distortion function):对于给定的一个失真度 D D D,率失真函数 R ( D ) R(D) R(D)定义为:
    R ( D ) = inf ⁡ { R : ( R , D ) ∈ 率失真区域  } , R(D)=\inf \{R:(R, D) \in \text { 率失真区域 }\}, R(D)=inf{R:(R,D)∈ 率失真区域 },
    直观上理解就是在信源序列与再生序列的失真不超过 D D D的前提下,最小可能的码率(信源最大可能的压缩率)。

  • 失真率函数(distortion rate function):给定一个码率 R R R,定义失真率函数 D ( R ) D(R) D(R)为:
    D ( R ) = inf ⁡ { D : ( R , D ) ∈ 率失真区域  } , D(R)=\inf \{D:(R, D) \in \text { 率失真区域 }\}, D(R)=inf{D:(R,D)∈ 率失真区域 },
    含义为:在给定码率(压缩率) R R R条件下所能达到的最小失真。


下面我们通过引入互信息的概念,给出一种可计算形式的表达。互信息 I ( X ; X ^ ) I(X;\hat{X}) I(X;X^)的含义是 x ^ \hat{x} x^究竟代表了多少 x x x中的信息,定义如下:
I ( X ; X ^ ) = ∑ x ∈ X , x ^ ∈ X ^ p ( x , x ^ ) log ⁡ ( p ( x , x ^ ) p ( x ) p ( x ^ ) ) I(X;\hat{X})=\sum _{x\in \mathcal{X}, \hat{x}\in \mathcal{\hat{X}}}p(x,\hat{x})\log {\left({\frac {p(x,\hat{x})}{p(x)\,p(\hat{x})}}\right)} I(X;X^)=x∈X,x^∈X^∑​p(x,x^)log(p(x)p(x^)p(x,x^)​)

而后我们将编码器与解码器看做一个整体,称为熵压缩编码器(类似信道的设置),其转移概率记为 q ( x ^ ∣ x ) q(\hat{x}|x) q(x^∣x),对一个给定的信源随机变量 X X X,服从概率分布 p ( x ) p(x) p(x),此时输入与输出的平均失真可以记为
E d ( X , X ^ ) = ∑ x ∈ X , x ^ ∈ X ^ p ( x , x ^ ) d ( x , x ^ ) = ∑ x ∈ X , x ^ ∈ X ^ p ( x ) q ( x ^ ∣ x ) d ( x , x ^ ) ⩽ D E d(X, \hat{X})=\sum_{x \in \mathcal{X}, \hat{x} \in \hat{\mathcal{X}}} p(x, \hat{x}) d(x, \hat{x}) = \sum_{x \in \mathcal{X}, \hat{x} \in \hat{\mathcal{X}}} p(x) q(\hat{x}|x) d(x, \hat{x}) \leqslant D Ed(X,X^)=x∈X,x^∈X^∑​p(x,x^)d(x,x^)=x∈X,x^∈X^∑​p(x)q(x^∣x)d(x,x^)⩽D
其中 p ( x , x ^ ) p(x, \hat{x}) p(x,x^)为 x x x与 x ^ \hat{x} x^的联合概率分布。

在分析信道容量的时候,是希望最大化 I ( X ; X ^ ) I(X;\hat{X}) I(X;X^),而在这里,我们是希望最小化 I ( X ; X ^ ) I(X;\hat{X}) I(X;X^),这样就可以使得通过熵压缩编码器的信息量尽可能小,以此来实现所需要使用的比特数尽可能的低。但是有一个前提约束,就是限制失真度量的最大值,而后再最小化这个互信息才有意义(不然 X ^ \hat{X} X^会为一个常数)。

下面给出信息论意义下的率失真函数的定义(一个数学上的最优值):
R ( I ) ( D ) = min ⁡ q ( x ^ ∣ x ) : ∑ ( x , x ^ ) p ( x ) q ( x ^ ∣ x ) d ( x , x ^ ) ≤ D I ( X ; X ^ ) R^{(I)}(D)=\min _{q(\hat{x} \mid x): \sum_{(x, \hat{x})} p(x) q(\hat{x} \mid x) d(x, \hat{x}) \leq D} I(X ; \hat{X}) R(I)(D)=q(x^∣x):∑(x,x^)​p(x)q(x^∣x)d(x,x^)≤Dmin​I(X;X^)
需要注意信源压缩编码理论里面的一个基本设置是:信源的密度函数 p ( x ) p(x) p(x)是给定的,而一般我们能够调整的是 q ( x ^ ∣ x ) q(\hat{x} \mid x) q(x^∣x)。


率失真编码定理(Shannon第三定理)
给定具有独立同分布 p ( x ) p(x) p(x)的信源 X X X和有界的失真度量 d ( x , x ^ ) d(x,\hat{x}) d(x,x^),操作意义下的率失真函数等于信息论意义下的率失真函数,即:
R ( D ) = R ( I ) ( D ) = min ⁡ q ( x ^ ∣ x ) : ∑ ( x , x ^ ) p ( x ) q ( x ^ ∣ x ) d ( x , x ^ ) ≤ D I ( X ; X ^ ) R(D)=R^{(I)}(D)=\min _{q(\hat{x} \mid x): \sum_{(x, \hat{x})} p(x) q(\hat{x} \mid x) d(x, \hat{x}) \leq D} I(X ; \hat{X}) R(D)=R(I)(D)=q(x^∣x):∑(x,x^)​p(x)q(x^∣x)d(x,x^)≤Dmin​I(X;X^)
是在失真约束 D D D下可以达到的最小信息传输速率。


3. 率失真函数的性质

  • R ( I ) ( D ) R^{(I)}(D) R(I)(D)是非增函数。当我们能够容忍的失真度逐渐增加时,率失真函数也就是传输的信息会逐步减小(或不变)。

  • R ( I ) ( D ) R^{(I)}(D) R(I)(D)的定义域为 ( D m i n , + ∞ ) (D_{min}, +\infty) (Dmin​,+∞),且存在 D m a x D_{max} Dmax​,当 D ≥ D m a x D \geq D_{max} D≥Dmax​时, R ( I ) ( D ) = 0 R^{(I)}(D)=0 R(I)(D)=0。也就是说,当我们能够容忍的失真到达一个程度后,就可以什么都不需要传了。

  • R ( D ) R(D) R(D)是 D D D的下凸函数。本质上是 I ( p , q ) I(p,q) I(p,q)在 q q q上是下凸的性质。


4. 率失真函数的两个常见例子

  • B e r n o u l l i ( p ) Bernoulli(p) Bernoulli(p)信源在汉明失真度量下的率失真函数为:
    R ( D ) = { H ( p ) − H ( D ) , 0 ⩽ D ⩽ min ⁡ { p , 1 − p } 0 , D > min ⁡ { p , 1 − p ∣ R(D)= \begin{cases}H(p)-H(D), & 0 \leqslant D \leqslant \min \{p, 1-p\} \\ 0, & D>\min \{p, 1-p \mid\end{cases} R(D)={H(p)−H(D),0,​0⩽D⩽min{p,1−p}D>min{p,1−p∣​

  • 一个 N ( 0 , σ 2 ) \mathcal{N}\left(0, \sigma^{2}\right) N(0,σ2)高斯信源在平方误差失真度量下的率失真函数为:
    R ( D ) = { 1 2 log ⁡ σ 2 D , 0 ⩽ D ⩽ σ 2 0 , D > σ 2 R(D)= \begin{cases}\frac{1}{2} \log \frac{\sigma^{2}}{D}, & 0 \leqslant D \leqslant \sigma^{2} \\ 0, & D>\sigma^{2}\end{cases} R(D)={21​logDσ2​,0,​0⩽D⩽σ2D>σ2​

针对高斯信源,我们先将 R ( D ) R(D) R(D)写成 D ( R ) D(R) D(R),
则 R ( D ) = 1 2 log ⁡ σ 2 D R(D)= \frac{1}{2} \log \frac{\sigma^{2}}{D} R(D)=21​logDσ2​可变为 D ( R ) = σ 2 2 − 2 R D(R)=\sigma^{2}2^{-2R} D(R)=σ22−2R。(注意,这里的 log ⁡ \log log均是以 2 2 2为底的)。那么 1 1 1比特的失真为 0.25 σ 2 0.25\sigma^2 0.25σ2

这是有一个非常有趣的观察:在最开始的第一个例子,我们用 1 1 1比特量化 N ( 0 , σ 2 ) \mathcal{N}\left(0, \sigma^{2}\right) N(0,σ2)高斯分布的连续随机变量时,平均失真为 D = ∫ − ∞ ∞ ( x − X ^ ( x ) ) 2 p ( x ) d x = π − 2 π σ 2 ≈ 0.3633 σ 2 D=\int_{-\infty}^{\infty}\left( x - \hat{X}(x) \right)^2 p(x) dx = \frac{\pi-2}{\pi} \sigma^{2} \approx 0.3633 \sigma^{2} D=∫−∞∞​(x−X^(x))2p(x)dx=ππ−2​σ2≈0.3633σ2,这并不是最优的。因此,这表明我们如果将几个失真的问题结合在一起考虑,则可获得比单个分开考虑时更低的失真。(即使我们量化的是独立随机变量)


参考

  1. Wiki: Rate–distortion theory
  2. Thomas M. Cover, Joy A. Thomas (2006). Elements of Information Theory. John Wiley & Sons, New York.
  3. 信息论基础(2017),叶中行

数据率失真理论(RATE DISTORTION THEORY)相关推荐

  1. On Rate Distortion Optimization Using SSIM

    率失真优化在现代视频编解码器中被广泛应用于各种编码器决策,以优化速率失真的权衡.通常,使用的失真测量要么是平方和误差(SSE),要么是绝对和距离(SAD),这两者在使用时都很方便,但并不总是反映感知视 ...

  2. 数据中聚类个数的确定(Determining the number of clusters in a data set)

    本文主要讨论聚类中聚类个数的确定问题. 本文地址:http://blog.csdn.net/shanglianlm/article/details/46671209 1. K的作用 Intuitive ...

  3. POLICY GENERALIZATION IN CAPACITY-LIMITED REINFORCEMENT LEARNING

    能力有限的强化学习中的策略一般化 ABSTRACT Motivated by the study of generalization in biological intelligence, we ex ...

  4. 大模型轻量化技术调研

    笔记,仅供参考,未完 大模型轻量化技术调研 1. 调研论文 1.1 汇总 1.2 详细介绍 MODEL COMPRESSION VIA DISTILLATION AND QUANTIZATION LO ...

  5. 语音数据采集-实时语音数据可视化

    1.安装依赖 pip install pyaudiopip install pylab 2.语音数据展示 import pyaudioimport numpy as np CHUNK = 4096 # ...

  6. 未越狱设备提取数据_从三星设备中提取健康数据

    未越狱设备提取数据 Health data is collected every time you have your phone in your pocket. Apple or Android, ...

  7. OpenTSDB 开发指南之 查询数据

    前面博主写了一篇文章去介绍opentsdb的http接口的使用方法,但是某一些接口的使用还是比较复杂,这篇文章会通过example来详细讲述opentsdb的一些特性. 本文的举的例子有这些: 基本的 ...

  8. 东北大学oj平台python答案_东北大学大数据班R实训第三次作业

    title: "R实训第三次作业" output: html_notebook 1.通过读取文件death rate.csv获取数据保存到df中:简单分析数据,获取共 有数据多少条 ...

  9. 大数据Spark实战第五集 Spark股票交易实时价格分析

    统一批处理与流处理:Dataflow 在本模块前面的课时中,我们已经学习了 Spark Streaming 的架构.原理.用法以及生产环境中需要考虑的问题.对于 Spark Streaming 的学习 ...

最新文章

  1. 基于ASP.NET 3.5 Web Service 的JSON扩展应用
  2. 动态规划-背包是否装满
  3. Bash 使用技巧大补贴
  4. 官宣,Shane Miller 当选 Rust 基金会首任主席
  5. HTML5与CSS3权威指南.pdf7
  6. warning LNK4070的解决办法
  7. 定时器翻转io口的好处_STM32 定时器输出比较翻转模式
  8. D. Magic Gems(矩阵快速幂 || 无敌杜教)
  9. 这么狠,私塾在线架构师系列课程全都免费发放
  10. 解决运行Vue项目localhost8080拒绝连接
  11. 蓝桥杯 14校4-回文数字  观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。   本题要求你找到一些5位或6位的十进制
  12. KEGG 通路信息下载及其相关处理
  13. docker run参数-v的rw、ro详解
  14. VS2019下编译与配置GSL2.7【Release x64版】
  15. 蓝桥杯 2016-9 取球博弈
  16. php代码写一串新年祝福,临时保存新年祝福的php+dede
  17. 因为需求理解不到位,视频自动播放列表又重写了
  18. Android-APK
  19. L2TP详解(四)——LAC自动拨号隧道和会话建立过程
  20. Web组成:静态网页,动态网页

热门文章

  1. 通过PubSubHubbub实现YouTube订阅功能
  2. 每公里配速9分18秒,双足机器人完成5公里慢跑
  3. 2022年网络推广方案怎么做?
  4. 【问题记录】警告:warning.warn(‘Downloading:{}‘.format(url),DownloadWarning)
  5. 爱做梦的人工智能「Stabled Diffusion」
  6. STM32Cube学习笔记-SPI通讯
  7. 微信语音idk的demo学习
  8. 100行左右的java动物类型大作业_求一个100行左右的java编程
  9. 通过自定义Gradle插件修改编译后的class文件
  10. python网络通信,多线程,迭代器