信息论——Lossless Encoding

信息论算是应用数学,因此我们希望用熵,互信息这些东西来解决一些实际的问题。首先介绍下无失真编码定理,它早已经被广泛用在我们生活当中了。

首先,说到无失真编码,我们首先想到的是无损压缩了。无损压缩实际上是一个最大熵的问题。这样的情况下,能包含最多的信息,如果信息量一定,也就是最大熵的情况下需要平均较小的比特数(比如一个均匀分布随机变量X的熵为3,另一个非均匀分布随机变量熵Y也为3,那么|Y|>|X|,如果普通编码的话,Y的编码更长,但是它们包含的信息量却是一样的)。我们都知道的是,在均匀分布的时候熵是最大的。但是我们不能选择信源的分布,因为信源就在那里已经确定了。我们能否通过一个映射,一一对应的映射,使得一个非等概分布逐渐走向等概呢?答案是,可以,但是这太反直觉了。是啊虽然反直觉,但是它不反数学,所以它就是对的。

渐进等同分割性质(Asymptotic Equipartition Property)

大数定律(Law of Large Number)

这里先伯奴利大数定律(属于弱大数定律)。实际上所有的大数定律都在说一件事:当实验次数非常大的时候,频率趋向于概率(经验分布逼近于统计分布)。

Snnpp \frac{S_n}{n} \underrightarrow{p} p

更精确一点的说法:

N,ϵ>0,σ>0,where n>N,p(|snnp|ϵ)<σ. \forall N, \exists \epsilon >0,\sigma>0, \text{where }n > N,p(\vert \frac{s_n}{n} - p\vert \geq \epsilon) <\sigma. 另外一个大数定理(辛钦大数定律): 1ni=1nXipEX \begin{align} \frac 1 n \sum_ {i=1}^n X_i\underrightarrow{p} EX \end{align} 渐进等同分割性质定义如下:

如果X1,X2,...X_1,X_2,...是独立同分布的离散随机变量,分布服从p(x)p(x),则

1nlogp(X1,X2,...,Xn)pH(X)-\frac 1 n \log p(X_1,X_2,...,X_n) \underrightarrow{p} H(X)

使用上面的更准确的写法如下:

N,ϵ>0,σ>0,where n>N,p(|1nlogp(X1,X2,...,Xn)H(X)|ϵ)<σ. \forall N, \exists \epsilon>0, \sigma >0, \text{where }n > N,p(\vert - \frac 1 n \log p(X_1,X_2,...,X_n) - H(X)\vert \geq \epsilon) <\sigma.

p(X1,X2,...,Xn)2nH(X)p(X_1,X_2,...,X_n)\approx 2^{-nH(X)}.

这个定理可以使用弱大数定理地证明:

1nlogp(X1,X2,...,Xn)=1nlogp(X1)p(X2)...p(Xn)=1ni=1nlogp(Xi) \begin{aligned} &-\frac 1 n \log p(X_1,X_2,...,X_n)\\ & = -\frac 1 n \log p(X_1)p(X_2)...p(X_n)\\ &=-\frac 1 n \sum_ {i=1}^n \log p(X_i) \end{aligned}

因为我们知道,X1,X2,...,XnX_1,X_2,...,X_n是互相独立的,因此,logX1,logX2,...,logXn\log X_1,\log X_2,...,\log X_n也是互相独立同分布的。利用(1): 1ni=1nlogp(Xi)=E(logp(X))=x𝒳(p(x)logp(x))=H(X) \begin{aligned} -\frac 1 n \sum_ {i=1}^n \log p(X_i) &= -E(\log p(X))\\ &= \sum_ {x \in \mathcal{X} } (-p(x)\log p(x)) \\ &= H(X) \end{aligned}

这意味着,当n很大的时候,一个序列出现的概率是几乎相等的,这个概率为2nH(X)2^{-nH(X)}.

(弱)典型序列(Typical Sequence)

