Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

机器学习笔记-信息熵条件熵相对熵交叉熵和互信息 - WarningMessage #11963

Open
guevara opened this issue Feb 10, 2025 · 0 comments

Comments

@guevara
Copy link
Owner

guevara commented Feb 10, 2025

机器学习笔记-信息熵、条件熵、相对熵、交叉熵和互信息 - WarningMessage



https://ift.tt/apLsnPe






熵 (Entropy) 这一词最初来源于热力学。1948年,克劳德·爱尔伍德·香农将热力学中的熵引入信息论,所以也被称为香农熵 (Shannon entropy)、信息熵 (information entropy)。

熵、条件熵、相对熵、交叉熵和互信息


目录

  1. 信息熵
  2. 条件熵
  3. 相对熵和交叉熵
  4. 互信息

笔记仅从机器学习角度理解下面的内容

1. 信息熵(Information entropy)

熵 (Entropy) 这一词最初来源于热力学。1948年,克劳德·爱尔伍德·香农将热力学中的熵引入信息论,所以也被称为香农熵 (Shannon entropy)、信息熵 (information entropy)。

首先,我们先来理解一下信息这个概念。信息是一个很抽象的概念,百度百科将它定义为:指音讯、消息、通讯系统传输和处理的对象,泛指人类社会传播的一切内容。我们知道我们的世界是由很多的信息构成的,我们需要了解这些信息、沟通这些信息,甚至是度量和测量这些信息的大小。那信息可以被度量么?可以的!香农提出的“信息熵”概念解决了这一问题。

假设我们需要搞清楚一件事,如果这件事的发生非常非常不确定,或者我们之前对此事一无所知,那么就需要了解大量的信息。相反,如果某件事经常发生,我们已经有了较多的了解,我们就不需要太多的信息就能把它搞清楚。所以,从这个角度出发,直觉上我们可以认为,一条信息的信息量的大小和它的不确定性有关系,而我们经常使用概率来说明一个事件的不确定性。

假设我们用随机变量\(x\)来表示事件。信息量可以被看成在学习\(x\)的值的时候的“惊讶程度”。举个例子说明一下,比如,有人说广州下雪了。对于这句话,我们是十分不确定的。因为广州几十年来下雪的次数寥寥无几,发生的概率很低。为了搞清楚这件事,我们就要去看天气预报,新闻,询问在广州的朋友,而这就需要大量的信息,信息量很大。再比如,你接到了妈妈打来的电话,让你晚上回家吃饭。对于这件事,因为它很可能发生,几乎不需要引入信息,信息量很小。我们想找到一个函数\(h(x)\)来衡量事件信息量的大小。这里用\(h(x_1)\)\(h(x_2)\)来表示上面的两个例子的信息量,那么,怎么表示\(h(x_1)\)\(h(x_2)\)之间的大小关系呢?怎么寻找到函数\(h(x)\)呢?

从上边的例子出发,首先,直觉上看,事件\(x\)的信息量应该和它的概率分布\(p(x)\)有关,而且信息量\(h(x)\)增大,\(p(x)\)减小,而\(h(x)\)减小,则\(p(x)\)增大,可以认为是\(h(x)\)\(\dfrac{1}{p(x)}\)之间的关系。当然,此时也可能认为是\(h(x)\)\(-p(x)\)的关系,我们后面再说。

其次,我们考虑观察两个事件同时发生时获得的信息量,假设是两个不相关的事件,它和每个事件的信息量有什么关系呢?也就是说你听说广州下雪了,同时你接到了妈妈的电话叫你回家吃饭,这两件事应该是独立的,所以它们的信息量应该是和的关系,即\(h(x_1,x_2)= h(x_1) + h(x_2)\)

最后,一个信息量的函数应该是大于零、等于零还是小于零呢?如果你接到了妈妈的电话,你至多也就是觉得这个电话对你来说没有任何的信息,而你的信息是不会跑到你妈妈那里的。所以这个函数应该是大于等于0的,即\(h(x) \ge 0\)。回过头来看,前面认为的\(h(x)\)\(-p(x)\)的关系是不太合理的,因为\(p(x)\)是一个大于等于0的数。

综上,就想到了以下函数:

\[h(x) = log_2 \cfrac{1}{p(x)} \]

首先,函数满足\(p(x)\)减小,\(h(x)\)增大,而\(p(x)\)增大,则\(h(x)\)减小;

其次,因为两个事件是独立的,因此\(p(x_1,x_2)=p(x_1)p(x_2)\)。所以

\[\begin{aligned} h(x_1,x_2) &= log_2 \cfrac{1}{p(x_1)p(x_2)} \\ &=log_2 \cfrac{1}{p(x_1)}+log_2 \cfrac{1}{p(x_2)} \\ &=-(log_2(p(x_1))+log_2(p(x2))) \end{aligned}\]

最后,显然\(h(x)\)是大于等于0的。

因此,我们得到了信息量函数(information function)

\[h(x)=−log_2p(x) \tag{1} \]

其中, 对数函数底的选择是任意的,信息论中底常常选择为2,\(h(x)\)的单位为比特(bit),而机器学习中底常常选择为自然常数,\(h(x)\)的单位为奈特(nat)

\(h(x)\)也被称为随机变量\(x\)自信息(self-information),描述的是随机变量的某个事件发生所带来的信息量。如图1所示:


图1

那么,什么是呢?

熵(entropy)是定义为关于函数\(h(x)\)在随机变量\(X\)\(p(x)\)为分布下的数学期望,即假设一个发送者想传输一个随机变量的值给接受者。这个过程中,他们传输的平均信息量可以通过求公式\((1)\)关于概率分布\(p(x)\)的期望得到

\[Entropy(x) = H(x) = E_x[h(x)] = -\sum_x p(x)log_2 p(x) \tag{2} \]

这个量被叫做随机变量\(x\)熵,它是随机变量不确定性的度量,是对所有可能发生的事件产生的信息量的期望。

我们知道,如果随机变量\(X\)是离散型变量,则\(E_x[f(x)] = \sum_x p(x) f(x)\),将其中的\(f(x)\)替换成\(h(x)\)即可得到公式\((2)\)

现在举个例子说明这些定义的性质。考虑一个随机变量\(x\),这个随机变量有8种可能的状态,每个状态都是等可能的。个人理解,我们就想象有这么一个空间,空间中有64个小球,共有8种颜色,每种颜色小球的个数相等,都为8个。那么这个变量的熵为

\[H(x) = -8 \times \cfrac{1}{8}log_2\cfrac{1}{8} =3 \quad bits \]

信息论中即为为了把\(x\)的值传递给接收者,我们需要传输3比特的消息。

现在考虑⼀个具有8种可能状态\(\{a, b, c, d, e, f, g, h, g\}\)的随机变量,每个状态各自的概率为\((\cfrac{1}{2},\cfrac{1}{4},\cfrac{1}{8},\cfrac{1}{16},\cfrac{1}{64},\cfrac{1}{64},\cfrac{1}{64},\cfrac{1}{64})\)(Cover and Thomas, 1991)。这种情形下的熵为

\[H(x) = -\cfrac{1}{2}log_2\cfrac{1}{2}-\cfrac{1}{4}log_2\cfrac{1}{4}-\cfrac{1}{8}log_2\cfrac{1}{8}-\cfrac{1}{16}log_2\cfrac{1}{16}-\cfrac{4}{64}log_2\cfrac{1}{64} = 2 \quad bits \]

我们看到,⾮均匀分布⽐均匀分布的熵要⼩

从公式可得,随机变量的取值个数越多,状态数也就越多,信息熵就越大,混乱程度就越大。当随机分布为均匀分布时,熵最大,且\(0≤H(X)≤logM\)。其中\(M\)是状态\(x_i\)的总数。

注:这里的结论及以下的微分熵相关的结论的证明可参见(Christopher M. Bishop-- Pattern Recognition and Machine Learning)

我们可以把熵的定义扩展到连续变量\(x\)的概率分布\(p(x)\),这时把熵称作微分熵(differential entropy)

\[H(x) = -\int p(x)log_2 p(x)dx \tag{3} \]

在离散分布的情况下,最⼤熵对应于变量的所有可能状态的均匀分布。而连续变量的最⼤化微分熵的分布是⾼斯分布

注意

  • 从熵的公式可以看出,\(H(x)\)是一个函数(概率分布函数)的函数。
  • 熵只依赖于随机变量的分布,与随机变量的取值无关,所以也可以将\(X\)的熵记作\(H(p)\)
  • 因为\(lim_{p\rightarrow 0}p log_2 p =0\),因此只要我们遇到一个\(x\)使得\(p(x)=0\),那么就应该令\(p(x)log_2(p(x))=0\)
  • 与离散熵不同,微分熵可以为负,即存在\(H(x)<0\)的情况。

