《信息论与编码》学习笔记
信息论与信息编码
文章目录
- 信息论与信息编码
- 1. 准备知识和教材
- 1.1. 学科关联
- 1.2. 准备知识
- 1.3. 教材
- 1.4. 理论体系的简要概述
- 1.5. 编码技术的举例
- 1.5.1. 压缩编码
- 1.5.1.1. 霍夫曼编码
- 1.5.1.2. 算术编码
- 1.5.1.3. Lempel-Ziv编码
- 1.5.2. 校验编码
- 1.5.2.1. 汉明码
- 1.5.2.2. BCH编码
- 1.5.2.3. Turbo码
- 1.5.2.4. Gallager码(LDPC,低密度奇偶校验码)
- 1.6. 香农信息论的建立过程
- 1.7. 香农信息论存在的问题
- 2. 信息的度量方法
- 2.1. 统计信息和语义信息
- 2.2. 信源分类
- 2.3. 信源的信息测度
- 2.3.1. 自信息
- 2.3.2. 信息熵
- 2.3.2.1. 熵的起源
- 2.3.2.2. 信息熵定义
- 2.3.3. 联合熵
- 2.3.4. 条件熵
- 2.3.5. 熵的性质
- 2.3.5.1. 非负性
- 2.3.5.2. 小概率扩展性
- 2.3.5.3. 链式法则(强可加性)
- 2.3.5.4. 最大离散熵定理
- 2.3.5.5. 条件作用使熵减小
- 2.3.5.6. 联合熵的独立上界
- 2.4. 信源剩余度
- 2.4.1. 信源效率的分析
- 2.4.2. 信源冗余度定义
- 2.4.3. 实际信源冗余度
- 2.4.4. 如何降低冗余度
- 2.5. 信道的信息测度
- 2.5.1. 信道建模
- 2.5.2. 信道疑义度
- 2.5.3. 平均互信息
- 2.5.4. 信道容量
- 2.5.4.1. 对称信道的信道容量
- 2.5.4.2. 一般信道的信道容量
- 3. 信源编码
- 3.1. 目的和分类
- 3.2. 无失真可变长信源编码定理
- 3.2.1. 冗余分类
- 3.2.2. 评价信源效率的指标
- 3.2.3. 香农第一定理内容
- 3.3. 实际使用的信源编码
- 3.3.1. 单符号码
- 3.3.1.1. 香农码
- 3.3.1.2. 费诺码
- 3.3.1.3. 哈夫曼码
- 3.3.1.4. 规范码
- 4. 信道编码
1. 准备知识和教材
1.1. 学科关联
- 和通信的关系:这个没啥说的,通信的目的是传递信息,信息论是通信技术的基石;
- 和概率论的关系:信息论并不完全是基于概率论结论的更高级理论,它有些内容和概率论是平行的;概率论中的一些理论(比如大数定律、中心极限定理)可以用信息论给出另一种更符合人类直觉的解释;
- 和计算机科学:一种复杂度的算法Kolmogorov复杂度的本质和信息熵是类似的;
- 和物理学:信息熵就是真正的熵,麦克斯韦妖佯谬就是被这个干掉的。
1.2. 准备知识
- 基础概率论:信息靠概率度量;
- 基础优化理论:凸函数、凹函数等;
- 基础代数和分析:微积分、矩阵论。
1.3. 教材
- 《Elements of Information Theory》,Thomas M. Cover,当前最新版是第二版,这本书起源于1990s,适用范围非常广,这本书的特色是比较通俗,而且有非常多信息论和其他学科的关联关系。比较适合初学。
- 《Information Theory and Network Coding》,Raymond W. Yeung,这本书是2010s出现的,信息论中的专业著作,会介绍信息论的一些新的理论和技巧,适合专业学习。
1.4. 理论体系的简要概述
信息论的核心问题是研究如何让数据从信源高效、可靠的传递到目的地。这里描述的这个过程不仅局限于通信,存储等系统也可以近似看作是一个广义信道。
信息论的相关内容从理论和实践的角度划分为两部分,理论部分称为信息论,实践部分称为信息编码;而从高效性、可靠性角度,信息论以及编码技术所要解决的问题也可以划分为两类,一类是信息压缩,一类是错误校验和纠正。
- 信息论:
- 压缩理论:
- 无损压缩:
- 香农的信源编码理论(香农第一定理,Mathematical那篇文章);
- Kraft-Mcmillan不等式;
- 有损压缩:
- 香农的率失真理论(香农第三定理,1959年,Coding Theory for a Discrete Source With a Fidelity Criterion);
- 无损压缩:
- 校验理论:
- 香农的信道编码理论(香农第二定理。Mathematical那篇文章);
- 压缩理论:
- 信息编码技术:
- 压缩编码:
- 符号编码:
- 霍夫曼编码;
- 香农编码;
- 费诺编码;
- 规范编码;
- 流编码:
- 算术编码;
- Lempel-Ziv编码;
- 符号编码:
- 校验编码:
- 汉明码;
- BCH编码(包含Reed-Solomon Code,RS码);
- Turbo码;
- Gallage码(即低密度奇偶校验码,LDPC);
- 压缩编码:
1.5. 编码技术的举例
1.5.1. 压缩编码
1.5.1.1. 霍夫曼编码
最佳符号编码,Zip文件压缩、PNG、JPEG以及MPEG(这个是视频)等图像文件、MP3、AAC等音频文件使用的压缩编码。当然,这些文件的压缩系统一般是有损和无损压缩一起使用的。比如图像压缩,一般是靠离散余弦变换和小波变换实现的有损压缩。
虽然霍夫曼是最佳的符号编码,但还存在其他编码形式,因为很多情况下并不适合使用符号编码,所以一些其他编码可能性能好的多。
1.5.1.2. 算术编码
据说这个技术比霍夫曼强大得多。目前这个技术面临的障碍是:计算复杂度相对高一些,且IBM持有大量专利。
上面提到的那些文件系统也可以使用算术编码,此外直播系统、电视会议、Flash等也使用的是算术编码。PPM、PAQ压缩文件使用的是算数编码。
1.5.1.3. Lempel-Ziv编码
可能是最流行的压缩编码,这种编码易于实现,且适合于几乎所有类型的输入数据,PNG(实际上是霍夫曼和LZ的结合体)、GIF、PDF使用这个。
1.5.2. 校验编码
1.5.2.1. 汉明码
这个并不是最好的,甚至没有太多优化设计,这个只是第一种出现的相对比较好的信道编码而已(在汉明码之前,主要用的还是重复编码)。
内存在读写过程中仍然在使用汉明码,因为DRAM芯片的读写并不是完全无错误的过程。独立磁盘冗余阵列-2(RAID-2)也使用的是汉明码,这种技术使用多个磁盘存储信息以防止数据损毁(RAID-2,七个硬盘,使用汉明七码,丢失任意一位,都可以无损的恢复原始数据)。
1.5.2.2. BCH编码
这个是一种编码体系和编码方法,这里面最常用的是Reed-Solomon Code,RS码;这个的提出时间是1960年,只比汉明码晚10年。这个码常和卷积码共同使用(RSV,V是Viterbi,卷积码的译码方式),这个RSV几乎是很多涉及校验的行业的黄金准则。这个编码对于突发错误的纠正性能比较好。
条形码,这个可能有许多标准,但至少有一种常用的标准使用了RS码;CD、DVD、蓝光碟也用的是RS编码。RAID-6,相比RAID-2安全性更好。NASA的太空计划也用的是RS码。
虽然这个码性能很好,但仍然没达到信道编码的理论上界(信道容量)。
1.5.2.3. Turbo码
这个是法国人发明的,1993年,可以逼近香农极限(确切来说是香农第二定理的极限)的信道编码(某些参数越高,越靠近香农限)。这个已经被用于3G和4G标准中。
Turbo的编码非常简单,但复杂地方在于解码。解码机中两条反馈线实现对码字的迭代运算处理是这个编码技术的和核心,由于数据在解码机中的流动形式类似与一个涡轮的运转,因此称为Turbo码。
新的NASA太空计划也使用了Turbo码。
1.5.2.4. Gallager码(LDPC,低密度奇偶校验码)
这个也是逼近香农限的编码。最早由Robert G. Gallager在1960年的博士学位论文中提出,但当时的计算机算力无法承受这个编码的要求。到1995年前后,两个人重新发现了这个编码,并发现这个编码的性能不亚于Turbo。
这个用在了10Gbps的以太网、WiFi(IEEE 802.11)、电力载波中。
1.6. 香农信息论的建立过程
- 1948年,《A Mathematical Theory of Communication》,这个主要提出了两个重要定理:
- 香农第一定理:Souring Coding Theorem,可变长无失真信源编码定理;
- 香农第二定理:Noisy-channel Coding Theorem,有噪声信道编码定理。
- 1959年,《Coding Theorems for a Discrete Source With a Fidelity Criterion》,提出一个重要定理:
- 香农第三定理:Rate-distortion Theorem,保失真度准则下的有失真信源编码(率失真定理)。
1.7. 香农信息论存在的问题
用概率衡量信息是香农信息论的前提研究条件,但概率只是能作为测度函数的诸多测度中的一个。由于是基于概率做研究,一些不能获取概率和统计信息的事物就不能使用信息论研究。
此外,信息论不能衡量主观意义上的信息,也无法衡量智能领域的语义信息。因此后期还发展出了:
- 广义信息论,Generalized Information Theory
- 量子信息论,Quantum Information Theory
- 生物信息论,Biological Information Theory
2. 信息的度量方法
2.1. 统计信息和语义信息
需要注意的是,信息论是在数字通信背景下产生的,它所处理的信息是information这个词的一个数学解释。由于通信系统、信号处理系统等这些系统更关注的是信息的传递,而不是信息的解读提取,所以信息论中的信息更关注的是information在传递过程中所表现出的性质。这种抽象的信息称为统计信息,核心是信息是减少的不确定度。
但在信息的价值是使用,人类利用信息的流程是:产生(总结出来或者直接用传感器接收)、传递(发送、书写、存储)、使用。最关键的一步是使用,但在这一步,信息所表达出的性质和传递中的性质不一样。比如数字图像处理系统,在拥有高性能硬件的基础上,图像处理能获得远超人眼的细节、信噪比,按理来说应该比人眼观察到的信息更多,但数字图像处系统不能理解图像的真正含义,只能获取到一个二进制流。这个特性在通信系统中也有出现,通信系统把信息传递到了,实际上还是人去理解信息的。所以在AI研究中又出现了一个语义信息的定义,更侧重对信息的理解而不是传输。
在全信息概念中,传递过程中关注的信息称为语法信息,信源端获取并尝试解释的信息称为语义信息,信宿接收信息并获取有效内容中的信息称为语用信息。
2.2. 信源分类
按概率空间分类:
离散型概率空间:比如数字通信的发送机、抛硬币实验;这类信源在时间上一定是离散的。
按记忆性继续分类:
- 无记忆信源:下一时刻的信号与上一时刻的统计独立的;
- 有记忆信源:下一时刻信号和上一时刻是相关的。
最常用的模型是离散型无记忆信源,简称DMS。这个又分类为:
- 简单信源:字母表中是一堆符号;
- 复杂信源(扩展信源):字母表中是一堆“字符串、段落”。这个可以用简单信源表示,数学模式是N重概率空间,对应随机变量是矢量,对应的分布是Joint分布。
连续性概率空间:比如模拟音频通信、投针实验。
按时间连续性分类:
- 时间离散源:比如一个定时采样的连续放大器;
- 时间波形源:彻底的模拟信号源。
2.3. 信源的信息测度
2.3.1. 自信息
自信息是概率空间中的一列所包含的信息。自信息定义的是获得了一个随机事件的结果,它自身所包含的信息量,定义为:
I(X=x)=−log2[P(X=x)]I(X=x) = -\log_2\Big[P(X=x)\Big] I(X=x)=−log2[P(X=x)]
自信息总结起来有几个特性:
- 非负性:因为概率是小于1的,最弱的信息是确定性事件的信息,即为0;
- 随概率负相关变化:概率越小,信息越多,不可能事件的信息接近无穷。
自信息是单位是比特,信息熵不是,信息熵是比特/符号。
2.3.2. 信息熵
对于随机信源来说,它的信息量也是随机的,其样本空间包含所有事件的自信息,概率分布就是事件的概率分布。所以要用确定性的数据衡量信源的信息量,需要用统计量或数字特征。
2.3.2.1. 熵的起源
熵这种衡量标准起源于热力学物理现象中的不可逆现象。信息学中类比的熵是Boltzmann Entropic,玻尔兹曼熵公式如下:
S=klnΩS = k \ln \Omega S=klnΩ
这里的kkk是普朗克加上的,玻尔兹曼的版本中是正比关系;这个kkk命名为玻尔兹曼常数。这里的Ω\OmegaΩ是系统的微观态数,这个状态数对数的形式和信息学里的熵是一致的。
最先提出熵概念的并不是Boltzmann(1877年),而是Clausius(1854年)。克劳修斯的定义源自Carnot循环中的一个现象。
Carnot Cycle是这样一个热力学过程:
两个热源,工质只能和这两个热源发生热量交换;
- 高温热源温度T1T_1T1,吸热Q1Q_1Q1
- 低温热源温度T2T_2T2。吸热Q2Q_2Q2(实际是放热,所以数值是负数)
工作流程为:
- 等温吸热;
- 绝热膨胀;
- 等温放热;
- 绝热压缩。
卡诺循环的一个规律是:
Q1T1+Q2T2=0\frac{Q_1}{T_1} + \frac{Q_2}{T_2} = 0 T1Q1+T2Q2=0
任意热力学循环都可以由若干个无限小的卡诺循环组成,
2.3.2.2. 信息熵定义
香农确实“借鉴”的是玻尔兹曼熵,而且只是单纯的借鉴,并没有意识到这个熵和物理意义上的熵是一个东西。起初香农想换个名字,但和冯诺依曼导论后,冯诺依曼建议就用熵命名,因为这个名词本身足够抽象,更有利于辩论自己的理论。(牛人也逃不开异化,做不到纯粹的科研)
熵是定义在离散型随机变量的概率测度上的,在信息论语境下,常用字母表(Alphabet)指代概率论中样本空间的概念。
- 符号统一:
- 字母表(样本空间):X\mathcal{X}X
- 随机变量:XXX
- 熵:H(X)H(X)H(X)
熵的定义是:(即自信息的期望,所以单位和自信息是一致的,也是bit)
H(X)=−∑∀x∈Xp(x)log2p(x)H(X) = -\sum_{\forall x\in\mathcal{X}}p(x)\log_2p(x) H(X)=−∀x∈X∑p(x)log2p(x)
需要注意一些特殊的要点:
- 极限limx→0xlogx\lim_{x\to 0}x\log xlimx→0xlogx是存在的,这个极限是0,这保证了不可能事件尽管信息量是无穷,但对熵没有贡献。
- 自信息只和其概率有关,熵只和概率分布有关。
- 熵的物理含义是:平均自信息,平均每个事件(符号)所能消除的平均不确定性,这个物理含义也侧面说明了一件事,均匀分布最没把握确定输出事件,所以熵最大。
- 自信息的含义是:被消除的不确定性。
- 信息熵的单位应该是比特/符号,因为概率自带一个“每个状态”的量纲属性。
2.3.3. 联合熵
联合熵的定义是:在联合集X⋅Y\mathcal{X}\cdot\mathcal{Y}X⋅Y上,联合自信息的均值,即:
H(XY)=E[∀x∈X,y∈YI(xy)]=∑x∈X,y∈Yp(x,y)log2p−1(x,y)\begin{aligned} H(XY) &= E\Big[\forall_{x\in\mathcal{X},y\in\mathcal{Y}}I(xy)\Big]\\ &= \sum_{x\in\mathcal{X},y\in\mathcal{Y}}p(x,y)\log_2p^{-1}(x,y) \end{aligned} H(XY)=E[∀x∈X,y∈YI(xy)]=x∈X,y∈Y∑p(x,y)log2p−1(x,y)
注意,这里的X,YX,YX,Y都是随机变量,也可以说成集合,所以XYXYXY的实际含义是卡氏积。
典型应用场景:
研究扩展信源(注意,不仅可以研究无记忆扩展信源,有记忆的也可以研究,记忆性隐藏在联合概率中了):
假设有一个离散无记忆信源,一共能输出三个符号:
[Xp(X)]=[x1x2x31/21/41/4]\begin{bmatrix} X\\p(X) \end{bmatrix} = \begin{bmatrix} x_1 && x_2 && x_3\\ 1/2 && 1/4 && 1/4 \end{bmatrix} [Xp(X)]=[x11/2x21/4x31/4]
现在要表示7种状态,这个信源不够,解决办法就是让这个信源生成两次编码,把这两次编码当成一次事件,这样共能表示9种状态。这个二元扩展信源的信息熵就是联合熵。
扩展信源:以一个基本信源为研究对象,生成多个符号,用多个符号的序列表示一条消息。
无记忆扩展信源:扩展出来的多个符号相互独立。无记忆信源扩展出来的状态数一定是满的,如果两个三元信源扩展出的信源状态数不到9个,肯定是有记忆的(因为某些组合不能出现,这些组合的联合概率是0,条件概率也是0,而边界概率却不是0,所以不独立)。此外如果是时间连续信源,一定是有记忆的,不然就是随机噪声了。
举一个例子,假设一个信源生成0-9数字,随机数就是无记忆扩展信源,电话号码、身份证号就是有记忆扩展信源。
联合熵的单位和熵类似,但它是自信息乘了联合概率,所以应该是比特/n个符号,或者比特/序列。
2.3.4. 条件熵
联合熵的定义是:在联合集X⋅Y\mathcal{X}\cdot\mathcal{Y}X⋅Y上,条件自信息的均值,即:
H(X∣Y)=E[I(X∣Y)]=∑x∈X,y∈Yp(x,y)log2p−1(x∣y)\begin{aligned} H(X|Y) &= E\Big[I(X|Y)\Big]\\ &= \sum_{x\in\mathcal{X,y\in\mathcal{Y}}}p(x,y)\log_2p^{-1}(x|y) \end{aligned} H(X∣Y)=E[I(X∣Y)]=x∈X,y∈Y∑p(x,y)log2p−1(x∣y)
由于p(x,y)p(x,y)p(x,y)也可以写成p(x∣y)p(y)p(x|y)p(y)p(x∣y)p(y)或者p(y∣x)p(x)p(y|x)p(x)p(y∣x)p(x),所以这个定义也可以改写成:
H(X∣Y)=Ey[H(X∣y)]=∑x∈X,y∈Yp(x,y)log2p−1(x∣y)=∑x∈X,y∈Yp(x∣y)p(y)log2p−1(x∣y)=∑x∈X,y∈Yp(y)[p(x∣y)log2p−1(x∣y)]=∑y∈Yp(y)[∑x∈Xp(x∣y)log2p−1(x∣y)]\begin{aligned} H(X|Y) &= E_y\Big[H(X|y)\Big]\\ &= \sum_{x\in\mathcal{X,y\in\mathcal{Y}}}p(x,y)\log_2p^{-1}(x|y)\\ &= \sum_{x\in\mathcal{X,y\in\mathcal{Y}}}p(x|y)p(y)\log_2p^{-1}(x|y)\\ &= \sum_{x\in\mathcal{X,y\in\mathcal{Y}}} p(y)\Big[ p(x|y)\log_2p^{-1}(x|y) \Big]\\ &= \sum_{y\in\mathcal{Y}} p(y)\Big[\sum_{x\in\mathcal{X}}p(x|y)\log_2p^{-1}(x|y)\Big]\\ \end{aligned} H(X∣Y)=Ey[H(X∣y)]=x∈X,y∈Y∑p(x,y)log2p−1(x∣y)=x∈X,y∈Y∑p(x∣y)p(y)log2p−1(x∣y)=x∈X,y∈Y∑p(y)[p(x∣y)log2p−1(x∣y)]=y∈Y∑p(y)[x∈X∑p(x∣y)log2p−1(x∣y)]
或者用另一种方法拆分联合概率,但这样做没有意义:
H(X∣Y)=E[I(X∣Y)]=∑x∈X,y∈Yp(x,y)log2p−1(x∣y)=∑x∈X,y∈Yp(y∣x)p(x)log2p−1(x∣y)=∑x∈Xp(x)[∑y∈Yp(y∣x)log2p−1(x∣y)]\begin{aligned} H(X|Y) &= E\Big[I(X|Y)\Big]\\ &= \sum_{x\in\mathcal{X,y\in\mathcal{Y}}}p(x,y)\log_2p^{-1}(x|y)\\ &= \sum_{x\in\mathcal{X,y\in\mathcal{Y}}}p(y|x)p(x)\log_2p^{-1}(x|y)\\ &= \sum_{x\in\mathcal{X}} p(x)\Big[\sum_{y\in\mathcal{Y}}p(y|x)\log_2p^{-1}(x|y)\Big] \end{aligned} H(X∣Y)=E[I(X∣Y)]=x∈X,y∈Y∑p(x,y)log2p−1(x∣y)=x∈X,y∈Y∑p(y∣x)p(x)log2p−1(x∣y)=x∈X∑p(x)[y∈Y∑p(y∣x)log2p−1(x∣y)]
不论是条件熵还是联合熵,加权取平均的时候,信息量的权重都是一样,都是联合概率p(x,y)p(x,y)p(x,y),因为都是对(X,Y)(X,Y)(X,Y)向量进行的期望运算。
与联合熵的区别是:
- 联合熵是两个事件同时出现所能减少的不确定度的均值;
- 条件熵是一个事件出现所能减小的不确定度的均值,只不过这个事件是在另一个事件的帮助下确定的.
条件熵是在这样的情况下使用的:
假设存在这样一个概率空间:有100个球,其中红球60个,黑球40个,不放回抽取两个球,求第二次抽取事件所能获取的平均信息量。
抽取第二个球取决于第一次抽取的结果,对于每一种第一次抽取结果,第二次抽取都是一个完整的概率空间,对应了一个自信息熵;但由于第一次抽取的不确定性,导致第二次抽取的自信息熵也随机变量,因此应该再求一次均值,即:
H(X2∣X1)=∑x1∈Xp(x1)[∑x2∈Xp(x2∣x1)log2p−1(x2∣x1)]=∑x1,x2∈Xp(x1)p(x2∣x1)log2p−1(x2∣x1)=∑x1,x2∈Xp(x1,x2)log2p−1(x2∣x2)\begin{aligned} H(X_2|X_1) &= \sum_{x_1\in\mathcal{X}}p(x_1)\Big[ \sum_{x_2\in\mathcal{X}}p(x_2|x_1)\log_2p^{-1}(x_2|x_1) \Big]\\ &= \sum_{x_1,x_2\in\mathcal{X}} p(x_1)p(x_2|x_1)\log_2p^{-1}(x_2|x_1)\\ &= \sum_{x_1,x_2\in\mathcal{X}}p(x_1,x_2)\log_2p^{-1}(x_2|x_2)\\ \end{aligned} H(X2∣X1)=x1∈X∑p(x1)[x2∈X∑p(x2∣x1)log2p−1(x2∣x1)]=x1,x2∈X∑p(x1)p(x2∣x1)log2p−1(x2∣x1)=x1,x2∈X∑p(x1,x2)log2p−1(x2∣x2)
典型应用场景:
研究有记忆离散信源基于先前发送事件的新发送事件的平均信息量。
对于最简单的情况,二元平稳有记忆离散信源:
- 只发送两个符号;
- 有记忆:后一个符号的概率分布受前一个符号概率分布的影响;
- 离散信源:发送时间离散,发送内容是符号;
已知先验概率p(ai−1)p(a_{i-1})p(ai−1),以及后验概率p(ai∣ai−1)p(a_{i}|a_{i-1})p(ai∣ai−1),则后一个符号的平均信息量即为H(Xi∣Xi−1)H(X_{i}|X_{i-1})H(Xi∣Xi−1)。
2.3.5. 熵的性质
2.3.5.1. 非负性
H(X)≥0H(X) \geq 0 H(X)≥0
由于概率是[0,1][0,1][0,1]上的函数,这个保证了熵的非负性,但要注意一个特殊情况:一个只包含不可能事件的概率空间的熵。
由于只有一个事件,熵就是自信息。即:
H(X)=I(x)=0×limp→0log(1p)=limp→0plogp=limp→0logp1p=limp→01pln10−1p2=limp→0−p2pln10=0\begin{aligned} H(X) &= I(x)\\ &= 0 \times \lim_{p\to 0} \log\Big(\frac{1}{p}\Big)\\ &= \lim_{p \to 0} p\log p\\ &= \lim_{p\to 0} \frac{\log p}{\frac{1}{p}}\\ &= \lim_{p\to 0} \frac{\frac{1}{p\ln 10}}{-\frac{1}{p^2}}\\ &= \lim_{p\to 0}-\frac{p^2}{p\ln 10}\\ &= 0 \end{aligned} H(X)=I(x)=0×p→0limlog(p1)=p→0limplogp=p→0limp1logp=p→0lim−p21pln101=p→0lim−pln10p2=0
2.3.5.2. 小概率扩展性
H(p1,p2,⋯,pq)=limε→0H(p1,p2,⋯,pq−ε,ε)H(p_1,p_2,\cdots,p_q) = \lim_{\varepsilon \to 0} H(p_1,p_2,\cdots,p_q-\varepsilon,\varepsilon) H(p1,p2,⋯,pq)=ε→0limH(p1,p2,⋯,pq−ε,ε)
一个很小概率的事件尽管自信息很大,但对信源的整体特性是几乎没有影响的。这种概率影响大于自信息影响的特征在计算不可能信源的熵的时候就表现出来了。
这个性质据说可以这样用:出于某种目的,希望不同信源的符号相同,就加进去几个不可能出现的符号,被修改的信源特性不变。
2.3.5.3. 链式法则(强可加性)
有两个信源:
X=[x1x2⋯xmp(x1)p(x2)⋯p(xm)]Y=[y1y2⋯ynp(y1)p(y2)⋯p(yn)]\mathcal{X} = \begin{bmatrix} x_1 && x_2 && \cdots && x_m\\ p(x_1) && p(x_2) && \cdots && p(x_m) \end{bmatrix} \\ \mathcal{Y} = \begin{bmatrix} y_1 && y_2 && \cdots && y_n\\ p(y_1) && p(y_2) && \cdots && p(y_n) \end{bmatrix} X=[x1p(x1)x2p(x2)⋯⋯xmp(xm)]Y=[y1p(y1)y2p(y2)⋯⋯ynp(yn)]
再组成一个信源,这个信源是前面两个空间的卡氏积:
XY=[x1y1x2y1⋯xmynp(x1,y1)p(x2,y1)⋯p(xm,yn)]\mathcal{XY} = \begin{bmatrix} x_1y_1 && x_2y_1 && \cdots && x_my_n\\ p(x_1,y_1) && p(x_2,y_1) && \cdots && p(x_m,y_n) \end{bmatrix} XY=[x1y1p(x1,y1)x2y1p(x2,y1)⋯⋯xmynp(xm,yn)]
这三个信源的熵具有这样的关系:
H(XY)=H(X)+H(Y∣X)H(XY) = H(X) + H(Y|X) H(XY)=H(X)+H(Y∣X)
证明过程就是把联合概率按条件概率拆了:
H(XY)=∑x∈X,y∈Yp(x,y)log2p−1(x,y)=−∑x∈X,y∈Yp(x,y)log2[p(x)p(y∣x)]=−∑x∈X,y∈Yp(x,y)log2p(x)−∑x∈X,y∈Yp(x,y)log2p(y∣x)=−∑x∈X[∑y∈Yp(x,y)]log2p(x)−∑x∈X,y∈Yp(x,y)log2p(y∣x)=H(X)+H(Y∣X)\begin{aligned} H(XY) &= \sum_{x\in\mathcal{X}, y\in\mathcal{Y}}p(x,y)\log_2p^{-1}(x,y)\\ &= -\sum_{x\in\mathcal{X}, y\in\mathcal{Y}} p(x,y)\log_2\Big[p(x)p(y|x)\Big]\\ &= -\sum_{x\in\mathcal{X}, y\in\mathcal{Y}} p(x,y)\log_2p(x) - \sum_{x\in\mathcal{X}, y\in\mathcal{Y}} p(x,y)\log_2p(y|x)\\ &= -\sum_{x\in\mathcal{X}}\Big[\sum_{y\in\mathcal{Y}}p(x,y)\Big]\log_2p(x) - \sum_{x\in\mathcal{X}, y\in\mathcal{Y}} p(x,y)\log_2p(y|x)\\ &= H(X)+H(Y|X) \end{aligned} H(XY)=x∈X,y∈Y∑p(x,y)log2p−1(x,y)=−x∈X,y∈Y∑p(x,y)log2[p(x)p(y∣x)]=−x∈X,y∈Y∑p(x,y)log2p(x)−x∈X,y∈Y∑p(x,y)log2p(y∣x)=−x∈X∑[y∈Y∑p(x,y)]log2p(x)−x∈X,y∈Y∑p(x,y)log2p(y∣x)=H(X)+H(Y∣X)
同样的,这个也可以写成:
H(XY)=H(Y)+H(X∣Y)H(XY) = H(Y) + H(X|Y) H(XY)=H(Y)+H(X∣Y)
总而言之,这个所描述的意义是:考虑两个符号空间的不确定性,即先考虑一个符号空间的不确定性,然后再考虑另一个的。
当X,Y\mathcal{X,Y}X,Y统计独立的时候,这个表达式退化为熵的可加性(弱可加性)。
H(X)=H(X)+H(Y)H(X) = H(X) + H(Y) H(X)=H(X)+H(Y)
这个推广到高维联合熵,就是:
H(X1,X2,⋯,Xn)=∑i=1nH(Xi∣Xi−1,⋯,X1)H(X_1,X_2,\cdots,X_n) = \sum_{i = 1}^{n}H(X_i|X_{i-1},\cdots,X_1) H(X1,X2,⋯,Xn)=i=1∑nH(Xi∣Xi−1,⋯,X1)
这个公式这样解释:
- i=1i=1i=1时只有一个X1X_1X1,即没有先验,本身就是第一个符号;
- i=2i=2i=2时多了个X1X_1X1,要考虑X1X_1X1这一个先验;
- i=3i=3i=3时要考虑X1,X2X_1,X_2X1,X2两个先验。
- ⋯\cdots⋯
2.3.5.4. 最大离散熵定理
H(p1,p2,⋯,pq)≤log2qH(p_1,p_2,\cdots,p_q) \leq \log_2q H(p1,p2,⋯,pq)≤log2q
均匀分布的概率空间具有最大的熵,这在通信中给出了一个提高信息速率的方法:尽可能设计一个使各符号等概出现的符号空间,这样每个符号提供的信息是最大的,这个是做信源压缩编码的一个重要途径。
有一个引理在信息学等证明过程中很实用:(詹森不等式的一种退化形式)
x>0⇒lnx≤x−1x>0 \Rightarrow \ln x\leq x-1 x>0⇒lnx≤x−1
当且仅当x=1x=1x=1时等号成立。
2.3.5.5. 条件作用使熵减小
H(X∣Y)≤H(X)H(X|Y) \leq H(X) H(X∣Y)≤H(X)
证明:(核心是退化詹森不等式)
H(X∣Y)=∑x∈X,y∈Yp(x,y)log2p−1(x∣y)\begin{aligned} H(X|Y) &= \sum_{x\in\mathcal{X},y\in\mathcal{Y}} p(x,y)\log_2p^{-1}(x|y)\\ \end{aligned} H(X∣Y)=x∈X,y∈Y∑p(x,y)log2p−1(x∣y)
2.3.5.6. 联合熵的独立上界
H(X1,X2,⋯,Xn)≤∑i=1nH(Xi)H(X_1,X_2,\cdots,X_n)\leq \sum_{i = 1}^nH(X_i) H(X1,X2,⋯,Xn)≤i=1∑nH(Xi)
当且仅当所有符号彼此独立时取等号。
2.4. 信源剩余度
2.4.1. 信源效率的分析
熵的几种形式描述了不同信源所产生的平均自信息:
自信息熵:H(X)=E[I(X)]H(X) = E[I(X)]H(X)=E[I(X)],这个是一个一维信源每个符号所具有的平均信息量;
- 最大离散熵:H0H_0H0,即均匀分布的一维无记忆信源的熵,是一维信源中信息量最大的。
条件熵:H(X∣Y)=∑yH(X∣y)H(X|Y) = \sum_y H(X|y)H(X∣Y)=∑yH(X∣y),这个是有记忆信源在考虑前一个符号的情况下后一个符号所具有的平均信息量;
联合熵:H(XY)=E[I(XY)]=H(X)+H(Y∣X)=H(Y)+H(X∣Y)H(XY) = E[I(XY)] = H(X) + H(Y|X) = H(Y) + H(X|Y)H(XY)=E[I(XY)]=H(X)+H(Y∣X)=H(Y)+H(X∣Y),这个是扩展信源每个多元符号所具有的平均信息量。
极限熵:前提是对于平稳有记忆信源,由于是有记忆的,所有符号的概率分布会始终变化,但平稳性保证当符号足够多后,概率分布几乎不变。对于第nnn个符号,其平均信息量是条件熵:
H(Xn∣X1X2⋯Xn−1)H(X_n|X_1X_2\cdots X_{n-1}) H(Xn∣X1X2⋯Xn−1)
取极限,称为极限熵,这个是实际的平稳有记忆信源稳定后的平均每符号信息量:
H∞=limn→∞H(Xn∣X1X2⋯Xn−1)H_\infin = \lim_{n\to \infin}H(X_n|X_1X_2\cdots X_{n-1}) H∞=n→∞limH(Xn∣X1X2⋯Xn−1)
上面描述的这一堆熵满足这样的不等式:(条件作用使熵减少)
H∞≤⋯≤H(Xn∣X1X2⋯Xn−1)≤H(X2∣X1)≤H(X1)≤H0H_\infin \leq \cdots \leq H(X_n|X_1X_2\cdots X_{n-1}) \leq H(X_2|X_1) \leq H(X_1) \leq H_0 H∞≤⋯≤H(Xn∣X1X2⋯Xn−1)≤H(X2∣X1)≤H(X1)≤H0
这表明实际信源的效率并不够高,影响信源的符号效率的因素是:
- 条件作用:条件作用使熵减小,信源不同符号之间的记忆性就是条件作用;
- 非均匀分布:即便不考虑条件作用,对于单个符号,实际信源也未必能达到最大离散熵。
2.4.2. 信源冗余度定义
信源剩余度(冗余度,Redundancy)用来衡量信源的信息承载能力:
r=1−H∞H0=1−H∞log2qr = 1 - \frac{H_\infin}{H_0} = 1 - \frac{H_\infin}{\log_2 q} r=1−H0H∞=1−log2qH∞
2.4.3. 实际信源冗余度
- 英文源:
- 符号:26个字母 + 空格键,共27个符号;
- 最大离散熵:H0=log227=4.76bit/sigH_0 = \log_2 27 = 4.76 \mathrm{bit/sig}H0=log227=4.76bit/sig;
- 无记忆信息熵:H(X1)=4.03bit/sigH(X_1) = 4.03\mathrm{bit/sig}H(X1)=4.03bit/sig;
- 有记忆极限熵:H∞=1.4bit/sigH_\infin = 1.4\mathrm{bit/sig}H∞=1.4bit/sig;
- 冗余度:71%71\%71%
- 中文源:
- 符号:非生僻汉字10k个;
- 最大离散熵:H0=log2(10000)=13.29bit/sigH_0 = \log_2(10000) = 13.29\mathrm{bit/sig}H0=log2(10000)=13.29bit/sig;
- 保守估计有记忆极限熵:H∞=9.77bit/sigH_\infin = 9.77\mathrm{bit/sig}H∞=9.77bit/sig;
- 保守冗余度:26.4%26.4\%26.4%;
2.4.4. 如何降低冗余度
由于剩余度的来源是记忆性和非等概分布,所有有两种手段能降低信源的冗余度,即信源编码的技术:
- 统计编码:倾向于实现一种符号映射,使经过编码后的符号倾向于等概分布;
- 哈夫曼、菲诺、算术编码属于这种编码。
- 预测编码、变换编码:将每个符号分成随机分量和相干分量,只传输随机分量,相干分量让解码器自己算。预测编码是传输差值,让接收端去重构;变换编码是映射到频域,让接收端去重构。
- DPCM、离散余弦变换(JPEG)采用这种编码。
2.5. 信道的信息测度
需要注意的是:信息论研究过程在研究的信道是广义信道,输入和输出都是符号,信道中包含了脉冲成型、调制、传输媒介、解调、判决。这样的广义信道和无线通信研究是物理信道并不是一个概念。
2.5.1. 信道建模
对信道的信息维度的研究,目的是得知信道的信息传输能力,以及这个能力的上界(信道容量),达到这个上界的方法。
信道是个抽象系统,可以包含任何东西;一个复杂的通信网络或者一个简单的模拟前端器件都可以看作一个信道;甚至一个存储媒介也可以看作是一个信道。所以对信道的建模必须具有足够高的抽象性和概括性,即只研究输入和输出。
信道两侧,输入和输出都各种构成一个概率空间:
[XP(X)]→[YP(Y)]\begin{bmatrix} X\\P(X) \end{bmatrix} \to \begin{bmatrix} Y\\P(Y) \end{bmatrix} [XP(X)]→[YP(Y)]
信道的全部特性就是这两个概率空间中元素的对应关系,称为信道转移概率(transition probability),即:
P(y∣x)y∈Y,x∈XP(y|x) \quad y\in Y,x\in X P(y∣x)y∈Y,x∈X
需要注意的是:信道的建模是在输入侧正向建模的,即把输入当作条件,把输出当作随机事件。这只是建模时的思维习惯,可以用贝叶斯公式把这个因果关系反过来,由此表示在信宿端推测信源端符号时的概率分布:
P(x∣y)=P(x,y)P(y)=P(y∣x)P(x)∑xp(x,y)=P(y∣x)p(x)∑xP(y∣x)P(x)P(x|y) = \frac{P(x,y)}{P(y)} = \frac{P(y|x)P(x)}{\sum_x p(x,y)} = \frac{P(y|x)p(x)}{\sum_xP(y|x)P(x)} P(x∣y)=P(y)P(x,y)=∑xp(x,y)P(y∣x)P(x)=∑xP(y∣x)P(x)P(y∣x)p(x)
==这些转移概率表示了信道的全部性质。==所以信道的表示方法只需要包含所有输入和输出组的转移概率,就能构成完备的信息。常用表示方法有:
- 逐一列出公式;
- 用转移概率矩阵一次性给出所有转移概率;
- 用转移概率图画出符号的对应转移关系。
信道转移概率矩阵和Markov矩阵拥有相同的性质,每行概率之和是1(直接给出证明)
∑i=1np(yi∣x)=∑i=1np(x,yi)p(x)=∑ip(x,yi)p(x)=1\sum_{i = 1}^np(y_i|x) = \sum_{i = 1}^n\frac{p(x,y_i)}{p(x)} = \frac{\sum_ip(x,y_i)}{p(x)} = 1 i=1∑np(yi∣x)=i=1∑np(x)p(x,yi)=p(x)∑ip(x,yi)=1
2.5.2. 信道疑义度
先考虑信道的输入,信道的输入是一个信源,即一个概率空间。这个信源的信息测度指标是信源熵H(X)H(X)H(X)。
假设信道是无损的,即对于任意的输入xix_ixi,都有唯一**确定性(概率为1)**的yiy_iyi与之对应,即∀xi∈X,∃yi∈Ys.t.P(yi∣xi)=1\forall x_i \in X,\quad \exist y_i\in Y\quad s.t. P(y_i|x_i) = 1∀xi∈X,∃yi∈Ys.t.P(yi∣xi)=1,则对于任意的yi∈Yy_i\in Yyi∈Y,都有:
P(yi)=∑x∈XP(x,yi)=∑x∈XP(yi∣x)P(x)=P(yi∣xi)P(xi)=P(xi)P(y_i) = \sum_{x\in X}P(x,y_i) = \sum_{x\in X}P(y_i|x)P(x) = P(y_i|x_i)P(x_i) = P(x_i) P(yi)=x∈X∑P(x,yi)=x∈X∑P(yi∣x)P(x)=P(yi∣xi)P(xi)=P(xi)
那么输出和输入获得了完全相同的概率分布,输出后信源熵和输入完全一致。
只有在无失真信道的条件下,才可能实现无失真传输。对于绝大部分有失真的情况,需要研究信道究竟丢了多少信息。这个指标就是信道疑义度,即信道的条件熵:
H(Y∣X)=−∑x∈X,y∈Yp(x,y)log2p(y∣x)=−∑x∈Xp(x)∑y∈Yp(y∣x)log2p(y∣x)\begin{aligned} H(Y|X) &= -\sum_{x\in X,y\in Y}p(x,y)\log_2p(y|x)\\ &= -\sum_{x\in X}p(x)\sum_{y\in Y}p(y|x)\log_2p(y|x) \end{aligned} H(Y∣X)=−x∈X,y∈Y∑p(x,y)log2p(y∣x)=−x∈X∑p(x)y∈Y∑p(y∣x)log2p(y∣x)
这个指标应该这样理解:
究竟是要不确定性,还是不要不确定性?
需要时刻注意,通信的目的是消除不确定性。
在研究信源编码的时候,要尽可能使每个符号所能涵盖的不确定性最大,因为信源符号是能直接消除不确定性的。但信道中的不确定性是没用的,信源通过信道后形成的新的概率空间可能熵特别大,但这个概率空间并不能用来消除不确定性,而是会增加消除不确定性的难度。
一种理解方式是:信道传过来的信息量为信道接收端的总不确定度减信道引入的不确定度。
信道发送符号xjx_jxj,得到yjy_jyj,这个过程中引入的不确定性:
I(yj∣xi)=−log2p(yj∣xi)I(y_j|x_i) = -\log_2p(y_j|x_i) I(yj∣xi)=−log2p(yj∣xi)上述过程加权平均,对于整体统计特性,引入的不确定性:
H(Y∣X)=−∑x∈X,y∈Yp(x,y)log2p(y∣x)H(Y|X) = -\sum_{x\in X, y\in Y}p(x,y)\log_2p(y|x) H(Y∣X)=−x∈X,y∈Y∑p(x,y)log2p(y∣x)输出端全部的不确定性减掉信道引入的不确定性,就是信源端成功传过来的不确定性:这里的这个H(Y∣X)H(Y|X)H(Y∣X)称为噪声熵
I(X;Y)=H(Y)−H(Y∣X)I(X;Y) = H(Y) - H(Y|X) I(X;Y)=H(Y)−H(Y∣X)
另一种理解方式是:信源能消除的不确定度减信道引入的不确定度,就是信道能传递的信息量:这里的这个H(X∣Y)H(X|Y)H(X∣Y)称为信道疑义度
I(X;Y)=H(X)−H(X∣Y)I(X;Y) = H(X) - H(X|Y) I(X;Y)=H(X)−H(X∣Y)
2.5.3. 平均互信息
平均互信息概念中有三个常用的定义(或含义):
先验不确定性减掉尚存不确定性:
I(X;Y)=E{log2[p(x,y)p(x)p(y)]}I(X;Y) = E\Bigg\{\log_2\Big[\frac{p(x,y)}{p(x)p(y)}\Big]\Bigg\} I(X;Y)=E{log2[p(x)p(y)p(x,y)]}先验不确定减掉尚存不确定性:
I(X;Y)=H(X)−H(X∣Y)=H(Y)−H(Y∣X)\begin{aligned} I(X;Y) &= H(X) - H(X|Y)\\ &= H(Y) - H(Y|X) \end{aligned} I(X;Y)=H(X)−H(X∣Y)=H(Y)−H(Y∣X)
- I(X;Y)=H(X)+H(Y)−H(XY)I(X;Y) = H(X) + H(Y) - H(XY) I(X;Y)=H(X)+H(Y)−H(XY)
这几个都能统一成第一个的形式,第二个定义写开是这样的:
I(X;Y)=H(X)−H(X∣Y)=−∑x∈Xp(x)log2p(x)+∑x∈X,y∈Yp(x,y)log2p(x∣y)=∑x∈X,y∈Yp(x,y)[log2p(x∣y)−log2p(x)]=E{log2[p(x,y)p(x)p(y)]}\begin{aligned} I(X;Y) &= H(X) - H(X|Y)\\ &= -\sum_{x\in X}p(x)\log_2p(x) + \sum_{x\in X,y\in Y}p(x,y)\log_2p(x|y)\\ &= \sum_{x\in X,y\in Y}p(x,y)[\log_2p(x|y)-\log_2p(x)]\\ &= E\Bigg\{\log_2\Big[\frac{p(x,y)}{p(x)p(y)}\Big]\Bigg\} \end{aligned} I(X;Y)=H(X)−H(X∣Y)=−x∈X∑p(x)log2p(x)+x∈X,y∈Y∑p(x,y)log2p(x∣y)=x∈X,y∈Y∑p(x,y)[log2p(x∣y)−log2p(x)]=E{log2[p(x)p(y)p(x,y)]}
第三个定义写开是这样的:
I(X;Y)=H(X)+H(Y)−H(XY)=−∑x∈X,y∈Yp(x,y)log2[p(x)p(y)]+∑x∈X.y∈Yp(x,y)log2p(x,y)=E{log2[p(x,y)p(x)p(y)]}\begin{aligned} I(X;Y) &= H(X) + H(Y) - H(XY)\\ &= -\sum_{x\in X,y\in Y} p(x,y)\log_2[p(x)p(y)] + \sum_{x\in X.y\in Y}p(x,y)\log_2p(x,y)\\ &= E\Bigg\{\log_2\Big[\frac{p(x,y)}{p(x)p(y)}\Big]\Bigg\} \end{aligned} I(X;Y)=H(X)+H(Y)−H(XY)=−x∈X,y∈Y∑p(x,y)log2[p(x)p(y)]+x∈X.y∈Y∑p(x,y)log2p(x,y)=E{log2[p(x)p(y)p(x,y)]}
不带平均互信息的加权平均,也可以定义一个互信息:
I(x;y)=I(x)−I(x∣y)=−log2[p(x)p(x∣y)]\begin{aligned} I(x;y) &= I(x) - I(x|y)\\ &= -\log_2\Big[\frac{p(x)}{p(x|y)}\Big] \end{aligned} I(x;y)=I(x)−I(x∣y)=−log2[p(x∣y)p(x)]
熵是提供的信息量,平均互信息是获得的信息量。
平均互信息有几个性质:
非负性:
I(X;Y)≥0I(X;Y)\geq 0 I(X;Y)≥0
但需要注意,互信息是可能负数的,对于某个事件,它可能不仅不能获得信息量,反而增加更多不确定性。证明过程如下:
I(X;Y)=H(X)−H(X∣Y)=−∑x,yp(x,y)log2p(x)+∑x,yp(x,y)log2p(x∣y)=∑x,y[p(x,y)(log2p(x∣y)−log2p(x))]\begin{aligned} I(X;Y) &= H(X) - H(X|Y)\\ &= -\sum_{x,y}p(x,y)\log_2p(x) + \sum_{x,y}p(x,y)\log_2p(x|y)\\ &= \sum_{x,y}\bigg[p(x,y)\Big(\log_2p(x|y) - \log_2p(x)\Big)\bigg] \end{aligned} I(X;Y)=H(X)−H(X∣Y)=−x,y∑p(x,y)log2p(x)+x,y∑p(x,y)log2p(x∣y)=x,y∑[p(x,y)(log2p(x∣y)−log2p(x))]
当取得等号时:I(X;Y)=0,H(X)=H(X∣Y)I(X;Y) = 0, H(X) = H(X|Y)I(X;Y)=0,H(X)=H(X∣Y),这样的信道称为全损信道,这个信道的输入和输出的独立的。这个信道在通信中没啥用,但在密码学中很有用。具有极大值:
H(X)≥H(X;Y)≥0H(X)\geq H(X;Y)\geq 0 H(X)≥H(X;Y)≥0
当达到上界时,这样的信道称为无损信道,统计特性是H(X∣Y)=0H(X|Y) = 0H(X∣Y)=0,即每个输出有且只有一个输入,对于∀x∈X,y∈Y\forall x\in X, y\in Y∀x∈X,y∈Y,都有p(x∣y)=0,1p(x|y) =0 , 1p(x∣y)=0,1。无损信道不要求一一映射,可以是分裂的形式,即一个输入对应多个唯一输出。对应无损信道,还有一个无噪信道,即噪声熵为零,I(X;Y)=H(Y)I(X;Y) = H(Y)I(X;Y)=H(Y)
具有互易性:不论是从XXX获得YYY的信息量,还是从YYY获得XXX的信息量,结果是一样的。
凸性:
根据平均互信息的表达式
I(X;Y)=−∑x,yp(x,y)log2p(y)p(y∣x)=−∑x,yp(x,y)log2∑xp(y∣x)p(x)p(y∣x)\begin{aligned} I(X;Y) &= -\sum_{x,y}p(x,y)\log_2\frac{p(y)}{p(y|x)}\\ &= -\sum_{x,y}p(x,y)\log_2\frac{\sum_xp(y|x)p(x)}{p(y|x)} \end{aligned} I(X;Y)=−x,y∑p(x,y)log2p(y∣x)p(y)=−x,y∑p(x,y)log2p(y∣x)∑xp(y∣x)p(x)
从这个表达式可以看到,对于一个特定的I(X;Y)I(X;Y)I(X;Y),其取值和信道特性,即转移概率p(y∣x)p(y|x)p(y∣x)有关;也和信源特性,即信源分布p(x)p(x)p(x)有关。即平均互信息同时受信源和信道的影响。由此,平均互信息是信源和信道的多元函数。在这种意义下,可以分别研究:
对于一个特定信源,不同信道转移特性对互信息的影响;
这是一个下凸性函数,有最小值,即存在一种信道,使得整个系统能传递的信息量最小。
对于一个特定信道,不同概率分布的信源对互信息的影响;
这是一个上凸形函数,有最大值,即存在一种信源分布情况,使得信道能被更好的利用。
2.5.4. 信道容量
之前介绍的指标的含义归纳如下:
- H(X)H(X)H(X),信源熵:平均每接收一个信源符号,能消除掉的不确定性;
- H(Y)H(Y)H(Y),信宿熵:平均每一个信宿符号所包含的不确定性,需要注意的是信宿所包含的不确定性中既有信源传过来的,也有信道加进去的;
- H(X∣Y)H(X|Y)H(X∣Y),信道疑义度:从信源一侧看去,信道对信息的衰减;
- H(Y∣X)H(Y|X)H(Y∣X),噪声熵:从信宿一侧看去,信宿熵中包含的没有意义的不确定性;
- I(X;Y)I(X;Y)I(X;Y),信息传输率:每个符号通过信道,所能消除的不确定性。
但这些指标都不能单纯描述信道的性质,不论是两个条件熵还是传输率,都和信源相关。
由于信息传输率具有凸性,当给定信道条件后,总有唯一的一种信源分布,能使在这个工作点的信息传输率大于任何其他工作点的信息传输率,因此这个最大值能表示信道的潜力特性。即信道具备实现这样传输率的能力,具体能不能达到要看信源了。这个就好比容器,它有个容量,但使用者未必能装满。
- 给定信道条件下,平均互信息的最大值是信道容量;
- 给定信道条件下,能达到信道容量的信源分布称为最佳输入分布。
2.5.4.1. 对称信道的信道容量
对称信道的定义是:
信道对每一个特定输入,都对应若干个转移概率以及输出。对称信道对于任意两个输入,其转移概率分布完全相同。
严格数学定义是:
∀x1,x2∈X;y1∈Y;∃y2∈Y;s.t.p(y2∣x2)=p(y1∣x1)\forall x_1,x_2\in X;y_1\in Y;\; \exist y_2\in Y;\quad s.t.\;p(y_2|x_2) = p(y_1|x_1)∀x1,x2∈X;y1∈Y;∃y2∈Y;s.t.p(y2∣x2)=p(y1∣x1)
这种特性在转移概率矩阵中的形式为:每一行都可以由第一行调换顺序得到;
信道对每一个特定输出,都对应若干个转移概率以及输入。对称信道对于任意两个输出,其转移概率分布完全相同。
严格数学定义是:
∀y1,y2∈Y;x1∈X;∃x2∈X;s.t.p(y2∣x2)=p(y1∣x1)\forall y_1,y_2\in Y;x_1\in X;\; \exist x_2\in X;\quad s.t.\;p(y_2|x_2) = p(y_1|x_1)∀y1,y2∈Y;x1∈X;∃x2∈X;s.t.p(y2∣x2)=p(y1∣x1)
这种特性在转移概率矩阵中的形式为:每一列都可以由第一列调换顺序得到;
要注意输入对称和输出对称未必能同时满足,比如这个信道,只有输入对称,没有输出对称:
P=[1/31/31/61/61/61/31/61/3]P=\begin{bmatrix} 1/3 & 1/3 & 1/6 & 1/6\\ 1/6 & 1/3 & 1/6 & 1/3 \end{bmatrix} P=[1/31/61/31/31/61/61/61/3]
有些信道具有更强的对称性,即不仅输入和输出都满足对称性,还保证输入符号数量和输出符号数量相等。这种信道称为强对称信道或均匀信道。强对称信道的信道矩阵只可能是这种形式(只有两类概率,主对角线上是正确传输概率,所有错误概率相同):
P=[1−ppr−1⋯pr−1pr−11−p⋯pr−1⋮⋮⋱⋮pr−1pr−1⋯1−p]P = \begin{bmatrix} 1-p & \frac{p}{r-1} & \cdots & \frac{p}{r-1}\\ \frac{p}{r-1} & 1-p & \cdots & \frac{p}{r-1}\\ \vdots & \vdots & \ddots & \vdots\\ \frac{p}{r-1} & \frac{p}{r-1} & \cdots & 1-p\\ \end{bmatrix} P=⎣⎢⎢⎢⎡1−pr−1p⋮r−1pr−1p1−p⋮r−1p⋯⋯⋱⋯r−1pr−1p⋮1−p⎦⎥⎥⎥⎤
对称信道具有以下性质:
噪声熵可通过某个特定输入(某一行)计算,凡是输入对称信道都有这个性质
H(Y∣X)=−∑x,yp(x,y)log2p(y∣x)=−∑x,yp(y∣x)p(x)log2p(y∣x)=−∑x,yp(x)[p(y∣x)log2p(y∣x)]=−∑xp(x)[∑yp(y∣x)log2p(y∣x)]\begin{aligned} H(Y|X) &= -\sum_{x,y}p(x,y)\log_2p(y|x)\\ &= -\sum_{x,y}p(y|x)p(x)\log_2p(y|x)\\ &= -\sum_{x,y}p(x)[p(y|x)\log_2p(y|x)]\\ &= -\sum_{x}p(x)[\sum_yp(y|x)\log_2p(y|x)]\\ \end{aligned} H(Y∣X)=−x,y∑p(x,y)log2p(y∣x)=−x,y∑p(y∣x)p(x)log2p(y∣x)=−x,y∑p(x)[p(y∣x)log2p(y∣x)]=−x∑p(x)[y∑p(y∣x)log2p(y∣x)]
对称性保证后面的求和于xxx无关:
H(Y∣X)=−∑xp(x)[∑yp(y∣x)log2p(y∣x)]=−∑yp(y∣x)log2p(y∣x)×∑xp(x)=−∑yp(y∣x)log2p(y∣x)\begin{aligned} H(Y|X) &= -\sum_{x}p(x)[\sum_yp(y|x)\log_2p(y|x)]\\ &= -\sum_yp(y|x)\log_2p(y|x) \times \sum_xp(x)\\ &= -\sum_yp(y|x)\log_2p(y|x) \end{aligned} H(Y∣X)=−x∑p(x)[y∑p(y∣x)log2p(y∣x)]=−y∑p(y∣x)log2p(y∣x)×x∑p(x)=−y∑p(y∣x)log2p(y∣x)
注意:输出对称信道的信道疑义度并没有上面描述的这个性质,因为对称性是针对p(y∣x)p(y|x)p(y∣x)的,而信道疑义度是p(x∣y)p(x|y)p(x∣y)的运算结果。对称信道输入等概分布时,输出也是等概分布,凡是输出对称信道都有这个性质,弱对称信道的列分布的和都相等,也服从这个性质
p(y)=∑xp(x,y)=∑xp(y∣x)p(x)=px∑xp(y∣x)\begin{aligned} p(y) &= \sum_{x}p(x,y)\\ &= \sum_xp(y|x)p(x)\\ &= p_x\sum_xp(y|x) \end{aligned} p(y)=x∑p(x,y)=x∑p(y∣x)p(x)=pxx∑p(y∣x)
这个∑xp(y∣x)\sum_xp(y|x)∑xp(y∣x)实际上就是对信道矩阵的列进行求和,由于各列的分布是相同的,所以虽然这个和式的项和累增变量xxx有关,但求和结果都相同,所以p(y)p(y)p(y)是俩常数的乘积,还是常数。
上面的两个性质能简化对称信道平均互信息的求解,由于噪声熵具有性质,所以更适合用I(X;Y)=H(Y)−H(Y∣X)I(X;Y)=H(Y)-H(Y|X)I(X;Y)=H(Y)−H(Y∣X)计算。由于H(Y∣X)H(Y|X)H(Y∣X)只和信道转移矩阵有关,所以对于任意信源,后面那一项都完全相同;像针对不同信源分布求取最大值,只能让前面那一项(信宿熵)取得最大值。已知信宿熵肯定是在均匀分布情况下取得最大值,根据对称信道性质,当输入为均匀分布的情况下,输出才会是均匀分布。所以信道容量和最佳输入分布就都算出来了。
有一个尚未给出证明的定理:任意信道达到信道容量时,信道的输入分布是不唯一的,但输出分布是唯一的。
2.5.4.2. 一般信道的信道容量
对于一般性信道,信道容量的求解并不是很简单的事情。一般信道的信道容量求解是一个多元函数求约束极值的问题,这个多元函数就是I(X;Y)I(X;Y)I(X;Y),自变量是p(x1),p(x2)p(x_1),p(x_2)p(x1),p(x2)等这些输入分布,约束是∑ip(xi)=1\sum_ip(x_i)=1∑ip(xi)=1。
约束函数求极值的常用方法是拉格朗日乘数法。假设输入分布是p(xi)p(x_i)p(xi),信道矩阵是p(yj∣xi)p(y_j|x_i)p(yj∣xi),则信宿熵可以表示为:
H(Y)=−∑yp(y)log2p(y)=−∑y{∑xp(x,y)log2[∑xp(x,y)]}=−∑y{∑xp(x)p(y∣x)log2[∑xp(x)p(y∣x)]}\begin{aligned} H(Y) &= -\sum_yp(y)\log_2p(y)\\ &= -\sum_y\Bigg\{\sum_xp(x,y)\log_2\Big[\sum_xp(x,y)\Big]\Bigg\}\\ &= -\sum_y\Bigg\{\sum_xp(x)p(y|x)\log_2\Big[\sum_xp(x)p(y|x)\Big]\Bigg\} \end{aligned} H(Y)=−y∑p(y)log2p(y)=−y∑{x∑p(x,y)log2[x∑p(x,y)]}=−y∑{x∑p(x)p(y∣x)log2[x∑p(x)p(y∣x)]}
噪声熵可以表示为:
H(Y∣X)=−∑xp(x)[∑yp(y∣x)log2p(y∣x)]\begin{aligned} H(Y|X) &= -\sum_xp(x)\Big[\sum_yp(y|x)\log_2p(y|x)\Big] \end{aligned} H(Y∣X)=−x∑p(x)[y∑p(y∣x)log2p(y∣x)]
平均互信息表示为:
I(X;Y)=H(Y)−H(Y∣X)=∑xp(x)[∑yp(y∣x)log2p(y∣x)]−∑y{∑xp(x,y)log2[∑xp(x,y)]}\begin{aligned} I(X;Y) &= H(Y) - H(Y|X)\\ &= \sum_xp(x)\Big[\sum_yp(y|x)\log_2p(y|x)\Big]\\ &- \sum_y\left\{\sum_xp(x,y)\log_2\Big[\sum_xp(x,y)\Big]\right\} \end{aligned} I(X;Y)=H(Y)−H(Y∣X)=x∑p(x)[y∑p(y∣x)log2p(y∣x)]−y∑{x∑p(x,y)log2[x∑p(x,y)]}
构建拉格朗日函数:
Φ(px⃗,λ)=I(X;Y)−λ∑xp(x)=∑xp(x)[∑yp(y∣x)log2p(y∣x)]−∑y{∑xp(x,y)log2[∑xp(x,y)]}−[λ∑xp(x)−1]\begin{aligned} \Phi(\vec{p_x},\lambda) &= I(X;Y) - \lambda\sum_xp(x)\\ &= \sum_xp(x)\Big[\sum_yp(y|x)\log_2p(y|x)\Big]\\ &- \sum_y\left\{\sum_xp(x,y)\log_2\Big[\sum_xp(x,y)\Big]\right\}\\ &-\left[\lambda\sum_xp(x) - 1\right] \end{aligned} Φ(px,λ)=I(X;Y)−λx∑p(x)=x∑p(x)[y∑p(y∣x)log2p(y∣x)]−y∑{x∑p(x,y)log2[x∑p(x,y)]}−[λx∑p(x)−1]
这一堆偏导的求解比较麻烦,这里一项一项的求,并且在求解过程中尽可能做一些形式上的整理,以便更清楚的看出一些性质。
最后一项(拉格朗日乘数子所在的那一项)的偏导最好求:
∀xi∈X,∂∂xi[λ∑ip(xi)]=λ\forall x_i\in X, \quad \frac{\partial }{\partial x_i} \left[ \lambda\sum_ip(x_i) \right] = \lambda ∀xi∈X,∂xi∂[λi∑p(xi)]=λ
噪声熵的表达式也比较简单:
∂∂p(xi)H(Y∣X)=−∂∂p(xi)∑xp(x)[∑yp(y∣x)log2p(y∣x)]=−∑yp(y∣xi)log2p(y∣xi)=H(Y∣xi)\begin{aligned} \frac{\partial}{\partial p(x_i)}H(Y|X) &= - \frac{\partial}{\partial p(x_i)} \sum_xp(x)\Big[\sum_yp(y|x)\log_2p(y|x)\Big]\\ &= -\sum_yp(y|x_i)\log_2p(y|x_i)\\ &=H(Y|x_i) \end{aligned} ∂p(xi)∂H(Y∣X)=−∂p(xi)∂x∑p(x)[y∑p(y∣x)log2p(y∣x)]=−y∑p(y∣xi)log2p(y∣xi)=H(Y∣xi)
信宿熵的偏导表示为:
∂∂p(xi)H(Y)=−∂∂p(xi)∑y{∑xp(x)p(y∣x)log2[∑xp(x)p(y∣x)]}=−∑y\begin{aligned} \frac{\partial}{\partial p(x_i)} H(Y) &= -\frac{\partial}{\partial p(x_i)} \sum_y\Bigg\{\sum_xp(x)p(y|x)\log_2\Big[\sum_xp(x)p(y|x)\Big]\Bigg\}\\ &= -\sum_y \end{aligned} ∂p(xi)∂H(Y)=−∂p(xi)∂y∑{x∑p(x)p(y∣x)log2[x∑p(x)p(y∣x)]}=−y∑
3. 信源编码
3.1. 目的和分类
暂且不提信源编码通常所说的信息压缩功能,信源编码最本源的应用是提供一个从消息到适用于信道传输的符号,比如ASCII码可以把英文信源转换成适用于数字通信信道传输的二进制信源。
此外,在解决了从消息到符号的映射之后,信源编码需要尽可能提升原始消息信源和编码器所组成的复合信源的信息熵,让新信源的冗余度尽可能减小。
这里面需要定义几个概念:
消息符号:消息信源每次随机事件的状态,用S={a1,⋯,aq}S=\{a_1,\cdots,a_q\}S={a1,⋯,aq}表示,这个SSS称为消息集合;
码元,Code Element:信源编码器用于在信道中传输的备选符号,用X={x1,⋯,xr}X = \{x_1,\cdots,x_r\}X={x1,⋯,xr}表示,这个XXX叫做码元集合;
码字,Code Word:信源编码器的编码结果,一般由多个码元组成(因为一般情况下消息信源的空间比码元空间大,需要组成扩展信源才能完全映射消息空间),一般用C={W1,⋯,Wq}C = \{W_1,\cdots,W_q\}C={W1,⋯,Wq}表示,其中Wi=xixjxm⋯W_i = x_ix_jx_m\cdotsWi=xixjxm⋯,每个码字中包含是码元数目称为码字长度。这个CCC称为码集。
注意,这里码集中的码字数量和消息集合中消息数量是一样的,即对每一个消息都编出一个码字,这种编码形式称为基本源编码。比如对一个英文元输入,基本源编码就是一个字母一个字母的编。
事实上还有其他的编码形式,比如多个消息符号编成一个码字,比如英文源输入,一个单词编一个码字,或者一个句子编一个码字。这种编码形式称为扩展源编码(N次扩展源编码),即把消息源变为扩展源,然后再送入编码器进行编码。这样做有特殊的好处。
此外信源编码也可以分为:
无失真编码,非奇异码:编码器的输入和输出在信息量上无丢失,指导理论是香农第一定理;
I(S;C)=H(S)=H(C)I(S;C) = H(S) = H(C) I(S;C)=H(S)=H(C)从辨别方法上说:一一映射的编码肯定是无失真编码。
有失真编码,奇异码:编码器在输入和输出在信息量上有丢失,指导理论是香农率失真定理。
I(S;C)<H(S)I(S;C) < H(S) I(S;C)<H(S)
从辨别方法上说:多消息到一码字的映射一定是有失真编码。
即:把编码器也看作信道,这个信道的信道疑义度是0,即无失真编码,否则是有失真编码。
上面有关有损和无损是在信源端评估的,但在信宿端,在进行译码时,有时候无失真编码的消息也可能无法被位移译码,从而在译码过程中造成信息丢失,因此信源编码也可以分为:
- 唯一可译码:这个码在编码过程中肯定是无失真的,这时信息完整度要求最高的一类编码;
- 非唯一可译码。
此外,从码字的长度上还可以分类为:
- 等长编码;
- 变长编码,最早干这个事的是Morse,Morse电码就是变长码,本身
.
和-
长度就是不同的,不同字母包含的电码也是不同的。
3.2. 无失真可变长信源编码定理
3.2.1. 冗余分类
- 客观冗余:由于信号表示方法不得当所产生的冗余,这种可以被更好的信源编码干掉;
- 一般像计算机文件、程序源码包含客观冗余;
- 信源编码压缩的是客观冗余。
- 主观冗余:系统中本身存在,但不需要被采集或传输的信息,比如20kHz20\mathrm{kHz}20kHz之外的声音信息对于录音系统就是主观冗余;
- 一般像传感器信号、声音图像等同时包含客观冗余和主观冗余。
3.2.2. 评价信源效率的指标
平均码长:
对于每一个消息空间中的元素,在码字空间中都有一个对应的码字(如果是非奇异码,可能多个消息空间元素对应同一个码字)。消息空间中的元素是随机的,考虑随即状态下平均每个消息所用的码字长度就是消息码长,即:
Lˉ=∑i=1qp(si)licode/sig\bar{L} = \sum_{i = 1}^qp(s_i)l_i\quad \mathrm{code/sig} Lˉ=i=1∑qp(si)licode/sig
这种描述方法主要是针对基本源编码的,如果是扩展源编码,就计算扩展源的平均码长,但此时的单位是code/sigs\mathrm{code/sigs}code/sigs:
LˉN=∑i=1qp(s1s2⋯sn)λicode/sigs\bar{L}_{N} = \sum_{i = 1}^{q}p(s_1s_2\cdots s_n)\lambda_i \quad \mathrm{code/sigs} LˉN=i=1∑qp(s1s2⋯sn)λicode/sigs
如果再进一步:
LˉNN=∑i=1qp(s1s2⋯sn)λiNcode/sig\frac{\bar{L}_N}{N} = \frac{\sum_{i = 1}^{q}p(s_1s_2\cdots s_n)\lambda_i}{N} \quad \mathrm{code/sig} NLˉN=N∑i=1qp(s1s2⋯sn)λicode/sig编码后信息传输率:对于一个码元,携带的信息量。
对于基本源编码:
R=H(S)Lˉbit/codeR = \frac{H(S)}{\bar{L}} \quad \mathrm{bit/code} R=LˉH(S)bit/code
如果是扩展源编码,用两次平均后的平均码长。编码效率:
即实际的信息传输率和理想最高信息传输率的比值。
η=RRmax=H(S)Lˉlog2r\eta = \frac{R}{R_{\max}} = \frac{H(S)}{\bar{L}\log_2 r} η=RmaxR=Lˉlog2rH(S)
原始信源和编码器的整体可以看作是一个新的信源,而这个RmaxR_{\max}Rmax就是这个复合信源的最大熵H0=log2rH_0=\log_2 rH0=log2r,即所有码元出现概率均匀分布,所有码元之间毫无记忆性。所以把RmaxR_{\max}Rmax带入之后,发现影响编码效率的这几项中,原始信源的熵动不了,码元数量也几乎动不了(最少也要和消息空间中的元素一样多),所以几乎唯一能提高编码效率的方法只剩下减小平均码长了。
3.2.3. 香农第一定理内容
3.3. 实际使用的信源编码
3.3.1. 单符号码
实际使用的信源编码需要具备的性质:
- 唯一可译码;
- 异字头码,实时码。
3.3.1.1. 香农码
假设有这样一个信源,它的消息空间如下:
[Xp(X)]=[abcd0.250.40.20.15]\begin{bmatrix} X\\p(X) \end{bmatrix} = \begin{bmatrix} a && b && c && d\\ 0.25 && 0.4 && 0.2 && 0.15 \end{bmatrix} [Xp(X)]=[a0.25b0.4c0.2d0.15]
首先对这个信源进行排序,按概率降序:
[Xp(X)]=[bacd0.40.250.20.15]\begin{bmatrix} X\\p(X) \end{bmatrix} = \begin{bmatrix} b && a && c && d\\ 0.4 && 0.25 && 0.2 && 0.15 \end{bmatrix} [Xp(X)]=[b0.4a0.25c0.2d0.15]
然后计算各信源符号的自信息量:
[Xp(X)I(x)]=[bacd0.40.250.20.151.3222.0002.3222.737]\begin{bmatrix} X\\p(X)\\I(x) \end{bmatrix} = \begin{bmatrix} b && a && c && d\\ 0.4 && 0.25 && 0.2 && 0.15\\ 1.322 && 2.000 && 2.322 && 2.737 \end{bmatrix} ⎣⎡Xp(X)I(x)⎦⎤=⎣⎡b0.41.322a0.252.000c0.22.322d0.152.737⎦⎤
香农把信息看作是非常物质化的东西,认为编码的位数(自信息)不应该比编码前的消息符号的信息量小。所以每个符号的编码长度就是自信息向上取整:
[Xp(X)I(x)L]=[bacd0.40.250.20.151.3222.0002.3222.7372233]\begin{bmatrix} X\\p(X)\\I(x)\\L \end{bmatrix} = \begin{bmatrix} b && a && c && d\\ 0.4 && 0.25 && 0.2 && 0.15\\ 1.322 && 2.000 && 2.322 && 2.737\\ 2 && 2 && 3 && 3 \end{bmatrix} ⎣⎢⎢⎡Xp(X)I(x)L⎦⎥⎥⎤=⎣⎢⎢⎡b0.41.3222a0.252.0002c0.22.3223d0.152.7373⎦⎥⎥⎤
随后为了获取异字头码,把每个符号的累加概率的二进制低位作为符号:(事实上可以证明,为了确保异字头特性,只能取左端点,不能取任何其他点)
[Xp(X)I(x)Lpi]=[bacd0.40.250.20.151.3222.0002.3222.737223300.40.650.85]\begin{bmatrix} X\\p(X)\\I(x)\\L\\p_i \end{bmatrix} = \begin{bmatrix} b && a && c && d\\ 0.4 && 0.25 && 0.2 && 0.15\\ 1.322 && 2.000 && 2.322 && 2.737\\ 2 && 2 && 3 && 3\\ 0 && 0.4 && 0.65 && 0.85 \end{bmatrix} ⎣⎢⎢⎢⎢⎡Xp(X)I(x)Lpi⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡b0.41.32220a0.252.00020.4c0.22.32230.65d0.152.73730.85⎦⎥⎥⎥⎥⎤
可以证明按香农的这种累积概率的编码方式可以得到唯一可译码:
首先,由于编码是增大的,所以只需要考虑相邻编码的异字头特性。
3.3.1.2. 费诺码
假设有这样一个信源,它的消息空间如下:
[Xp(X)]=[abcd0.250.40.20.15]\begin{bmatrix} X\\p(X) \end{bmatrix} = \begin{bmatrix} a && b && c && d\\ 0.25 && 0.4 && 0.2 && 0.15 \end{bmatrix} [Xp(X)]=[a0.25b0.4c0.2d0.15]
首先对这个信源进行排序,按概率降序:(费诺码的这个排序实际上没啥大用,只是为了等概分割更方便一些,并且规定一种唯一的编码方式)
[Xp(X)]=[bacd0.40.250.20.15]\begin{bmatrix} X\\p(X) \end{bmatrix} = \begin{bmatrix} b && a && c && d\\ 0.4 && 0.25 && 0.2 && 0.15 \end{bmatrix} [Xp(X)]=[b0.4a0.25c0.2d0.15]
将整个消息空间划分成两个集合,且要求这两个集合的概率尽可能。这个思想的源头是:如果有两个概率相等的事件,直接用等长码就是效率最高的。
[Xp(X)]=[b0.4]+[acd0.250.20.15]\begin{bmatrix} X\\p(X) \end{bmatrix} = \begin{bmatrix} b\\ 0.4 \end{bmatrix} +\begin{bmatrix} a && c && d\\ 0.25 && 0.2 && 0.15 \end{bmatrix} [Xp(X)]=[b0.4]+[a0.25c0.2d0.15]
第一个子集合标识符号0
,第二个子集合标识符号1
。
继续递归,直到所有的子集合都只有一个消息。这种方法会构成一个树形结构,而如果所有的码字都是从叶节点产生的,就能天然解决异字头的问题。
3.3.1.3. 哈夫曼码
假设有这样一个信源,它的消息空间如下:
[Xp(X)]=[abcd0.250.40.20.15]\begin{bmatrix} X\\p(X) \end{bmatrix} = \begin{bmatrix} a && b && c && d\\ 0.25 && 0.4 && 0.2 && 0.15 \end{bmatrix} [Xp(X)]=[a0.25b0.4c0.2d0.15]
首先对这个信源进行排序,按概率降序:
[Xp(X)]=[bacd0.40.250.20.15]\begin{bmatrix} X\\p(X) \end{bmatrix} = \begin{bmatrix} b && a && c && d\\ 0.4 && 0.25 && 0.2 && 0.15 \end{bmatrix} [Xp(X)]=[b0.4a0.25c0.2d0.15]
把概率最小的两个信源合在一起,并给每一个分配一个0
,1
代码:
[Xp(X)]=[bacd0.40.250.35][XC(X)]=[cd01]\begin{bmatrix} X\\p(X) \end{bmatrix} = \begin{bmatrix} b && a && cd\\ 0.4 && 0.25 && 0.35 \end{bmatrix} \begin{bmatrix} X\\C(X) \end{bmatrix} = \begin{bmatrix} c && d\\ 0 && 1 \end{bmatrix} [Xp(X)]=[b0.4a0.25cd0.35][XC(X)]=[c0d1]
然后再排序:
[Xp(X)]=[bcda0.40.350.25]\begin{bmatrix} X\\p(X) \end{bmatrix} = \begin{bmatrix} b && cd && a\\ 0.4 && 0.35 && 0.25 \end{bmatrix} [Xp(X)]=[b0.4cd0.35a0.25]
再缩减:
[Xp(X)]=[bcda0.40.6][XC(X)]=[cda00011]\begin{bmatrix} X\\p(X) \end{bmatrix} = \begin{bmatrix} b && cda\\ 0.4 && 0.6\\ \end{bmatrix} \begin{bmatrix} X\\ C(X) \end{bmatrix}= \begin{bmatrix} c && d && a\\ 00&& 01 && 1 \end{bmatrix} [Xp(X)]=[b0.4cda0.6][XC(X)]=[c00d01a1]
再排序,再合并(只剩两个了):
[Xp(X)]=[bcda1][XC(X)]=[bcda010010111]\begin{bmatrix} X\\p(X) \end{bmatrix} = \begin{bmatrix} bcda\\ 1\\ \end{bmatrix} \begin{bmatrix} X\\ C(X) \end{bmatrix}= \begin{bmatrix} b && c && d && a\\ 0 && 100 && 101 && 11 \end{bmatrix} [Xp(X)]=[bcda1][XC(X)]=[b0c100d101a11]
3.3.1.4. 规范码
4. 信道编码
《信息论与编码》学习笔记相关推荐
- 第二行代码学习笔记——第六章:数据储存全方案——详解持久化技术
本章要点 任何一个应用程序,总是不停的和数据打交道. 瞬时数据:指储存在内存当中,有可能因为程序关闭或其他原因导致内存被回收而丢失的数据. 数据持久化技术,为了解决关键性数据的丢失. 6.1 持久化技 ...
- 第一行代码学习笔记第二章——探究活动
知识点目录 2.1 活动是什么 2.2 活动的基本用法 2.2.1 手动创建活动 2.2.2 创建和加载布局 2.2.3 在AndroidManifest文件中注册 2.2.4 在活动中使用Toast ...
- 第一行代码学习笔记第八章——运用手机多媒体
知识点目录 8.1 将程序运行到手机上 8.2 使用通知 * 8.2.1 通知的基本使用 * 8.2.2 通知的进阶技巧 * 8.2.3 通知的高级功能 8.3 调用摄像头和相册 * 8.3.1 调用 ...
- 第一行代码学习笔记第六章——详解持久化技术
知识点目录 6.1 持久化技术简介 6.2 文件存储 * 6.2.1 将数据存储到文件中 * 6.2.2 从文件中读取数据 6.3 SharedPreferences存储 * 6.3.1 将数据存储到 ...
- 第一行代码学习笔记第三章——UI开发的点点滴滴
知识点目录 3.1 如何编写程序界面 3.2 常用控件的使用方法 * 3.2.1 TextView * 3.2.2 Button * 3.2.3 EditText * 3.2.4 ImageView ...
- 第一行代码学习笔记第十章——探究服务
知识点目录 10.1 服务是什么 10.2 Android多线程编程 * 10.2.1 线程的基本用法 * 10.2.2 在子线程中更新UI * 10.2.3 解析异步消息处理机制 * 10.2.4 ...
- 第一行代码学习笔记第七章——探究内容提供器
知识点目录 7.1 内容提供器简介 7.2 运行权限 * 7.2.1 Android权限机制详解 * 7.2.2 在程序运行时申请权限 7.3 访问其他程序中的数据 * 7.3.1 ContentRe ...
- 第一行代码学习笔记第五章——详解广播机制
知识点目录 5.1 广播机制 5.2 接收系统广播 * 5.2.1 动态注册监听网络变化 * 5.2.2 静态注册实现开机广播 5.3 发送自定义广播 * 5.3.1 发送标准广播 * 5.3.2 发 ...
- 第一行代码学习笔记第九章——使用网络技术
知识点目录 9.1 WebView的用法 9.2 使用HTTP协议访问网络 * 9.2.1 使用HttpURLConnection * 9.2.2 使用OkHttp 9.3 解析XML格式数据 * 9 ...
- 安卓教程----第一行代码学习笔记
安卓概述 系统架构 Linux内核层,还包括各种底层驱动,如相机驱动.电源驱动等 系统运行库层,包含一些c/c++的库,如浏览器内核webkit.SQLlite.3D绘图openGL.用于java运行 ...
最新文章
- 工业革命前数千年人口经济_我们已经进行了数千年的编程
- GNU make manual 翻译( 一百八十一)
- android自定义view(自定义数字键盘)
- 计算机是如何进行时间同步的
- 左右法则 来解析指针问题
- iOS中 点击按钮无响应
- 博一结束后的一些反思 -- 该如何平衡科研与生活
- 实数系的连续性的含义
- H3C交换机端口镜像配置
- pc电脑上浏览手机网站在线wap浏览器或模拟器软件
- 动态拼接LINQ查询条件
- JS阻止浏览器刷新的方法
- 必须了解的网络运维知识
- XMind8破解版安装
- 教你如何在vue-cli项目打包时避免踩雷(一)【早看早受益】
- 输入整数显示ASCII字符(c++)
- 如此丝滑,Hive 中的各种常用 set 设置用起来就是爽啊
- aop实现原理 - JDK动态代理(实例+源码解析)
- SO逆向入门实战教程九——blackbox
- 文件夹内图片消失不见了怎么办?文件夹内图片消失怎样找回来