信息量和信息熵

引言

随着计算机和个人手机的普及,人们常说我们现在进入了信息时代。另一方面,在我们日常互联网使用过程中的产生大数据也和我们的生活息息相关。在每天接触的过程中不知道你有没有考虑过为什么信息是可以被度量的?它又是怎么被计算的?

1.概率和信息

“你这句话信息量真大”

我们日常就会对信息产生一个笼统的概念,能大致判量的大小。具体而言似乎并不和字数成正比,比如说来段营销号文案。

信息量和文案字数没有关系是怎么一回事呢,信息相信大家都很熟悉,但是信息量和文案字数没有关系是怎么一回事呢?下面就让小编带大家一起了解吧。大家可能会惊讶信息量和文案字数怎么会没有关系呢?但事实就是这样,小编也很惊讶。这就是关于信息量和文案字数没有关系的全部内容了,大家有什么想法可以在评论区告诉小编一起讨论哦!

香农提出信息量应该与事件发生的概率相关,事情发生的概率越小,所包含的信息量就越大,这也非常好理解,有人对你说“太阳明天从东边升起”和“明天太阳要爆炸了”肯定是后者的信息量较大。

既然一个事件发生的概率(\(P\))越小,它所包含的信息量就越大。那我们是否能通过一个函数\(f(P)\)来定量描述一下信息量呢。

这可得好好考虑一下。首先信息量的函数\(f(P)\)是一个

  • 单调递减函数
  • 定义域是[0,1]
  • \(f(1)=0\)
  • \(f(0)=\infty\)

还有一点,信息量应该可以相加表示两个独立的事件同时发生所包含的信息量,又根据概率论两个事件同时发生的概率为\(P_1*P_2\)也就是说,\(f(p_1)+f(p_2)=f(P_1*P_2)\)

相信看到这个公式,这个信息量的函数的身份就已经呼之欲出了。对数函数可以完美满足了以上所有的条件。其次为了方便2进制计算机的使用和度量,我们通常采用公式\(f(p) = -\log_{2}{P}\)来计算信息量。单位就记作bit,负号是为了满足递减的性质。

当然也可以使用10作为对数函数的基底,单位为哈莱特(Hartly);还有以e为基地,单位为奈特(nit)

2. 信息熵

熵和量子这种新构名词听起来就很高大上,但解释起来倒是不难理解,信息量是单个事件的度量,而信息熵是用来表示事件集的平均信息量。

先给出公式,对于一个离散的信号源有

\[ \left[\begin{array}{cccc} x_{1}, & x_{2}, & \cdots, & x_{M} \\ P\left(x_{1}\right), & P\left(x_{2}\right), & \cdots, & P\left(x_{M}\right) \end{array}\right] \text {, 且 } \sum_{i=1}^{M} P\left(x_{i}\right)=1 \]

其中\(x_i\)是离散消息,对应二进制计算机就是0和1,\(P(x_i)\)是离散消息\(x_i\)发生的概率。

其信息熵\(H(x)\)的计算公式如下:

\[ H(x)=-\sum_{i=1}^{M} P\left(x_{i}\right) \log _{2} P\left(x_{i}\right) \]

这个公式就是将各自的信息量乘以发生的概率然后求和,这有什么用呢?首先作为平均信息量,它可以快速计算一段信息的总信息量,比如说该信号源发生了n位信息,那它的总信息量为\(I = n*H(x)\)

其次这个值就代表了数据编码的最小值。中文的信息熵是要高于英语,西班牙语,俄语等主流语言,所以在计算机中中文的文件会比其他语言的要大一些。

3.存储单位和网速

比特(bit)前面也介绍过了,这是计算机中最小的存储单位,8个bit为一个字节(Byte)缩写为B

以字节(Byte)为单元,计算机还有KB,MB,GB,TB换算如下

单位换算
1 Byte = 8 bit
1 KB = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB

1024是2的10次方,这是计算机里常用的换算方法,对于硬盘厂商的换算还是以1000为单位换算

另外网络线路的计量单位是bps,比特每秒(bits per second),所以对应我们常说的下载速度KB/MB要除以8.

参考资料

[1] 《通信原理》第七版 曹丽娜 樊昌信

[2] 知乎问题 世界上信息熵最大的语言是汉语吗?