信息论基础——离散信息的度量:自信息、联合自信息、条件自信息,信息熵、联合熵、条件熵、互信息、条件互信息(超详细推导)

前言

最近在做极化码的相关课题,需要用到很多“信息论”的基础知识,尤其是“离散信息的度量”这块内容更是基础中的基础。由于以前在学习“信息论”这门课程的时候就没太学明白自信息、互信息、各种熵等,导致在学习极化码时难以理解其中的很多公式,所以不得不又回过头来恶补这一块儿的基础,算是填上以前学习的坑吧。

重学这块内容时发现它虽然很基础,但想要把每一个公式的含义及推导吃透却并不容易,其中的很多细节是需要细细推敲的。所以,自己花了一些时间重新学习并整理出来,方便以后随时回顾和补充,同样也可以为入门的朋友提供一点参考。此外,自己现在也渐渐明白为什么说科研的尽头就是数学,因为数学的基础太重要了,本人水平尚浅,文中若有错误欢迎指正。

PS:若已具备相关基础,只想了解公式具体推导过程的可直接跳到第三部分。

一 离散信息的度量

首先简单介绍一下什么是“离散信息的度量”:

离散信息中所含信息的度量称为离散信息度量,这种度量也可视为是对离散随机变量的信息度量。有两种含义不同但又密切相关的度量方式,一种是离散随机变量本身所含信息量多少的量度,而另一种是离散随机变量之间相互提供信息量多少的量度。前者用信息熵来描述,后者用平均互信息来描述。——《信息论基础(第2版)》

教材中的定义已经足够清晰,唯一需要解释的地方是“信息熵”、“平均互信息”,这个地方可能有一些概念或叫法容易混淆。“信息熵”是“自信息”的平均值,“平均互信息”是“逐点互信息”的平均值,这里说的“自信息”包含了“自信息”、“联合自信息”、“条件自信息”,它们的平均值就是对应的“熵”;“逐点互信息”一般不会被提及,我们通常所用的就是“平均互信息”,所以若无特殊说明,互信息指的就是平均互信息,也可以视为一种“熵”。

总而言之,离散信息的度量就分为“自信息”和“互信息”两种,前者求平均后即为对应的熵,后者本身就是一个平均值(本身就是一种“熵”)。

符号说明:大写字母表示随机变量或随机事件合集,小写字母表示随机变量的取值或随机事件。

二 概率及数学运算基础

为方便对后面公式的理解及推导,需要先预备一些前置的基础知识。

  • 累加运算

(1)交换累加顺序

\sum_{x,y}f(x,y)=\sum_x\sum_yf(x,y)= \sum_y\sum_xf(x,y)

        因为加法的顺序不影响结果,求和符号可以拆开、合并、交换。

(2)一个不依赖于求和索引的因子可以自由移入或移出求和符号

\sum_xa\cdot f(x)=a\cdot\sum_xf(x)

两个重要例子:

① 移入:

\sum_xf(x)\left [ \sum_yg(x,y) \right ]

=\sum_x\left[\sum_yf(x)g(x,y) \right ]

=\sum_x\sum_yf(x)g(x,y)

=\sum_{x,y}f(x)g(x,y)

② 移出:

\sum_x\sum_yp(x,y)logp(x)

=\sum_{x}\left [ logp(x)\sum_yp(x,y) \right ]

(对联合概率的某个变量求和,得到剩余变量的边缘概率)

=\sum_x\left[logp(x)\cdot p(x) \right ] 

=\sum_xp(x)logp(x)

不依赖于求和索引的因子对于此部分求和相当于常数

 (3)拆分和式

\sum_x\left[f(x)+g(x) \right ]=\sum_xf(x)+\sum_xg(x)

  • 概率

(1)条件概率

p(x|y)=\frac{p(x,y)}{p(y)} 

\sum_{x}p(x|y)=1

(2)对联合概率中的某个变量求和,将会得到剩余变量的边缘概率

\sum_{y}p(x,y)=p(x)

\sum_zp(x,y,z)=p(x,y)

(3)等价概率空间转换

for\; example:\sum_{x,y}p(x,y)f(x,y)=\sum_{x,y,z}p(x,y,z)f(x,y)

证明:

\sum_{x,y,z}p(x,y,z)f(x,y)

=\sum_x\sum_y\sum_zp(x,y,z)f(x,y)

(使用累加运算中的第二点性质)

=\sum_x\sum_y[f(x,y)\sum_zp(x,y,z)]