典型序列定义如下: 相对于分布p(x)p(x)和序列(x1,x2,...,xn)Xn(x_1,x_2,...,x_n) \in X_n,典型序列集合Aϵ(n)A_\epsilon ^ {(n)}定义为满足下列不等式约束的所有序列𝒙\mathbf{x}的集合: 2n(H(X)+ϵ)p(𝒙)=p(x1,x2,...,xn)2n(H(X)ϵ) 2^{-n(H(X)+\epsilon) \leq p(\mathbf{x}) = p(x_1,x_2,...,x_n) \leq 2^{-n(H(X)-\epsilon)} }

所以典型序列具有以下性质: 1. 若𝒙Aϵ(n)\mathbf{x} \in A_\epsilon ^ {(n)},则H(X)ϵ1nlogp(𝒙)H(X)+ϵH(X)-\epsilon \leq -\frac 1 n \log p(\mathbf{x}) \leq H(X) + \epsilon. 2. 若nn足够大,$Pr(A_^{(n)}) - $ 3. |Aϵ(n)|2n(H(X)+ϵ)\vert A_\epsilon ^{(n)}\vert \leq 2^{n(H(X)+\epsilon)} 4. |Aϵ(n)|(1ϵ)2n(H(X)ϵ)\vert A_\epsilon ^{(n)}\vert \geq (1-\epsilon)2^{n(H(X)-\epsilon)}

性质1,2可以用定义得到。因此这里证明3和4.

  1. 1=xn𝒳P(xn)xnAϵ(n)p(xn)xnAϵ(n)2n(H(x)+ϵ)=2n(H(x)+ϵ)|Aϵ(n)| \begin{aligned} 1 &= \sum_ {x^n \in \mathcal{X} }P(x^n)\\ &\geq \sum_ {x^n \in A_\epsilon ^{(n)} } p(x^n)\\ &\geq \sum_ {x^n \in A_\epsilon ^{(n)} } 2^{-n(H(x)+\epsilon)}\\ &= 2^{-n(H(x)+\epsilon)}\vert A_\epsilon ^{(n)} \vert \end{aligned}

4的证明首先要使用性质2。 1ϵPr{Aϵ(n)}xnAϵ(n)2n(H(X)ϵ)=2n(H(X)ϵ)|Aϵ(n)| \begin{aligned} 1 - \epsilon &\leq Pr\{A_\epsilon ^{(n)} \}\\ &\leq \sum_ {x^n \in A_\epsilon ^{(n)} } 2 ^{-n(H(X) - \epsilon)}\\ &= 2 ^{-n(H(X) - \epsilon)} \vert A_\epsilon ^{(n)}\vert \end{aligned}

所有可能出现的序列一共有|X|n|X|^n种,大多数情况下,$ 2^{m(H(X)+)} << |X|^n$.所以典型序列集合只是所有可能集合的一个很小(尤其是原来分布远离均匀分布的时候)的子集。但是它几乎一定会出现,而且每个典型序列出现的概率几乎一样。这是很好的消息,为我们刚开始提出来的映射提供了很好的思路。

定长编码定理(香农第一定理)

假设XnX^n是由独立同分布离散随机变量X̃p(X)X\tilde{}p(X)构成的序列。对于任意正数ϵ\epsilon,总有足够大的n,可以找到一个一一映射,将XnX^n映射到二进制序列,且满足: E[1nl(Xn)]H(X)+ϵ E\left[\frac 1 n l(X^n) \right] \leq H(X)+\epsilon

上式中,l(Xn)l(X^n)表示的是编码需要的bit数。

接下来提供证明:

