天天看點

吳軍,資訊論40講,05數字和文字的産生?如何利用資訊編碼創造數字和文字,克服複雜世界的不确定性的。

這一講我們來講人類是

如何利用資訊編碼創造數字和文字,克服複雜世界的不确定性的。

資訊編碼并非隻是人才有的技能,很多動物,甚至一些植物都有。

為了了解它的原理,讓我們先來看這樣一個場景。

在非洲的草原上,食草動物在發現獅子或者狼狗接近它們的時候,會發出預警的聲音,然後大家一起逃命。這其實就是使用和傳播資訊,而那聲怪叫,就是一種資訊編碼。

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樣東西,他給每個東西起一個名字,這就是最簡單的編碼,而且早期起的那些名字都容易讓人聯想起東西的特性,就如同把狗叫成汪星人,把貓叫成喵星人一樣。

當然,家裡的東西多了,要做的動作多了,就做不到把每一件事單獨編碼,就需要利用一些編碼進行組合了。比如說我們有對一些東西的編碼,又有了一些對動作的編碼,這就形成了可以表達複雜意思的簡單的句子。

比如說一個原始人讓孩子把家裡的石斧拿來,他就可以告訴他采用“拿來”這個動作,而要拿的對象是“石斧”。人類使用動詞,标志着文明的一大進步,這不僅意味着他們能夠把動作進行分類,編碼了,而且這樣才能表達複雜的意思,才有可能形成知識。

有了象形文字和動詞之後,人類就有了書寫系統,各種資訊就通過文字這種編碼記錄下來,這才讓我們了解到過去的曆史。但是,從此人類的不平等也開始加劇,因為能夠認識編碼的人,就掌握了其他人所沒有的資訊。

我們從前面幾講的課程中知道,資訊太重要了。于是,這些能夠讀寫的人就成了精英甚至是統治階級。

在任何曆史階段,誰控制了資訊,誰就是世界的主人。

一個最有說服力的例證就是:在馬丁·路德之前,關于上帝的資訊是由教士和主教們控制的,是以農民們隻好受人擺布。在中國雖然大家不信上帝,情況也是類似。過去在農村,不能識文斷字的人,哪怕再有錢,也不過是土财主,家業很難長期興旺;能夠讀書寫字的人,哪怕窮,在宗族裡也很有地位。

今天,雖然大家都能識文斷字,但是有的人掌握的資訊多,有的人掌握的少,這就造成了很大的不平等。

對于個體來講,改變自身擷取資訊的能力,要比改變整個社會的不平等容易得多。

古代文字難以普及的一個重要的原因,就是基于各種象形文字的編碼系統太複雜,要記憶的東西太多,學習的成本太高。于是全世界的語言都在沿着簡化這條路發展。至于怎麼簡化,我們後面會專門講。

要點總結

我通過講人類創造數字和文字語言的過程,告訴大家,

其實它們都是人類用來消除資訊不确定性的編碼手段。

各種編碼系統,其實都是在編碼複雜性和編碼長度之間作平衡,它們在數學上是等價的;

由于它們是等價的,是以,在一個編碼系統中解決不了的問題,換一個系統同樣解決不了;

香農第一定律告訴我們,隻要編碼設計得足夠巧妙,就可以找到最短編碼。

繼續閱讀