![05|信息编码:数字和文字是如何诞生的?](https://www.xaiat.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
上一讲说了信息就是用来消除不确定性的,这一讲来讲人类是如何利用信息编码创造数字和文字,克服复杂世界的不确定性的。
信息编码并非只是人才有的技能,很多动物,甚至一些植物都有。
为了理解它的原理,先来看这样一个场景。
在非洲的草原上,食草动物在发现狮子或者狼狗接近它们的时候,会发出预警的声音,然后大家一起逃命。这其实就是使用和传播信息,而那声怪叫,就是一种信息编码。
20世纪的人类学家在研究一些原始部落时,发现原始人在遇到危险时,也像动物一样发出怪叫,然后他们用一些含糊的声音,进行通信。
比如某种特定的声音可能表示“那里有只豹子”,提醒同伴小心。同伴可能“呀呀”地回应两声,表示知道了,或者发出另一串含糊不清的声音,表示“我们用弓箭射它”。这就是简单的信息编码。
在《信息简史》一书中,作者还举了非洲丛林里的人们用不同的鼓声传递不同信息的例子,那也是一种信息编码。
在没有信息论之前,信息编码的复杂度通常和要传播的信息种类数量有关。早期人类了解和需要传播的信息是很少的,因此他们并不需要语言和数字,只需要发出不同的叫声,或者做些不同的手势和肢体接触即可。
但是随着人类的进步和文明的进展,需要表达的信息也越来越多,不再是几种不同的声音就能完全覆盖,语言就此产生。人们生活的经验,作为一种特定的信息,其实是那个时代最宝贵的财富,他们通过口述的语言传给了后代。同时,由于人类开始拥有一些食物和物件,便有了多和少的概念,因此数字也就产生了。
早期人类对信息的编码,基本上是每一种信息,都有一种相应的编码。要想表达5这个数字,就伸五个指头,但是很快人的十个指头就不够用了,于是早期不少文明就把脚给用上了。
在历史上一些文明采用20进制,比如玛雅文明。另一些文明多少留有了20进制的痕迹,比如英语中20(score)这个词,就是如此。
再后来,手脚并用也不够了,于是人类就在石头和骨头上划道道。再往后,当数字多到划道道也无法表达时,就有了对数字的编码,也就是各种文明的数字——用有限数字的组合可以表示更多的数。
我们如果要表达100个数字,一个办法是设计100个不同的编号,让它们一对一对应,另一种是只设计几种编号,然后相互组合,来表达100个数。
有人可能觉得第二种方法更简洁,但这两种方法,在信息论中是等价的,让我们来计算一下。
好,假定我们有100个数,从中挑出一个,不确定性是100选1,用上节课学得信息论的公式表达,它所代表的信息熵为log100=6.65(注:log以2为底的100的对数,课程中的log函数如果没有特殊说明都是以2为底的。)比特。也就是说,如果我们有6.65比特的信息,就可以确定100个数中的一个。接下来,我们看看刚才说的两种编码需要的信息量是否一样。
我们先来试第一种编码,也就是一一对应,比如用100种奇形怪状的符号对应这100个数字,这种编码所能表示的信息量,其实就是100选一的问题,也就是log100=6.65比特。由于一个编码正好表示一个数,因此编码的长度为一。
第二种编码方法是采用十进制编码,也就是用10种符号,每个符号所代表的信息量只有log10=3.325比特,但是10个符号想表示100个数字,就需要两两组合。也就是说,一个符号无法消除100个数中的不确定性,这样两个符号的信息量加起来还是6.65比特,正好可以消除100个数的不确定性。
这样的编码系统比较简单,但是编码的长度是前一种的两倍。这个十进制的做法呢,就类似我们现在用到的阿拉伯数字0~9。
当然,我们还可以用二进制编码,就是只有0和1这两个符号,它们所包含的信息只有log2=1比特,如果我们想用它们来表达100个数,则需要6.65个码。进位取整以后,也就是7位的码长,才能表示100个数字。
有人可能注意到了,符号越少,意味着码位越长,所以大家看到的二进制通常是一长串的0101……由此可见,对数字的各种编码其实是等价的,无非是平衡编码复杂性和编码长度之间的关系。
对于数字,如果采用很多个符号,编码长度就短,但是系统就复杂。比如我们如果采用的是20进制,编码长度短了,但这就意味着它的编码系统很复杂,要记住的符号很多,大家学数学就太麻烦了。
在历史上即使有这样的文明,在竞争中也会被淘汰。玛雅文明发展不快的一个原因,就和它的计数和书写系统太复杂有关。
相反,如果采用很少的符号编码,比如采用二进制,编码的长度就长。比如100在二进制中的编码是1100100,去买东西,人家问要100块钱,说出这一大串数字,很容易听糊涂,如果背九九八十一,它就成了100110011010001(9的二进制是1001,81的二进制是1010001),完全是自虐。
所幸的是,各种编码系统在数学上是等价的,我们可以为人类找一个自己方便使用的,也可以为计算机找一个它方便使用的。
但是要说明的是,由于它们是等价的,在一个编码系统中解决不了的问题,换一个系统同样解决不了。一些媒体讲,由于量子计算不是二进制的,因此它能解决今天计算机解决不了的问题,这个说法显然缺乏常识,因为任何进制都是等价的。
当然对数字的编码不能有半个,因此如果我们采用二进制对100个数编码,刚才计算出来是需要6.65个码,那就要取下一个整数,编码的长度也就是7了。于是我们就得到了信息论中一个重要的公式:
编码长度 ≥ 信息熵(信息量)/ 每一个码的信息量。
香农对此作出了严格的数学证明,他同时还证明,只要编码设计得足够巧妙,上面的等号是成立的,这就是著名的香农第一定律。至于如何找到最巧妙的编码(或是说最短的编码),将会在后面的第7讲介绍。
说完了数字的编码,接下来我们说说文字的诞生的过程。它和数字的诞生也很相似,早期无论是苏美尔人、古埃及人、古中国人,还是印度河文明的古印度人,都采用的是象形文字。一个图画就是一个意思。
但是后来要表达的意思实在太多了,总不能无限制地发明文字,于是就出现了用几个文字表达一个复杂的含义。
那么这些原始的编码背后的信息论原理是什么呢?我们还是回到消除不确定性这件事来看待这个问题。假如一个原始人家里有10样东西,他给每个东西起一个名字,这就是最简单的编码,而且早期起的那些名字都容易让人联想起东西的特性,就如同把狗叫成汪星人,把猫叫成喵星人一样。
当然,家里的东西多了,要做的动作多了,就做不到把每一件事单独编码,就需要利用一些编码进行组合了。比如说我们有对一些东西的编码,又有了一些对动作的编码,这就形成了可以表达复杂意思的简单的句子。
比如说一个原始人让孩子把家里的石斧拿来,他就可以告诉他采用“拿来”这个动作,而要拿的对象是“石斧”。人类使用动词,标志着文明的一大进步,这不仅意味着他们能够把动作进行分类,编码了,而且这样才能表达复杂的意思,才有可能形成知识。
有了象形文字和动词之后,人类就有了书写系统,各种信息就通过文字这种编码记录下来,这才让我们了解到过去的历史。但是,从此人类的不平等也开始加剧,因为能够认识编码的人,就掌握了其他人所没有的信息。
我们从前面几讲的课程中知道,信息太重要了。于是,这些能够读写的人就成了精英甚至是统治阶级。在任何历史阶段,谁控制了信息,谁就是世界的主人。
一个最有说服力的例证就是:在马丁·路德之前,关于上帝的信息是由教士和主教们控制的,因此农民们只好受人摆布。在中国虽然大家不信上帝,情况也是类似。过去在农村,不能识文断字的人,哪怕再有钱,也不过是土财主,家业很难长期兴旺;能够读书写字的人,哪怕穷,在宗族里也很有地位。
今天,虽然大家都能识文断字,但是有的人掌握的信息多,有的人掌握的少,这就造成了很大的不平等。对于个体来讲,改变自身获取信息的能力,要比改变整个社会的不平等容易得多。
古代文字难以普及的一个重要的原因,就是基于各种象形文字的编码系统太复杂,要记忆的东西太多,学习的成本太高。于是全世界的语言都在沿着简化这条路发展。至于怎么简化,我们后面会专门讲。
要点总结:
1.通过讲人类创造数字和文字语言的过程,告诉大家,其实它们都是人类用来消除信息不确定性的编码手段。各种编码系统,其实都是在编码复杂性和编码长度之间作平衡,它们在数学上是等价的;
2.由于它们是等价的,所以,在一个编码系统中解决不了的问题,换一个系统同样解决不了;
3.香农第一定律告诉我们,只要编码设计得足够巧妙,就可以找到最短编码。
![05|信息编码:数字和文字是如何诞生的?](https://www.xaiat.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
原创文章,作者:Xaiat,如若转载,请注明出处:https://www.xaiat.com/05%ef%bd%9c%e4%bf%a1%e6%81%af%e7%bc%96%e7%a0%81%ef%bc%9a%e6%95%b0%e5%ad%97%e5%92%8c%e6%96%87%e5%ad%97%e6%98%af%e5%a6%82%e4%bd%95%e8%af%9e%e7%94%9f%e7%9a%84%ef%bc%9f/