2. 条件熵(Conditional entropy)

如上述,将一维随机变量分布推广到多维随机变量分布,则可得到联合熵(joint entropy):

\[\begin{aligned} H(X,Y) &= -\sum_{x,y}p(x,y)log_2p(x,y) \\ &= -\sum_{i=1}^n\sum_{j=1}^mp(x_i,y_i)log_2p(x_i,y_i) \end{aligned}\tag{4}\]

条件熵表示在已知随机变量\(X\)的条件下随机变量\(Y\)的不确定性,记作\(H(Y|X)\)\(H(Y|X)\)\(X\)给定条件下\(Y\)的条件概率分布的熵对\(X\)的数学期望:

\[\begin{aligned} H(Y|X) &= \sum_x p(x) H(Y|X=x) \\ &= -\sum_x p(x)\sum_y p(y|x)log_2p(y|x) \\ &= -\sum_x \sum_y p(x,y)log_2p(y|x) \\ &= -\sum_{x,y} p(x,y)log_2p(y|x) \end{aligned} \tag{5}\]

条件熵\(H(Y|X)\)也可以理解为联合熵\(H(X,Y)\)减去随机变量\(X\)的熵\(H(X)\),即

\[\begin{aligned} H(Y|X) &= H(X,Y) - H(X) \\ &= -\sum_{x,y}p(x,y)log_2p(x,y) + \sum_x p(x)log_2 p(x) \\ &= -\sum_{x,y}p(x,y)log_2p(x,y) + \sum_x (\sum_{y}p(x,y))log_2 p(x)\\ &= -\sum_{x,y}p(x,y)log_2p(x,y) + \sum_{x,y}p(x,y)log_2p(x) \\ &= -\sum_{x,y}p(x,y)(log_2p(x,y) - log_2p(x)) \\ &= -\sum_{x,y}p(x,y)(\cfrac{log_2p(x,y)}{log_2p(x)}) \\ &= -\sum_{x,y} p(x,y)log_2p(y|x) \end{aligned} \tag{6}\]

表示\((X,Y)\)发生所包含的熵,减去\(X\)单独发生包含的熵,即在\(X\)发生的前提下,\(Y\)发生“新”带来的熵。

注意:

注意公式\((5)\),这个条件熵,是指在给定某个数(某个变量为某个值)的情况下,另一个变量的熵是多少,变量的不确定性是多少。

因为条件熵中\(X\)也是一个变量,意思是在一个变量\(X\)的条件下(变量\(X\)的每个值都会取),另一个变量\(Y\)熵对\(X\)的期望。

这是最容易错的!

下面通过例子来解释一下:

假如我们有下面数据,表格1:


表格1

设随机变量\(Y=\) {嫁,不嫁}

我们可以统计出,嫁的个数为6/12 = 1/2

不嫁的个数为6/12 = 1/2

那么\(Y\)的熵,根据熵的公式来算,可以得到\(H(Y) = -\cfrac{1}{2}log_2\cfrac{1}{2} -\cfrac{1}{2}log_2\cfrac{1}{2}\)

为了引出条件熵,我们现在还有一个变量\(X\),代表长相是帅还是不帅,当长相是不帅的时候,统计如下表格2红色所示:


表格2

可以得出,当已知不帅的条件下,满足条件的只有4个数据了,这四个数据中,不嫁的个数为1个,占1/4,嫁的个数为3个,占3/4,那么此时的\(H(Y|X=不帅) = -\cfrac{1}{4}log_2\cfrac{3}{4} -\cfrac{3}{4}log_2\cfrac{3}{4}\)\(p(X = 不帅) = 4/12 = 1/3\)

同理我们可以得到:

当已知帅的条件下,满足条件的有8个数据了,这八个数据中,不嫁的个数为5个,占5/8,嫁的个数为3个,占3/8。那么此时的\(H(Y|X=帅) = -\cfrac{5}{8}log_2\cfrac{5}{8} -\cfrac{3}{8}log_2\cfrac{3}{8}\)\(p(X = 帅) = 8/12 = 2/3\)

计算结果

有了上面的铺垫之后,我们终于可以计算我们的条件熵了,我们现在需要求:

\[H(Y|X = 长相) \]

