信息編碼:數字和文字是如何誕生的?

開始前,我們先問個問題:人類是如何利用信息編碼創造數字和文字,克服複雜世界的不確定性的?

1、什麼是信息編碼

其實信息編碼並非只是人才有的技能,很多動物,甚至一些植物都有。

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

信息編碼:數字和文字是如何誕生的?

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

20世紀的人類學家在研究一些原始部落時,發現原始人在遇到危險時,也像動物一樣發出怪叫,然後他們用一些含糊的聲音,進行通信。

比如某種特定的聲音可能表示“那裡有隻豹子”,提醒同伴小心。同伴可能“呀呀”地回應兩聲,表示知道了,或者發出另一串含糊不清的聲音,表示“我們用弓箭射它”。這就是簡單的信息編碼。

在《信息簡史》一書中,作者還舉了非洲叢林裡的人們用不同的鼓聲傳遞不同信息的例子,那也是一種信息編碼。

在沒有信息論之前,信息編碼的複雜度通常和要傳播的信息種類數量有關。早期人類瞭解和需要傳播的信息是很少的,因此他們並不需要語言和數字,只需要發出不同的叫聲,或者做些不同的手勢和肢體接觸即可。

但是隨著人類的進步和文明的進展,需要表達的信息也越來越多,不再是幾種不同的聲音就能完全覆蓋,語言就此產生。人們生活的經驗,作為一種特定的信息,其實是那個時代最寶貴的財富,他們通過口述的語言傳給了後代。同時,由於人類開始擁有一些食物和物件,便有了多和少的概念,因此數字也就產生了。

信息編碼:數字和文字是如何誕生的?

早期人類對信息的編碼,基本上是每一種信息,都有一種相應的編碼。要想表達5這個數字,就伸五個指頭,但是很快人的十個指頭就不夠用了,於是早期不少文明就把腳給用上了。

在歷史上一些文明採用20進制,比如瑪雅文明。另一些文明多少留有了20進制的痕跡,比如英語中20(score)這個詞,就是如此。

再後來,手腳並用也不夠了,於是人類就在石頭和骨頭上劃道道。再往後,當數字多到劃道道也無法表達時,就有了對數字的編碼,也就是各種文明的數字——用有限數字的組合可以表示更多的數。

2、數字編碼的等價性

我們如果要表達100個數字,一個辦法是設計100個不同的編號,讓它們一對一對應,另一種是隻設計幾種編號,然後相互組合,來表達100個數。

你可能覺得第二種方法更簡潔,但這兩種方法,在信息論中是等價的,我就來幫你算一下。

好,假定我們有100個數,從中挑出一個,不確定性是100選1,用上節課學得信息論的公式表達,它所代表的信息熵為

log100=6.65:log以2為底的100的對數)比特。也就是說,如果我們有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了。於是我們就得到了信息論中一個重要的公式:

編碼長度 ≥ 信息熵(信息量)/ 每一個碼的信息量。

香農對此作出了嚴格的數學證明,他同時還證明,只要編碼設計得足夠巧妙,上面的等號是成立的,這就是著名的香農第一定律

3、文字編碼的複雜性

說完了數字的編碼,接下來我們說說文字的誕生的過程。它和數字的誕生也很相似,早期無論是蘇美爾人、古埃及人、古中國人,還是印度河文明的古印度人,都採用的是象形文字。一個圖畫就是一個意思。

信息編碼:數字和文字是如何誕生的?

但是後來要表達的意思實在太多了,總不能無限制地發明文字,於是就出現了用幾個文字表達一個複雜的含義。

那麼這些原始的編碼背後的信息論原理是什麼呢?我們還是回到消除不確定性這件事來看待這個問題。假如一個原始人家裡有10樣東西,他給每個東西起一個名字,這就是最簡單的編碼,而且早期起的那些名字都容易讓人聯想起東西的特性,就如同把狗叫成汪星人,把貓叫成喵星人一樣。

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

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

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

信息編碼:數字和文字是如何誕生的?

現在我們都知道信息太重要了。於是,這些能夠讀寫的人就成了精英甚至是統治階級。在任何歷史階段,誰控制了信息,誰就是世界的主人。

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

今天,雖然大家都能識文斷字,但是有的人掌握的信息多,有的人掌握的少,這就造成了很大的不平等。對於個體來講,改變自身獲取信息的能力,要比改變整個社會的不平等容易得多。

古代文字難以普及的一個重要的原因,就是基於各種象形文字的編碼系統太複雜,要記憶的東西太多,學習的成本太高。於是全世界的語言都在沿著簡化這條路發展。

由上面我們可以看到:

人類創造數字和文字語言的過程,其實它們都是人類用來消除信息不確定性的編碼手段。各種編碼系統,其實都是在編碼複雜性和編碼長度之間作平衡,它們在數學上是等價的;由於它們是等價的,所以,在一個編碼系統中解決不了的問題,換一個系統同樣解決不了;香農第一定律告訴我們,只要編碼設計得足夠巧妙,就可以找到最短編碼。


分享到:


相關文章: