第一部分 人工智能是什麽 第一章 圖靈的電子大腦

我建議大家考慮一個問題:“機器能思考嗎?”

——艾倫·圖靈,1950年

每個故事都有個開頭,對人工智能(Artificial Intelligence, AI)而言,可以選擇的開頭有很多,因為人類對人工智能的夢想,可以追溯到很久很久以前。

我們可以選擇從古希臘開始,鐵匠之神赫菲斯托斯(Hephaestus)擁有賦予金屬物品生命的能力。

我們可以選擇從16世紀的布拉格開始,傳說中偉大的拉比在那裏用黏土製作了一個傀儡魔像,意圖保護該城市的猶太人免遭迫害。

我們可以選擇從18世紀蘇格蘭的詹姆斯·瓦特(James Watt)開始,他為正在建造的蒸汽機設計了一個巧妙的自動控製係統——調速器,從而為現代控製理論奠定了基礎。

我們可以選擇從19世紀初開始,年輕的瑪麗·雪萊(Mary Shelley)被惡劣的天氣困在瑞士的一棟別墅裏,和她的丈夫——詩人珀西·比希·雪萊(Percy Bysshe Shelley),以及他們家的朋友拜倫(Byron)勳爵一起,玩了一場文字遊戲,創作了《弗蘭肯斯坦》[1]。

我們可以選擇從19世紀30年代開始,在彼時的倫敦,阿達·洛芙萊斯(Ada Lovelace),上文提到的那位拜倫勳爵的女兒——雖然父女倆關係非常疏遠——與查爾斯·巴貝奇(Charles Babbage)建立了友誼,性情乖張的巴貝奇發明了分析機,這激勵著才華橫溢的阿達探尋機器是否最終能夠具備創造性[2]。

我們也可以選擇從18世紀掀起的自動機器裝置狂熱開始。那些小型自動機器裝置被設計得無比精妙,有一種被賦予生命的錯覺。

追溯人工智能的開端,我們可以有許許多多的選擇,但對我來說,人工智能故事的開頭與計算機的開端應該是一致的。對此,我們有一個非常明確的起點:1935年,劍橋大學國王學院,一位才華橫溢、不拘泥於傳統的年輕學生——艾倫·圖靈(Alan Turing)。

劍橋1935

現在,艾倫·圖靈是一個家喻戶曉的名字,但我們很難想象在20世紀80年代,這個名字在數學和計算機領域以外壓根不為人知。雖然相關專業的學生可以在教材上偶遇圖靈的名字,但對他非凡的成就知之不詳,更不了解他那悲慘的命運。部分原因是圖靈在第二次世界大戰期間為英國政府效力,承擔了一項非常重要的工作,而這項傑出工作的成果一直秘而不宣,直到20世紀70年代才公開[1]。但是,更重要的原因是歧視,因為圖靈是同性戀,在當時的英國,同性戀是一種犯罪。1952年,他以“嚴重猥褻罪”被起訴和定罪,被迫服用某種旨在降低性欲的粗製濫造的藥物來進行所謂的“化學閹割”。兩年後,他親手結束了自己的生命,年僅41歲[2]。

盡管如今的我們對圖靈的故事所知甚少,但多少略知一二。其中最著名的橋段自然是二戰期間他在布萊切利莊園破譯密碼的傳奇,因2014年好萊塢電影《模仿遊戲》而天下皆知(雖然電影和現實的差距大得驚人)。他為盟軍的最終勝利立下了汗馬功勞。但是,人工智能研究人員和計算機科學家崇拜圖靈,是出於完全不同的理由:他是真正意義上的計算機發明者,不久,又成為人工智能領域的主要奠基人。

圖靈在諸多領域都有非凡成就,最非凡的是在偶然的機會下,他發明了計算機。20世紀30年代中期,圖靈還是劍橋大學數學係的一名學生,他給自己定下一個超前的挑戰,那就是解決彼時最重要的終極數學問題之一:判定問題。這個令人印象深刻——坦率地說,是可怕——的問題,由數學家大衛·希爾伯特(David Hilbert)於1928年提出。判定問題是指,是否所有的數學描述都是“可判定的”,即是否存在一種方法,可以確認某個給定的數學描述是真是假。當然,希爾伯特關心的領域並非“有沒有上帝”或者“生命的意義是什麽”之類,而是數學領域中的判定問題。判定問題是一種有著明確“是”或“否”的答案的數學問題。以下是判定問題的示例:

·2 + 2是否等於4?

·4×4是否等於16?

·7919是否是一個質數?

很湊巧,這幾個問題的答案都是“是”。前兩個問題的答案是顯而易見的,但是,除非你是個癡迷於質數的人,否則要回答第三個問題得稍微費點兒勁了。所以,我們來看看最後一個問題。

你應該記得,質數的定義是一個隻能被自己和1整除的整數。現在回到這個問題,我相信從原則上講,你能夠尋找到一個驗證它的方法。有一個很容易想到的笨辦法,當然,對7919這麽大的數字來說有些煩瑣:依次用每一個整數去除它,看看它能不能被某個數除盡。重複這個過程以後,你會發現,除了1和7919本身,沒有其他可以除盡它的數,這就意味著7919確實是一個質數[3]。

重點在於,上述問題可以用一個精準的方式來尋找答案。這種方式不需要任何靈活的應用——隻是一些需要死記硬背的方法。要尋找答案,我們隻需要嚴格按照方法所示的步驟執行就可以。