也就是说,我们想要求出当已知长相的条件下的条件熵。根据公式我们可以知道,长相可以取帅与不帅两种,条件熵是另一个变量\(Y\)熵对\(X\)(条件)的期望。

公式为:

\[H(Y|X) = \sum_x p(x) H(Y|X=x) \]

其中,\(H(Y|X=长相) = p(X =帅) \times H(Y|X=帅) + p(X =不帅) \times H(Y|X=不帅)\)

然后将上面已经求得的答案带入即可求出条件熵!

这里比较容易发生的错误就是忽略了\(X\)也是可以取多个值,然后对其求期望!!

总结一下,其实条件熵意思是按一个新的变量的每个值对原变量进行分类,比如上面这个题把嫁与不嫁按帅,不帅分成了俩类。然后在每一个小类里面,都计算一个小熵,然后每一个小熵乘以各个类别的概率,然后求和。我们用另一个变量对原变量分类后,原变量的不确定性就会减小了,因为新增了X的信息,可以感受一下。不确定程度减少了多少就是信息的增益。

3. 相对熵(Relative entropy)和交叉熵(Cross entropy)

我们现在开始把熵关联到机器学习问题中。考虑某个未知的分布\(p(x)\),假定我们已经使⽤⼀个近似的分布\(q(x)\)对它进⾏了建模。如果我们使⽤\(q(x)\)来建⽴⼀个编码体系,⽤来把\(x\)的值传给接收者,那么,由于我们使⽤了\(q(x)\)⽽不是真实分布\(p(x)\),因此在具体化\(x\)的值时,我们需要⼀些附加的信息。我们需要的平均的附加信息量(单位是nat)为

\[\begin{aligned} D_{KL}(p||q) &= -\int p(x)ln q(x)dx-(-\int p(x)ln p(x)dx)) \\ &= -\int p(x)ln \cfrac{q(x)}{p(x)}dx \end{aligned} \tag{7}\]

如果\(p(x)\)\(q(x)\)是离散随机变量\(X\)中取值的两个概率分布,则

\[\begin{aligned} D_{KL}(p||q) &= -\sum_x p(x)ln \cfrac{q(x)}{p(x)} \\ &= \sum_x p(x)ln \cfrac{p(x)}{q(x)} \\ &= E_{p(x)}ln \cfrac{p(x)}{q(x)} \end{aligned} \tag{8}\]

注:这里我们把熵的定义中的对数变成⾃然对数

这个重要的量被称为分布\(p(x)\)\(q(x)\)之间的相对熵(relative entropy),或者Kullback-Leibler散度(Kullback-Leibler divergence),或者KL散度(Kullback and Leibler, 1951)。

相对熵的一些性质:

  1. 如果\(p(x)\)\(q(x)\)两个分布相同,即有\(q(x) = p(x)\)对于所有\(x\)都成⽴时,相对熵等于0;
  2. 相对熵具有不对称性\(D_{KL}(p||q) \ne D_{KL}(q||p)\)。举个简单的例子:

假设随机变量\(x\)服从0-1分布,现有概率分布\(p(x)\)\(q(x)\)。且

\[p(1) = r, \quad p(0) = 1-r \]

\[q(1) = s, \quad q(0) = 1-s \]

\[D_{KL}(p||q) = (1-r)log\cfrac{1-r}{1-s} + rlog\cfrac{r}{s} \]

\[D_{KL}(q||p) = (1-s)log\cfrac{1-s}{1-r} + slog\cfrac{s}{r} \]

那么,当\(r=s\)时,\(D_{KL}(p||q) = D_{KL}(q||p) = 0\),如果\(r=0.5, s=0.25\),则计算得到

\[D_{KL}(p||q)=0.2075 \ne D_{KL}(q||p)=0.1887 \]

  1. \(D_{KL}(p||q) \ge 0\),证明如下:

首先,介绍凸函数(convex function)的概念,如果一个函数具有以下的性质:每条弦都位于函数图像或其上⽅(如图2所⽰),那么我们说这个函数是凸函数。位于\(x = a\)\(x = b\)之间的任何⼀个\(x\)值都可以写成\(\lambda{a}+(1-\lambda)b\)的形式,其中\(0 \le \lambda \le 1\)。弦上的对应点可以写成\(\lambda {f(a)} + (1 -\lambda)f(b)\),函数的对应值为\(f(\lambda a + (1 -\lambda)b)\)。这样,凸函数的性质就可以表⽰为:

