王培
(美國天普大學(xué)計算機(jī)與信息科學(xué)系)
計算機(jī)能有創(chuàng)造性嗎?
王培
(美國天普大學(xué)計算機(jī)與信息科學(xué)系)
在和人工智能有關(guān)的討論中常??梢月牭竭@樣的看法:“不管一個計算機(jī)系統(tǒng)表現(xiàn)得多聰明,它不可能像人這樣有創(chuàng)造性,因為它的一切行動都是遵循既定程序的。”這種看法很自然,以至于很多研究人工智能的人都同意。在他們看來,只要他們的程序能解決實際問題就好,至于這些程序是否“像人那樣有創(chuàng)造性”是個見仁見智的問題。而在另一方面,從圖靈1950年的經(jīng)典文章《計算機(jī)器與智能》開始,那些相信人工智能可能達(dá)到人類水平的研究者則試圖從各種角度反駁上述看法。
這場爭論之所以遲遲不能塵埃落定,原因之一就是大家對“創(chuàng)造性”有不同的理解。常見的分歧體現(xiàn)在下列問題上:
1)創(chuàng)造性是主要體現(xiàn)在藝術(shù)創(chuàng)造、科學(xué)發(fā)明等活動中,還是普遍存在于日常生活中?
2)一個主意要多“新”才算“創(chuàng)造”?把已有的材料修改或組合一下算嗎?
3)如果我得到了一個新主意,但后來發(fā)現(xiàn)已有別人想出來過,我還能算有創(chuàng)造性嗎?
4)如果我得到了一個新主意,但后來發(fā)現(xiàn)它是錯誤的,我還能算有創(chuàng)造性嗎?
在這些問題上爭論的雙方各有依據(jù)。為避免在“創(chuàng)造性”的歧義上糾纏不清,下面先討論這個問題的一個相對確切的版本:一個計算機(jī)系統(tǒng)能否解決一個它對其沒有程序的問題?
根據(jù)經(jīng)典的計算理論,一個“問題”是一個給定的輸入輸出關(guān)系。以“排序問題”為例,當(dāng)輸入是數(shù)列5、3、8時,輸出應(yīng)當(dāng)是數(shù)列3、5、8,也就是說把輸入中的數(shù)字按從小到大的次序排起來。對一個問題的“解決”體現(xiàn)為一個“算法”,即一個詳細(xì)的工作流程。比如說“選擇排序” 算法的基本流程是先建立一個空的輸出序列,然后反復(fù)掃描輸入序列,每次選出其中最小的數(shù)字并將其移至輸出序列的末尾,這樣當(dāng)輸入序列為空時輸出序列就給出了最終結(jié)果。
一般而言,一個算法要滿足下列基本要求:
1)其中每個步驟都必須是系統(tǒng)知道怎么做的(如比較兩個數(shù)字的大小、把一個數(shù)字從一處移往另一處等基本操作,或調(diào)用另一個已經(jīng)存在的算法);
2)從一個固定的起點開始,并在每個步驟結(jié)束后,明確指出下一個步驟;
3)對每個可接受的輸入,在有限步驟內(nèi)結(jié)束并生成輸出。
如果一個算法符合了一個問題的輸入輸出關(guān)系,則該算法解決了這個問題。一個問題可以有多個解(如排序問題就可以被多個算法解決),也有可能無解(即沒有算法)。把一個算法用一個計算機(jī)所能執(zhí)行的方式寫出來就得到一個“程序”,而這一過程通常是由人(程序員)完成的。對一個傳統(tǒng)的計算機(jī)系統(tǒng)而言,其解決問題的能力完全由其中的程序決定。如果沒有人來干預(yù),系統(tǒng)對一個問題的處理過程和結(jié)果是一直不變的。計算機(jī)的這種工作方式使得很多人認(rèn)為“缺乏創(chuàng)造性”,因為他們覺得完全有理由說問題實際上是被程序員解決的,而計算機(jī)僅僅是機(jī)械地把這個解決過程忠實地重復(fù)于該問題的一個個具體實例之上而已。因為過程和結(jié)果是事先注定的,說這種機(jī)械重復(fù)有創(chuàng)造性似乎很牽強(qiáng)。
在這種情況下,為什么還有人認(rèn)為計算機(jī)能有創(chuàng)造性呢?以往的辯護(hù)大致基于下列理由:
1)復(fù)雜:當(dāng)一個程序非常復(fù)雜時,它對一個特定輸入的處理往往是沒人能夠精確預(yù)測的,而其結(jié)果也可能是以前從來沒有出現(xiàn)過的。
2)協(xié)作:對一個問題的處理可能是多個程序協(xié)作的結(jié)果,而不完全決定于某個程序,所以不能說這個問題是被某個程序員解決的。
3)隨機(jī):如果程序的流程依賴于隨機(jī)因素(如擲骰子),其結(jié)果就不是可精確預(yù)測的。
4)數(shù)據(jù):如果程序的流程依賴于系統(tǒng)中存儲的數(shù)據(jù),其結(jié)果就不是僅僅從輸入中可以預(yù)測的。
5)學(xué)習(xí):解決某些問題的程序不是人工編制的,而是系統(tǒng)自己從輸入—輸出樣本中總結(jié)出來的。
盡管上述因素的確可以使得有關(guān)的計算機(jī)系統(tǒng)看上去更具創(chuàng)造性,它們?nèi)匀粵]有超出計算理論的“基于算法的解題過程”的框架。計算機(jī)系統(tǒng)對一個問題的解決是基于算法的,只要其輸入輸出關(guān)系符合該問題的規(guī)定,并且解題過程是可重復(fù)的,而并不要求這個算法被直接編制在一個程序里。一個含有隨機(jī)步驟的算法可以被看成在一組確定算法中選擇的結(jié)果,而存儲的數(shù)據(jù)通??梢员豢醋鲉栴}或算法的一部分。至于說目前的機(jī)器學(xué)習(xí)是“基于算法的”,這既是指其中的“學(xué)習(xí)”過程遵循一個事先給定的“學(xué)習(xí)算法”,也是指學(xué)習(xí)的結(jié)果體現(xiàn)為一個供將來使用的“解題算法”。以圖像識別為例,研究者一般是把一批標(biāo)注好內(nèi)容(如“汽車”,“老虎”)的圖片作為輸入提供給一個學(xué)習(xí)算法,以提取各個標(biāo)簽所對應(yīng)的圖片特征。這個學(xué)習(xí)算法的輸出對應(yīng)于一個圖像識別算法,給它一張圖片作為輸入,它就會輸出一個標(biāo)簽以指出圖片的內(nèi)容。
上述各種算法都很有用,但恰恰是這種基于算法的解題過程給人以“刻板”、“循規(guī)蹈矩”的感覺。說人的創(chuàng)造性思維過程不是遵循算法的,這不僅僅是因為創(chuàng)造者自認(rèn)為不循規(guī)蹈矩,而更是因為創(chuàng)造性思維過程一般不是嚴(yán)格可重復(fù)的,因此不對應(yīng)于一個確定的輸入輸出關(guān)系。對同樣的輸入(問題、感知等),在不同的情景中人們常常生成不同的輸出(答案、行動等)。
細(xì)分析起來,“解決一個問題”在計算理論中和在日常生活中的意思是不一樣的。這主要體現(xiàn)在以下幾點:
1)在計算理論中,一個“問題”通常是一個“類型”,其中包含很多“實例”,而其“解決”必須是一個能處理所有這些實例的方法。比如說一個排序算法不能只會給5、3、8排序。在日常生活中,一個“問題”通常是一個“實例”,而其“解決”不必能推廣到同類問題。如果你僅僅是需要給5、3、8排序,你無須考慮你的辦法是否也適用于給4、3、2、1排序。
2)在計算理論中,一個“問題”的定義限定了對每個輸入,哪些輸出是合理的,而這個輸入輸出關(guān)系是和解題系統(tǒng)的過去經(jīng)歷、當(dāng)前處境、解題時間等因素?zé)o關(guān)的。在日常生活中,輸出的屬性常常要根據(jù)經(jīng)歷和處境而定。比如說“創(chuàng)造性”起碼要求輸出在過去沒有出現(xiàn)過,而“靈活性”則要求輸出因情景而變。此外,日常生活中的問題一般都是對解決時間有要求的,而這種時間限制也隨情景而變。
3)在計算理論中,一個“解法”必須是確定的和可重復(fù)的。即使其中用隨機(jī)數(shù),其取值范圍和分布函數(shù)也是事先給定的。在日常生活中,解決問題的過程常常是“相機(jī)行事”,“隨機(jī)應(yīng)變”,“靈機(jī)一動”的產(chǎn)物,而“契機(jī)”、“靈感”等說法無非是指這種過程的不可預(yù)知性和不可重復(fù)性。
這么說來,基于算法來解題對計算理論中的問題是必須的,而對日常生活中的問題不但不是必須的,有時甚至不是我們所希望的。
既然計算機(jī)的所有活動都是被程序控制的,那豈不是說其中所有解題過程都必須是基于算法的,因此就不可能有創(chuàng)造性或靈活性了嗎?未必。這里的關(guān)鍵是認(rèn)識到“有算法”和“有針對某個問題的算法”不是一回事,而“能解決某類的所有問題”和“能解決某個問題”也不是一回事。比如說某個系統(tǒng)可能有比較兩數(shù)大小和交換兩數(shù)位置的算法,但沒有任何排序算法。在這種情況下,它仍可能發(fā)現(xiàn)將5、3、8中的前兩個數(shù)交換位置就可以解決這個問題。這就是我們平常所謂的“具體情況具體分析”,即針對問題實例用有關(guān)知識在當(dāng)前的約束條件下進(jìn)行處理,以尋求一個恰當(dāng)?shù)拇饛?fù)。這個處理仍然可能是由一些算法(如比較、交換等)完成的,但它們都不是針對這個問題(如排序)的,而且即使同一個問題實例再次出現(xiàn),系統(tǒng)的處理和答復(fù)也可能因時過境遷而不同。
文獻(xiàn)[2]介紹了讓計算機(jī)以“相機(jī)行事”方式解決問題的一個具體設(shè)計。和基于算法的工作方式一樣,這種系統(tǒng)的基本操作集也是給定的,但在相機(jī)行事的工作方式下,這些操作并不被事先組織成針對實際問題的操作序列(即程序)并以此作為解決問題的唯一手段。相反,每個操作可以被獨(dú)立選用和靈活組合。系統(tǒng)關(guān)于一個操作的知識主要體現(xiàn)為對其“前因后果”的描述,即在各種條件下該操作可導(dǎo)致何種效果。這類知識可以是事先由設(shè)計者或教育者提供的,也可以是系統(tǒng)從自身的經(jīng)驗中總結(jié)的。當(dāng)接到一個問題時,系統(tǒng)會在時間允許的范圍內(nèi)通過對有關(guān)知識的推理來確定當(dāng)前最適用的操作或操作序列,并在執(zhí)行后根據(jù)實際效果修改有關(guān)知識。
在這里,經(jīng)驗的作用之一就是系統(tǒng)會把那些有用的操作序列在后來當(dāng)做一個復(fù)合操作來用,而它們又可以組成更復(fù)雜的復(fù)合操作。當(dāng)系統(tǒng)積累了足夠多的經(jīng)驗之后,對于某些熟悉的問題可能直接用以往有效的復(fù)合操作來解決。但即使在這種情況下,問題和解法的對應(yīng)關(guān)系也不是一成不變的,而是依賴于很多其它因素,如系統(tǒng)中當(dāng)前的其它活躍任務(wù)等。對一個新穎(即設(shè)計者、教育者和系統(tǒng)自身都沒有考慮過)的問題,系統(tǒng)可能要經(jīng)歷多次失敗才能找到有效的解法,也可能一直找不到任何解法。無論如何,這些經(jīng)歷都會影響系統(tǒng)后來的問題解決策略。由于系統(tǒng)外部、內(nèi)部環(huán)境均在不停變化,并且不會嚴(yán)格重復(fù)以前的情景,系統(tǒng)的每一次解題過程都和以前不完全一樣,因而具有不同程度的創(chuàng)造性。
上述設(shè)計已經(jīng)在計算機(jī)上初步實現(xiàn)了。和傳統(tǒng)的計算系統(tǒng)不同,這樣的系統(tǒng)的問題解決能力不是完全被其初始狀態(tài)所決定的,而是同時取決于先天因素(初始設(shè)計)和后天因素(教育和經(jīng)歷)。和現(xiàn)有的機(jī)器學(xué)習(xí)系統(tǒng)不同,這種系統(tǒng)的學(xué)習(xí)過程和學(xué)習(xí)成果均不能用算法來描述,而是更類似于人的相機(jī)行事過程。這種系統(tǒng)仍然由大量算法構(gòu)成,但這些算法都不是針對應(yīng)用問題的,而是刻畫基本操作、推理規(guī)則、資源分配策略等系統(tǒng)構(gòu)件的。對應(yīng)用問題的解法是這些算法以系統(tǒng)經(jīng)驗為原料創(chuàng)造出來的,并且這些解法不斷地被修改和選擇,因此不和問題組成固定搭配。對這種系統(tǒng)而言,“一切行動都由算法控制”和“解決某個問題的過程不遵循任何算法”的說法都是對的,不互相矛盾。
有人會堅持說 “這個系統(tǒng)歸根結(jié)底是靠算法工作的,因此不能算有創(chuàng)造性”,但這種說法完全混淆了有關(guān)概念的不同使用方式。當(dāng)我們比較人類智能和人工智能時,概念要在相同的方式下使用才有意義。我們說“人有創(chuàng)造性”,這是在“解決問題”的層面上談的,否則豈不是可以說“人歸根結(jié)底是被遺傳基因編了程序的,因此不能算有創(chuàng)造性”。同理,不能說“這個系統(tǒng)還是靠算法解決問題的,只不過它的算法把系統(tǒng)歷史和當(dāng)前狀況包括進(jìn)輸入之內(nèi)了”,因為在這個意義下的算法已經(jīng)不再是針對當(dāng)前問題的了。
一個人工智能系統(tǒng)的創(chuàng)造力當(dāng)然是有前提、有限度的,但這些前提和限度對人同樣存在。具體來說,任何系統(tǒng)的創(chuàng)造力都受其先天因素和后天因素的制約,而再有創(chuàng)造性也不能無中生有。類似地,創(chuàng)造性一定伴隨著失敗的可能性。保證結(jié)果正確性的“創(chuàng)造性思維”是不存在的。計算機(jī)可以像人這樣有創(chuàng)造性,盡管由于經(jīng)歷上的根本差別,計算機(jī)創(chuàng)造出來的結(jié)果和人創(chuàng)造出來的結(jié)果可能有很大不同。計算機(jī)不可能創(chuàng)作出《紅樓夢》,但這不是因為它思維能力上的局限性,而是因為它經(jīng)歷上的局限性。
當(dāng)一個系統(tǒng)以相機(jī)行事的方式來解決問題時,傳統(tǒng)的基于算法的分析方式不再適用。由于解題方法隨情況而變,談?wù)搯栴}的“可計算性”和解法的“計算復(fù)雜性”不再有意義。要刻畫直觀意義下的“可解問題與不可解問題”和“簡單問題與復(fù)雜問題”的區(qū)別,我們需要一個新的理論框架來把系統(tǒng)的知識和資源約束引入分析之中。
“循規(guī)蹈矩”和“相機(jī)行事”(或者叫“照既定方針辦”和“摸著石頭過河”)是用計算機(jī)解決問題時的兩種可能的工作方式,有各自的適用范圍。前者適用于系統(tǒng)有相對充足的知識和資源的情況(系統(tǒng)有針對該問題的算法,且能滿足該算法的時間空間要求);后者適用于系統(tǒng)沒有相對充足的知識和資源的情況(系統(tǒng)沒有針對該問題的算法,或不能滿足現(xiàn)有算法的時間空間要求)。請注意后者并不比前者“好”。當(dāng)兩者都能用的時候,實際是前者更好(可靠,高效),而后者是在前者無法使用時才應(yīng)被采用的。在《人工智能:何為“智”?》一文中,我把上述差別作為計算機(jī)科學(xué)和人工智能的分界線。根據(jù)這種觀點,“智能”是“沒有(相對于給定問題的和可靠的)辦法時的(通用的和嘗試性的)辦法”。
當(dāng)前的主流人工智能研究,包括機(jī)器學(xué)習(xí)研究,仍然自縛于傳統(tǒng)的計算理論。這個理論框架盡管有極大價值,但仍嚴(yán)重制約了研究人員的想象力和探索范圍,以至于沒能真正觸及智能的很多根本性特征,比如創(chuàng)造性。以目前最熱的“基于大數(shù)據(jù)的深度學(xué)習(xí)”為例。這個技術(shù)固然有巨大的應(yīng)用前景,但其基本思路是依照對過去情況的統(tǒng)計結(jié)論解決當(dāng)前的問題。這種策略針對常規(guī)問題(比如說照片分類)是有效的,但我們需要創(chuàng)造性的時候往往是統(tǒng)計結(jié)論不可得(數(shù)據(jù)不足或時間不允許)或不可用(遇到特殊情況)的時候?!吧疃葘W(xué)習(xí)”雖然有“深”之名(指其多層網(wǎng)絡(luò)結(jié)構(gòu)),對問題的概念分析其實非?!皽\”,基本上囿于輸入輸出關(guān)系,而網(wǎng)絡(luò)中間結(jié)點一般不對應(yīng)于有意義的概念。當(dāng)我們處理視覺信息時,大腦所做的遠(yuǎn)不止給圖像貼“正確的”標(biāo)簽,而是對其進(jìn)行依賴于“此時此地”的概念分析,因此常常從同一張照片中得到不同的結(jié)論?;诖髷?shù)據(jù)的深度學(xué)習(xí)難以解決人工智能的基本問題,其主要原因之一是沒有這種隨機(jī)應(yīng)變的能力,而這里的“隨機(jī)”與統(tǒng)計學(xué)里這個詞的意思可是完全不一樣的。
責(zé)任編輯:吳曉麗
本文由《賽先生》授權(quán)轉(zhuǎn)載,圖、表、參考文獻(xiàn)已省略。