既然有這樣的方法保證能夠驗證這個問題的是與否(隻要有足夠的時間),我們就可以說,“某個數是否是一個質數”是可判定問題。在此我強調一下,這就意味著,每當我們遇見“數n是否是一個質數”這樣的問題時,隻要給予足夠的時間,就能找到答案:遵循相關步驟執行,最終就能得到明確的答案。

現在,判定問題提出:是否所有的數學判定問題都是可判定的?或者說,是否存在某種數學問題,無論你投入多少時間,都無法尋找到相應的可供嚴格遵循來解決問題的方法?

這是一個基礎法則類問題,本質是數學問題是否都可以簡化為尋找對應算法就可以解決的問題。回答這個基礎問題是圖靈在1935年給自己立下的艱巨挑戰,而他以令人難以置信的驚人速度解答出來了。

一想到深奧的數學問題,我們很容易就會認為解決它們的方法是冗長而複雜的,涉及大篇幅的方程式和證明過程。有時候,事實的確是這樣,例如英國數學家安德魯·威爾斯(Andrew Wiles)在20世紀90年代論證著名的費馬大定理,數學界花費了好幾年時間才消化了他那幾百頁的手稿,並確信他的論證是正確的。按照這樣的標準,圖靈解決判定問題的方案簡直是顛覆性的。

與大家想象中的不同,圖靈的證明短小精悍,而且很容易讀懂(在確立了基本框架以後,真正的證明實際上隻有幾行)。重點在於,圖靈意識到,他需要一個精準定義解決問題方法的方案,為此,他發明了一種可以解決數學問題的機器,如今,為了紀念他,我們稱之為圖靈機。圖靈機是一種對方法的具體描述,比如上文提到的檢查質數的步驟。圖靈機的作用是嚴格遵循既定的步驟執行運算。在此,我要強調的是,盡管圖靈將它稱為“機器”,但在那時它隻是個抽象的數學概念。通過發明一台機器來解決一個艱深的數學問題,這種想法相當顛覆傳統,當年的數學家們肯定都被搞迷糊了。

圖靈機就如強悍的神獸,任何你能想出來的數學方法都可以被編碼成圖靈機。因此,如果所有的判定問題都是可以解決的,就意味著任何判定問題都可以通過設計一個專用的圖靈機來解決。也就是說,為了解答希爾伯特的問題,你所要做的是,證明存在某種判定問題是任何圖靈機都無法解決的。這正是圖靈證明這一命題的方法。

接下來,圖靈耍了點小把戲,讓他的機器搖身一變,成為能夠解決通用問題的機器。他設計了一種圖靈機,可以按照人們給它的任意方法進行運算,現在我們把它稱為通用圖靈機[4]。一台計算機最核心也最基礎的部分,就是一台真正的通用圖靈機。計算機所運行的程序,本質上就是運算的步驟,類似前文我們提到的確認質數的步驟。

盡管這不是我們故事的重點,但至少得提出來圖靈是怎麽用它的新發明解決判定問題的。除了驚歎於他精巧獨到的心思,我們還應該意識到,它跟人工智能最終是否可能存在有著密切關係。

圖靈的構想是存在這樣一台圖靈機,可以用來判定任意圖靈機的運行結果。他考慮了以下問題:給定一台圖靈機和相關輸入集,它最終是會停止,還是永無止境地運行下去?這就是一個判定問題了,屬於我們前文討論過的範疇,盡管它相對複雜一些。現在,假設存在一個機器能夠判定這個判定問題,圖靈指出,這個假設會引起悖論[3]。因此,沒有辦法檢測出圖靈機是否停止。那麽,“圖靈機是否停止”是一個不可判定問題。所以圖靈得出結論:存在某些判定問題不能簡單地按照確定的步驟來解決。他解決了希爾伯特的難題:數學並不能被簡化為遵循方法解決問題[5]。

這一結果是20世紀數學界最偉大的成就之一,單憑它就足以讓圖靈在數學界名垂青史。但更偉大的是它的副產物——通用問題解決機器,即圖靈機。圖靈發明圖靈機的時候,它隻是個抽象的概念,他並沒有想著將它實體化。不過沒過多久,不少人,包括圖靈自己,開始著手把這個想法轉化成現實。在二戰時的慕尼黑,康拉德·楚澤(Konrad Zuse)為德國航天部設計了一台名為Z3的計算機,雖然它算不上一台完整的計算機,但引入了不少關鍵部分。在大西洋彼岸的美國賓夕法尼亞州,由約翰·穆克裏(John Mouchly)和普雷斯伯·埃克特(J. Presper Eckert)領導的小組開發了一台名為ENIAC的機器來計算火炮射擊表。傑出的匈牙利裔數學家約翰·馮·諾依曼(John von Neuman)對它進行了相關調整,使ENIAC具備現代計算機的基本架構(為了紀念這位數學家,傳統計算機的架構被稱為“馮·諾依曼架構”)。在戰後的英國,弗雷德·威廉姆斯(Fred Williams)和湯姆·基爾伯恩(Tom Kilburn)建造了昵稱為“曼徹斯特寶貝”的小規模實驗機,直接促成了世界上第一台商用計算機“費蘭蒂一號”的出現(圖靈本人於1948年加入曼徹斯特大學的工作團隊,並編寫了最早運行的程序)。

