Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

附加章十:信息科学与数学

复习

  • 比特:信息在计算机中一律用比特表示
  • 编码:编码规定了比特序列与信息之间的对应

TL;DR

  • 信息可以被量化,熵衡量的是“不确定性”有多大
  • 冗余既是纠错的依靠,也是压缩要处理的对象
  • 信息论给出了通信在理论上能达到的极限
  • 数学是计算机科学的语言,也是它的地基

正文

  我们一直在用比特,却还没认真问过:信息到底是什么?它能被衡量吗?

  这个问题由香农给出了漂亮的回答,也由此诞生了信息论(information theory)。

信息量与“意外”

  先建立一个直觉:一条消息的信息量,取决于它有多难被猜到。

  “太阳从东边升起”几乎不携带信息,因为你早就知道;而“明天会下雪”在夏天说出口,信息量就很大。越出乎意料的消息,信息量越大。

  香农用(entropy)来度量这种不确定性:可能的结果越多、越平均,不确定性就越大,熵也越高。反过来,完全确定的事情,熵为零。所以,“信息”在某种意义上就是“消除掉的不确定性”。

冗余的两副面孔

  熵告诉我们一个消息最少能用多少比特表示,而“冗余”就是超出这个下限的部分。

  冗余平时看着像浪费——但它其实有两副面孔:

  • 该去掉时,它叫压缩:把重复和可预测的部分省掉,让数据更小
  • 该保留时,它叫纠错:多传一点额外信息,好让接收方发现甚至修正错误

  你看,同一件事,换个场景,评价就完全相反。前面讲过的校验、编码,其实都是冗余在不同场合的运用。

通信的天花板

  信息论还能回答一个更根本的问题:在一条有噪声的信道上,最多能以多快的速度可靠地传数据?

  香农给出了信道容量这个上限,并证明:只要传输速率不超过它,理论上就总能找到足够好的编码,把错误率压到任意低。这个结论相当反直觉——它告诉我们,噪声并不是可靠通信的绝对障碍,关键看编码设计得够不够高明。

数学是地基

  信息论只是数学支撑计算机科学的冰山一角。往深里看:

  • 与、或、非这些逻辑运算,背后是布尔代数
  • 算法的效率与正确性,要靠离散数学来分析
  • 什么能算、什么不能算,来自可计算性理论

  可以说,计算机科学是长在数学土壤上的一棵树。它看起来是工程,骨子里却处处是数学结构。理解了这一点,再回过头去看前面那些“为什么这么设计”,往往就豁然开朗了。

思考题

  在日常生活中,为什么“越难猜到的消息”,我们越觉得它携带的信息多?

小结

知识点

  • 熵度量信息的不确定性
  • 冗余既可以用于压缩,也可以用于纠错
  • 信息论给出信道容量的理论上限
  • 数学是计算机科学的语言与地基

参考资料

  1. Wikipedia(zh):信息论:研究信息量化与传输的数学理论
  2. Wikipedia(zh):熵 (信息论):衡量不确定性大小的量
  3. Wikipedia(zh):布尔代数:逻辑运算背后的代数结构

思考题答案(仅供参考)

  因为“携不携带信息”衡量的正是“消除了多少不确定性”。如果一条消息在你预料之中,它几乎没有消除任何不确定性,信息量自然小;而一条出乎意料的消息,会让你对结果的判断发生很大改变,消除了更多不确定性,所以感觉信息量更大。这正是熵的直观含义。

协议

  本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

封面图

设计师 | 南国微雪