昨天終于讀完了《The Annotated Turing》一書,第一次完整地閱讀了 Turing 最經(jīng)典的那篇論文,理解了 Turing 機(jī)提出的動(dòng)機(jī)和由此帶來的一系列結(jié)論。不過,這本書的最大價(jià)值,則是讓我開始重新認(rèn)識(shí)和思考這個(gè)世界。在這里,我想把我以前積累的哲學(xué)觀點(diǎn)和最近一些新的思考記下來,與大家一同分享?!禩he Annotated Turing》一書中的一些學(xué)術(shù)內(nèi)容,留待以后幾篇日志與大家分享。今年是 Alan Turing 誕辰 100 周年,圖靈公司將推出這本書的中譯本《圖靈的秘密》,現(xiàn)在正在緊張的編輯排版中,不久之后就能和大家見面。
1928 年, David Hilbert 提出了一個(gè)著名的問題:是否存在一系列有限的步驟,它能判定任意一個(gè)給定的數(shù)學(xué)命題的真假?這個(gè)問題就叫做 Entscheidungsproblem ,德語“判定性問題”的意思。大家普遍認(rèn)為,這樣的一套步驟是不存在的,也就是說我們沒有一種判斷一個(gè)數(shù)學(xué)命題是否為真的通用方法。為了證明這一點(diǎn),真正的難題是將問題形式化:什么叫做“一系列有限的步驟”?當(dāng)然,現(xiàn)在大家知道,這里所說的“有限的步驟”指的就是由條件語句、循環(huán)語句等元素搭建而成的一個(gè)機(jī)械過程,也就是我們常說的“算法”。不過,在沒有計(jì)算機(jī)的時(shí)代,人們只能模模糊糊地體會(huì)“一個(gè)機(jī)械過程”的意思。 1936 年,Alan Turing 在著名的論文《On computable numbers, with an application to the Entscheidungsproblem》中提出了一種假想的機(jī)器,第一次給了“機(jī)械過程”一個(gè)確鑿的含義。
Turing 提出的機(jī)器非常簡(jiǎn)單。假設(shè)有一張無窮向右延伸的紙條,從左至右分成一個(gè)一個(gè)的小格子。每一個(gè)小格子里都可以填寫一個(gè)字符(通常是單個(gè)數(shù)字或者字母)。紙條下方有一個(gè)用來標(biāo)識(shí)“當(dāng)前格子”的箭頭,在機(jī)器運(yùn)行過程中,箭頭的位置會(huì)不斷移動(dòng),顏色也會(huì)不斷變化。不妨假設(shè)初始時(shí)所有格子都是空白,箭頭的顏色是紅色,并且指向左起第一個(gè)格子。為了讓機(jī)器實(shí)現(xiàn)不同的功能,我們需要給它制定一大堆指令。每條指令都是由五個(gè)參數(shù)構(gòu)成,格式非常單一,只能形如“如果當(dāng)前箭頭是紅色,箭頭所在格子寫的是字符 A ,則把這個(gè)格子里的字符改為 B ,箭頭變?yōu)榫G色并且向右移動(dòng)一格”,其中最后箭頭的移動(dòng)只能是“左移一格”、“右移一格”、“不動(dòng)”中的一個(gè)。
精心設(shè)計(jì)不同的指令集合,我們就能得到功能不同的 Turing 機(jī)。你可以設(shè)計(jì)一個(gè)生成自然數(shù)序列的 Turing 機(jī),或者是計(jì)算根號(hào) 2 的 Turing 機(jī),甚至是打印圓周率的 Turing 機(jī)。 Turing 本人甚至在論文中實(shí)現(xiàn)了這么一種特殊的 Turing 機(jī)叫做通用 Turing 機(jī),它可以模擬別的 Turing 機(jī)的運(yùn)行。具體地說,如果把任意一個(gè) Turing 機(jī)的指令集用 Turing 自己提出的一種規(guī)范方式編碼并預(yù)存在紙條上,那么通用 Turing 機(jī)就能夠根據(jù)紙條上已有的信息,在紙條的空白處模擬那臺(tái) Turing 機(jī)的運(yùn)作,輸出那臺(tái) Turing 機(jī)應(yīng)該輸出的東西。
但是, Turing 機(jī)并不是無所不能的。 Turing 證明了一個(gè)看似有些驚人的事實(shí):不存在這樣的一個(gè) Turing 機(jī),它能讀取任意一個(gè) Turing 機(jī)的指令集,并判斷該 Turing 機(jī)是否將會(huì)在紙條上打印出至少一個(gè) 0 。注意,簡(jiǎn)單地用通用 Turing 機(jī)做模擬并不是一個(gè)可行的方案,因?yàn)槟M到現(xiàn)在還沒有打出 0 ,不意味著今后也就永遠(yuǎn)不會(huì)打出 0 。這個(gè)定理有一個(gè)更深刻的含義,即沒有一種通用的方法可以預(yù)測(cè)一臺(tái) Turing 機(jī)無窮遠(yuǎn)后的將來(后人把這個(gè)結(jié)論簡(jiǎn)化為了著名的停機(jī)問題)。正如《The Annotated Turing》封底上的一段文字所說:在沒有計(jì)算機(jī)的時(shí)代, Turing 不但探索了計(jì)算機(jī)能做的事,還指出了計(jì)算機(jī)永遠(yuǎn)不能做到的事。
在論文的最后一章, Turing 給出了一種 Turing 機(jī)指令集和一階邏輯表達(dá)式的轉(zhuǎn)換規(guī)則,使得這個(gè) Turing 機(jī)將會(huì)打出 0 來,當(dāng)且僅當(dāng)對(duì)應(yīng)的一階邏輯表達(dá)式為真。然而,我們沒有一種判斷 Turing 機(jī)是否會(huì)輸出 0 的算法,因此我們也就沒有一種判斷數(shù)學(xué)命題是否為真的通用辦法。于是, Entscheidungsproblem 有了一個(gè)完美的解答。
有趣的是,Turing 機(jī)本身的提出比 Entscheidungsproblem 的解決意義更大。計(jì)算機(jī)誕生以后,出現(xiàn)了五花八門的高級(jí)編程語言,一個(gè)比一個(gè)帥氣,但它們的表達(dá)能力實(shí)際上都沒有超過 Turing 機(jī)。事實(shí)上,再龐大的流程圖,再?gòu)?fù)雜的數(shù)學(xué)關(guān)系,再怪異的語法規(guī)則,最終都可以用 Turing 機(jī)來描述。 Turing 機(jī)似乎是一個(gè)終極工具,它似乎能夠表達(dá)一切形式的計(jì)算方法,可以描述一切事物背后的規(guī)律。在同一時(shí)代,美國(guó)數(shù)學(xué)家 Alonzo Church 創(chuàng)立了 λ 算子(λ-calculus),用數(shù)學(xué)的方法去闡釋“機(jī)械過程”的含義。后來人們發(fā)現(xiàn), Turing 機(jī)和 λ 算子是等價(jià)的,它們具有相同的表達(dá)能力,是描述“可計(jì)算性”的兩種不同的模型。 Turing 機(jī)和 λ 算子真的能夠描述所有直觀意義上的“可計(jì)算數(shù)”、“可計(jì)算數(shù)列”、“可計(jì)算函數(shù)”嗎?有沒有什么東西超出了它們的表達(dá)能力?這個(gè)深刻的哲學(xué)問題就叫做 Church–Turing thesis 。當(dāng)然,我們沒法用形式化的方法對(duì)其進(jìn)行論證,不過大家普遍認(rèn)為, Turing 機(jī)和 λ 算子確實(shí)已經(jīng)具有描述世間一切復(fù)雜關(guān)系的能力了。人們?cè)?jīng)提出過一些 hypercomputer ,即超出 Turing 機(jī)范圍的假想機(jī)器,比如能在有限時(shí)間里運(yùn)行無窮多步的機(jī)器,能真正處理實(shí)數(shù)的機(jī)器,等等。不過這在理論上都是不可能實(shí)現(xiàn)的。
事實(shí)上, Turing 在他的論文中就已經(jīng)指出,人的思維也沒有跳出 Turing 機(jī)的范圍。對(duì)此, Turing 有一段非常漂亮的論證:人在思考過程中,總能在任意時(shí)刻停下來,把當(dāng)前進(jìn)度記錄在一張紙上,然后徹底走開并把它完全拋之腦后,過一會(huì)兒再回來,并完全憑借紙上的內(nèi)容拾起記憶,讀取進(jìn)度,繼續(xù)演算。也就是說,人的每一幀思維,都可以完全由上一幀思維推過來,不依賴于歷史的思維過程。而 Turing 機(jī)所做的,也就是把人的思維步驟拆分到最細(xì)罷了。
沒錯(cuò),這意味著,或許一個(gè)人的語言、計(jì)算甚至學(xué)習(xí)能力,完全等價(jià)于一個(gè) Turing 機(jī),只不過這個(gè) Turing 機(jī)的指令集可能異常龐大。1950 年, Turing 的另一篇經(jīng)典論文《Computing Machinery and Intelligence》中正式把人和機(jī)器放到了相同的高度:讓一個(gè)真人 C 先后與一臺(tái)計(jì)算機(jī) A 和另一個(gè)真人 B 進(jìn)行聊天,但事先不告訴他 A 和 B 哪個(gè)是機(jī)器哪個(gè)是人;如果 C 無法通過聊天內(nèi)容分辨出誰是機(jī)器誰是人,我們就認(rèn)為計(jì)算機(jī) A 具有了所謂的人工智能。這就是 Turing 測(cè)試。
計(jì)算機(jī)擁有智能?這豈不意味著計(jì)算機(jī)也能學(xué)習(xí),也能思考,也擁有喜怒哀樂?人類似乎瞬間失去了不少優(yōu)越感,于是不少科學(xué)家都旗幟鮮明地提出了反對(duì)意見。其中最為經(jīng)典的恐怕要數(shù)美國(guó)哲學(xué)家 John Searle 在 1980 年提出的“中文屋子”思想實(shí)驗(yàn)了。把一個(gè)不懂漢語的老外關(guān)在一個(gè)屋子里,屋子里放有足夠多的草稿紙和鉛筆,以及一本漢語機(jī)器聊天程序的源代碼。屋子外面則坐著一個(gè)地地道道的中國(guó)人。屋里屋外只能通過紙條傳遞信息。老外可以用人工模擬程序運(yùn)行的方式,與屋外的人進(jìn)行文字聊天,但這能說明老外就懂中文了嗎?顯然不能。每次講到中文屋子時(shí),我往往會(huì)換一種更具戲劇效果的說法。一群微軟研究員在小屋子里研究代碼研究了半天,最后某人指著草稿紙一角的某個(gè)數(shù)字一拍大腿說,哦,原來屋外的人傳進(jìn)來的是一段笑話!于是,研究員們派一個(gè)代表到屋子外面捧腹大笑——但是,顯然這個(gè)研究員是在裝笑,他完全不懂笑點(diǎn)在哪兒。這個(gè)例子非常有力地說明了,機(jī)器雖然能通過 Turing 測(cè)試,但它并不具有真正的智能。
當(dāng)然,有反方必有正方。另一派觀點(diǎn)則認(rèn)為,計(jì)算機(jī)擁有智能是一件理所當(dāng)然的事。這涉及到一個(gè)更為根本的問題:究竟什么是智能?
記得我曾經(jīng)看過一本科幻小說,書名不記得了,情節(jié)內(nèi)容也完全不記得了,只記得當(dāng)我看完小說第一頁時(shí)的那種震撼。在小說的開頭,作者發(fā)問,什么是自我意識(shí)?作者繼續(xù)寫到,草履蟲、蚯蚓之類的小動(dòng)物,通常是談不上自我意識(shí)的。貓貓狗狗之類的動(dòng)物,或許會(huì)有一些自我意識(shí)吧。至于人呢,其實(shí)我只敢保證我自己有自我意識(shí),其他人有沒有自我意識(shí)我就不知道了??吹竭@里我被嚇得毛骨悚然:完全有可能整個(gè)世界就只有我一個(gè)人有自我意識(shí),其他所有人都是裝出一副有意識(shí)的樣子的無生命物!
有一次做漢語語義識(shí)別的演講時(shí),講到利用語義角色模型結(jié)合內(nèi)置的知識(shí)庫,計(jì)算機(jī)就能區(qū)別出“我吃完了”和“蘋果吃完了”的不同,可以推出“孩子吃完了”多半指的是什么。一位聽眾舉手說,難道計(jì)算機(jī)真的“理解”句子的意思了?我的回答是,沒有冒犯的意思,你認(rèn)為你能理解一個(gè)漢語句子的意思對(duì)吧,那你怎樣證明這一點(diǎn)呢?聽眾朋友立即明白了。你怎樣證明,你真的懂了某一句話?你或許會(huì)說,我能對(duì)其進(jìn)行擴(kuò)句縮句啊,我能換一種句型表達(dá)同樣的意思啊,我能順著這句話講下去,講出與這句話有關(guān)的故事、笑話或者典故,我甚至還能在紙上畫出句子里的場(chǎng)景來呢!那好,現(xiàn)在某臺(tái)電腦也能做到這樣的事情了,怎么辦?
這就是所謂的“功能主義”:只要它的輸入輸出表現(xiàn)得和人一樣,不管它是什么,不管它是怎么工作的,哪怕它只是一塊石頭,我們也認(rèn)為它是有智能的。永遠(yuǎn)不要覺得規(guī)則化、機(jī)械化的東西就沒有智能。你覺得你能一拍腦袋想一個(gè)隨機(jī)數(shù),并且嘲笑計(jì)算機(jī)永遠(yuǎn)無法生成真正的隨機(jī)數(shù)。但是,你憑什么認(rèn)為你想的數(shù)真的就是隨機(jī)的呢?事實(shí)上,你想的數(shù)究竟是什么,這也是由你的大腦機(jī)器一步一步產(chǎn)生的。你的大腦逃不出 Turing 機(jī)。
事實(shí)上,整個(gè)世界也逃不出 Turing 機(jī)的范圍。 Newton 系統(tǒng)地總結(jié)了物體運(yùn)動(dòng)規(guī)律后,人類豁然開朗,原來世界萬事萬物都是由“力”來支配的,扔出一個(gè)東西后,這個(gè)東西將以怎樣的路線做怎樣的運(yùn)動(dòng),會(huì)撞擊到哪些其他的物體,它們分別又會(huì)受到怎樣的影響,這都是可以算出來的。這便是所謂的機(jī)械唯物主義:我們的世界是一個(gè)簡(jiǎn)單的、確定的、線性的、無生的世界。 1814 年,法國(guó)數(shù)學(xué)家 Laplace 給出一個(gè)更加漂亮的詮釋:如果有一個(gè)妖精,它知道宇宙某個(gè)時(shí)刻所有基本粒子的位置和動(dòng)量,那么它就能夠根據(jù)物理規(guī)律,計(jì)算出今后每一時(shí)刻整個(gè)宇宙的狀態(tài),從而預(yù)測(cè)未來。劉慈欣在科幻小說《鏡子》中更加極端地把初始狀態(tài)取到宇宙大爆炸的時(shí)刻,因?yàn)橛钪嬲Q生之初的狀態(tài)極其簡(jiǎn)單,調(diào)整到正確的參數(shù)就可以生成我們所處的這個(gè)宇宙。這就是所謂的決定論。
我特別相信這些說法。我的拖延癥有一個(gè)非常怪異的緣由,那就是我會(huì)告訴自己,截止的那一天總會(huì)到來的,這堆破事兒總會(huì)被我做完的。遇上糾結(jié)的問題,我不會(huì)做過多的思考,而會(huì)讓一切順其自然。其實(shí),結(jié)果已經(jīng)是確定的了,我真正需要做的不過是親自把這個(gè)過程經(jīng)歷一遍。就仿佛我沒有自由意志了一樣。
不過,現(xiàn)代物理學(xué)的觀念,尤其是量子理論的誕生,開始質(zhì)疑上帝究竟會(huì)不會(huì)擲骰子了。然而,上帝會(huì)不會(huì)擲骰子,對(duì)于我們來說其實(shí)并不重要。 Turing 的結(jié)論告訴我們,即使未來是注定的,我們也沒有一種算法去預(yù)測(cè)它,除非模擬它運(yùn)行一遍。但是,要想模擬這個(gè)宇宙的運(yùn)行,需要的計(jì)算量必然超出了這個(gè)宇宙自身的所有資源。運(yùn)行這個(gè)宇宙的唯一方式,就是運(yùn)行這個(gè)宇宙本身。 Seth Lloyd 在《Programming the Universe》里說到,“我們體會(huì)到的自由意志很像 Turing 的停機(jī)問題:一旦把某個(gè)想法付諸實(shí)踐,我們完全不知道它會(huì)通向一個(gè)怎樣的結(jié)局,除非我們親身經(jīng)歷這一切,目睹結(jié)局的到來?!?/p>
未來很可能是既定的,但是誰也不知道未來究竟是什么樣。每個(gè)人的將來依舊充滿了未知數(shù),依舊充滿了不確定性。所以,努力吧,未來仍然是屬于你的。
聯(lián)系客服