到了20世紀50年代,現代計算機的所有關鍵部件都被發明出來了。圖靈機已經從數學概念轉化為實實在在的機器——隻要你有足夠的金錢買下它,以及足夠的場地擺放它(要裝下“費蘭蒂一號”,至少需要兩個16英尺[4]長、8英尺高、4英尺寬的儲藏室。機器的功率為27千瓦——它消耗的電能可以供應至少三個現代家庭用電)。當然,隨著時代的發展,計算機變得越來越小巧,越來越便宜。

電子大腦的實際功能

還有什麽比聳人聽聞的標題更能取悅報社編輯的呢?第二次世界大戰結束後,第一台計算機建成,世界各地的報紙都爭相報道這項神奇的發明——電子大腦。這些看起來可怕又複雜的機器有著令人炫目的計算能力,用它們處理海量的複雜算術問題,其速度和精確程度遠遠超乎人類想象。對於那些不了解計算機原理的人來說,能完成複雜算術任務的機器似乎擁有某種高級智能。因此,它被人們稱為電子大腦,然而,名不副實(直到20世紀80年代,當我首次對計算機領域產生興趣時還能聽到這類說法)。事實上,這些電子大腦確實能承擔許多對人類而言煩瑣、複雜且困難的計算,但它們並沒有智能可言。所以,了解清楚計算機最初發明出來是做什麽的,以及它不能做什麽,是理解人工智能局限的核心,也能讓我們明白,為什麽實現人工智能的宏偉目標如此困難。

請記住,圖靈機,以及它的物理表現形式計算機,它們隻是遵循各種指令的機器而已。這是它們存在的唯一目的——它們被設計出來就是做這個的,也隻會做這個。我們給予圖靈機的指令,現在被稱為算法或者程序[6]。大多數程序員可能都不太清楚他們打交道的東西本質上跟圖靈機類似,這也不怪他們——直接為圖靈機編程簡直是受罪,無聊、煩躁得令人生厭,一代又一代在編程路上吃盡苦頭的計算機專業學生能夠證明這一點。因此,我們在圖靈機上構建更高級的語言,諸如Python、Java和C語言之類,讓編程變得簡單。高級語言的作用是向程序員隱藏機器語言中某些煩瑣到可怕的細節,讓編程變得容易一些。但從本質上來說,編程仍然是枯燥乏味、令人生厭的,這就是為什麽學編程這麽難,為什麽計算機程序總是莫名其妙地崩潰,為什麽優秀的程序員薪水總是這麽優渥。

在本書中我不會教你編程,不過了解一下程序指令的作用以及電腦怎麽按照步驟來執行程序也是有必要的。粗略地說,計算機能做的,就是按步驟執行一係列指令而已[7],例如:

將A與B相加

如果結果大於C,則執行D,否則執行E

重複執行指令F,直到遇見情況G

所有的計算機程序都能歸結為類似的指令列表,不管是Microsoft Word還是PowerPoint,不管是《使命召喚》還是《我的世界》,不管是臉書、穀歌還是淘寶,不管是瀏覽器還是手機App,抑或是支付寶、微信、QQ……全都能歸結為類似的指令列表。如果我們要製造智能機器,它的智能最終必須縮減到遵從這些簡單的、明確的指令上。這從本質上對人工智能提出了挑戰:把這些簡單的指令排列組合起來,真的可以產生智能行為嗎?

在本章的剩餘部分,我會深入挖掘這個問題,並試圖明確它在人工智能發展曆程上所產生的影響。然而,在講述之前,我得先為計算機正名。本章截至目前,我向你描述的計算機似乎就是一坨無用的廢鐵,我覺得有必要強調一下它的偉大之處,以免誤導大家。

首先,計算機的運算速度非常快,非常、非常、非常快。雖然這點盡人皆知,但是我們在日常生活中很難直觀地感受到。所以,我們來量化一下這個陳述。在我寫這本書的時候,一台普通的台式機以全速運行,每秒可以處理1000億條指令。1000億大概是銀河係所有恒星的數量,不過這麽說還是不太直觀。所以,請你想象一下自己要通過手動執行指令來和計算機進行一次較量。你大概每10秒執行一條指令。你得做到不吃不喝、不眠不休(全年365天,全天24小時,每小時60分鍾,每分鍾60秒),那麽大概需要31 710年,你才能完成計算機1秒鍾就能搞定的工作。

當然,除了速度慢得令人發指以外,跟計算機比起來,你還有一個最關鍵的劣勢:你不可能在執行海量任務的時候保證不出錯。相比人類,計算機的錯誤率極低。當然,程序崩潰是常見的,但那幾乎全是程序員編寫程序時出的錯,而不是計算機本身的問題。現代計算機的處理器可靠性非常高,它們的平均無故障運行時間高達50 000小時,每秒鍾都能忠實地執行數百億條指令。

最後,雖然計算機隻是遵循指令的機器,但並不意味著它不能做決定。計算機當然可以做決策,隻是我們必須給出它做決策所需要的精準指令。計算機隨後可以自行調整這些指令,隻要我們指導它在何種情況下應該如何做——這就意味著,計算機可以隨著時間推移改變其行為——它能夠學習。

人工智能的產生為何如此艱難

現在我們了解到,計算機可以非常迅捷而精準地執行簡單的指令,另外,隻要輸入精準定義過的指令,它就能夠做決策。我們可以順理成章地得出結論,某些需要計算機為我們處理的事務可以用非常簡單的方式進行編碼,可有些功能則不然。要理解人工智能的產生為何如此艱難,為什麽如此難以定義何為人工智能真正的“進步”,我們需要了解一下到底哪些問題是容易用編程來解決的,而哪些問題則很難用編程解決,以及為什麽。圖1展示了我們希望計算機能夠完成的任務,以及它們的難易程度及實現時間。

