简单理解信息量、散度、交叉熵

本文深入浅出地介绍了信息论中的核心概念,包括信息量、香农熵、KL散度、JS散度和交叉熵。通过直观的例子和数学公式,阐述了这些概念在衡量信息不确定性及分布差异中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

信息论

顾名思义,信息论是研究信息的一门学科,不过在这篇文章里,只讨论一些简单的概念。

信息量

这里的信息量和“这句话信息量很大啊”的信息量有些像,但还是有区别的。

信息论

顾名思义,信息论是研究信息的一门学科,不过在这篇文章里,只讨论一些简单的概念。

信息量

这里的信息量和“这句话信息量很大啊”的信息量有些像,但还是有区别的。在这里插入图片描述

我们常说的信息量很大,基本上的意思是表达某句话或者某个场面(较少见)蕴含了很丰富的可解读信息,有着很大的脑补空间,可以让读者或者观众进行大限度的脑补、意淫、无限遐想。

然而信息论的基本想法是一个不太可能发生的事件发生了,要比一个非常可能的事件发生,有更多的信息。

比如我说:“人终究会死”,就没什么信息量,而“有个人跳楼没死”,信息就很丰富了。

当然了,在数学书上,总是要用公式来表示,这个定义是这样的,对于一个事件xxx,它包含的信息量(自信息)为:
I(x)=−lnP(x)I(x) = -lnP(x)I(x)=lnP(x)

这里使用了以eee为底的对数,单位是奈特(nats),实际上,也可以使用以2为底的对数,它的单位是比特(bit)或香农。两者区别并不大,同一个信息只有常数倍的差距。

这里贴上−lnx-lnxlnx的函数,可以感受一下前面说的,当一个事件发生概率越大,信息量越小。
在这里插入图片描述

香农熵

上面说的自信息只针对单一事件,是单一事件信息量的量化,但是通常我们要对所有可能发生的事件做一个度量,也叫做香农熵。下面是公式:
H(x)=Ex∼P[I(x)]=−Ex∼P[lnP(x)]H(x) = E_{x \sim P}[I(x)] = -E_{x \sim P}[lnP(x)]H(x)=ExP[I(x)]=ExP[lnP(x)]

香农熵其实就是所有可能发生的事件的信息量用它的概率的加权和。

我们把上面公式展开,思考一下概率分布与香农熵的关系:
H(x)=−∑xP(x)lnP(x)H(x) = - \sum_{x}P(x)lnP(x)H(x)=xP(x)lnP(x)

这个东西我本来感觉应该有规律的,但是写了个代码看一下貌似没有,不过整体趋势应该是方差越小,整个值越大。而花书的说法是,越接近均匀分布,熵越高,越接近确定的分布,熵越低,接近确定分布和方差高不是一回事,花书上还给了个二值随机变量的例子:
在这里插入图片描述
在上面的图中,横坐标是二值随机变量是1的概率,纵坐标是对应的香农熵。假设ppp表示二值随机变量是1的概率,那么1−p1-p1p就是二值随机变量为0的概率。因此:
H(x)=(p−1)log(1−p)−plogpH(x) = (p-1)log(1-p) - plogpH(x)=(p1)log(1p)plogp

  • p→0p\rightarrow 0p0,随机变量几乎总是0,所以分布也是几乎确定的。
  • p→1p \rightarrow 1p1,随机变量几乎总是1,分布也是几乎确定的,整个表达式还是趋近于0。

KL散度

上面写的都是针对同一个概率分布的,而想要衡量两个单独的概率分布之间的差异,就可以用到KL散度了。

假设有两个单独的概率分布P(x)P(x)P(x)Q(x)Q(x)Q(x),那么KL散度可以表示为:
DKL(P∣∣Q)=Ex∼P[logP(x)Q(x)]=Ex∼P[logP(x)−logQ(x)]D_{KL}(P||Q) = E_{x \sim P}[log{\frac{P(x)}{Q(x)}}] = E_{x \sim P}[logP(x) - logQ(x)]DKL(PQ)=ExP[logQ(x)P(x)]=ExP[logP(x)logQ(x)]

花书上给KL散度一个解释:在离散型变量的情况下,KL 散度衡量的是,当我们使用一种被设计成能够使得概率分布QQQ产生的消息的长度最小的编码,发送包含由概率分布PPP产生的符号的消息时,所需要的额外信息量。

然而根本听不太懂啊。还是把公式展开分析一下吧:
DKL(P∣∣Q)=Ex∼P[logP(x)Q(x)]=∑xP(x)logP(x)Q(x)D_{KL}(P||Q) = E_{x \sim P}[log{\frac{P(x)}{Q(x)}}] = \sum_x{P(x)log{\frac{P(x)}{Q(x)}}}DKL(PQ)=ExP[logQ(x)P(x)]=xP(x)logQ(x)P(x)

