数据率失真理论(RATE DISTORTION THEORY)
数据率失真理论(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)。
- 再生点应该在各自划分到的区域上使条件期望失真最小化。
由上述两个性质可以得到一个简单算法:
- 首先从某个再生点集合开始,找到最优的再生区域集(在失真度量下的最邻近的区域);
- 再确定出这些区域的相应最优再生点。
迭代重复上述两个步骤,直到算法收敛于失真的一个局部极小值。
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时的代价度量。
常用的失真函数
汉明(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)。绝对值失真
d ( x , x ^ ) = ∣ x − x ^ ∣ d(x, \hat{x})=\left|x-\hat{x}\right| d(x,x^)=∣x−x^∣平方误差失真
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)=n1i=1∑nd(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→∞limEd(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^)≤DminI(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^)≤DminI(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)={21logDσ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)=21logDσ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,这并不是最优的。因此,这表明我们如果将几个失真的问题结合在一起考虑,则可获得比单个分开考虑时更低的失真。(即使我们量化的是独立随机变量)
参考
- Wiki: Rate–distortion theory
- Thomas M. Cover, Joy A. Thomas (2006). Elements of Information Theory. John Wiley & Sons, New York.
- 信息论基础(2017),叶中行
数据率失真理论(RATE DISTORTION THEORY)相关推荐
- On Rate Distortion Optimization Using SSIM
率失真优化在现代视频编解码器中被广泛应用于各种编码器决策,以优化速率失真的权衡.通常,使用的失真测量要么是平方和误差(SSE),要么是绝对和距离(SAD),这两者在使用时都很方便,但并不总是反映感知视 ...
- 数据中聚类个数的确定(Determining the number of clusters in a data set)
本文主要讨论聚类中聚类个数的确定问题. 本文地址:http://blog.csdn.net/shanglianlm/article/details/46671209 1. K的作用 Intuitive ...
- POLICY GENERALIZATION IN CAPACITY-LIMITED REINFORCEMENT LEARNING
能力有限的强化学习中的策略一般化 ABSTRACT Motivated by the study of generalization in biological intelligence, we ex ...
- 大模型轻量化技术调研
笔记,仅供参考,未完 大模型轻量化技术调研 1. 调研论文 1.1 汇总 1.2 详细介绍 MODEL COMPRESSION VIA DISTILLATION AND QUANTIZATION LO ...
- 语音数据采集-实时语音数据可视化
1.安装依赖 pip install pyaudiopip install pylab 2.语音数据展示 import pyaudioimport numpy as np CHUNK = 4096 # ...
- 未越狱设备提取数据_从三星设备中提取健康数据
未越狱设备提取数据 Health data is collected every time you have your phone in your pocket. Apple or Android, ...
- OpenTSDB 开发指南之 查询数据
前面博主写了一篇文章去介绍opentsdb的http接口的使用方法,但是某一些接口的使用还是比较复杂,这篇文章会通过example来详细讲述opentsdb的一些特性. 本文的举的例子有这些: 基本的 ...
- 东北大学oj平台python答案_东北大学大数据班R实训第三次作业
title: "R实训第三次作业" output: html_notebook 1.通过读取文件death rate.csv获取数据保存到df中:简单分析数据,获取共 有数据多少条 ...
- 大数据Spark实战第五集 Spark股票交易实时价格分析
统一批处理与流处理:Dataflow 在本模块前面的课时中,我们已经学习了 Spark Streaming 的架构.原理.用法以及生产环境中需要考虑的问题.对于 Spark Streaming 的学习 ...
最新文章
- 基于ASP.NET 3.5 Web Service 的JSON扩展应用
- 动态规划-背包是否装满
- Bash 使用技巧大补贴
- 官宣,Shane Miller 当选 Rust 基金会首任主席
- HTML5与CSS3权威指南.pdf7
- warning LNK4070的解决办法
- 定时器翻转io口的好处_STM32 定时器输出比较翻转模式
- D. Magic Gems(矩阵快速幂 || 无敌杜教)
- 这么狠,私塾在线架构师系列课程全都免费发放
- 解决运行Vue项目localhost8080拒绝连接
- 蓝桥杯 14校4-回文数字 观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。 本题要求你找到一些5位或6位的十进制
- KEGG 通路信息下载及其相关处理
- docker run参数-v的rw、ro详解
- VS2019下编译与配置GSL2.7【Release x64版】
- 蓝桥杯 2016-9 取球博弈
- php代码写一串新年祝福,临时保存新年祝福的php+dede
- 因为需求理解不到位,视频自动播放列表又重写了
- Android-APK
- L2TP详解(四)——LAC自动拨号隧道和会话建立过程
- Web组成:静态网页,动态网页
热门文章
- 通过PubSubHubbub实现YouTube订阅功能
- 每公里配速9分18秒,双足机器人完成5公里慢跑
- 2022年网络推广方案怎么做?
- 【问题记录】警告:warning.warn(‘Downloading:{}‘.format(url),DownloadWarning)
- 爱做梦的人工智能「Stabled Diffusion」
- STM32Cube学习笔记-SPI通讯
- 微信语音idk的demo学习
- 100行左右的java动物类型大作业_求一个100行左右的java编程
- 通过自定义Gradle插件修改编译后的class文件
- python网络通信,多线程,迭代器