信息熵
信息熵
我们先明确一个概念, 通常可以直观地把熵理解为度量一个系统无序程度的值, 而信息熵就是度量某个随机信源输出结果的不确定性的量, 熵越大, 说明在观测之前我们越难以预测它会输出什么
而这个不确定性的定义是什么, 比如说我们给你个八位二进制数, 它永远是某个值, 比如 , 那么它的输出就是完全确定的, 信息熵为 , 而如果它还有概率出现别的值, 比如 , 那它的不确定性就会增加, 所以信息熵的意义就是去量化这种不确定性, 对无损压缩来说, 熵给出了平均编码长度的理论下界, 也就是说, 如果一个信息源的熵是 ,那么长期来看, 任何无损编码的平均码长都不可能低于这个值, 而通过合适的编码方法, 可以在长序列上逼近这个下界
简单的可以理解为为各种技术提供了一个理论目标值吧
按标准流程, 先给公式
由于自学还是什么的缘故, 我确实一直没有很清晰的理解, 甚至看了很多资料也没搞懂, 但最近接触这方面, 突然就理解了, 其实感觉很多资料的入手点都不是很合理, 也可能是我的关注点不对, 不重要, 废话不说了, 我们回到正题
首先我们肯定是不能从公式入手, 公式的性质推出来公式这不扯淡吗, 丢掉这个公式
我们先来看这个我随便打的二进制字符串
1 | 01101100 |
这里有 8 位二进制数, 如果每个都可以是 0 或 1 的话有 种可能, 也就是这些个空位所能表示的可能状态有这么多, 这个没问题吧
1 | 1010000000000010 |
然后我们来到 16 位, 那是多少, 种, 用这种 2 的 n 次方的表达形式我们就很容易看出来, 它们的增幅是指数级别, 也就是 , 这里的 是位数, 取对数后得到的 也就是区分这 种可能状态所需要的 bit 数, 这样我们就能把这些可能状态的表示拉到一个线性的层面上了
然后跟着这个思路, 我们还是找线性关系, 我们可以从最简单的均匀分布入手, 我们可以发现还是取一个负对数, , 这其实就是该结果出现时所带来的信息量, 我们这里是均匀分布的关系, 所以是 , 也就代表着我们实际获得了 bit 的信息, 而我们再看一个反面, 也就是假设这个信源只会输出某个确定的 n 位数, 也就是它的概率为 , 那么计算出来的负对数就是 , 我们接收的信息量为 0, 因为我们本来就知道这个结果
上述这个对概率取负对数得到的信息量我们称之为自信息
而我们直接去衡量这个自信息绝对是不够的, 因为这只是某一种情况所传递的信息, 对于一整个信息系统而言, 假设有一个概率很小的信息那么它的自信息会非常大, 但总的信息熵可以很小
所以我们需要更新对整个信息系统的理解, 也就是说我们先验地知道这个信息系统可能处于某几个离散状态, 并且每个状态都有对应的概率, 假设是个 二进制信息系统, 那么未观测时我们只知道它以 输出 , 以 输出 , 而经过观测后才确定结果是 或者 , 概率越小的结果越难预测, 观测到它时得到的自信息也就越大
理解这个之后我们也随即可以理解熵的含义, 回过头来看这个公式, 其实就是自信息的期望