排在最前麵的是計算。讓計算機做計算是最簡單不過的,因為所有的基礎運算(加、減、乘、除)都可以用非常簡單的步驟來運行——你在學校裏都學過,哪怕現在已經不記得了。這些步驟可以直接編譯成計算機程序,早期的計算機本身就是為了解決計算問題而生的(1948年,圖靈加入曼徹斯特大學團隊,為計算機“曼徹斯特寶貝”編寫的第一條程序就是執行長除法。在解決了20世紀最深刻的數學問題之一以後,又回到了學校裏學過的基礎數學上來,這對圖靈而言定然是一次奇特的經曆)。

圖1 我們希望計算機能完成的任務,按照難易程度排序括號中的年份表示問題解決的大致時間,而目前為止,對於“遠未實現”的任務,我們毫無頭緒。

接下來是排序,是指把一係列隨機的數字按照升序排列,或者一係列姓名按照字母順序排列。這聽起來一點兒都不人工智能,事實上排序的步驟並不複雜。然而,傳統的笨辦法慢得令人發指。一直到1959年,快速排序法才被發明出來,排序這個老大難問題才算得到了一個有效率的解決方法(快速排序法誕生後50年內,都沒出現比它更優秀的排序算法)[8]。

然後我們要討論需要攻克重重難關才能解決的問題。下棋就是重大挑戰之一,它也是人工智能故事中非常重要的一環。事實上,有一種簡單粗暴的方式可以玩好棋類遊戲,基於一種名為搜索的技術,我們將在下一章詳細討論它。問題在於,盡管基於搜索進行編程是最簡單不過的事情,但它除了能適應一些簡單的遊戲以外毫無用處,因為它需要占用太多內存,消耗太多時間——哪怕我們把整個宇宙的每一個原子都用來建造計算機,它也承擔不起用“簡單粗暴”的搜索方式來下一盤圍棋或者象棋。為了讓搜索具有可行性,我們需要增加一些額外的東西——就如我們在下一章即將看到的那樣,至此,人工智能開始登場。

我們知道有辦法解決問題,但是在實踐技術中卻無法實施——因為它們需要的計算資源太過龐大。這種情況在人工智能研究領域司空見慣,圍繞著怎麽處理這類問題,人們也進行了大量的研究。

不過列表中接下來的問題並非此類,人臉識別、自動翻譯和實時可用的口語翻譯與棋類遊戲不一樣,傳統的計算機技術無法為我們提供解決這類問題的方法,我們需要探索全新的解決方案。當然,在列表上,這類問題已經通過一種名為機器學習的方式得到了解決,我們將在後續章節深入了解有關機器學習的內容。

接下來是一個吸引人的話題,無人駕駛汽車。駕駛對人類而言是一件很簡單的事情,開車並不是一項需要高智商的技能。但事實證明,讓電腦來控製汽車簡直困難重重。主要的問題在於,汽車需要知道它所處的位置以及周圍環境。想象一下,一輛無人駕駛的汽車來到紐約繁忙的十字路口,數不盡的汽車從它身邊呼嘯而過,還有行人、自行車、道路施工、交通標誌和各種標線。還有可能遇到下雨、下雪或者大霧,這讓周圍情況變得更加複雜(在紐約,這三種氣象甚至可能同時出現)。這種情況下,難點並不在於你要做什麽(減速、加速、左轉或者右轉等),而是要弄清你的周圍發生了什麽,即將發生什麽——確認你的位置,周圍有哪些車輛,它們的位置,它們會朝哪個方向行駛,行人的位置,行人的移動軌跡,等等。如果充分掌握了所有信息,那麽你決定接下來該怎麽做就非常容易了。(我們會在稍後的章節裏麵討論無人駕駛的細節。)

然後就是我們真不知道該怎麽解決的問題了:計算機怎麽去理解一個複雜的故事,並且回答有關它的問題?計算機如何能把類似小說這種細致入微的文本翻譯到信達雅的程度?計算機如何看圖說話——不光是識別圖中的人物,而是要詮釋圖中發生的事情?計算機如何能創作出一個有趣的故事,或者解讀一件藝術品,比如一幅畫?最後,仍然回到我們的“宏偉夢想”上,計算機如何擁有類似人類的智能?

因此,人工智能的進步意味著讓計算機能夠越來越多地完成圖1中所列舉的任務,這些任務難以完成的原因通常有兩種。第一種是我們雖然知道理論上有某種可以解決問題的方法,但實際上卻行不通,因為它需要太過漫長的運算時間,占用太高的內存,像象棋和圍棋這樣的棋類遊戲就屬於這一類。第二種是我們不知道解決問題的方法是什麽(例如人臉識別),要解決這類問題,我們需要一些全新的東西(例如機器學習)。幾乎所有當代的人工智能研究都關注著這兩類問題之一。

現在,我們來看看圖1中最困難的問題——通用的、人類水準的智能機器這一宏偉夢想。毫無疑問,這一挑戰吸引了無數人的關注。而其中最早的以及最有影響力的思想家之一,就是我們的老朋友,艾倫·圖靈。

圖靈測試