我们可以推出的一些信息是:

  1. KL散度的值是大于等于0的,这个可以由吉布斯不等式推导出,这里不说。
  2. KL散度等于0当且仅当PPPQQQ在离散型变量的情况下是相同的分布,或者在连续型变量的情况下是"几乎处处"相同的。
  3. KL散度是不对称的,即DKL(P∣∣Q)≠DKL(Q∣∣P)D_{KL}(P||Q) \neq D_{KL}(Q||P)DKL(PQ)̸=DKL(QP)

在前面也说了,KL散度是用来衡量两个分布的差距,但是上面提到了KL散度是不对称的,那么这两者作为一个指标有什么不同呢?

假设分布PPP是固定的,我们要用一个分布QQQ去近似它,这个时候KL散度就可以做为一个衡量的指标,我们的目标就是最小化KL散度。

接下来我们看第一种:
DKL(P∣∣Q)=∑xP(x)logP(x)Q(x)D_{KL}(P||Q)= \sum_x{P(x)log{\frac{P(x)}{Q(x)}}}DKL(PQ)=xP(x)logQ(x)P(x)

在这种情况下,PPP的分布是固定的嘛,我们需要考虑的是怎么调整QQQ,在PPP的值比较大的时候,QQQ越大,整个值就越大,而PPP比较小的地方,由于左边乘了PPP所以反而QQQ的值影响没那么大。因此,如果我们使用DKL(P∣∣Q)D_{KL}(P||Q)DKL(PQ)作为最小化的目标,那么QQQ就应该在PPP大的地方尽可能的大,在PPP小的地方,在满足前面的条件下QQQ也是要尽量大。

然后是第二种:
DKL(Q∣∣P)=∑xQ(x)logP(x)Q(x)D_{KL}(Q||P) = \sum_x{Q(x)log{\frac{P(x)}{Q(x)}}}DKL(QP)=xQ(x)logQ(x)P(x)

思路和上面一样想让结果小,首先要保证在PPP小的时候,QQQ也要小,在这个前提下,PPP大的地方,QQQ还是要小一些。

附上一张图:

在这里插入图片描述## JS散度
JS散度是KL散度的一种变形,下面是公式:
JS(P∣∣Q)=12KL(P∣∣P+Q2)+12KL(Q∣∣P+Q2)JS(P||Q) = \frac{1}{2}KL(P||\frac{P+Q}{2}) + \frac{1}{2}KL(Q||\frac{P+Q}{2})JS(PQ)=21KL(P2P+Q)+21KL(Q2P+Q)

JS散度的值域是[0,1]。并且有一个好处,那就是对称性,从公式中就可以看出来JS(P∣∣Q)=JS(Q∣∣P)JS(P||Q) = JS(Q||P)JS(PQ)=JS(QP)

交叉熵

交叉熵其实和KL散度关系密切,先看一下公式:
H(P,Q)=H(P)+DKL(P∣∣Q)H(P,Q) = H(P) + D_{KL}(P||Q)H(P,Q)=H(P)+DKL(PQ)
H(P,Q)=−Ex∼P[logQ(x)]H(P, Q) = -E_{x \sim P}[log{Q(x)}]H(P,Q)=ExP[logQ(x)]
再回顾一下KL散度公式:
DKL(P∣∣Q)=Ex∼P[logP(x)−logQ(x)]=Ex∼P[logP(x)]−Ex∼P[logQ(x)]D_{KL}(P||Q) = E_{x \sim P}[logP(x) - logQ(x)] = E_{x \sim P}[logP(x)] - E_{x \sim P}[logQ(x)]DKL(PQ)=ExP[logP(x)logQ(x)]=ExP[logP(x)]ExP[logQ(x)]
交叉熵其实就是KL散度去掉了左边那一项,如果我们固定PPP优化的目标是QQQ,那么优化KL散度和优化交叉熵的效果也是一样的,因为左边那一项是固定的。

最后一个问题,假定平常的分类任务中,训练数据可以用分布PPP表示,为什么我们都是用H(P,Q)H(P, Q)H(P,Q)而不是H(Q,P)H(Q, P)H(Q,P)呢?我想,这可能是和它们优化的结果有关系吧,因为结果和KL散度的优化结果一样,我们可以参考上面KL散度那一节中的图,我的想法是,H(P,Q)H(P, Q)H(P,Q)可以覆盖PPP的分布,而H(Q,P)H(Q, P)H(Q,P)不能。

总结

上面的内容虽然不算难,但是在很多地方推导公式之类的都可能会用到,因此还是挺有用的。另外,如果有错误,欢迎大家指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值