\[f(\lambda a + (1 -\lambda)b) \le \lambda {f(a)} + (1 -\lambda)f(b) \tag{9} \]

这等价于要求函数的⼆阶导数处处为正。凸函数的例⼦有\(xln x(x > 0)\)\(x^2\) 。如果等号只在\(\lambda = 0\)\(\lambda = 1\)处取得,我们就说这个函数是严格凸函数(strictly convex function)。如果⼀个函数具有相反的性质,即每条弦都位于函数图像或其下⽅,那么这个函数被称为凹函数(concave function)。对应地,也有严格凹函数(strictly concave function)的定义。如果\(f(x)\)是凸函数,那么\(-f(x)\)就是凹函数。


图2 凸函数f(x)的每条弦(蓝⾊表⽰)位于函数上或函数上⽅,函数⽤红⾊曲线表⽰

使⽤归纳法,我们可以根据公式\((9)\)证明凸函数\(f(x)\)满⾜

\[f(\sum_{i=1}^M \lambda_i x_i) \le \sum_{i=1}^M \lambda_i f(x_i) \tag{10} \]

其中,对于任意点集\(\{x_i\}\),都有\(\lambda_i \ge 0\)\(\sum_i \lambda_i=1\)。上述公式的结果被称为Jensen不等式(Jensen's inequality)。如果我们把\(\lambda_i\)看成取值为\(\{x_i\}\)的离散变量\(x\)的概率分布,那么上面的公式可以写成

\[f(E[x]) \le E[f(x)] \tag{11} \]

其中,\(E[\cdot]\)表示期望。对于连续变量,Jensen不等式的形式为

\[f(\int xp(x)dx) \le \int f(x)p(x)dx \tag{12} \]

所以,

\[\begin{aligned} D_{KL}(p||q) &= -\sum_x p(x)ln \cfrac{q(x)}{p(x)} \\ &= -E_{p(x)}[ln\cfrac{q(x)}{p(x)}] \\ &\ge -ln(E_{p(x)}[\cfrac{q(x)}{p(x)}]) \\ &= -ln \sum_x p(x)\cfrac{q(x)}{p(x)} \\ &= -ln \sum_x q(x) \end{aligned}\]

因为\(\sum_x q(x) =1\),所以\(D_{KL}(p||q) \ge 0\)。推导过程中,我们使⽤了\(ln x\)是凸函数的 事实, 以及归⼀化条件\(\sum_x q(x) =1\)。实际上,\(ln x\)是严格凸函数,因此只有\(q(x) = p(x)\)对于所有\(x\)都成⽴时,等号才成⽴。上面公式的意义就是求\(p(x)\)\(q(x)\)之间的对数差在\(p(x)\)上的期望值。因此我们可以把Kullback-Leibler散度看做两个分布\(p(x)\)\(q(x)\)之间不相似程度的度量

比如TD-IDF算法就可以理解为相对熵的应用:词频在整个语料库的分布与词频在具体文档中分布之间的差异性。

那么,什么是交叉熵?

假设\(p(x)\)\(q(x)\)是关于某样本集的2个概率分布,其中\(p(x)\)为数据的真实分布,\(q(x)\)\(p(x)\)的一个近似。按照真实分布\(p(x)\)来衡量识别一个样本的所需要的编码长度的期望,即平均编码长度(也就是熵)为\(H(x) = -\sum_x p(x)ln p(x)\)。如果我们要使用近似分布\(q(x)\)来表示真实分布\(p(x)\)的平均编码长度,则应该是:

\[H(p(x),q(x)) = -\sum_x p(x)ln q(x) \tag{13} \]

因为用\(q(x)\)来编码的样本来自分布\(p(x)\),所以期望\(H(p(x),q(x))\)中的概率是\(p(x)\)。这里的\(H(p(x),q(x))\)我们称之为交叉熵

比如含有4个字母(A,B,C,D)的数据集中,真实分布\(p(x)=(1/2, 1/2, 0, 0)\),即A和B出现的概率均为1/2,C和D出现的概率都为0。计算\(H(p(x))\)为1,即只需要1位编码即可识别A和B。如果使用分布\(q(x)=(1/4, 1/4, 1/4, 1/4)\)来编码则得到\(H(p(x),q(x))=2\),即需要2位编码来识别A和B(当然还有C和D,尽管C和D并不会出现,因为真实分布\(p(x)\)中C和D出现的概率为0,这里就钦定概率为0的事件不会发生啦)。注:为了计算方便,这里是以2为底的对数

可以看到上例中根据近似分布\(q(x)\)得到的平均编码长度\(H(p(x),q(x))\)大于根据真实分布\(p(x)\)得到的平均编码长度\(H(p(x))\)。事实上,根据Gibbs inequality可知,\(H(p(x),q(x)) \ge H(p(x))\)恒成立,当\(q(x)=p(x)\)时取等号,此时交叉熵等于信息熵。

有没有发现,我们此时又回到了相对熵,即由\(q(x)\)得到的平均编码长度比由\(p(x)\)得到的平均编码长度多出的bit数(对数底数为2时):

\[D_{KL}(p||q) = H(p(x),q(x))-H(p(x)) =-\sum_x p(x)ln \cfrac{q(x)}{p(x)} \tag{14} \]

机器学习的目的就是希望\(q(x)\)尽可能地逼近甚至等于\(p(x)\),从而使得相对熵接近最小值0。由于真实的概率分布是固定的(在机器学习中,训练数据分布是固定的),相对熵公式\((7)\)的后半部分就成了一个常数。那么相对熵达到最小值的时候,也意味着交叉熵达到了最小值。对\(q(x)\)的优化就等效于求交叉熵的最小值。另外,对交叉熵求最小值,也等效于求最大似然估计(maximum likelihood estimation)。这里简单介绍一下,具体可以参考(Deep Learning -- 5.5 Maximum Likelihood Estimation.)

假设数据是通过未知分布\(p(x)\)生成的,我们要对\(p(x)\)建模。一个可行的做法是使用一些参数分布\(q(x|\theta)\)来近似这个分布。\(q(x|\theta)\)由可调节的参数\(\theta\)控制,比如说它是一个多元高斯分布。其中一种确定\(q(x|\theta)\)的方式是最小化\(p(x)\)\(q(x|\theta)\)之间关于\(\theta\)的Kullback-Leibler散度。但是这里有一个问题就是,我们并不知道真实的\(p(x)\)。但是,我们已经观察到了服从分布\(p(x)\)的有限数量的训练点\(x_i, i=1,2,\dots,m\)。我们知道,如果我们给定有限数量的\(m\)个点,这些点满⾜某个概率分布或者概率密度函数,那么期望可以通过求和的⽅式估计,即

\[E[f] = \sum_x p(x)f(x) \approx \cfrac{1}{m}\sum_{i=1}^mf(x_i) \]

那么,关于\(p(x)\)的期望就可以通过这些点的有限加和来近似,同时,从公式\((8)\)可以看出,Kullback-Leibler散度就是求\(p\)\(q\)之间的对数差在\(p(x)\)上的期望值。所以

\[\begin{aligned} D_{KL}(p||q) &= -\sum_x p(x)ln \cfrac{q(x|\theta)}{p(x)} \\ & \approx \cfrac{1}{m}\sum_{i=1}^m\{-lnq(x_i|\theta)+p(x_i)\} \end{aligned} \]

上述公式中,右侧第二项与\(\theta\)无关,第⼀项是使⽤训练集估计的分布\(q(x|\theta)\)下的\(\theta\)的负对数似然函数。因此我们看到,最⼩化Kullback-Leibler散度等价于最⼤化似然函数。

通常“相对熵”也可称为“交叉熵”,虽然公式上看相对熵=交叉熵-信息熵,但正如上面说的由于真实分布\(p(x)\)是固定的,\(D_{KL}(p||q)\)\(H(p(x),q(x))\)决定。当然也有特殊情况,彼时两者须区别对待。

4. 互信息(Mutual Information)

在概率论和信息论中,两个随机变量的互信息(Mutual Information,简称MI)或转移信息(transinformation)是变量间相互依赖性的量度。

现在考虑由\(p(x,y)\)给出的两个变量\(X\)\(Y\)组成的数据集。如果变量的集合是独⽴的,那么他们的联合分布可以分解为边缘分布的乘积\(p(x,y) = p(x)p(y)\)。如果变量不是独⽴的,那么我们可以通过考察联合概率分布与边缘概率分布乘积之间的Kullback-Leibler散度来判断它们是否“接近”于相互独⽴。此时,Kullback-Leibler散度为

\[\begin{aligned} I(X,Y) &= D_{KL}(p(x,y)||p(x)p(y)) \\ &= -\sum_{y\in Y}\sum_{x \in X}p(x,y)ln \cfrac{p(x)p(y)}{p(x,y)} \end{aligned} \tag{15}\]

其中,\(p(x,y)\)\(X\)\(Y\)的联合概率分布函数,而\(p(x)\)\(p(y)\)分别是\(X\)\(Y\)的边缘概率分布函数。

同样的,在连续型随机变量的情形下,求和被替换为二重定积分:

\[\begin{aligned} I(X,Y) &= D_{KL}(p(x,y)||p(x)p(y)) \\ &= -\int_Y\int_Xp(x,y)ln \cfrac{p(x)p(y)}{p(x,y)}dxdy \end{aligned} \tag{16}\]

这被称为变量\(X\)和变量\(Y\)之间的互信息。根据Kullback-Leibler散度的性质,我们看到\(I(X,Y) \ge 0\),当且仅当\(X\)\(Y\)相互独⽴时等号成⽴。使⽤概率的加和规则和乘积规则,我们看到互信息和条件熵之间的关系为

\[I(X,Y) = H(X) - H(X|Y) = H(Y) - H(Y|X) \tag{17} \]

因此我们可以把互信息看成由于知道\(Y\)值⽽造成的\(X\)的不确定性的减⼩(反之亦然)。从贝叶斯的观点来看,我们可以把\(p(x)\)看成\(x\)的先验概率分布,把\(p(x|y)\)看成我们观察到新数据\(y\)之后的后验概率分布。因此互信息表⽰⼀个新的观测\(y\)造成的\(x\)的不确定性的减⼩。

互信息的性质:

  1. 对称性:\(I(X,Y) = I(Y,X)\)
  2. 非负性:\(I(X,Y) \ge 0\)
  3. \(X\)\(Y\)独立时,\(I(X,Y)=0\)
  4. \(X\)\(Y\)知道一个就能推断另一个时,\(I(X,Y)=H(X)=H(Y)\)

直观上,互信息度量\(X\)\(Y\)共享的信息。如果\(X\)\(Y\)相互独立,则知道\(X\)不对\(Y\)提供任何信息,反之亦然,所以它们的互信息为0。在另一个极端,如果\(X\)\(Y\)的一个确定性函数,且\(Y\)也是\(X\)的一个确定性函数,那么传递的所有信息被\(X\)\(Y\)共享,知道\(X\)就能决定\(Y\)的值,反之亦然。因此,在此情形互信息与\(Y\)(或\(X\))单独包含的不确定度相同,即为\(Y\)(或 \(X\))的熵。而且,这个互信息与\(X\)的熵和\(Y\)的熵相同。(这种情形的一个非常特殊的情况是当\(X\)\(Y\)为相同随机变量时。)

总结一下上面内容得到的等式

  1. 条件熵定义:\(H(X|Y) = H(X,Y) - H(Y)\)
  2. 互信息展开:\(H(X|Y) = H(X) - I(X,Y)\)
  3. 对偶式:\(H(Y|X) = H(X,Y) - H(X)\)\(H(Y|X) = H(Y) - I(X,Y)\)
  4. \(I(X,Y)= H(X) + H(Y) - H(X,Y)\)

以上等式都可以通过之前描述的公式进行推导,这里不再展开。其中,\(H(X)\)\(H(Y)\)是信息熵,\(H(X|Y)\)\(H(Y|X)\)是条件熵,\(H(X,Y)\)\(X\)\(Y\)的联合熵。注意到这组关系和并集、差集和交集的关系类似,用Venn图表示,如图3:


图3

以上!

 
 

开心吧

有一天螃蟹出门,不小心撞倒了泥鳅,

泥鳅很生气地说:“你是不是瞎啊!”

螃蟹说:“不是啊,我是螃蟹。”
 
 

参考来源:

1)Christopher M. Bishop -- Pattern Recognition and Machine Learning

2)https://www.zhihu.com/question/41252833/answer/141598211

3)https://www.cnblogs.com/kyrieng/p/8694705.html

4)https://blog.csdn.net/witnessai1/article/details/79574812 KL散度(相对熵)、交叉熵的解析

5)https://zhuanlan.zhihu.com/p/26551798 通俗理解条件熵

6)https://www.cnblogs.com/gatherstars/p/6004075.html







via 博客园 - 开发者的网上家园

February 10, 2025 at 05:37PM
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant