陳凱 王嘉忱
20世紀50年代,阿蘭·圖靈發(fā)表了在人工智能發(fā)展史上具有里程碑意義的《計算機器與智能》一文,著名的“圖靈測試”就源自此文,圖靈認為,若測試者無法通過對話的行為區(qū)分出機器和人,便可作為機器具有智能的判定標準,這個觀點引發(fā)了科學界和哲學界廣泛和持久的討論。本文的重點,是想說明所謂的“圖靈測試”不只是一個思想實驗,“圖靈測試”中提出的模仿游戲,對于理解機器何以能夠借由運行程序而擁有通用計算的能力,具有很強的啟發(fā)作用。
● 用人來模仿人
圖靈的論文中,在提及“圖靈測定”之前,先引出了以判別性別為目標的模仿游戲,經(jīng)筆者實踐檢驗,是完全能在課堂中照樣實施的。實施大致過程如下:在班級中各選擇一位男生和一位女生,隨機稱為甲和乙,將他們請到教室外的走廊中,班級中所有同學都可以是測試者,由教師作為中介將測試者的問題傳達給被測試者甲或乙,甲和乙的回答由教師代為轉(zhuǎn)達給留在教室中的測試者,在一系列的對話結(jié)束后,由測試者判定甲和乙的性別。對話時要注意,不能詢問只有被測試者自己知道的隱私問題。
根據(jù)圖靈的論文,被測試者要做的,并不是證明自己的性別,而是盡量讓測試者產(chǎn)生難以分辨的混淆,所以,在正式開展實驗前,可以先示范性地給出一些對話的例子,如作為男性的被測試者,可以這樣參與對話來掩飾身份:
測試者:請問甲,我們班中哪個男生是最帥的?
被測試者甲:當然是我們老師了。
測試者:請問甲,你認為自己漂亮嗎?
被測試者甲:你覺得我可愛嗎?
類似的例子有助于提高教學活動的效率,因為筆者曾在活動中遇到這樣的情況,有學生提出的第一個問題是:“請問甲,你認為自己漂亮嗎?”被測試者甲回答:“我很漂亮!”于是全班一致認定某甲是男生。模仿游戲大約要持續(xù)半節(jié)課的時間,雖然耗時較長,但對于人工智能教學后續(xù)內(nèi)容——尤其是普適計算對人工智能實現(xiàn)的重要性——的順利開展,具有很重要的鋪墊作用。
● 用機器來模仿機器
圖靈的論文中,在介紹完判別性別的模仿游戲后,就開始討論關(guān)于機器參與到模仿游戲?qū)υ捴羞@一問題??紤]到在這個地方,圖靈的思維跳躍可能大得讓普通人難以接受,所以在教學中,可以補充一些有趣的實驗,逐步引導(dǎo)學生思維走向深入。
實驗要用到Notepad++這個文本編輯工具,Notepad++具有的宏的功能,就使得教學過程中,即便不編寫程序代碼,也能體會到人工智能實現(xiàn)中的一些關(guān)鍵性的思想方法,適用于程序算法學習水平較低或水平不一致的學習群體。當然,使用其他帶有宏功能的文本編輯軟件也一樣能達到目的。
機器模仿實驗1:用查找和替換模仿搬木頭
實驗很簡單,就是通過反復(fù)執(zhí)行查找和替換操作,將一串只有0和1字符串中的所有的1,聚集到字符串的一端,如初始時字符串是0100100010,最后需要達到的效果是0000000111。
在這個實驗中,查找和替換的規(guī)則很簡單,就是查找“10”,替換成“01”,在反復(fù)執(zhí)行替換時,能看到某種動畫片一樣的效果。所以,也可以稱為搬運木頭游戲:用查找和替換操作,來模仿木頭的搬運。
機器模仿實驗2:用跳舞恐龍模仿查找和替換
這個實驗仍然采用初始字符串:0100100010。然而這一次,是將這些數(shù)字想象成一群在跳舞的恐龍,其中有的在快速轉(zhuǎn)圈,用俯瞰的角度就是“0”的形狀,有的沒有轉(zhuǎn)圈,用俯瞰的角度就是“1”(這里自然需要一些想象力)。但在舞蹈家恐龍的隊列旁邊,還有一只指揮家恐龍,指揮家恐龍也通過跳舞來指示跳舞恐龍的行為,指揮家恐龍用字母q表示,其狀態(tài)也用數(shù)字表示,為了看起來方便,就做成表格的樣子(如表1)。
指揮家恐龍是這樣工作的,如果它轉(zhuǎn)著圈,并且它所面對的恐龍也轉(zhuǎn)圈,那么,它自己就繼續(xù)轉(zhuǎn)圈,它對面的恐龍也繼續(xù)轉(zhuǎn)圈,然后指揮家恐龍右移一個位置。指揮家恐龍的這一系列動作可以用一串符號來表示:q0,0:q0,0,>。
其中,q開頭的數(shù)字代表指揮家恐龍的動作,沒有q開頭的數(shù)字代表普通舞蹈恐龍的動作,右箭頭表示指揮家恐龍向右移動。動作完成后,跳舞的隊列就變成如表2所示的樣子了。
指揮家恐龍總共有4套指揮動作,除了q0和q1,可以將q2看成是恐龍甩腦袋,q3看成是恐龍搖頭擺尾,如果預(yù)先設(shè)定好指揮家,遇見普通舞蹈家后動作變化情況如圖1所示。
舉例說,q1,0:q2,1,<這串符號的意思是,不轉(zhuǎn)圈的指揮家遇見轉(zhuǎn)圈的舞蹈家,則指揮家變成甩腦袋,舞蹈家變成不轉(zhuǎn)圈,然后指揮家向左移動。
可以看出,某一特定時刻,總能匹配到其中的一組規(guī)則,所以接下來舞蹈隊列的變化如表3~表5所示。
這里就能看出,這群恐龍只是看上去在跳舞,其實它們是在查找所有的“10”并將其變成“01”,如果有耐心一直觀看節(jié)目到最后,這列跳舞恐龍最終就變成了這樣:0000000111。
仔細想想,這些跳舞恐龍只是看上去在跳舞,其實它們在執(zhí)行著查找替換的操作,并且,它們只是看上去在執(zhí)行查找和替換的操作,其實正在表演搬木頭。如果把恐龍?zhí)枘P驼娴挠脤嵨镏谱鞒鰜聿⑦\行起來,那么它其實擁有一個很響亮的名字,叫做圖靈機。
機器模仿實驗3:用查找和替換來模仿跳舞恐龍
接下來又是Notepad++出場的時候了,可以在Notepad++中設(shè)置初始字符串如下:
_q00000000111_
其中,下畫線表示沒有恐龍,而列首的q0當然就代表指揮家恐龍了,因為字符串是一維的,所以只能把指揮家和舞蹈家并列在一起了,但這并不影響指揮家的工作。
然后,可以做一系列的查找替換操作,由于操作數(shù)量有點多,所以可以在教學前,將這些查找和替換操作預(yù)先設(shè)置成宏,然后就可以在Notepad++自動執(zhí)行了(如圖2)。
如果反復(fù)執(zhí)行上述查找替換操作,那么最后字符串就變成了:_q00000000111_。如果沒有被繞暈,那么就能發(fā)現(xiàn),上述字符串的查找替換動作,實際上模仿了恐龍的舞蹈動作,然后,恐龍的舞蹈動作,實際上模仿了查找替換動作,然后,查找替換動作又模仿了搬木頭的工作。
到這里可以解釋一個問題,程序的本質(zhì)是什么?用比喻的方式說,程序就是一系列的規(guī)則,一個機器可以根據(jù)這些規(guī)則模擬出一個執(zhí)行某特定任務(wù)的虛擬的機器,這樣,這個機器就具有普適計算的能力了。
● 用機器來模仿人
接下來是思考一個可能讓人對自己智能產(chǎn)生懷疑的問題,假如讓人在頭腦中玩一個用字符串模仿搬木頭的游戲,并將整個字符串變化的過程在頭腦中依次顯現(xiàn),那么,為什么人的頭腦能夠做到這一點?盡管搬木頭很簡單,但問題的關(guān)鍵是,人的頭腦是如何完成這個模擬和想象工作的?這可不是能夠簡單回答的問題。
參考上述機器模仿實驗3,所謂的搬木頭只是一種模仿的表象,而實質(zhì)只是一種查找替換操作,問題是這個查找替換操作其實也是表象……圖靈認為,所謂的智能其實是一系列模仿過程的計算結(jié)果(但哥德爾并不同意這一點,這里就不進一步展開討論了)。
簡單來說,人是具有玩搬木頭游戲的智能的,但那其實是神經(jīng)元進行計算和模仿操作的結(jié)果。同樣,機器也可以借助計算和模仿,達到與人同等的搬木頭游戲的智能。那么擴展想一下,人所能做的每一個看上去有智能的活動,其實機器都能模仿。圍繞這個觀點,可以產(chǎn)生出一系列有趣的問答,這些開放性的討論未必一定要有標準的結(jié)論,討論的目的是激發(fā)學習者積極主動的思辨,例如:
問:為什么能模仿有智能的行為,就判定它有智能?
答:那么,除此以外還有其他判定辦法嗎?
問:我認為我的行為是真的有智能的,不是模仿出來的,這怎么解釋?
答:你怎么可能證明這一點?
問:我能知道自己在搬木頭,機器知道嗎?
答:你通過觀察自己的思維變化才知道這一點,何以確定將來的機器做不到這一點?另外,你是否想過你頭腦的神經(jīng)元是否知道它們正在搬木頭呢?
……
若是能引發(fā)激烈的交鋒,那便是十分理想的課堂狀態(tài)了。但教師終究還是要從紛繁的觀點中找出共識,為教學活動進行總結(jié)。筆者自己的總結(jié)是:①可以用一個機器,來模仿出另一個完整的機器的行為(這其實是圖靈論證的結(jié)果)。②被模仿出來的機器,不會思考自己是否是模仿的結(jié)果,也并不會思考,自己的行為有可能進一步模仿了其他機器,到目前為止,這是機器和人不同的地方。