信息量与熵

首页 / 信息论🍄 / 正文

笔者的知识皆来自网上科普,加上一定自己的见解,不一定正确,仅可作为参考~有误请指正~

何谓信息量

直观上理解的信息量的定义就是一个信息给你带来的多少的确定性。比如你如果告诉一个人:$明天太阳会升起$。这显然没有任何信息量,因为所有人都知道$明天太阳会升起$是百分百发生的事。当然,你如果告诉我$明天会有日食$。这个事件信息量就会比较大。根据直观感受,信息量有两个特征:

  1. 较小概率发生的事件发生后信息量较大。
  2. 较大概率发生的事件发生后信息量较小,百分百发生的事件发生后信息量为0。

或许你会认为信息量对于不同对象来说是不同的,比如 同一本书是否相对读过与未读过的人,所含的信息量是不一样的? 笔者因为不是很了解信息论,之前也有这个疑问,后从知乎上了解到,这里牵扯到一个互信息的概念。


信源的信息量是定值,获得多少因外部条件而异,这里牵扯到一个条件互信息的概念信息论这本书作为信源所含有的信息量是恒定的,看不看是能否获得信息的过程,至于理解不理解,那是根据个人所获取的其他信息与这本书的条件互信息决定的,也就是说在你获取过其他相关知识的基础上,对于这本书的理解,就是你从已经学过的其他知识中获得的关于这本书的条件互信息。这就意味着仅仅读书这个行为,不从信源中获得完整的信息。


本文并不深入讨论这个话题,咱们目前只考虑信息量该如何定义

如何量化

那么 如何量化信息量呢? 举个栗子~
    aaa
假设现在有八支球队参加世界杯,我不是球迷,对足球没有任何了解。所以我认为这八只球队夺冠的概率是平分的,各为$\frac{1}{8}$。 那现在需要你回答我阿根廷夺冠的概率是多少? 应该可以脱口而出是$\frac{1}{8}$。
假如有一天你告诉我,阿根廷夺冠了。那原来概率为$\frac{1}{8}$的不确定的事儿变成百分百确定的事儿了。那这个事儿带来的信息量就是比较大的。
那如果你告诉我的不是$阿根廷夺冠$,而是$阿根廷进入决赛了$,那这个也是有信息量的,只是没有$阿根廷夺冠$信息量高,因为$阿根廷夺冠$将概率从$\frac{1}{8}$变成了$1$,而$阿根廷进入决赛了$只是将概率从$\frac{1}{8}$变成了$\frac{1}{2}$。现在我们定义一个事件$x$所带来的信息量为$f(x)$,即$f(x):=信息量$

这里$:=$是定义符,就是我们是人为定义这个式子应该这样相等,在计算公式时,$:=$和$=$效果一样,但是从理解上具有差异。举个栗子~$F:=ma$,这个也是人为定义的,虽然这是牛顿第二定律,但这是一个定义不是定律,是牛顿对力这个概念写出的一个定义,意思就是牛顿可以写成别的形式,这并不是唯一形式,$F=ma$并不是世界的巧合,而更像是牛顿的一个发明。重点不是他为什么这么定义,而是考虑如何让一个理论体系完成自洽。咱们考虑另一个万有引力公式$F=G\frac{m_1 m_2}{r^2}$这个公式就会复杂一些,当然它并不是复杂在$\frac{m_1 m_2}{r^2}$。这是现实测量归纳出来的规律,引力就是和$m_1$,$m_2$成正比,和$r^2$成反比,它复杂是复杂在前面那个$G$,万有引力常数,这个常数是多少呢?$G=(6.67430 \pm 0.00015) \times 10^{-11}m^3kg^{-1}s^{-2}$各位是否好奇为啥$F:=ma$这么巧合没有常数,$F=G\frac{m_1 m_2}{r^2}$却有一个有零有整的东西来补齐,其实是因为$F:=ma$是牛顿定义成这样的,定义完了后牛顿力学体系本身需要自洽。一个惯性力,一个引力,惯性力与引力本质上没有区别,算出来的数值应该是相等的,这才能让体系自洽。不只是数值需要自洽,量纲也需要自洽所以$G$带了$m^3kg^{-1}s^{-2}$这么一个单位.咱们可以验证一下量纲是否相等,$F:=ma$的单位是$m$的单位$kg$和$a$的单位$\frac{m}{s^2}$相乘,为$\frac{kg\times m}{s^2}$。$F=G\frac{m_1 m_2}{r^2}$的单位是$G$的单位$m^3kg^{-1}s^{-2}$乘以$m_1$,$m_2$的单位$kg$,$kg$,再除以$r^2$的单位$m^2$,为$m^3kg^{-1}s^{-2} \times \frac{kg \times kg}{m^2}=\frac{kg\times m}{s^2}$。与$F:=ma$量纲相同。我们可以想象如果有一个平行宇宙,那个宇宙的牛顿把力定义为$F:=\frac{m_1 m_2}{r^2}$也完全没问题,只是惯性力的计算公式里就会多出一个系数$F=\lambda ma。$


