附加章十:信息科学与数学
复习
- 比特:信息在计算机中一律用比特表示
- 编码:编码规定了比特序列与信息之间的对应
TL;DR
- 信息可以被量化,熵衡量的是“不确定性”有多大
- 冗余既是纠错的依靠,也是压缩要处理的对象
- 信息论给出了通信在理论上能达到的极限
- 数学是计算机科学的语言,也是它的地基
正文
我们一直在用比特,却还没认真问过:信息到底是什么?它能被衡量吗?
这个问题由香农给出了漂亮的回答,也由此诞生了信息论(information theory)。
信息量与“意外”
先建立一个直觉:一条消息的信息量,取决于它有多难被猜到。
“太阳从东边升起”几乎不携带信息,因为你早就知道;而“明天会下雪”在夏天说出口,信息量就很大。越出乎意料的消息,信息量越大。
香农用熵(entropy)来度量这种不确定性:可能的结果越多、越平均,不确定性就越大,熵也越高。反过来,完全确定的事情,熵为零。所以,“信息”在某种意义上就是“消除掉的不确定性”。
冗余的两副面孔
熵告诉我们一个消息最少能用多少比特表示,而“冗余”就是超出这个下限的部分。
冗余平时看着像浪费——但它其实有两副面孔:
- 该去掉时,它叫压缩:把重复和可预测的部分省掉,让数据更小
- 该保留时,它叫纠错:多传一点额外信息,好让接收方发现甚至修正错误
你看,同一件事,换个场景,评价就完全相反。前面讲过的校验、编码,其实都是冗余在不同场合的运用。
通信的天花板
信息论还能回答一个更根本的问题:在一条有噪声的信道上,最多能以多快的速度可靠地传数据?
香农给出了信道容量这个上限,并证明:只要传输速率不超过它,理论上就总能找到足够好的编码,把错误率压到任意低。这个结论相当反直觉——它告诉我们,噪声并不是可靠通信的绝对障碍,关键看编码设计得够不够高明。
数学是地基
信息论只是数学支撑计算机科学的冰山一角。往深里看:
- 与、或、非这些逻辑运算,背后是布尔代数
- 算法的效率与正确性,要靠离散数学来分析
- 什么能算、什么不能算,来自可计算性理论
可以说,计算机科学是长在数学土壤上的一棵树。它看起来是工程,骨子里却处处是数学结构。理解了这一点,再回过头去看前面那些“为什么这么设计”,往往就豁然开朗了。
思考题
在日常生活中,为什么“越难猜到的消息”,我们越觉得它携带的信息多?
小结
知识点
- 熵度量信息的不确定性
- 冗余既可以用于压缩,也可以用于纠错
- 信息论给出信道容量的理论上限
- 数学是计算机科学的语言与地基
参考资料
- Wikipedia(zh):信息论:研究信息量化与传输的数学理论
- Wikipedia(zh):熵 (信息论):衡量不确定性大小的量
- Wikipedia(zh):布尔代数:逻辑运算背后的代数结构
思考题答案(仅供参考)
因为“携不携带信息”衡量的正是“消除了多少不确定性”。如果一条消息在你预料之中,它几乎没有消除任何不确定性,信息量自然小;而一条出乎意料的消息,会让你对结果的判断发生很大改变,消除了更多不确定性,所以感觉信息量更大。这正是熵的直观含义。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