E(l(Xn))=x𝒳p(x)l(x)=xAϵ(n)p(x)l(x)+xAϵ(n)¯p(x)l(x)xAϵ(n)p(x)[n(H(X)+ϵ)+1+1]+xAϵ(n)¯p(x)[nlog|X|+2]=[n(H(X)+ϵ)+1+1]Pr{Aϵ(n)}+[nlog|X|+2]Pr{Aϵ(n)¯}n(H(X)+ϵ)+2+nϵlog|X|+2ϵ=n(H(X)+ϵ) \begin{aligned} E(l(X^n)) &= \sum_ {x \in \mathcal{X} } p(x) l(x)\\ &= \sum_ {x \in A_\epsilon ^{(n)} } p(x) l(x) + \sum_ {x \in \overline{A_\epsilon ^{(n)} } } p(x) l(x)\\ & \leq \sum_ {x \in A_\epsilon ^{(n)} } p(x) [ n(H(X)+\epsilon)+1+1 ] + \sum_ {x \in \overline{A_\epsilon ^{(n)} } } p(x) [ n\log \vert X\vert +2 ]\\ &=[ n(H(X)+\epsilon)+1+1 ] Pr\{ A_\epsilon ^{(n)} \} + [ n\log \vert X\vert +2] Pr\{\overline{A_\epsilon ^{(n)} } \} \\ &\leq n(H(X)+\epsilon)+2 + n\epsilon \log\vert X\vert+2\epsilon = n(H(X) + \epsilon ') \end{aligned} 其中 ϵ=ϵ+ϵlog|X|+2n+2ϵn\epsilon' = \epsilon + \epsilon \log \vert X \vert +\frac 2 n + \frac {2\epsilon}{n},可以看到的是n,ϵ0n \rightarrow \infty,\epsilon' \rightarrow 0.

上面证明过程中值得注意的事情是,为什么要加2?第一个加一是为了处理log后为非整数的情况,第二个+1是留一个比特位置来区分典型序列与非典型序列的编码。

但是,定长编码定理是无法应用到工业界的。因为它需要对序列长度为n来进行编码,由于精确度的要求,这个n往往很大(上亿),这在现实中是无法实现的。

顺便我们证明一下,平均每个字符编码所需要的bit数一定是大于等于H(X)H(X).

假设XnMC={1,2,3,...,2nR}neednRbitsX̂nX^n \rightarrow M \in C = \underbrace{ \{1,2,3,...,2^{nR} \} }_ {need ~nR~ bits} \rightarrow \hat{X}^n.

意思就是,M为X^n编码后的结果,它一定是属于后面的某个数字。

如果我们想要Pe=0P_e = 0,也就是无失真编码,那么根据Fano不等式: H(Xn|M)=0 H(X^n|M) = 0

因此: nH(X)=H(Xn)...(Why?)=H(Xn)H(Xn|M)=I(Xn,M)=H(M)H(M|Xn)H(M)nR \begin{aligned} nH(X) &= H(X^n)...(Why?)\\ &=H(X^n) - H(X^n|M)\\ &=I(X^n,M)\\ &=H(M) - H(M|X^n)\\ &\leq H(M) \leq nR \end{aligned}

所以可以得到:RH(X)R\ge H(X).

可见,熵是平均码长的下界。

码的类型

非奇异码

若一个码C可以将不同的x映射为不同的D*D^*中 的序列,即: xxC(x)C(x) x \ne x' \rightarrow C(x) \ne C(x') 则该码为非奇异码。

但是仅仅是非奇异码的序列可能会有歧义(很好笑)。x10,x21,x301x_1 \rightarrow 0,x_2 \rightarrow 1,x_3 \rightarrow 01,那么我收到0101就不知道该如何介绍它了。

唯一可译码

唯一可译码是非奇异码的子集。称码C*C^*为码CC的扩展,当C*C^*是有限长X的序列到有限长D序列的映射,且满足: C(x1,x2,...,xn)=C(x1)C(x2)...C(xn) C(x_1,x_2,...,x_n) = C(x_1)C(x_2)...C(x_n) 则该码为唯一可译码。

从另一方面来说,如果码的扩展为非奇异码,则该码为唯一可译码。

换句话说,没有码字是码字的组合。

这样的也是有缺点的,因为解码器复杂度要求较高。如x1=01,x2=10,x3=0111x_1 = 01,x_2 = 10,x_3 = 0111,当收到0110的时候,在前三个的时候解码器预测可能是个x3x_3,但是最后一个不满足,因此就需要回退。

即时码(前缀码)

前缀码大家就比较熟悉了。前缀码是唯一可译码的子集。如常用的霍夫曼编码。它的意思是没有什么码字是另一个码字的前缀。所以解码器只要发现有认识的,立马就可以解码了,所以叫即时码。

莫尔斯电码是非奇异码,但不是唯一可译码。汉语也不是唯一可译码,因为断句不对就会引起歧义。