现在我们想把信息量的表达式写出来,给出信息量定量的定义,这需要我们保证我们理解的信息量能在它的体系下自洽,那么如何自洽?咱们继续看刚才的例子,按照我们的理解,$f(阿根廷夺冠)=f(阿根廷进决赛)+f(阿根廷赢了决赛)$,这里为什么是$+$而不是$\times$呢,我们可以理解$f$为信息量,是一个物理量,物理量是有量纲的,等号左右量纲必须一致,如果右边是$\times$那右边的量纲就是信息量的平方,和左边就不一致了。而概率是没有量纲的,可以相乘。在我们这儿$P(阿根廷夺冠)=\frac{1}{8}$,$P(阿根廷进决赛)=\frac{1}{4}$,$P(阿根廷赢了决赛)=\frac{1}{2}$。$P$代表了概率。
bbb
我们将计算信息量的公式的自变量其定义为该事件的概率$P$,毕竟文字不能带入公式,数字才能.那么我们就可以得到$f(\frac{1}{8})=f(\frac{1}{4})+f(\frac{1}{2})$,然后我们考虑到$P(阿根廷夺冠)=P(阿根廷进决赛)*P(阿根廷赢了决赛)$。现在我们就得出了一个规则:$f(x_1\times x_2)=f(x_1)+f(x_2)$.那个根据这个规则,我们就可以得出,$f$里一定有$log$.于是我们暂时定义$f(x):=?log_?x$,现在还有两个系数$?$没确定,首先我们考虑应该以什么为底.有很多选择,但是$2$是最简单的, 如果没有其他规则的约束,我们应该考虑越简单越好 .那我们暂时以$2$为底,那系数应该是多少呢,我们考虑 概率越大,信息量应该越小,但是$log$函数是单调递增的 。所以系数应该为负号,我们就将其定义为$-1$,所以$f(x):=-log_2x$.我们将这个定义出来的公式带入公式$f(x_1\times x_2)=f(x_1)+f(x_2)$。可以发现$-log_2(x_1\times x_2)=-(log_2(x_1)+log_2(x_2))=-log_2(x_1)+(-log_2(x_2))$并没有问题,这个定义并没有违反规则。那我们就如此定义就好。所以信息量函数$f$就如此被定义出来了。

何谓熵

熵是用来衡量系统的混乱程度,就是衡量一个系统不确定性有多大,和信息量不同的是,信息量是衡量一个事件从不确定到确定难度有多大,而熵是衡量整个系统的。咱参考下面两个不同的系统。
ccc
每个系统有两个队伍参加比赛,第一个系统的胜率比为1:1,第二个系统99:1。所以考虑一下哪个系统不确定性更大。 显然第一个系统不确定性更大,第二个系统中很明显左边的国家很有可能赢。 那我们该如何量化熵呢?

如何量化

ddd
假设我们定义一个系统$(x_1,x_2)$的熵函数$h$为系统内各个事件的信息量的总和,$f$为信息量函数,$x_1$为左边国家获胜概率,$x_2$为右边国家获胜概率,那第一个系统的熵为
$$h_1(x_1,x_2)=f(x_1)+f(x_2)=-log(x_1)+(-log(x_2))=-log(\frac{1}{2})-log(\frac{1}{2})=2$$。
第二个系统的熵为
$$h_2(x_1,x_2)=-log(\frac{1}{100})-log(\frac{99}{100})\approx 0.0135+6.6439\approx 6.6584$$。
左边的系统不确定性明显比右边的高,熵却比右边小,这显然不合理。
实际上对一个系统中的每个事件来说它能够带来信息量的前提是它得发生,所以熵应该为每个事件的信息量前面乘一个这个事件发生的概率再求总和。如此定义的话,第一个系统的熵为
$$\displaylines{h_1(x_1,x_2)=x_1\times f(x_1)+x_2\times f(x_2)=x_1\times (-log(x_1))+(x_2\times (-log(x_2))) \\ =\frac{1}{2}\times (-log(\frac{1}{2}))+\frac{1}{2}\times (-log(\frac{1}{2}))=\frac{1}{2}\times 1+\frac{1}{2}\times 1=1}$$
第二个系统的熵为
$$\displaylines{h_1(x_1,x_2)=x_1\times f(x_1)+x_2\times f(x_2)=x_1\times (-log(x_1))+x_2\times (-log(x_2)) \\ =\frac{1}{100}\times (-log(\frac{1}{100}))+\frac{99}{100}\times (-log(\frac{99}{100}))\approx 0.014355+0.066439\approx 0.080794}$$
左边系统熵小于右边,这么一看就自然了。所以我们定义一个系统的熵为
$$h(x_1,x_2...x_m):=\sum^m_{i=1}x_i\times f(x_i)=\sum^m_{i=1}x_i\times (-log_2x_i)=-\sum^m_{i=1}x_i\times (log_2x_i)$$
即为对这个系统的信息量求期望。把里面所有可能发生的事件的信息量求出,然后和这个事件发生的概率相乘,最后把所有的事件都加起来,得到的就是这个系统的熵。

参考文献

👉《“交叉熵”如何做损失函数?打包理解“信息量”、“比特”、“熵”、“KL散度”、“交叉熵”》-B站-王木头学科学

评论区
头像