刘韧

香农妻子贝蒂猜对七成字母 英文信息量只剩三成

1950年前后,新泽西,贝尔实验室。香农找来一段英文,遮住后面的字母,让妻子贝蒂逐个往下猜。猜对了记一笔;猜错了,他把正确的字母告诉她,接着往下猜。这段英文取自钱德勒1936年的侦探小说,一百二十九个字母,贝蒂猜对八十九个。

贝蒂不是随手拉来的家属。她学的是数学,在贝尔实验室做研究,也是香农多数装置的合作者。这场实验要的正是一个懂英文的人的直觉——机器当时给不出这种直觉。

通信中,凡是能被猜出来的字母,都是不必发送的字母——收信人自己会补。香农量的就是这个比例:一段英文里,有多少字母是能猜得出来的?七成。

信息=被排除掉的可能

日常说的“信息”指内容——谁说了什么,出了什么事。香农1948年做的第一件事,是把内容扔掉。

他只关心一件事:这条消息到达之前,你面前有多少种可能;到达之后,剩下几种。

抛一枚硬币,两种可能;有人告诉你是正面,两种变一种。这个减少量是一比特。你手机上那个“多少兆”,数的就是这样的减少量有多少个。

“比特”这个缩写来自图基1947年的一份内部备忘录,香农在论文里注了出处。他做的不是造词,是给信息定了单位。

1948年7月和10月,《贝尔系统技术杂志》第二十七卷分两次登出《通信的数学理论》,合起来七十九页。论文开头,香农把通信定义成一件纯粹的搬运:在这一点,把另一点选定的消息复现出来。至于这条消息是情书、账单还是一段噪音,他写明,与工程问题无关。

这一刀砍下去,电报、照片、唱片、DNA第一次能用同一个单位计价。

压缩比特

回到贝蒂猜字母。

二十六个字母等概率,确定一个需要4.7比特——二的四点七次方,正好二十六。按实际频率算,e比z常见得多,降到4.14比特。

上下文还能再砍:q后面几乎一定是u,th后面大概是e。香农为此换了一套做法——一百个短句,每句让被试在只看见一个字母、两个字母、一直到看见一百个字母之后各猜一次,十六种长度乘一百句,一千六百次记录。按每个字母猜中所用的次数反推,1951年那篇《印刷英语的预测与熵》给出的数是约1.3比特。

zip能把一份文稿压掉一多半,压掉的就是这部分:本来就能从上文推出来,所以不必发送。一份已经压过的文件再压一次几乎不动,因为可推的部分已经被拿走。压缩率的天花板不在算法的本事,在那段文字的熵。这个天花板,香农1948年就给出来了。

论文致谢里的被试有两位:贝蒂,和贝尔实验室的同事奥利弗。样本量后来被人反复批评,数字被后人修过,量级没变。

冗余的校验算掉噪声

一张CD划一道口子,为什么还能放完?

直觉是:线路上有噪音,消息就一定会错;想更准,只能说得更慢、喊得更响。香农证明的是另一回事。

每条信道有一个数,叫容量。噪声越大,这个数越小。要比的不是噪声和容量,是你的速率和容量——每秒发出的位里,真正装信息的那部分低于容量,就一定存在一种编码,能把错误率压到任意小。不是小一点,是任意小。噪声不让你出错,只让你慢。

代价叫冗余。发出去的位有一部分不装信息,只装校验:本来能从别的位推出来的东西,故意再发一遍。噪声照旧把位打坏,接收端拿校验位反算,改回去。噪声没有被消除,是被算掉了。压缩把冗余拿走,纠错把冗余放回来。

CD上用的是交叉交织里德—所罗门码:数据先拆散交织,再加两级校验,每三个数据字节配一个校验字节,盘面上两点五毫米长的一道划痕可以完整纠正,七点五毫米以内还能补出近似值。这套码1960年由里德和所罗门提出,五页论文。把它做成可以跑的解码算法的人叫贝尔坎普——香农的博士生;旅行者号从几十亿公里外传回的行星照片,和你CD机里的芯片,用的是同一套东西。

1948年,没有一种编码能达到香农算出的极限。他只证明了极限存在,把找编码的活儿留给后面的人。这段路走了四十五年:1993年,日内瓦的一次会议上,布列塔尼的贝鲁、格拉维厄和蒂蒂马杰希玛提出Turbo码,把差距压进0.5分贝。

赌场里的信息论

1937年香农二十一岁,在麻省理工交出硕士论文《继电器与开关电路的符号分析》,证明布尔代数可以用开关电路实现——今天所有数字电路的地基。哈佛的加德纳1985年称它“本世纪最重要、也最著名的硕士论文”。(公平起见:莫斯科大学的谢斯塔科夫1935年做过类似的工作,1941年才发表。)

1950年香农做了一只电动老鼠,叫忒修斯,让它在迷宫里自己找路,撞过的墙记住,第二遍直接走通——人工智能最早的实验之一。

1961年8月,他和数学家索普把一台十二个晶体管的机器藏进鞋里,去拉斯维加斯赌轮盘。脚趾按开关计时,耳机里响八个音,对应轮盘的八个区。押单个号码,他们算出的预期收益是百分之四十四。真正下手时两人都很小心,怕被赌场盯上,最后赢的钱不多。

负熵就是信息

1990年,安徽大学,我在新闻传播学的课上第一次听到“熵”。芮必峰老师说,负熵就是信息。

我没有记笔记的习惯,这句话我记住了。他讲得清楚:熵是从热力学借来的,代表不确定性,熵值越大越混乱;负熵就是确定性,就是混乱的减少,也就是信息。

这句话不是香农的原话。“负熵”是薛定谔1944年在《生命是什么》里造的词,用来说明生命靠从环境里取走秩序活着;维纳那一路把信息说成熵的减少。香农这边,熵就是信源的不确定性本身。两者是类比,不是等号。连“熵”这个借词也有一段公案:据特赖布斯回忆,香农本想叫“不确定性”,是冯·诺伊曼劝他借用熵——这段话流传最广,也最可能是后人编的。

我那天听懂的不是公式,是一种思路:要说清一样东西是什么,先量清它不是什么。用否定逼近肯定。同年我开始学编程。找程序里的错,用的是同一种办法——一条条排除。

香农2001年2月24日死在马萨诸塞州梅德福的一家养护院,八十四岁,阿尔茨海默。量过信息的人,最后失去了全部记忆。

那两篇论文还在。1948年,七十九页,前十页公式不多。想知道你每天说的“多少兆”到底在量什么,读第一节就够。