意識機器?——AI視野(六)
本文為「AI視野」這一系列的文字的第五篇
往期查看:
張江:揪著自己的頭髮離開地球——AI視野(一)
張江:透視深度學習,暢想未來應用——AI視野(二)
張江:從萬物有靈到AI掌管世界——AI視野(三)
張江:人工智慧社會學-未來的新興學科?——AI視野(四)
張江:泛在的AI與數字上帝—AI視野(五)
近年來一些心理實驗表明人類的自由意志可能是幻覺,而LSTM之父Jürgen Schmidhuber可能早已經設計出了意識機器。
好久沒有續寫這個"AI視野"系列了。今天有機會,就讓我們來聊一聊機器是否能夠具備自我意識——這一重磅、高能、危險的話題。人們普遍認為,意識(Consiousness),特別是自由意志(Free will)構成了人之所以為人,從而區別於機器的最後一道防線。而本文想表達的觀點是,其實這一道防線早就不存在了。首先,近年來有關意識的一系列心理學實驗表明所謂的自我其實有兩個,一個稱為陳述型(Narrating)自我,一個稱為體驗(Experiencing)自我;所謂的自由意志不過是陳述型自我給自己編的一個故事而已。其次,通過目前的計算技術我們完全可以構造出一個自我模擬的自指機器(Self-referential Machine),它也具備兩套體系,一個負責執行演算法,另一個則專門負責對自我進行模擬(描述),這種機器會表現得就「像」一個具有自我意識的系統,以至於我們可以用這樣的系統來定義所謂的「自我意識」。
早在2003年LSTM之父Jürgen Schmidhuber就具體設計出來了一種稱為「哥德爾機」(G?del Machine)的裝置,它具備一個求解器和一個搜索器,這個搜索器就是前文所說的模擬裝置,也就是人類意識中的「陳述自我」;而求解器就是前文的執行裝置也就是人類意識中的「體驗自我」。Schmidhuber指出這種機器一旦設計出來了,就可以通過不斷搜索更好地優化效用的方式來完成模擬優化,再通過自我修改代碼的裝置不斷改進自身,從而表現出全局最優的運作模式。人們普遍認為哥德爾機是目前最強大的通用人工智慧設計,並有可能引發智能爆炸。
自由意志幻覺——來自實驗的啟發
首先,我們對近幾十年來人們對意識問題的三個極其重要的實驗進行回顧。第一個實驗告訴我們其實我們每個人的頭腦中都住著兩個自我,一個負責決策,另一個負責解讀;第二個實驗進一步揭示出這個陳述自我的性質,它會在一定條件下編纂故事;第三個實驗則告訴我們很可能我們認為的自由選擇也是陳述自我編的一個故事而已。
裂腦人試驗
人類的左腦和右腦是靠一種被稱為胼胝體的東西相連在一起的。但是有一種病人稱為「裂腦人」,他們腦袋中的那個連接裝置胼胝體被切開了,但他們還可以正常的生活。於是,在二十世紀六十年代,這些裂腦人成為了神經科學家們,特別是斯佩里(Roger W. Sperry)等人的實驗對象。科學家們通過巧妙地設計試驗,讓我們得以看到裂腦人甚至是我們自己不為人所知的一面。
在如下圖所示的實驗中,我們用一個中間的擋板把裂腦人左右兩眼的視野完全隔離開,這樣他的左眼只能看到左邊的畫,右眼只能看到右邊的。當我們呈現左邊為雪景右邊為雞爪的畫面給被試的時候,這兩種景象就分別映射到了右腦和左腦中(由於左腦連接的是右側身體,右腦連接的則是左側身體)。接下來,實驗人員要求被試在卡片上選擇與看到的畫面相關的東西(兩隻眼睛都能看到所有的卡片)。這個時候,裂腦人的左手(被右腦控制)選擇了鏟雪的鐵杴;右手(被左腦控制)則選擇了公雞。
這說明,裂腦人的兩個彼此隔離的大腦作出了兩種完全不同的決策,體現得像是兩個不同的人。更有意思的是,當擋板撤離後,左右腦都能看到對方的選擇了。這個時候實驗人員問被試,「你為什麼左手選擇鐵杴呢?」我們知道,左腦是負責語言的半球,而右腦主要負責視覺感知,卻沒有表達能力。所以,雖然右腦選擇的是鐵杴,而它並不會解讀。左腦選擇的是公雞,但卻與右腦的選擇相衝突。那該怎麼辦呢?於是,左腦神奇地編了一個故事:「我選擇鐵杴是因為我要清理雞棚!」
斯佩里通過大量的類似的裂腦人實驗向我們展示了這樣一個結論,我們的左右腦不僅表現得像兩個獨立的意識體,而且由於左腦具備一種編造故事的能力,它往往能夠把右腦的行為進行重新解讀。
冰水挑戰
前面的實驗對裂腦人的左右腦進行了物理分割。而諾貝爾經濟學獎得主,著名心理學家丹尼爾.卡尼曼(Daniel Kahneman)則相信,我們身體里本身就住著兩個自我,卡尼曼把她們叫做:「陳述自我」(Narrating self)和「體驗自我」(Experiencing Self)。前者專職負責講故事,甚至在很多時候都是講給我們自己聽的;另一個則主要負責體驗、執行。這兩個自我經常配合在一起行動。有意思的是,我們的記憶主要是聽從這個敘述自我的,而這個傢伙會經常扭曲事實、編纂故事。下面,就讓我們來看看卡尼曼做過的實驗:冰水挑戰。
卡尼曼讓被試將手放到很冷的冰水中一段時間(見下圖)。實驗分兩次進行,第一次進行60秒,第二次進行90秒。但在第二次試驗進行到60秒的時候,實驗人員會偷偷注入了一些溫水,讓被試疼痛的感覺減輕一些,但是被試並不知情。
在分別做完兩次試驗之後,實驗人員會問被試,如果必須重複實驗,你更希望重複哪一次的實驗。出乎意料的是,有80%的被試都選擇第二種,即長達90秒的實驗。
卡尼曼給出的解釋是,我們的陳述自我有一種特性,它只對整個試驗過程中疼痛的最高值和最後一個時刻的疼痛值敏感,這就是所謂的「峰值-尾值定律」(peak-end rule),並且會忽略體驗所持續的時間。所以,在第二個實驗中,由於最後30秒的體驗沒有那麼的痛苦,所以被試最終的選擇聽從了陳述自我的感受,認為第二個實驗更好受一些,儘管它讓被試受苦的時間更長也沒關係。
這個實驗似乎還能夠解釋其它一些「痛並快樂」的現象。就比如女人生小孩據說是疼痛級別最高的一種經歷,但是當女人回憶生產那個瞬間的時候卻總是伴隨著溫馨和幸福。原因就在於在生完小孩的那個時刻所體會的幸福遠超過了過程中的痛苦。於是,陳述性自我選擇了過濾掉那些痛苦體驗,而記住了小生命出生的幸福。
自由意志幻覺?
前面的兩個實驗告訴我們,我們不僅每個人都是人格分裂者,而且大多我們意識到的體驗都不過是陳述性自我編撰的故事。那麼,在接下來要介紹的實驗中,我們更能深切的體會到,所謂的自主選擇、自由意志也不過是一種假象,很可能就是「陳述自我」用來哄騙自己而編纂的一個故事。
這個實驗是由Benjamin Libet於1983年領導做出的,其結果發表在了BRAIN雜誌上,曾引起了科學界和哲學界的轟動。在實驗中,他讓被試手持一個按鈕,自主選擇任何一個時間按下這個按鈕,然後被試會通過盯住面前鐘錶上的秒針相應位置來報告做出決策的時間。於此同時,Libet通過腦電裝置來監測被試大腦活動的模式(預備電位),並根據這些模式來預測被試何時按下按鈕。整個實驗裝置如下圖所示。
實驗的結果表明,科學家可以通過讀取大腦活動模式來提前預測被試是否按電鈕的決策,而且可以比被試報告的時間提前幾秒鐘。
如果按照前面的實驗推論,我們的心智分成了負責體驗、決策的自我和負責陳述的自我兩部分。那麼這個做出按電鈕動作的自我就是體驗自我做出的,而負責報告按電鈕時間的自我就是陳述自我。科學家通過大腦電信號活動模式所做出的提前幾秒鐘的預測表明,我們實際上在自認為有意識地做出按電鈕這個動作之前就已經由體驗自我和身體把決策做出了。我們的意識,或陳述自我並沒有起到任何主導性作用,它只是被動地將這個按鈕動作進行了重新解釋,從而報告出了時間。
這個實驗最大的爭議點就在於,它從某種程度上否定了「自由意志」(Free will)的存在性。也就是說,我們並不像我們通常認為的那樣可以由自我意識來決定、控制做出按電鈕的動作。
在這裡我們需要澄清一下「意識」、「自我意識」以及「自由意志」之間的區別和聯繫。首先,「意識」(Consiousness)是指一種覺知(awareness)的能力,它是指我們的心智能夠對外界事物以及心理過程進行感覺的能力。「自我意識」則是說這種意識能力不僅能夠覺知外在事物,還能夠覺知這個覺知能力,即意識本身。所以我個人認為自我覺知(Self-awareness)能更好地表達意識的這種能力。後面我們會看到,這種能力就是計算理論、數學之中的自指(Self-reference)。「自由意志」則是強調意識對客觀事物的反作用特性,也就是意識可以憑藉自己的意願來決定做什麼。
Libet的實驗告訴我們,我們可能並沒有自由意志,至少我們的意識並不參與決策過程。因為,真正的決策早在我們意識到之前幾秒的時間就已經被體驗自我做出了。
實驗總結
把這三個實驗連在一起,我們能得到如下幾個結論:
- 我們每個人體內都存在著兩個自我,一個負責體驗和執行,一個負責表述;
- 那個陳述性的自我會通過虛構故事來「欺騙」我們自己;
- 我們習以為常的自由意志很可能就是這個陳述自我編造的一個故事。
這最後一個結論的確具有一定的顛覆性,它直接指出了所謂的自由意志不過是一種假象。我們充其量僅僅具備自我意識而已,也就是我們可以覺知到自己的存在,也能覺知到我們所做的一切,但是這種覺知並不能反過來作用到我們的行動上來。
用圖形表述上面這一點轉變會更清楚:
我們的認識從上圖的模式轉變為了下圖的模式。儘管我們對這一轉變很不情願,但卻不得不接受。因為,越來越多的科學研究結果表明,其實我們人就是一個演算法機器,迄今為止,我們並沒有找到任何一個反面的證據說人的過程不能被演算法模擬。既然自由意志是幻覺,人不過是個演算法機器,那麼,機器和演算法本身為什麼不能具備意識,甚至是表面上看起來的「自由意志」呢?
意識機器
在結束了心理學之旅後,就讓我們來進入機器的世界。請注意,在這裡我並沒有聲稱任何一台機器,甚至是任何足夠聰明的超級智能體具有意識。我想說的是,機器必須要具備一定的條件才能具備意識,而目前這樣的機器尚沒出現,但這並不意味著我們原則上無法創造出它來。更重要的是,意識所需要的條件和智能完全就是兩碼事。
既然我們已經破除了「自由意志」的迷信,並且認識到所謂的自我不過就是一個雙系統,一套系統負責相對「機械」地解讀信息、作出決策;另一套系統則對這些決策進行解釋、表述。
那麼,按照這套標準,我們就會發現,只要一台機器具備了自我模擬(Self-emulating)的能力,它就具備了「意識」。什麼是這種自我模擬的能力呢?這就是指一台機器能夠在內部開一個虛擬機,並用這個虛擬機來模擬自己在任何一個時刻的運行。於是,這個模擬機就構成了前文所講的「敘述自我」,而其它的軟體部分就構成了前文所講的「體驗自我」或「執行自我」。由於這台機器可以在虛擬機中投射它自身以及所有的動作,所以它就具備了「自我覺知」的能力。從外界表象上來看,它可以表現得具有自我意識。
這樣的機器能造出來嗎?答案是肯定的,計算理論早在二十世紀初就為這類機器的實現鋪平了道路。接下來,就讓我們看看,我們該如何一步步地造出這樣的自我模擬機器。
內嵌虛擬世界
機器要想具備自我模擬的能力,那麼它首先要實現一個內嵌的虛擬世界。什麼是內嵌的虛擬世界?其實就是所謂的虛擬機——即奔跑在當前計算機中的一套虛擬系統。這套系統有它自己的虛擬硬體,以及虛擬軟體。用過Docker、VMWare的人都很清楚,這種內嵌的虛擬系統不僅早就可以被造出來,而且具有可以隔離病毒等優良的特性。
我們可以將內嵌的虛擬世界理解成一面鏡子。它可以映射真實世界裡的東西,但它本身卻比現實低了一個層級,所以它看起來更「假」。我們也可以從數據和程序的角度來理解:虛擬系統相對於真實機器來說就是數據。數據總是被動地由更加「真實」的機器所操縱。
我們要感謝圖靈的偉大發現,通用圖靈機(Universal Turing Machine)的存在保證了我們可以通過現有的計算機來實現這種內嵌的虛擬世界,而且這種內嵌的虛擬層可以無限地延伸下去。也就是,我們可以在虛擬機上再安裝虛擬機,以及虛擬機上的虛擬機……。
模擬自我
好,當一台機器具備了內嵌虛擬層還不夠,它還需要完成模擬自我的過程。也就是說,我們要讓這台虛擬機器模擬它自己的運行動作。這在鏡子的比喻中也就是我們要讓鏡子自己照自己。你很快就發現,這是不可能的。至少在鏡子這個例子中,如果我們不藉助外界(例如另一面鏡子),這個鏡子自身無法完成照射自己。
同樣,在機器世界中,要讓一台安裝了模擬器的程序模擬自己,表面上看是不能完成的。不難想像,由於機器的內嵌虛擬層本身就是這台機器的一部分,於是,要想讓虛擬層模擬機器自己的動作,就必須包括它的虛擬層,於是我們必須要有一個虛擬層的虛擬層。這樣一來,我們就需要有無窮多的虛擬層,而且每一個虛擬層都要做同樣的事情,模擬它上一層次的動作。你會發現,我們的機器很快便觸及到了無窮多的虛擬層次,以至於怎麼可能在有限的時間和空間內完成它呢?
幸運的是,在計算理論、數理邏輯以及遞歸函數論(人們早已證明,這三種系統完全等價)中,人們早已經發現了一種巧妙地逃離這種無窮的方式。在數學中,這叫做不動點(fixed point);在遞歸函數論中,這叫做Kleene第二遞歸定理;在計算機程序中,這叫做「蒯恩」程序。事實上,康托爾運用這種技巧證明了實數比自然數多;羅素用這種技巧構造了羅素悖論;哥德爾用這種技巧完成了哥德爾定理的證明;圖靈用這種技巧構造了圖靈停機問題,指出了機器運算的極限;馮諾依曼用這種技巧製造了自複製的程序。現在,我們同樣可以用這種技巧構造可以模擬自身的程序。有關這種技巧的詳細說明請參考附錄。
在這裡我想說明的是,這種被稱為「蒯恩」(以美國著名哲學家蒯恩Quine為命名)的技巧,本質上講可以實現這樣的效果:執行一段包括蒯恩的模擬器就和將這個程序自己的源代碼拿出來在模擬器上跑效果完全一致,所以它看起來就像在模擬自己(實際上我們沒有任何手段能從運算結果上區分二者)。於是,我們便巧妙地繞過了無窮層次。
解讀意識
其實,這種能夠模擬自身運作的機器就可以被稱為是具有自我覺知能力了。我們只需要將自模擬程序中的正在模擬自身的虛擬機理解成前文所說的陳述自我,而將整個機器的其它部件都看作是體驗自我和身體,那麼這種自模擬程序就跟前文說到的人類的自我系統沒有什麼兩樣。具體的,我們有這樣的對應關係:
為什麼可以這樣理解呢?這裡面有幾層含義。
首先,所謂的虛擬其實就是描述。前文我們已經將虛擬機比喻為鏡子,意思就是說這個虛擬層要能夠形成對外在世界的描述。
其次,這是一台自我模擬的機器。根據遞歸定理,這台機器的所有部分,包括內嵌的虛擬機中的動作,都可以在虛擬機中找到對應。也就是說這個陳述自我知道什麼是「我」,我在做什麼,以及知道這個覺知(或模擬)過程本身。
最後,如果我們將內嵌虛擬機接上一個輸出介面,允許它用自然語言吐出字元串,那麼這個虛擬機就更像表述自我了,它可以向外界輸出表述。
既然從功能上說,我們的自模擬機器與陳述自我+體驗自我一致。下面,就讓我們來看看,為什麼說這種自模擬機器表現的就像具有自我意識一樣。
覺知
首先,這台機器是具備覺知能力的。這裡,所謂的覺知其實就是在虛擬層來反映真實世界,當然也包括這台機器本身的所有部分,顯然這台機器是可以做到的。
自我覺知
其次,這台機器是具備自我覺知能力的。根據蒯恩技巧,只要機器開始運行,它的表現就像是在虛擬層模擬它自身一樣。如果我們將模擬器稱為覺知能力的主體,那麼它模擬自身就自然可以稱為自我覺知了。
自由意志幻覺
更有意思的是,當外部觀察者觀察這台機器運行的時候,TA會產生這台機器具備「自由意志」的幻覺。這是為什麼呢?其實道理還是在於蒯恩。
對於任何一個配備了蒯恩的程序來說,它有這樣的效果,它整體完成的動作和虛擬機上完成的動作看起來是一模一樣的。於是,我們便無法分別究竟是這台機器「被動」地根據真實層的「物理法則」來做出動作還是根據虛擬層「意識」來作出的動作。於是,對於觀察者來說,一個虛擬的因果箭頭就可能被生生造了出來:這台機器在根據它自己的意識(稱述自我)而行動。那麼,我們也自然可以稱這樣的機器具備自我意識,甚至自由意志了。
其實這個道理就像你照鏡子,假如一個從來不知道鏡子為何物的外星人觀察你們,他有可能會得出來你在按照鏡子裡面的像而運動,它是因,你是果。所以,當你和你的虛擬重合為一,你就能給外部觀察者生硬地創造出一個因果箭頭。自我模擬機器正是這樣工作的。
哥德爾機——史上第一台意識機器
個人八卦
從我個人的經歷而言,最早意識到「自我模擬」程序非常重要是在2007年左右。那個時候我正在參加Stephen Wolfram辦的A New Kind of Science(簡稱NKS)的暑期學校。一個叫做Mathew的MIT的年輕老師給我們講圖靈停機理論。他當時概括說,正是因為我們可以構造出這樣一個可以通過自己源代碼來「模擬」它是否停機的程序,而這個程序讓外界的觀察者看到的表現,和它自己「聲稱」的表現並不一致,所以才證明了圖靈停機問題的不可判定性。當時,我立刻意識到:自我模擬是問題的關鍵。(恰恰就在Wolfram的這本NKS中,他還討論了自我模擬的元胞自動機)。
後來看關於計算理論的書:Nigel Cutland的Computability: an introduction to recursive function theory,我才了解到Kleene第二遞歸定理與自我模擬程序的關係。甚至在這本書中,Nigel Cutland根據第二遞歸定理專門討論了這種自我模擬程序的可能性。在該書中,他稱該程序為「自我反省」(Self-retrospectation)的程序。當時我就想為什麼沒有人動手把這種自反省程序做出來呢?
結果,最近我了解到,早就有人動手研究這種自模擬程序了,這個人就是大名鼎鼎的Jürgen Schmidhuber。也許你對這個名字還不熟悉,但你一定知道LSTM(長短時記憶網路),這個LSTM可是Google機器翻譯、對話系統背後最大的功臣。LSTM的發明者正是Schimchumber這位德國老先生。令人意想不到的是,他早在2006年的時候就提出了哥德爾機(Godel Machine),它可以被稱為人類歷史上第一台具備自我模擬、自我反省,甚至自我意識的人工智慧機器,儘管它現在還遠沒有被造出來。
哥德爾機的構成與工作原理
從整體結構上來講,哥德爾機實際上與我們之前講的自我模擬程序非常類似,它由兩部分構成:1、通用搜索器,這對應了自我模擬程序中的虛擬機;2、問題求解器,它對應了自我模擬程序的其它部分。但是,在哥德爾機中,求解器是一個幾近完整的強化學習系統,它還包括了輸入輸出裝置,從而它就像一個機器人一樣能夠實時地感知外界環境,並能對環境進行響應。與此同時,哥德爾機還有一個效用函數,它的目的就是為了不斷地提升這個效用函數,這些都是自我模擬程序尚缺乏的部分。這些多出來的裝置就可以讓哥德爾機不僅能夠實現自指,同時還能夠以最優的方式求解問題。
具體來講,哥德爾機是這樣工作的。首先,哥德爾機內部存在一套編碼系統,它可以將哥德爾機的硬體、軟體甚至是當前的狀態、效用函數,以及通用搜索器等等全部編碼成數學命題。這種做法實際上就是哥德爾在1932年證明哥德爾定理的時候所使用的方法。有了這樣的編碼系統,哥德爾機就可以將機器工作的所有狀態當作數學定理來討論。
其次,通用搜索器可以不斷地搜索一條數學命題的證明,從而判斷它的真偽。這樣, 哥德爾機就有可能完成牽扯到它自身問題的求解了。例如,假設關於哥德爾機的一個命題是:「如果我持續地原地轉圈,那麼天上就會掉下一個餡餅來,從而提高我的效用。」那麼,這個語句判斷就有可能被編碼成搜索器可以搜索的命題。於是,搜索器開始展開搜索,它會利用形式邏輯的推理法則展開運算,看看該條命題是否可以被推導出來。假設搜索器最後證明了這條命題是真的,那麼哥德爾機就可以將策略「持續原地轉圈」裝載到哥德爾機的執行裝置中。於是,哥德爾機就會不停地原地轉圈了。
所以,通過這樣的方式,哥德爾機就能持續地搜索可提升自己效用的方案,並利用更好的方案改寫自己的源代碼,從而完成「自省」的學習過程。據證明,哥德爾機與當前的強化學習演算法有異曲同工的效果,能夠在一邊探索的時候一邊學習。不過,Schimchuber證明,哥德爾機可以避免局部最優的問題,這就比一般的強化學習演算法高明很多了。之所以它有這種能力,就是因為搜索器的妙用:它只有在證明了一套方法可以提升效用的時候才真正使用它。
我們不難看出,實際上搜索器就是我們前面說的虛擬機。所謂的搜索就是一套模擬過程。而哥德爾機允許對自身狀態進行編碼形成數學命題就相當於機器可以模擬自身的運作。所以,我們說哥德爾機就是對自我模擬程序的一次實現。
為了讓我們的比較更具體,我們列出了下表:
哥德爾機與自我意識
Schimchuber個人也認為這個哥德爾機可以看作是具有自我意識的系統,例如他在J. Schmidhuber. A Technical Justification of Consciousness. 9th annual meeting of the Association for the Scientific Study of Consciousness ASSC, Caltech, Pasadena, CA, 2005. 這篇文章中就表達了這樣的觀點:長久以來我們對意識問題一直爭論來爭論去而沒有定論,但是我們連什麼是意識都還說不清楚。
與其這樣,不如讓我們用哥德爾機來反過來定義意識。只要程序能夠模擬自身、改造自身,那麼我們就可以將其稱為具有自我意識的。
所以,你會看到,哥德爾機的意義也許並不單純在於它會求解問題,而是在於它與圖靈機一樣,可以為我們討論自我意識的話題奠定一個程序的基礎,或稱一種標準。從此以後,意識問題就不再神秘了。
哥德爾機的執行
看起來這個哥德爾機非常的複雜,它能夠被實現出來並執行計算嗎?Schimchuber自己給出了回答。他把哥德爾機的實現總結成了兩篇文章:B. R. Steunebrink, J. Schmidhuber. Towards an Actual G?del Machine Implementation. In P. Wang, B. Goertzel, eds., Theoretical Foundations of Artificial General Intelligence. Springer, 2012. ,B. Steunebrink, J. Schmidhuber. A Family of G?del Machine Implementations. In Proc. Fourth Conference on Artificial General Intelligence (AGI-11), Google, Mountain View, California, 2011。其中,他主要討論了哥德爾機執行的關鍵要點就是機器的自指能力,並建議採用類似於Schema這樣的語言來實施哥德爾機。
這裡關鍵的問題在於複雜性。由於一個自我模擬系統需要雙層系統,這就導致一層的簡單性會帶來另一層的複雜性。例如,如果我們選擇了彙編語言,它可能具備一套很小的指令集,但是要實現一個自指的系統可能就會不簡單。相反,如果你的系統設計就是針對自指的,例如lambda演算,那麼它在自指部分很簡單,但是機器本身的編譯器卻會很複雜,於是導致我們在虛擬層實現整個機器的自我模擬會比較複雜。
總之,儘管在理論層面我們知道設計出哥德爾機原則上是可行的,但是,由於雙層系統的實現本身是非常困難的,因此哥德爾機尚沒有真正的做出。
智能爆炸
不過,我們還是不妨腦洞一下這樣的機器做出來之後會有什麼結果呢?由於哥德爾機具備不斷自我改善自己代碼的能力,因此,有人認為一旦它被製造出來就會引發所謂的「智能爆炸」(Intelligence Exploration)。智能爆炸就是說,這個智能系統可以通過不斷地提高自己的能力而提高,這個過程會越來越快地持續下去,從而很快超過人類的智能。一旦達到了這樣的智能,哥德爾機自己就會設計出哥德爾機,從而讓整個智能過程加速,這就導致了智能爆炸。
目前,人們普遍認為有兩種途徑達到技術奇點(Technology Singularity),一種途經是通過硬體性能的不斷提升,類似於摩爾定律;另一種途徑則是通過軟體途徑,即智能爆炸。由於軟體設計上的革命性進展更加不可預期,也無法被人類控制,因此認為智能爆炸的途徑會更有可能突破技術奇點。
結論
本文從近年來發展出來的幾個心理學實驗出髮指出所謂的自我意識,特別是自由意志很有可能是陳述性自我編造的一種幻覺:從我發向身體的這個因果箭頭並不存在;所有的因果箭頭就是環境到身體再到體驗自我,然後體驗自我再傳向身體,再傳給外界。陳述性自我只不過對整個過程進行了解讀,並額外「虛構」出了意識到體驗自我和身體的因果箭頭。
既然破除了自由選擇的迷信,那麼人體就和機器沒有區別。換句話說,機器也完全有可能模擬看起來具有意識的人類。我們只需要製造出一個同樣具有兩種自我的機器:一種虛擬的機器(陳述自我)和一種純演算法的執行機構(體驗自我),那麼這種機器就可以表現得像個有自我意識,甚至自由選擇的裝置了。我們甚至可以用這樣的系統反過來定義自我意識。
類似的機器已經被Jurgen Schimchumber設計了出來,它被他稱為哥德爾機。哥德爾機包括兩個部分,一個是通用搜索器(相當於內嵌的模擬機器);另一個是求解器(相當於執行系統)。在這樣的裝置下,哥德爾機可以通過在模擬器上搜索而尋求讓自己不斷優化的方案。我們只需要將搜索到的虛擬代碼裝載到實際的執行系統上,那麼哥德爾機就可以不斷地修改自己的代碼而提升下去。人們擔心,這種裝置一旦製造出來,就有可能引發智能爆炸,從而導致技術奇點的來臨。
附錄
蒯恩技巧
這種自我模擬的實現看起來是不可能的,但是數學家們實際上早就發現了一種技巧來克服這種不可能性。美國知名哲學家蒯恩(W.Quine)發明了一種程序,從而將它形象化、實例化。所謂的蒯恩就是一段計算機代碼,運行它以後,它就可以把自己的源代碼原封不動地列印出來。例如,我們可以用Java語言寫下一段蒯恩:
public class Quine{ public static void main(String[] args) { char q = 34; // Quotation mark character String[] l = { // Array of source code "public class Quine", "{", " public static void main(String[] args)", " {", " char q = 34; // Quotation mark character", " String[] l = { // Array of source code", " ", " };", " for(int i = 0; i < 6; i++) // Print opening code", " System.out.println(l[i]);", " for(int i = 0; i < l.length; i++) // Print string array", " System.out.println(l[6] + q + l[i] + q + ,);", " for(int i = 7; i < l.length; i++) // Print this code", " System.out.println(l[i]);", " }", "}", }; for(int i = 0; i < 6; i++) // Print opening code System.out.println(l[i]); for(int i = 0; i < l.length; i++) // Print string array System.out.println(l[6] + q + l[i] + q + ,); for(int i = 7; i < l.length; i++) // Print this code System.out.println(l[i]); }}
看上去有點複雜,但是你大概可以知道該代碼包含了兩個部分,一個是實在的程序體,一個是用「」引號括起來的部分。這括起來的部分彷彿和整體差不多。
如果用Python語言,那麼蒯恩就會超級簡單:
s = s = %r
print(s%%s)print(s%s)
我們運行這段程序,就會發現它在屏幕上把這段程序自己的源代碼列印了出來。仔細分析這段Python代碼,就會發現它包括兩句話,第一句話同樣是定義了一個字元串,字元串的內容簡直就是整段程序的包含,只是並不包括字元串這部分。第二句話是列印語句,%的意思是用%後面的變數來替換%前面變數中所有出現%號的地方。但是,%%就表示一個%,並沒有替換。於是,運行這段代碼就可以實現列印自己的源代碼了。
Kleene第二遞歸定理
不要小看這個蒯恩技巧,有了它,我們就能構造這樣一類神奇的程序:運行該程序的結果就相當於將它自己的源代碼拿過來做任意的操作。比如,剛才說的Quine就是這樣一種將自己的源代碼列印出來的一種程序。除此之外,我們還能構造出測量自己源代碼長度的程序,運行完程序,它就輸出了自己源代碼有多長。我們需要做的無非就是在Quine程序的字元串內部和程序本身都附著一段求任意字元串長度的代碼就可以了。事實上,計算數學很早就證明出了一個叫做Kleene第二遞歸定理的結論,說的就是這種程序的存在性。
有了這個定理,我們就不難構造出自我模擬的程序了。我們只需要在Quine的基礎上再附著上一段通用程序模擬器的代碼。這樣,根據第二遞歸定理,只需要運行這段程序就能模擬它自身的運行了。
推薦課程
本系列課程完整地介紹了通用人工智慧(Universal Artificial Intelligence)的基本理論,指明了包含哥德爾機的詳細解讀,哥德爾機的架構,可實現性和存在性問題。
http://campus.swarma.org/gpac=123
http://campus.swarma.org/gapp=111 (二維碼自動識別)
推薦閱讀:
※《意識之河》:奧利弗·薩克斯對注意力、記憶和生命最後的思考
※今天的世界因你而美麗 現代最新的科學成果揭示人的意識秘密 解答21世紀人類抑鬱症頻發的社會與生物學機理
※越強大的影子往往伴隨越強大的光芒!人生最大的成功 戰神黑狗 戰勝抑鬱症 潛意識模型與意識模型重新協調
※從靈異故事、天賦論、天人合一論和引力場開始,以相對論量子論為基礎 大腦11維度空間 討論人的知覺、意識 1
※觀念起源全新假設:人類認知是基因信息的升級版,那下一個是什麼
TAG:意識 | 人工智慧 | 深度學習DeepLearning |