20世紀40年代末至50年代初,第一台計算機的出現引發了一場公開辯論,辯論主題就是這一現代科學奇跡的潛力如何。這場辯論中最矚目的貢獻當歸屬於一本名叫《控製論》的書,由麻省理工學院數學教授諾伯特·維納(Norbert Wiener)撰寫。這本書將機器與動物大腦神經係統做了詳細對比,並觸及了許多有關人工智能的想法。《控製論》引起了公眾的極大興趣,但事實上,除了特別專注於此的科學家以及專業數學家,大多數人無法理解這本書。諸如機器是否能“思考”的問題開始在新聞界和廣播節目中引起了有模有樣的爭論(1951年,圖靈本人還參加了相關主題的一個BBC廣播節目)。雖然還沒有名字,但人工智能的萌芽開始浮現。

在公眾辯論的推動下,圖靈開始認真思考人工智能的可能性。他對公眾辯論中經常提到的“機器做不到×××”的說法非常惱火(例如思考、推理或者進行類似創造性的工作)。他想讓那些認為“機器不能思考”的人徹底閉嘴,於是提出了一個測試,現在,我們稱之為圖靈測試。自1950年第一次提出以來,圖靈測試一直具有巨大的影響力,直至如今,它仍然是一個嚴肅的研究課題。不過,令人遺憾的是,到目前為止,它仍然沒能讓懷疑者徹底沉默,我們接下來就來討論原因。

圖靈測試的靈感來源於維多利亞時代一種叫作“模仿遊戲”的室內遊戲。“模仿遊戲”的基本玩法是通過對一個人提問,從回答來判斷對方是男是女。圖靈建議對人工智能采取類似的測試。測試通常是這樣描述的:

人類詢問者通過鍵盤與屏幕彼端的“生物”進行交互聊天,詢問者事先並不知道對方是人還是計算機程序。交互純粹以文本的形式進行:詢問者鍵入一個問題,然後對方給予一個回應。詢問者的任務是確定對方是人還是計算機程序。

現在,假設被詢問的確實是計算機程序,但是經過一段合理的時間,詢問者無法準確判斷他是在與人還是計算機交互。圖靈認為,你就得承認這樣的計算機程序擁有類似人類的智能(或者自主思維以及別的稱呼)。

圖靈的傑出之處是避開了所有存在爭議的問題,直指計算機程序是否“真正”擁有智能(或者意識以及其他說法)、程序是否真正有“思維”(或者意識、自主意識什麽的)並不是重點,重點在於它能夠做到“亂真”,即讓測試者無法分辨出程序和真人。這裏的關鍵詞在於“無法分辨”。

圖靈測試是科學界中標準技術的一個優秀例子,如果你想確認兩種事物是相同的還是不同的,就思考一下如何設計合理的測試來區分它們。若是有一種合理的測試,兩種事物其中一種能通過,另一種不能,那麽你可以宣稱它們是不同的。如果不能通過合理的測試來區分它們,那麽就不能聲稱它們是不同的。圖靈測試就是用來區分機器智能與人類智能的方法,測試的方式是人類詢問者是否能夠分辨出與之交流的是機器還是人。

然而在這個問題上我們得謹慎一些,多年來,許多定義人工智能的方式都遇到過類似的困境,它們總是根據所使用的技術方法來定義人工智能。例如,如果你最喜歡的人工智能技術是“時間遞歸最優學習”[5](我隨機挑了個時下最流行的人工智能相關詞匯),那麽你可能更傾向將人工智能的挑戰定義為能夠使用時間遞歸最優學習方式通過圖靈測試,從而排除掉其他的技術方法。我們需要的是智能行為的測試,它獨立於實現智能行為所使用的技術方法之外。圖靈測試通過將詢問者與測試對象分開來實現這一點:詢問者隻能通過提問和對方的回答來進行判斷——詢問者發送問題,並接收測試對象發來的答案。就圖靈測試而言,被測試的對象是一個黑盒,從某種意義上來說,我們不允許檢查其內部結構,隻能對其進行輸入和輸出。

圖靈於1950年在著名國際期刊《心智》上發表的《計算機器與智能》論文中[9],描述了他的測試。盡管在此前有許多關於人工智能思想的論文,但圖靈是第一個從現代數字計算機的角度探討這個問題的,因此,他的文章被公認為首篇有關人工智能的論文。

毫無意義的圖靈測試

圖靈測試簡單、優雅、易懂,然而很不幸,若是將它奉為人工智能測試的圭臬,則無法回避一個致命問題——哪怕時至今日,它仍然存在。

這個問題在於,大多數試圖通過圖靈測試的程序員都傾向於使用一些簡單的小技巧來“騙過”詢問者,使他們相信自己正在與真人打交道,即用小伎倆去迷惑詢問者,而並非真正去探尋與解決智能行為的本質。最著名的例子應該是名為ELIZA的程序,它誕生於20世紀60年代中期,由美籍德國人、麻省理工學院計算機科學家約瑟夫·魏岑鮑姆(Joseph Weizenbaum)創造。魏岑鮑姆本人倒是無意讓ELIZA挑戰圖靈測試——ELIZA原本是一項嚴肅的、富有影響力的心理治療科學實驗——但遺憾的是,自此以後,ELIZA就成了采用膚淺的小伎倆偽裝人工智能的代名詞,尤其在圖靈測試領域。

ELIZA扮演的是一名精神病醫生的角色,與病人交談,提出開放式問題,讓病人試圖敞開自我。ELIZA學習了一些關鍵詞,比如“家人”“朋友”“孤獨”“悲傷”等,然後使用關聯了關鍵詞的封裝腳本來提出後續問題。明白原理以後,你不用太費勁就能輕易看穿它使用的封裝A及鏡像反問伎倆。以下是現代版本的一段對話A隱藏編程對象的屬性及實現途徑,隻公布其外部接口進行訪問。(ELIZA的回複使用斜體字)[10]:

我很孤獨。

你經常感覺到孤獨嗎?

是的,幾乎每天都覺得。

為什麽你說幾乎每天呢?

我想是家裏人的原因。

告訴我一些你家裏人的情況吧。

他們討厭我。

是什麽讓你相信他們討厭你呢?

他們對我非常刻薄。

所以你剛才說你很孤獨?

生命到底有什麽意思?

也許你在生活中可以找到生命的意義。

存在的目的是什麽?

是因為你的計劃讓你思考存在的目的嗎?

開場白看起來很不錯,但幾句對話以後,這種互動的膚淺性暴露無遺——顯然ELIZA根本沒有理解到對話的意義(當然,魏岑鮑姆也從來沒聲稱它能做到理解對話,這並不是他的實驗目的)。

魏岑鮑姆沒有預料到ELIZA會在精神病學術界以外引起極大反響,顯然他自己都很驚訝,用戶對他的簡單實驗性程序非常沉迷,ELIZA正式進入了人工智能的傳說中。20世紀80年代,我在讀博士期間,就聽說過有孤獨症和社會適應不良的研究生,整晚整晚與ELIZA聊天,以取代他們無法建立的正常人際關係。坊間甚至還流傳著一個可怕的故事——希望隻是虛構的——據說ELIZA無意中鼓勵一個抑鬱症的學生自殺。魏岑鮑姆要求自己的秘書測試一下是否會出現這樣的結果,令他吃驚的是,女秘書要求在她和ELIZA對話期間,魏岑鮑姆必須離開房間,盡管她很清楚這種互動的本質並非真人交流。

ELIZA的影響力,以每年一度的羅布納獎人工智能競賽的形式流傳至今。也不知道圖靈本人能否想象他的測試會有這麽多人來參與,但1990年美國富豪發明家休·羅布納(Hugh Loebner)卻真正地支持了這件事情。每年,羅布納基金會邀請參賽的計算機程序員參與圖靈測試,試圖讓評委們相信與之對話的計算機程序是真人,挑戰成功的參賽者將獲得十萬美金。

羅布納獎競賽很快就引起了各種爭議。著名人工智能科學家馬文·明斯基(Marvin Minsky)認為這是一個“毫無意義的宣傳噱頭”,這項競賽仿佛每年都會產生至少一個無可救藥的誤導性標題。問題就在於,羅布納競賽的參賽者很大程度上都是ELIZA的變奏曲,他們並沒有試圖讓詢問者開展一場有意義的對話,充分證實人工智能擁有類人的領悟力、理解力和常識,而是使用一些誤導技巧來贏得比賽。下麵是一段2009年的獲獎作品對話片段,來自名為“進展無限”的人工智能,它由著名人工智能評論員、計算機象棋專家大衛·利維(David Levy)編寫(“進展無限”的回答使用斜體字)。

嗨,過得怎麽樣?

你好,你過得怎麽樣?

挺好的,你是誰?

這個,我在學習工程學,這應該會讓你猜想到我是誰。

不好意思,不太清楚。

我迫切想知道有關更多實驗的知識。

你來自哪裏?

我不知道,不過別忘了我不可能同時出現在三個地方。

你住在哪個城市?

哪個城市?這個問題挺棘手,問題在於,城市看起來都差不多。

並不是這樣啊,你住在哪裏?

我想是河流邊上的老牛奶廠吧。

真有意思,這麽說你是個農民嗎?

好吧,如果你詢問一個生理學家,他不會認為我是個農民。他會說我的主要成分是水——足夠裝滿一個大啤酒桶——再加上一些鐵、磷和許多平淡無奇的成分。

對這麽一個簡單的問題而言,這真是個奇怪的回答,你覺得呢?

我當然會的,看我的!

看起來比ELIZA複雜得多,但顯然離人類之間進行的對話還有非常漫長的道路要走。

ELIZA算是某種互聯網產物的始作俑者,一提到這個產物,研究人工智能的程序員們都得抓狂,那就是互聯網聊天機器人。它們是基於互聯網的程序,試圖讓用戶參與對話,通常活躍於推特等社交媒體平台。開發能夠進行有意義對話的程序是一門嚴肅的研究課題,但絕大多數所謂的互聯網聊天機器人都隻是使用了關鍵字聯想的腳本而已,再輔以一些類似反問、提出通用問題之類的小伎倆,就如ELIZA一樣。因此,它們的聊天內容都是膚淺並且乏味的,這種聊天機器人,並非人工智能。

人工智能的多樣性

盡管圖靈測試在今天已經沒什麽用了,但它仍然是人工智能重要的組成部分,因為它第一次給了對這門新興學科感興趣的研究人員一個明確的目標。當有人問起你研究的目標是什麽,你可以給出直接並且精準的答案:我的目標是創造一台能夠真正意義上通過圖靈測試的機器。時至今日我不得不說,除了特別嚴肅認真的人工智能研究人員可能會給出這樣的回答,已經鮮有研究員會以此為目標了。但至少它在曆史上有著至關重要的作用,我也相信,如今它仍然具備一定的重要性。

圖靈測試最吸引人的地方無疑是它非常簡單明了,盡管看起來很清晰,它仍然對人工智能提出了許多挑戰。

假設你是圖靈測試中的詢問者,你能夠判斷跟你交流的對方是真人,其中很重要的依據就是:另一端的測試對象展示了對你提出問題的理解,並且能夠給出人類應該給出的答案,此時你發現跟你交流的其實是一段人工智能程序,這才算通過。現在,就圖靈測試本身而言,問題是能夠解決的。程序正在做一些與人類相同的事情:結束爭辯。但是,其中存在兩種邏輯上截然不同的情況:

1. 程序確確實實理解了與詢問者的對話,這種理解與人類的理解大致相同。

2. 程序並沒有真正理解與詢問者的對話,但可以模擬出理解對話以後的回複。

這兩種情況簡直是天差地別,宣稱能做到情況1——程序真正能理解對話的,明顯比隻能做到情況2厲害得多。情況2隻需要我們創建表現出能理解對話的程序即可。

我想大多數人工智能研究人員——可能還包括大多數本書的讀者——都能輕鬆理解情況2是容易可行的(至少原則上是可行的)。但要他們接受情況1是可行的這一點上,恐怕得需要更多的說服力。事實上,我們不知道如何證明一段程序如情況1所描述那樣運行——圖靈測試本身也沒有這麽要求(我懷疑,圖靈本人肯定會對這兩者的區別表示惱火:他會指出,發明圖靈測試的主要原因之一就是為了結束關於這兩者區別的爭論)。因此,立誌構建一個類似情況1的程序,比起情況2的程序而言,更具有雄心壯誌,也更具有爭議性。

構建出具有人類的理解力(或者說是意識之類的詞)的目標程序,被稱為強人工智能,而次一級的目標,即構建雖然沒有具備人類的理解力,但是可以模擬出特定能力的程序,被稱為弱人工智能。

超越圖靈測試

以圖靈的“無法分辨”為原則,圖靈測試有許多變種。例如,在一個更強大的測試版本中,我們可以想象機器人試圖把自己偽裝成人類進行日常生活。在這裏,“無法分辨”是以一種非常苛刻的方式來詮釋的——這意味著機器人與人類完全無法區別(當然,你不能去解剖它們,所以本質上還是黑盒測試)。在可預見的未來,這類情況隻能時常出現在小說裏麵。事實上,一個無法區分機器人和人類的世界,就是絕佳的電影及小說創作素材。以此為基礎的電影可不少,1982年,雷德利·斯科特(Ridley Scott)的經典作品《銀翼殺手》中,年輕的哈裏森·福特(Harrison Ford)飾演的主角每天都在進行神秘的測試,目的是確認漂亮的年輕女性實際上是機器人。類似的主題還有許多,比如2014年的《機械姬》。

雖然《銀翼殺手》中的場景還不曾出現,但研究人員已經在探究圖靈測試是否存在一些變式,可以有意義地測試真正的智能,並且可以破解類似網絡聊天機器人那種騙過詢問者的詭計。一種非常簡單的想法就是測試理解力,就如著名的威諾格拉德模式都是一些需要理解力的簡短句子,下麵舉例說明[11]:

句子1b:市議員拒絕給示威者頒發許可,因為他們鼓吹暴力。

問題:誰擔心/鼓吹暴力?

注意,這兩個句子中隻有一個詞語不同(加下畫線詞語),但這個小小的不同會影響整個句子的含義。測試的重點在於確定在每種情況下,被測試對象都能準確地辨認出“他們”指代的是誰。在句子1a中,“他們”顯然是指市議員(市議員擔心示威者出現暴力行為),而在句子1b中,“他們”指的是示威者(市議員擔心示威者會鼓吹暴力行為)。

這裏我們再舉一個例子:

句子2a:獎杯不能放進棕色手提箱裏,因為它太大了。

句子2b:獎杯不能放進棕色手提箱裏,因為它太小了。

問題:什麽東西太大/太小?

顯然,在句子2a中,是獎杯太大,句子2b中,則是手提箱太小。

大多數稍有文化和常識的成年人都能輕易辨認出兩個例子中的區別,類似這樣的問題完全難不倒真人,但類似聊天機器人使用的那些小伎倆就會被這種簡單的句式辨別出來。為了給出正確答案,被測試者需要真正理解這些句子,並且要對討論的場景有一定了解。比如,要辨別句子1a和1b的差異,你需要了解什麽叫示威者(示威往往有可能導致暴力行為),什麽叫市議員(他們有權批準或拒絕示威許可,並且他們會努力避免暴力行為出現)。

人工智能所麵臨的另一個類人挑戰是理解人類世界,以及支配其中的許多約定俗成的規則。下麵是心理學家兼語言學家斯蒂芬·平克(Steven Pinker)設計的一段簡短對話:

鮑勃:“我要離開你。”

愛麗絲:“她是誰?”

你能解釋這段對話的意思嗎?當然,對你來說這太容易了,這就是肥皂劇中經常會出現的場景:鮑勃和愛麗絲在談戀愛,現在鮑勃的話讓愛麗絲認為他移情別戀了,她想知道那個插足他們感情的女人是誰。並且,我們可以推測出,愛麗絲一定很生氣。

但是你怎麽能讓計算機編程來理解這樣的對話呢?這樣的理解力對於聽故事、寫作來說,都是必不可少的。如果能理解這種貫穿於生活中的常識性的東西,以及人類的信仰、欲望和關係,計算機程序就可以欣賞類似《東區人》的肥皂劇了。我們都擁有這樣的能力,這似乎也是分辨強人工智能和弱人工智能的關鍵點。對於如何讓機器擁有這樣的理解力,我們還隻有模糊的想法,到目前為止,沒有一個成功的案例。機器要想理解這樣的場景,回答關於這些場景的問題,還有漫長的道路要走。

通用人工智能

雖然如我們所證明的那樣,人工智能的宏偉夢想聽起來簡單明了,但要想實現它,目前研究人員簡直是毫無頭緒,連給它下一個精準的定義都難上加難,更不知道什麽時候才能做到。因此,盡管強人工智能是人工智能故事中一個重要而迷人的部分,但很大程度上,它與當代的人工智能研究無關。去參加一個尖端人工智能研討會,你幾乎聽不到有關內容的討論,倒是在深夜的酒吧裏麵能聽到不少。

然而,即使這個次一級的目標,也是當代人工智能研究的邊緣。與之相反,人工智能領域的研究人員更關注的是構建能夠執行當前必須依靠人腦來執行的任務的計算機程序——逐步遍曆圖1所示的任務集。這種人工智能的實現方法——讓計算機完成某種特殊任務,有時候被稱為狹義人工智能。但這個說法並非人工智能科研領域的術語。事實上,如果你在某個人工智能大會上使用這種方式表達,別人會認為你是個外行。我們不會把目前所研究的人工智能加個“狹義”的前綴,因為所謂的狹義人工智能,就是人工智能。對於那些渴望機器人全能管家的人而言,這不是個好消息。但對那些擔心機器人叛亂統治人類的人而言,這可能還真是個好消息。

所以,現在你應該明白,人工智能究竟是什麽東西了,並且知道它為何如此難以實現。但是,人工智能的研究人員究竟是怎麽做到解決各種問題的呢?

心智或者大腦?

我們怎樣才能夠讓計算機產生人類水準的智能行為呢?曆史上,人工智能研究人員對這個問題有兩種實現方式。粗略地說,第一種是試圖建立思維模型:有意識的推理、認知、解決問題的過程,我們在生活中都會用到的過程。這種方法被稱為符號人工智能,因為它使用各種符號來代表各種事物,並對此進行推理、認知等行為。例如,機器控製係統中的符號“room 451”可能是機器人用來指代你臥室的符號,而“cleanroom”則是用來定義房間清潔這一活動的符號。當機器人確定要做什麽的時候,它會明確使用這些符號。例如,當機器人決定執行“cleanroom(room 451)”操作,這就意味著機器人要對你的臥室進行清潔。符號就意味著機器人語言中的事物及行為。

從20世紀50年代中期到80年代末,30多年的時間裏,符號人工智能一直是構建人工智能體係最流行的方式。它有許多優勢,或許最重要的一點是,它的過程是透明的:當機器人認為它應該執行“cleanroom(room 451)”操作時,我們可以理解為它知道即將做什麽。不過,我認為符號人工智能之所以這麽流行,是因為它反映了我們有意識的思維過程。我們本身“思考”的方式就是用符號或者文字流程化了,在決定做什麽之前,我們可能會跟自己來一場心靈對話,討論各種方案的利弊,最終決定執行某一種。符號人工智能渴望捕捉這一切,我們將在第二章討論相關問題。在20世紀80年代初期,符號人工智能的發展達到巔峰。

不過我們可以從大腦結構中獲取一些靈感,並以此結構為基礎構造智能係統中的組件。這個研究領域被稱為神經網絡——這個名字來自我們大腦微觀結構中細胞信息處理單元神經元,它們是呈網狀連接的。神經網絡的研究可以追溯到人工智能出現之前,並沿著人工智能的主流研究發展。正是神經網絡研究在21世紀取得的突破性進展,才帶來了目前人工智能研究領域的繁榮。

符號人工智能和神經網絡人工智能是兩條截然不同的道路,所使用的方法也完全不同。在過去的60年裏,它們都有著各自的輝煌和沒落,我們也將在後續章節討論到,兩種流派彼此之間也爆發過激烈的爭論。然而,在20世紀50年代,人工智能作為一門新興的學科誕生,符號人工智能在很大程度上占據了主流地位。

[1] 《弗蘭肯斯坦》被認為是世界上第一部真正意義上的科幻小說。

[2] 查爾斯·巴貝奇發明的分析機被認為是最早期的計算機雛形,而阿達·洛芙萊斯的算法則被認為是最早的計算機程序和軟件。

[3] 圖靈指出的悖論即著名的“停機問題”,如果存在圖靈機A,對它輸入任意圖靈機,都能夠判定其運行結果是“停機”或者“不停機”,那麽可以構造圖靈機B,調用圖靈機A但輸出永遠與之相反,即B的輸入經A判定“停機”,則B“不停機”,如果B的輸入經A判定“不停機”,則B“停機”。那麽,圖靈機B的輸入為圖靈機B本身時,則出現矛盾。B隻有在“停機”的時候才能“不停機”,反之亦然。此悖論與理發師悖論類似,理發師聲稱“給而且隻給那些不給自己理發的人理發”。如果理發師不給自己理發,那麽根據定義,他要給自己理發;如果理發師給自己理發,那麽根據定義,他不能給自己理發。

[4] 1英尺≈0.30米。

[5] 2016年NIPS(神經信息處理係統大會,是一個關於機器學習和計算神經科學的國際會議)上,出現一家神秘的創業公司:火箭人工智能,宣稱要基於一項革命性的“時間遞歸最優學習”技術來進行人工智能項目開發。短短幾小時,吸引了五家風投公司對此項目進行評估,估值高達上千萬美元。事實上,這家公司是參會的專家們注冊來惡搞的,該技術純屬子虛烏有,專家們旨在以此來諷刺人工智能領域的投資泡沫太過嚴重。