数据率失真理论(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),叶中行