信息量
在讨论什么是信息熵之前,我们先了解一下什么是信息量。
信息量可以用来用来衡量一个事件发生的惊奇程度。
事件发生的概率越低,该事件发生对应的惊奇程度越高。
比如,事件“天上出彩虹”就比事件“天上下雨”更令人惊奇,
因为前者的发生概率远远小于后者。
一个系统,包括的等可能事件的数量越多,事件的发生概率也就越低,
传递一个事件的发生, 所需的比特信号也就越多。
举例,假如有两城市A、B,二者只能通过01信号传递信息。
当A城投掷了1个硬币(2种等可能)时,我们至少需要使用\(1=log_{2}(2)\)个比特信号, 告诉B城市是正面朝上还是反面朝上。
类似地,当A城市投掷一个有8个面的骰子(8种等可能)时,我们至少需要\(3=log_{2}(8)\)个比特的信号来传递该信息。
假如系统中有\(N\)个等可能事件,那么我们将\(I=log_{2}(N)\)称为信息量。
由于等可能事件的发生概率为\(\frac{1}{N}\),则信息量的公式可以写作\(log_{2}(\frac{1}{N})\) 。
推而广之,假设事件\(x_i\) 的发生概率为\(p(x_i)\) ,则传递该事件发生需要的最少比特信号位(即信息量)为 \(log_{2}\frac{1}{p(x_i)}\), 即 \(- log_{2}(p(x_i))\) 。
信息熵
知道什么是信息量,我们就可以方便地计算信息熵了。
信息熵用于衡量整个事件空间包含的平均信息量,即信息量的平均期望。
我们只需要将事件空间中所有事件发生的概率,乘以该事件的信息量,即可得到信息熵:
信息熵也被称作无损编码事件信息的最小平均编码长度。怎么理解呢?
学过霍夫曼树的同学都知道,为提升编码效率,可对不同事件采取不同长度的编码。
信息熵的作用,就是指出这种数据压缩效率的极限。