前言
最近在做极化码的相关课题,需要用到很多“信息论”的基础知识,尤其是“离散信息的度量”这块内容更是基础中的基础。由于以前在学习“信息论”这门课程的时候就没太学明白自信息、互信息、各种熵等,导致在学习极化码时难以理解其中的很多公式,所以不得不又回过头来恶补这一块儿的基础,算是填上以前学习的坑吧。
重学这块内容时发现它虽然很基础,但想要把每一个公式的含义及推导吃透却并不容易,其中的很多细节是需要细细推敲的。所以,自己花了一些时间重新学习并整理出来,方便以后随时回顾和补充,同样也可以为入门的朋友提供一点参考。此外,自己现在也渐渐明白为什么说科研的尽头就是数学,因为数学的基础太重要了,本人水平尚浅,文中若有错误欢迎指正。
PS:若已具备相关基础,只想了解公式具体推导过程的可直接跳到第三部分。
一 离散信息的度量
首先简单介绍一下什么是“离散信息的度量”:
对离散信息中所含信息的度量称为离散信息度量,这种度量也可视为是对离散随机变量的信息度量。有两种含义不同但又密切相关的度量方式,一种是离散随机变量本身所含信息量多少的量度,而另一种是离散随机变量之间相互提供信息量多少的量度。前者用信息熵来描述,后者用平均互信息来描述。——《信息论基础(第2版)》
教材中的定义已经足够清晰,唯一需要解释的地方是“信息熵”、“平均互信息”,这个地方可能有一些概念或叫法容易混淆。“信息熵”是“自信息”的平均值,“平均互信息”是“逐点互信息”的平均值,这里说的“自信息”包含了“自信息”、“联合自信息”、“条件自信息”,它们的平均值就是对应的“熵”;“逐点互信息”一般不会被提及,我们通常所用的就是“平均互信息”,所以若无特殊说明,互信息指的就是平均互信息,也可以视为一种“熵”。
总而言之,离散信息的度量就分为“自信息”和“互信息”两种,前者求平均后即为对应的熵,后者本身就是一个平均值(本身就是一种“熵”)。
符号说明:大写字母表示随机变量或随机事件合集,小写字母表示随机变量的取值或随机事件。
二 概率及数学运算基础
为方便对后面公式的理解及推导,需要先预备一些前置的基础知识。
- 累加运算
(1)交换累加顺序
因为加法的顺序不影响结果,求和符号可以拆开、合并、交换。
(2)一个不依赖于求和索引的因子可以自由移入或移出求和符号
两个重要例子:
① 移入:
② 移出:
(对联合概率的某个变量求和,得到剩余变量的边缘概率)
![]()
不依赖于求和索引的因子对于此部分求和相当于常数
(3)拆分和式
- 概率
(1)条件概率
(2)对联合概率中的某个变量求和,将会得到剩余变量的边缘概率
(3)等价概率空间转换
证明:
(使用累加运算中的第二点性质)
(使用概率中的第二点性质)
三 自信息
3.1 自信息和信息熵
3.1.1 自信息
自信息即为一个事件自身所包含的信息量,它有两层具体含义,一是表示事件发生前该事件发生的不确定性,二是表示事件发生后该事件所能提供的信息量。以下说法等价:
自信息大⇔发生概率小⇔不确定性大⇔让人感到更惊讶⇔包含更多信息量
自信息小⇔发生概率大⇔不确定性小⇔让人不那么惊讶⇔包含更少信息量
数学上,事件集合 X 中的某一事件 x_i 的自信息定义为:
简记为:
其中,对数常以2为底,此时自信息的单位为比特 (bit) 。(若以3为底,单位为Tit;以e为底,单位为 Nat;以10为底,单位为 Hart)
自信息的数学定义式如何得来?
其实很好理解,首先这个定义式需要满足概率 p(x) 大的事件自信息 I(x) 小,概率 p(x) 小的事件自信息 I(x) 大,这在定义式中由负号体现。其次,若两个事件相互独立,它们同时发生的概率即为各自发生概率的乘积,它们所能提供的总信息量等于各自信息量的和,同时信息量又是关于概率的函数,即需要满足以下关系式:
满足以上关系式的数学运算不刚好就是对数吗!
即:
3.1.2 信息熵
信息熵是从平均意义上表征随机变量总体特性的一个量。对应于自信息,也可以从两层含义来理解它,一是表示在事件发生前,随机变量取值的平均不确定性,二是表示在事件发生后,平均每个事件所提供的信息量。
数学上,离散随机变量 X 的熵定义为自信息的平均值或期望:
从直观上理解这个式子,也就是每一个事件所能提供的信息量乘以该事件发生的概率,再求和就得到平均每个事件所提供的信息量,这也符合直觉。其中,I(x) 为事件 X=x 的自信息,E_p(x) 表示对随机变量用 p(x) 取平均运算。
另外,X 的概率分布可写成矢量形式,称为概率矢量,记为 p = (p_1, p_2, ..., p_n),因此 X 的熵一般还会简记为:
当 n = 2 时,简记为:
3.2 联合自信息和联合熵
3.2.1 联合自信息
联合事件集 XY 中的事件 x_i,y_j 包含的联合自信息定义为:
简记为:
实际上,如果把联合事件看成一个单一事件,那么联合自信息的含义与自信息的含义相同。
联合自信息可以推广到多维随机矢量,对于 N 维矢量 x = (x_1, x_2, ..., x_n),其自信息为:
3.2.2 联合熵
同样地,联合熵定义为联合自信息的平均值或期望。设 N 维随机矢量 X^N = (X_1, X_2, ..., X_N),取值为 x = (x_1, x_2, ..., x_n),其联合熵为:
其中,p(x) 为矢量 x 的联合概率,式中是 N 重求和。
如果觉得以上定义有点复杂也没关系,一般只会用到二维随机矢量 XY 的联合熵:
一道例题加深理解:
e.g 设随机变量 X 和 Y 符号集均为 {0, 1},且 p(x=0)=2/3,p(y=0|x=0)=1/2,p(y=1|x=1)=1/3,求联合熵 H(X, Y)。
解:由 p(x,y)=p(x)*p(y|x),可得 XY 的联合概率分布 p(x, y) 如下:
则所求联合熵为:H(X, Y) = H(1/3, 1/3, 2/9, 1/9) = 1.8911 bit/2个符号
p(x, y) y=0 y=1 x=0 1/3 1/3 x=1 2/9 1/9
3.3 条件自信息、条件熵
3.3.1 条件自信息
给定联合事件集 XY,事件 x_i 在事件 y_j 给定条件下的条件自信息定义为:
简记为:
条件自信息的含义与自信息类似,只不过是概率空间有变化(变为了条件概率分布)。因此,在理解条件自信息时只需要加上“在某个事件给定的条件下”:
① 在事件 y_j 给定的条件下,x_i 发生前的不确定性。
② 在事件 y_j 给定的条件下,x_i 发生后所得到的信息量。
自信息、联合自信息和条件自信息之间具有以下关系(很容易证明,这里不再赘述):
3.3.2 条件熵
前面的内容比较简单,基本上只要理解了含义,从直觉上就能理解对应的公式。从这一小节开始,就会涉及到更复杂的公式推导,后面的互信息也会涉及到条件熵,自己也是在重新学习的时候才发现有很多细节是值得推敲的。
同样地,对于二维随机矢量 XY,条件熵定义为条件自信息 I(x|y) 的平均值或期望:
我在看到这个定义式后的第一反应是,为什么对条件自信息求期望使用的是联合概率 p(x,y) ?这里先按下不表,我们直接用严谨的推导来证明这个定义式。
① 固定 Y 的值,取出一个“切片”
条件熵 H(X|Y) 问的是:“如果我们已经知道了 Y 的值,那么 X 的平均不确定性(熵)是多少?”
这里的关键是,Y 本身也是一个随机变量,它可以取不同的值 (y_1, y_2, y_3, ...),当固定 Y 为某一个具体的值 y_j 时,就相当于取出了整个概率空间的一个“切片”。在 Y = y_j 这个“切片”里,关于 X 的概率分布就变成了条件概率分布 p(x|Y=y_j) 。因此,可以直接套用基本熵的公式来求出这个固定“切片”中 X 的熵,只不过将所有的概率都换成条件概率:
这个公式的意义很明确:当 Y 被确定为 y_j 时,X 的熵是多少。
② 加权平均,从特定到一般
在第一步中得到了每个特定“切片” Y=y_j 上 X 的熵,但我们事先并不知道 Y 到底会取哪个值,正如前面所说,Y 本身也是随机的,Y=y_j 这个事件发生的概率是 p(Y=y_j) 。因此,需要对这些“切片熵”求加权平均才能得到总的条件熵。用什么来加权?自然是每个“切片”发生的概率 p(Y=y_j),这就得到了条件熵最直观的定义式:
补充:
在计算 H(X|Y) 时,往往利用式子:
即先计算所有 y 给定值时的条件熵,再用 y 的概率对这些条件熵进行平均。
③ 公式化简
基于第二节介绍的累加运算规则及概率知识,可将上面的定义式化简如下:
这正是一开始给出的条件熵的定义式!首先在数学层面上得以证明。
现在再来说明前面“按下不表”的部分,对于定义式 H(X|Y)=E_p(x,y)[I(x|y)] 中的 p(x,y) 可以基于期望的定义去理解:一个函数的期望值被定义为该函数在所有可能取值上的值,乘以该取值发生的概率,然后再求和。在这里,我们想要求期望的函数是“条件自信息 I(x|y)”,它的所有可能取值 x=x_i 、y=y_j 即是 (x, y) 的所有组合,表征这个组合发生的概率即为联合概率 p(x, y) 。理解了这一点,后面在推导很多公式时就可以直接应用这一结论。
四 互信息
4.1 逐点互信息和互信息
在第一节中提到过,互信息(平均互信息)是逐点互信息的平均值,大多数情况下我们会直接使用互信息(平均互信息),不会再单独提及逐点互信息。但为了更深入理解地互信息,我们还是从逐点互信息开始,再过渡到互信息。
4.1.1 逐点互信息
教材(《信息论基础》第二版)中先给出了逐点互信息的概率分布定义式,这里我们反过来先从它的含义出发,构建如下关系式,再基于此关系式推导其概率分布定义式:
① I(x) 表示 x 的不确定性(熵),I(x|y) 表示在 y 条件下 x 的不确定性(熵),因此 I(x;y) 表示当 y 发生后 x 不确定性的变化。两个不确定度之差,是不确定度消除的部分,也就是由 y 发生所得到的关于 x 的信息量。
② 互信息反映了两个随机事件 x 与 y 之间的统计关联程度。在通信系统中,互信息的物理含义是信道输出端接收到某信息 y 后,获得的关于输入端某消息 x 的信息量。
直接将上面的关系式展开就可以得到逐点互信息的概率分布定义式:
4.1.2 互信息
若不作特殊说明,后面提到的互信息都是指平均互信息。对应于逐点互信息,两个随机变量 X 和 Y 的互信息定义如下:
这里需要对符号的使用进行总结说明。需要注意互信息直接由 I(X;Y) 表示,而非 H(X;Y),这与前面自信息用 I 表示,熵用 H 表示不同。由此可以总结两个规律:
① 自信息(包含联合自信息、条件自信息等)都用 I 表示,它们的熵用 H 表示,互信息直接用 I 表示。
② 不使用均值的都用小写字母,如 I(x)、I(x,y)、I(x|y)、I(x;y),使用均值的都用大写字母,如H(X)、H(X,Y)、H(X|Y)、H(X;Y)。
现在,我们再来推导互信息的概率分布定义式,需要用到信息熵、条件熵、概率的第 (3) 点性质、累加运算的第 (3) 点性质、条件概率:
整理一下,互信息的概率分布定义式为:
一个结论:
同时,我们也可以对逐点互信息求均值(期望)来得到互信息的概率分布定义式,但不用再花时间去推导,直接应用“3.3.2 条件熵”最后的结论,即对某个式子(两个变量及以上)求均值(期望),就是使用联合概率,说的再直白一点就是在式子 f(x,y) 的前面加上:
若式子中涉及到三个变量 f(x,y,z) :
(注意,这个结论并不严谨,是我自己总结的一个技巧,如存在不当之处,欢迎指正。)
这里的 f(x,y) 也就是 逐点互信息 I(x;y):
4.2 逐点条件互信息和条件互信息
条件互信息理解起来相对困难一点,但如果已经掌握了前面的内容,这部分的理解也是水到渠成。
4.2.1 逐点条件互信息
逐点条件互信息 I(x;y|z) 表示在已知 z 的条件下,观测到 y 为我们提供了多少关于 x 的信息量。简而言之,除开已知条件,条件互信息的含义与互信息的含义与性质都相同。根据逐点条件互信息的含义,可以得到逐点条件互信息满足的关系式:
其中,I(x|z) 表示在已知 z 的条件下,x 的不确定性(熵),I(x|y,z) 表示同时已知 y,z 的条件下,x 的不确定性(熵),也就是在观测到 y 之后,对 x 不确定性的更新,两者之差即是不确定度消除的部分,这和互信息的含义相同,只不过都是在已知 z 的条件下。
注意:
I(x|y,z) 表示的是 I(x|(y,z)),而不是 I((x|y),z),根据含义去理解就不会混淆了。
将关系式展开得到逐点条件互信息的概率分布定义式:
逐点条件互信息不是重点,对其求均值得到的条件互信息才是重点。
4.2.2 条件互信息
更常用的条件互信息 I(X;Y|Z) 是对所有可能的 x, y, z 的逐点值进行加权平均(求期望),还记得“4.1.2 互信息”最后总结的结论吗,求期望使用联合概率 p(x, y, z) ,我们可以直接写出条件互信息的概率分布定义式(这一结论的严格证明请回看“3.3.2 条件熵”):
(再用条件概率展开)
同样地,我们也可以先按照逐点条件互信息满足的关系式,对应地列出条件互信息满足的关系式:
再由该关系式推导出概率分布定义式的过程和互信息一样,在前面已经写过,这里不再赘述。
一个小总结:
不论是互信息还是条件互信息,我们既可以根据逐点互信息/条件互信息满足的关系式类比写出互信息/条件互信息满足的关系式,然后再逐步展开化简得到概率分布定义式;也可以根据互信息/条件互信息是对逐点互信息/条件互信息进行加权平均(求期望)的概念,使用“切片”方法逐步推导出其概率分布定义式,这在 3.3.2 节中有详细阐述(为了节省计算步骤,针对求期望的操作我总结了一个小技巧,这在 4.1.2 节的末尾有说明)。
5 总结
本文所介绍的内容都是信息论里基础中的基础,以前没太学明白,现在算是把这个坑填上了,但其实还有很多内容没有涉及到,等后面用到了再随时回来补充吧。如有错误,欢迎指正。