【信息论】信息论里的那些“熵”

从学习信息论接触到信息熵开始,就遇到了不少关于熵的概念。包括神经网络训练中的误差函数很多都是使用交叉熵函数,这里对这些熵做一个完整的介绍,作为一个关于“熵”的小词典吧hhh。有句话叫“知其形,会其意”,“形”大家都知道,这里主要是分享我个人是如何会其“意”的,难免会有不足和错误,希望读者不吝批评指正!


一、信息量与信息熵

1.1 信息量

香农信息论首先给出的,是对信息的度量——信息量的概念。按照越不容易发生的事情包含的信息量越大的主观认识,一个随机变量取到某个特定值包含的信息量 I ( X = x ) I(X=x) I(X=x)与其概率应该是成反比,也即:

I ( X = x ) = 1 P ( X = x ) I(X=x)=\frac{1}{P(X=x)} I(X=x)=P(X=x)1

不过这种信息量定义方式明显是有问题的,其对于确定事件的信息量度量是1,而必定会发生的事情到底提供了什么“信息”呢?我们不需要任何额外的信息输入就能知道明天太阳会照常升起。
其对于同时发生的事件的信息度量也存在问题,例如两个骰子同时掷出6这个事件,其信息量是36,明显大于两个骰子分别掷出6的信息量之和12。而对于两个相互独立的随机事件,他们提供的信息应该也是相互独立的,因为他们不会对彼此的发生产生任何影响

上面两个问题要求我们的信息量公式要满足以下两个条件:

1. I ( X = x , Y = y ) = I ( P ( X = x , Y = y ) = I ( P ( X = x ) ) + I ( P ( Y = y ) ) , 其 中 X 、 Y 相 互 独 立 I(X=x,Y=y)=I(P(X=x,Y=y)=I(P(X=x))+I(P(Y=y)),其中X、Y相互独立 I(X=x,Y=y)=I(P(X=x,Y=y)=I(P(X=x))+I(P(Y=y)),XY
2. I ( P ( X = x ) = 1 ) = 0 I(P(X=x)=1)=0 I(P(X=x)=1)=0

而香农给出的信息量公式是满足的,信息量对应了信息背后蕴涵的不确定性的大小,一个事情不确定性越大,信息量就越大,想要完全了解这个事情所需要的信息输入就大。例如一门学科其内容越多越复杂,其不确定性就大,信息量也大,想要学好需要学习的知识就越多。

I ( P ( X = x ) ) = − l o g P ( X = x ) I(P(X=x))=-logP(X=x) I(P(X=x))=logP(X=x)

1.2 信息熵

度量完了随机事件的信息量,下一步就是度量随机变量了。随机变量由于是变量,本身便不确定,其信息量的度量只能通过期望来评估,将随机变量取定某个值所包含的平均信息量定义为其信息熵

H ( X ) = − ∫ − ∞ ∞ p ( x ) l o g p ( x ) d x H(X)=-\int_{-\infty}^\infty{p(x)logp(x)}dx H(X)=p(x)logp(x)dx
H ( X ) = − E ( l o g ( p ( x ) ) = E ( I ( x ) ) H(X)=-E(log(p(x))=E(I(x)) H(X)=E(log(p(x))=E(I(x))

随机变量服从不同的分布 p ( x ) p(x) p(x),其对应的信息熵想必也不一样。抛硬币和中国乒乓球会不会拿冠军其带来的信息量显然是不同的,后者的信息量明显要更小(即该随机变量对应的平均不确定度要小)。在所有不同的分布中,均匀分布的随机变量其信息熵是最大的。首先从数学上证明这一点:

考虑一个有M种取值的离散随机变量 X X X,则原命题即证:
− Σ i = 0 M P ( X i ) l o g P ( X i ) ≤ M ( l o g M M ) = l o g M -\Sigma_{i=0}^MP(X_i)logP(X_i)\le M(\frac{logM}{M})=logM Σi=0MP(Xi)logP(Xi)M(MlogM)=logM
   ⟺    Σ i = 0 M P ( X i ) l o g P ( X i ) / M ≥ 1 M l o g ( 1 M ) = Σ i = 0 M P ( X i ) M l o g ( Σ i = 0 M P ( X i ) M ) \iff \Sigma_{i=0}^MP(X_i)logP(X_i)/M \ge\frac1Mlog(\frac1M)=\frac{ \Sigma_{i=0}^MP(X_i)}{M}log(\frac{ \Sigma_{i=0}^MP(X_i)}{M}) Σi=0MP(Xi)logP(Xi)/MM1log(M1)=MΣi=0MP(Xi)log(MΣi=0MP(Xi))

f ( x ) = x l o g x f(x)=xlogx f(x)=xlogx,那么只需证: Σ i = 0 M f ( x i ) / M ≥ f ( Σ i = 0 M ( x i ) / M ) \Sigma_{i=0}^Mf(x_i)/M\ge f(\Sigma_{i=0}^M(x_i)/M) Σi=0Mf(xi)/Mf(Σi=0M(xi)/M),其中 x i x_i xi即对应原命题中的 P ( X i ) P(X_i) P(Xi),原命题即可得证。

该命题实际上是Jensen不等式,要让其成立,只需 f ( x ) f(x) f(x)为凸函数即可,为了方便不妨就以自然底数为底:
f ′ ( x ) = I n x + 1 , f ′ ′ ( x ) = 1 / x f'(x)=Inx+1,f''(x)=1/x f(x)=Inx+1f(x)=1/x x ≥ 0 x\ge0 x0时, f ( x ) f(x) f(x)确为凸函数,而 P ( X i ) ≥ 0 P(X_i)\ge 0 P(Xi)0处在 x > 0 x>0 x>0中,由此可得原命题成立。

而对于连续型随机变量,只需扩展成积分即可,证明思路不变。直观上理解就是各种事件发生的概率都一样,不偏不倚,我没有办法做什么有效推测使得我猜对的可能性更高,每个取值都等可能取到。举个例子就是让你去猜抛硬币的正反和中国和巴西足球谁能获胜,当然猜硬币会更难些。

总结一下,信息量就是度量一个随机事件的不确定度,信息熵就是度量一个随机变量的平均信息量,也就是平均不确定度。

二、互信息与条件熵

2.1 条件熵

通过概率定义的叫信息量,那么很容易想到用条件概率定义的就叫条件信息量。现实中。我们在对一个随机事件进行猜测的时候,往往会利用其他的信息来帮助我们提高猜测的准确率。随机事件在发生之前,具有不确定性,相应也具有信息量;而当事件发生后,结果已经确定,不确定性便被消除,从这个角度来说,信息量也是消除随机事件的不确定性的度量,信息的作用就是用来消除不确定性。

I ( X = x ∣ Y = y ) = − l o g ( P ( X = x ∣ Y = y ) I(X=x|Y=y)=-log(P(X=x|Y=y) I(X=xY=y)=log(P(X=xY=y)

对于一个单纯的事件来说,不确定性刚好被“结果”这一信息完全消除,比如抛硬币抛出正面。但是实际上更多的情况是,虽然知道了一定的信息,但是这个信息还不足以完全消除不确定性,而只是消除了一定的不确定性。例如,掷一枚骰子,掷出3的信息量为 l o g 6 log6 log6,而当得到掷出的数大于4这个信息时,不确定性被完全消除,因为 P ( X = 3 ∣ X > 4 ) = 0 P(X=3|X>4)=0 P(X=3X>4)=0;而得到的是掷出的数小于4这个信息时,不确定性被该信息消除了一部分,其剩下的不确定性对应的就是在该信息(条件)已知的条件下的条件信息量

− l o g P ( X = 3 ∣ X < 4 ) = l o g 3 -logP(X=3|X<4)=log3 logP(X=3X<4)=log3

知道了条件信息量,条件熵的概念就不难理解了。对于两个随机变量X和Y, H ( X ∣ Y = y ) H(X|Y=y) H(XY=y)的意义就是每当随机变量Y=y时,随机变量X的平均信息量。然而Y=y这件事情本身也是随机的,所以条件熵 H ( X ∣ Y ) H(X|Y) H(XY)是对 H ( X ∣ Y = y ) H(X|Y=y) H(XY=y)的平均。所以条件熵衡量的是对于X这一随机变量,Y对其不确定性消除的平均作用有多大——而这个平均存在两个维度:X和Y的取值。具体定义如下:

H ( X ∣ Y ) = E X , Y ( I ( X = x ∣ Y = y ) ) = − ∫ ∫ − ∞ ∞ p ( x , y ) l o g ( p ( x ∣ y ) d x d y H(X|Y)=E_{X,Y}(I(X=x|Y=y))=-\int\int_{-\infty}^\infty p(x,y)log(p(x|y)dxdy H(XY)=EX,Y(I(X=xY=y))=p(x,y)log(p(xy)dxdy

2.2 互信息

通过对条件信息量和条件熵的分析,可以看到信息的重要性。为了减少某件事情的不确定性,我们就要尽可能收集与之相关的信息。如果你想要知道明天的天气,知道小明的真名对你来说没有一点帮助。而如果你知道最近的空气湿度,近几天的天气,云的状态之类的,这些信息也许就会对你有所帮助。但是问题也随之而来,到底哪个信息对你的目标来说更重要呢?或者说提供的帮助更大呢?这时候仅仅通过对这些信息的度量,使用信息量的概念已经不够用了:小明的真名也许是个未解之谜,包含非常大的信息量!2333但是对你没有一点帮助。

所以我们需要对两个随机事件之间相关的信息的进行度量,我们称之为互信息,记号为 I ( X ; Y ) I(X;Y) I(X;Y)。通过这个定义我们知道,互信息其实也就是信息B对随机事件A的不确定性的消除能够提供多少的价值,反之亦然。由于我们已经有了信息熵的概念,我们往后都从“熵”的角度来讨论他,其实一点不影响理解,信息熵相对信息量就是加个平均嘛。从这种理解中我们很容易得出互信息该如何计算:

I ( X ; Y ) = H ( X ) − H ( X ∣ Y ) I(X;Y)=H(X)-H(X|Y) I(X;Y)=H(X)H(XY)

因为条件熵是知道条件Y后,X剩下的不确定性,即X剩余的信息熵。而 H ( X ) H(X) H(X)是X原本的信息熵,那么互信息作为X、Y之间相关的信息的度量,自然就是前两者的差。由于是通过熵计算,这里互信息自然也变成了两个随机变量取不同值之间相关信息度的平均,感觉称之为互信息熵似乎更贴切?23333…等式右边的部分前面已经给出定义,于是互信息的计算公式也可以相应给出,这里不再赘述。

三、相对熵(交叉熵,KL散度,JS散度)

前面一直都牵扯到概率论的东西,其实相对熵(也作交叉熵)的概念,和概率论的联系就没有那么密切了。它实际上是用来衡量,两个取值为正的函数的相像程度,有点像函数的“互信息”的那种感觉。(当然,概率密度函数、概率分布函数都是正值函数)

3.1 KL散度

通过互信息,我们可以度量两个随机变量的相关性,但是如果给出两段信息,怎么判断他们的相似性呢。相对熵的提出就是为了解决这个问题,它最初是用在信号处理中比较两个信号的相像程度,现在被广泛应用于比较各种信息的相似性。比较概率密度函数的相对熵,也就可以比较概率分布的相似性。KL散度是最初提出的交叉熵,其定义如下:

K L ( f ( x ) ∣ ∣ g ( x ) ) = ∫ − ∞ ∞ f ( x ) l o g f ( x ) g ( x ) d x KL(f(x)||g(x))=\int_{-\infty}^\infty f(x)log\frac{f(x)}{g(x)}dx KL(f(x)g(x))=f(x)logg(x)f(x)dx

首先可以看到的是,如果两函数完全相同,那么KL散度计算出来就是0。细致去分析,其实KL散度是先通过对数函数对 f ( x ) f(x) f(x) g ( x ) g(x) g(x)在某点函数值的相近程度进行比较然后再对其比较结果以 f ( x ) f(x) f(x)为权值进行加权求和。所以 l o g f ( x ) g ( x ) log\frac{f(x)}{g(x)} logg(x)f(x)就相当于一个衡量函数值相似程度的一个相似函数,换成 ∣ f ( x ) − g ( x ) ∣ |f(x)-g(x)| f(x)g(x)也能实现这种比较,但是可能并不会好用,23333。

3.2 JS散度

但是KL散度的问题是明显的,凭什么用 f ( x ) f(x) f(x)的函数值去加权呢?相似是一个双向的概念,凭啥 g ( x ) g(x) g(x)就不能参与加权呢,是我 g ( x ) g(x) g(x)不配吗!也就是说,KL散度并不满足轮换对称性。为了满足轮换对称性,于是提出了JS散度,思想也超级简单,提问:**怎么让一个不满足轮换对称性的式子变得满足?**然后是给原式的变量都轮换一遍,然后相加啦!于是我们有了JS散度:

J S ( f ( x ) ∣ ∣ g ( x ) ) = 1 2 [ K L ( f ( x ) ∣ ∣ g ( x ) ) + K L ( g ( x ) ∣ ∣ f ( x ) ) ] JS(f(x)||g(x))=\frac12[KL(f(x)||g(x))+KL(g(x)||f(x))] JS(f(x)g(x))=21[KL(f(x)g(x))+KL(g(x)f(x))]

交叉熵可以用来衡量目标分布和训练分布之间的近似程度,所以在神经网络的训练中经常被用作损失函数。

总结

总结完了各种熵的概念,读者会发现,其背后的理念,公式的意义都是那么的朴实无华,却又那么合情合理!稍微深入思考,都能与我们的主观认知达成一致。这就是数学之妙啊!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值