(使用概率中的第二点性质)

=\sum_x\sum_y[f(x,y)p(x,y)]

=\sum_{x,y}[f(x,y)p(x,y)]

三 自信息

3.1 自信息和信息熵

3.1.1 自信息

自信息即为一个事件自身所包含的信息量,它有两层具体含义,一是表示事件发生前该事件发生的不确定性,二是表示事件发生后该事件所能提供的信息量。以下说法等价:

自信息大⇔发生概率小⇔不确定性大⇔让人感到更惊讶⇔包含更多信息量

自信息小⇔发生概率大⇔不确定性小⇔让人不那么惊讶⇔包含更少信息量

数学上,事件集合 X 中的某一事件 x_i 的自信息定义为:

I_X(x_i)=-logp_X(x_i)

简记为:

I(x)=-logp(x)

其中,对数常以2为底,此时自信息的单位为比特 (bit) 。(若以3为底,单位为Tit;以e为底,单位为 Nat;以10为底,单位为 Hart)

自信息的数学定义式如何得来?

其实很好理解,首先这个定义式需要满足概率 p(x) 大的事件自信息 I(x) 小,概率 p(x) 小的事件自信息 I(x) 大,这在定义式中由负号体现。其次,若两个事件相互独立,它们同时发生的概率即为各自发生概率的乘积,它们所能提供的总信息量等于各自信息量的和,同时信息量又是关于概率的函数,即需要满足以下关系式:

p(x_1,x_2)=p(x_1)\cdotp(x_2)

I(x_1,x_2)=I(x_1)+I(x_2)=f(p(x_1))+f(p(x_2))

满足以上关系式的数学运算不刚好就是对数吗!

log(x_1)+log(x_2)=log(x_1\cdot x_2)

即:

I(x_1,x_2)=I(x_1)+I(x_2)=-logp(x_1)-logp(x_2)=-\left [ logp(x_1)+logp(x_2) \right ]=-log\left[p(x_1)\cdot p(x_2) \right ]=-logp(x_1,x_2)

3.1.2 信息熵

信息熵是从平均意义上表征随机变量总体特性的一个量。对应于自信息,也可以从两层含义来理解它,一是表示在事件发生前,随机变量取值的平均不确定性,二是表示在事件发生后,平均每个事件所提供的信息量。

数学上,离散随机变量 X 的熵定义为自信息的平均值或期望:

H(X)=E_{p(x)}[I(x)]=-\sum_xp(x)logp(x)

从直观上理解这个式子,也就是每一个事件所能提供的信息量乘以该事件发生的概率,再求和就得到平均每个事件所提供的信息量,这也符合直觉。其中,I(x) 为事件 X=x 的自信息,E_p(x) 表示对随机变量用 p(x) 取平均运算。

另外,X 的概率分布可写成矢量形式,称为概率矢量,记为 p = (p_1, p_2, ..., p_n),因此 X 的熵一般还会简记为:

H(X)=H(\mathbf{p})=H(p_1,p_2,...,p_n)

n = 2 时,简记为:

H(p,1-p)=H(p)

3.2 联合自信息和联合熵

3.2.1 联合自信息

联合事件集 XY 中的事件 x_iy_j 包含的联合自信息定义为:

I_{XY}(x_i,y_j)=-logP_{XY}(x_i,y_j)

简记为:

I(x,y)=-logp(x,y)

实际上,如果把联合事件看成一个单一事件,那么联合自信息的含义与自信息的含义相同。

联合自信息可以推广到多维随机矢量,对于 N 维矢量 x = (x_1, x_2, ..., x_n),其自信息为:

I(\textbf{x})=-logp(\textbf{x})

3.2.2 联合熵

同样地,联合熵定义为联合自信息的平均值或期望。设 N 维随机矢量 X^N = (X_1, X_2, ..., X_N),取值为 x = (x_1, x_2, ..., x_n),其联合熵为:

H(\mathbf{X}^N)=H(X_1,X_2,...,X_N)

=E_{p(x)}\left [ -logp(\mathbf{x}) \right ]=-\sum_xp(\mathbf{x})logp(\mathbf{x})

其中,p(x) 为矢量 x 的联合概率,式中是 N 重求和。

如果觉得以上定义有点复杂也没关系,一般只会用到二维随机矢量 XY 的联合熵

H(\mathbf{X,Y})=E_{p(x,y)}\left[I(x,y) \right ]=-\sum_x\sum_yp(x,y)logp(x,y)

一道例题加深理解:

e.g 设随机变量 XY 符号集均为 {0, 1},且 p(x=0)=2/3p(y=0|x=0)=1/2p(y=1|x=1)=1/3,求联合熵 H(X, Y)。

解:由 p(x,y)=p(x)*p(y|x),可得 XY 的联合概率分布 p(x, y) 如下:

p(x, y)y=0y=1
x=01/31/3
x=12/91/9
则所求联合熵为:H(X, Y) = H(1/3, 1/3, 2/9, 1/9) = 1.8911 bit/2个符号

3.3 条件自信息、条件熵

3.3.1 条件自信息

给定联合事件集 XY,事件 x_i 在事件 y_j 给定条件下的条件自信息定义为:

I_{X/Y}(x_i|y_j)=-logp_{X/Y}(x_i|y_j)

简记为:

I(x|y)=-logp(x|y)

条件自信息的含义与自信息类似,只不过是概率空间有变化(变为了条件概率分布)。因此,在理解条件自信息时只需要加上“在某个事件给定的条件下”:

① 在事件 y_j 给定的条件下,x_i 发生前的不确定性。

② 在事件 y_j 给定的条件下,x_i 发生后所得到的信息量。

自信息、联合自信息和条件自信息之间具有以下关系(很容易证明,这里不再赘述):

I(x,y)=I(x)+I(y|x)=I(y)+I(x|y)

3.3.2 条件熵

前面的内容比较简单,基本上只要理解了含义,从直觉上就能理解对应的公式。从这一小节开始,就会涉及到更复杂的公式推导,后面的互信息也会涉及到条件熵,自己也是在重新学习的时候才发现有很多细节是值得推敲的。

同样地,对于二维随机矢量 XY,条件熵定义为条件自信息 I(x|y) 的平均值或期望:

H(X|Y)=E_{p(x,y)}\left[I(x|y) \right]=-\sum_{x,y}p(x,y)logp(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 的熵,只不过将所有的概率都换成条件概率:

H(X|Y=y_j)=-\sum_xp(x|y_j)logp(x|y_j)

这个公式的意义很明确:被确定为 y_j​ 时,X 的熵是多少

② 加权平均,从特定到一般

在第一步中得到了每个特定“切片” Y=y_j​X 的熵,但我们事先并不知道 Y 到底会取哪个值,正如前面所说,本身也是随机的,Y=y_j​ 这个事件发生的概率是 p(Y=y_j​) 。因此,需要对这些“切片熵”求加权平均才能得到总的条件熵。用什么来加权?自然是每个“切片”发生的概率 p(Y=y_j),这就得到了条件熵最直观的定义式:

H(X|Y)=\sum_yp(y)H(X|Y=y)

H(X|Y)=\sum_yp(y)\left [ -\sum_xp(x|y)logp(x|y) \right ]

补充:

在计算 H(X|Y) 时,往往利用式子:

H(X|Y)=\sum_yp(y)H(X|Y=y)

即先计算所有 y 给定值时的条件熵,再用 y 的概率对这些条件熵进行平均。

③ 公式化简

基于第二节介绍的累加运算规则及概率知识,可将上面的定义式化简如下:

H(X|Y)=-\sum_y\sum_xp(y)p(x|y)logp(x|y)

H(X|Y)=-\sum_y\sum_xp(x,y)logp(x|y)

H(X|Y)=-\sum_{x,y}p(x,y)logp(x|y)=E_{p(x,y)}\left[I(x|y) \right]

这正是一开始给出的条件熵的定义式!首先在数学层面上得以证明。

现在再来说明前面“按下不表”的部分,对于定义式 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;y)=I(x)-I(x|y)

I(x) 表示 x 的不确定性(熵),I(x|y) 表示在 y 条件下 x 的不确定性(熵),因此 I(x;y) 表示当 y 发生后 x 不确定性的变化。两个不确定度之差,是不确定度消除的部分,也就是y 发生所得到的关于 x 的信息量

② 互信息反映了两个随机事件 x 与 y 之间的统计关联程度。在通信系统中,互信息的物理含义是信道输出端接收到某信息 y 后,获得的关于输入端某消息 x 的信息量。

直接将上面的关系式展开就可以得到逐点互信息的概率分布定义式:

I(x;y)=I(x)-I(x|y)=-logp(x)+logp(x|y)=log\frac{p(x|y)}{p(x)}

4.1.2 互信息

若不作特殊说明,后面提到的互信息都是指平均互信息。对应于逐点互信息,两个随机变量 XY 的互信息定义如下:

I(X;Y)=H(X)-H(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) 点性质、条件概率:

I(X;Y)=H(X)-H(X|Y)

=-\sum_xp(x)logp(x)+\sum_{x,y}p(x,y)logp(x|y)

=-\sum_{x,y}p(x,y)logp(x)+\sum_{x,y}p(x,y)logp(x|y)

=\sum_{x,y}p(x,y)log\frac{p(x,y)}{p(x)p(y)}

整理一下,互信息的概率分布定义式为:

I(X;Y)=\sum_{x,y}p(x,y)log\frac{p(x,y)}{p(x)p(y)}

一个结论:

同时,我们也可以对逐点互信息求均值(期望)来得到互信息的概率分布定义式,但不用再花时间去推导,直接应用“3.3.2 条件熵”最后的结论,即对某个式子(两个变量及以上)求均值(期望),就是使用联合概率,说的再直白一点就是在式子 f(x,y) 的前面加上:

\sum_{(x,y)}p(x,y)f(x,y)

若式子中涉及到三个变量 f(x,y,z)

\sum_{(x,y,z)}p(x,y,z)f(x,y,z)

(注意,这个结论并不严谨,是我自己总结的一个技巧,如存在不当之处,欢迎指正。)

这里的 f(x,y) 也就是 逐点互信息 I(x;y):

I(x;y)=log\frac{p(x|y)}{p(x)}=log\frac{p(x,y)}{p(x)p(y)}\Rightarrow H(X;Y)=\sum_{x,y}p(x,y)log\frac{p(x,y)}{p(x)p(y)}

4.2 逐点条件互信息和条件互信息

条件互信息理解起来相对困难一点,但如果已经掌握了前面的内容,这部分的理解也是水到渠成。

4.2.1 逐点条件互信息

逐点条件互信息 I(x;y|z) 表示在已知 z 的条件下,观测到 y 为我们提供了多少关于 x 的信息量。简而言之,除开已知条件,条件互信息的含义与互信息的含义与性质都相同。根据逐点条件互信息的含义,可以得到逐点条件互信息满足的关系式:

I(x;y|z)=I(x|z)-I(x|y,z)

其中,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),根据含义去理解就不会混淆了。

将关系式展开得到逐点条件互信息的概率分布定义式:

I(x;y|z)=I(x|z)-I(x|y,z)=-logp(x|z)+logp(x|y,z)=log\frac{p(x|y,z)}{p(x|z)}

逐点条件互信息不是重点,对其求均值得到的条件互信息才是重点。

4.2.2 条件互信息

更常用的条件互信息 I(X;Y|Z) 是对所有可能的 x, y, z 的逐点值进行加权平均(求期望),还记得“4.1.2 互信息”最后总结的结论吗,求期望使用联合概率 p(x, y, z) ,我们可以直接写出条件互信息的概率分布定义式(这一结论的严格证明请回看“3.3.2 条件熵”):

I(X;Y|Z)=E_{p(x,y,z)}\left[I(x;y|z) \right ]=E_{p(x,y,z)}\left[log\frac{p(x|y,z)}{p(x|z)} \right ]

=\sum_{x,y,z}p(x,y,z)log\frac{p(x|y,z)}{p(x|z)}

(再用条件概率展开)

=\sum_{x,y,z}p(x,y,z)log\frac{p(x,y,z)p(z)}{p(x,z)p(y,z)}

同样地,我们也可以先按照逐点条件互信息满足的关系式,对应地列出条件互信息满足的关系式:

I(X;Y|Z)=H(X|Z)-H(X|Y,Z)

再由该关系式推导出概率分布定义式的过程和互信息一样,在前面已经写过,这里不再赘述。

一个小总结:

不论是互信息还是条件互信息,我们既可以根据逐点互信息/条件互信息满足的关系式类比写出互信息/条件互信息满足的关系式,然后再逐步展开化简得到概率分布定义式;也可以根据互信息/条件互信息是对逐点互信息/条件互信息进行加权平均(求期望)的概念,使用“切片”方法逐步推导出其概率分布定义式,这在 3.3.2 节中有详细阐述(为了节省计算步骤,针对求期望的操作我总结了一个小技巧,这在 4.1.2 节的末尾有说明)。

5 总结

本文所介绍的内容都是信息论里基础中的基础,以前没太学明白,现在算是把这个坑填上了,但其实还有很多内容没有涉及到,等后面用到了再随时回来补充吧。如有错误,欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值