知識是人類智能的基礎,人工智能問題的求解又是以知識為基礎的。具體來說,知識的獲取、知識的表征(或表達、表示)以及運用知識進行推理,是人工智能科學研究所要解決的三個主要問題。這其中,知識表征處在核心的位置。
何謂“知識表征”?從最寬泛的意義上說,如果“知識”被理解成關於這個世界及其屬性的信息,那麽“知識表征”則是這一信息的有組織的形式和結構。從哲學的層麵上說,知識表征涉及某物與被指稱或指代的某物之間的關係。從人類心智這一角度來看,知識表征也是一種心理表征(mental representation)和心理程序(mental procedure)。事實上,我們可以將人工智能的知識表征看作是介乎於心理、大腦和計算機三者之間的某種東西;知識表征無論如何都具有主體或主觀的因素。由於這樣一種特殊性,人工智能知識表征以它特有的方式揭示出了人類智能及知識體係的不同表現方式,這對我們正確理解科學知識體係中的兩大類型或式樣及其與兩類神經機製和思維方式的關係,是有幫助的。
由於人工智能研究主要是通過計算機實現智能機器或通過計算機模擬人類智能,因而計算機工作原理和內部組織結構既展示了人類知識精華的集中運用,又在人工智能層麵上體現了特定的知識形態。這兩個方麵是相互為用的。
數學家羅傑·彭羅斯(Roger Penrose)曾經指出,“算法”思想的淵源可以追溯到九世紀波斯數學家那裏。雖然這一概念最重要、最有說服力的說明來自圖靈機,在圖靈那裏,“算法”的本質就是確保獲得某一結果的一係列步驟;“程序”則是指某種(編程語言)的有限指令表。[17]這是一個很有價值的思想。它不僅指出,“算法”的含義是由“算術”(arithmetic)概念發展而來的,而且追溯了現代計算機概念的東方源頭。
以中算為例,中算求解的計算過程借助於算籌一類工具進行操作運演;通過對算籌的布列形成所謂“籌圖”,然後按照一定的運算規則或口訣,一步一步地進行“運算”,直到求得結果。這當中,運籌的過程就是程序操作過程,它是一步一步機械地、刻板地進行的。[18]例如,籌製的加法程序可以表示如下(見圖9-1)。
①置被加數於上列,加數於下列,數位相齊;
②由左至右逐位將下列數籌並入上列;
③和數在十以上者,在其左邊位添加一籌。
圖9-1 加法程序框圖
①輸入A、B(按籌數計算排列);
②比較首位序號n、s,如相等,則同位數籌相加;
③如n、s不等,使n-s=r位數籌相加;
④排列所加和數,令其為C,
⑤輸出C。[19]
學者王鴻鈞、孫宏安(1988,2008)將《九章算術》中的“約分術”與現代計算機程序語言進行了比較,並將前者譯為BASIC語言程序:
10 INPUT A,B
20 WHILE A﹤﹥ B
30 IF A﹤B THEN SWAP A,B
40 A=A-B
50 WEND
60 PRINT A
70 END
或者譯為C語言程序:
﹟include﹤stdio.H﹥
main( )
{unsigned int a,b,c;
seanf(“%d,%d”,&a,&b);
while(a!=b){
if(a﹤b){
c=b;b=a;a=c;
}
a-=b;
}
printf(“n\%d\n”,a);
}[20]
這些均證明,程序性、機械化是中國算學的主要特征。到《九章算術》時,中算已經具備了機械化程度很高的計算程序,有些甚至還包括了現代計算機語言中的某些構造性要素。
指出現代計算機算法思想的東方源頭,並不是說這種算法思想就是東方數學的簡單回歸;它隻是表明,東方數學思想促成了近代數學思想的某種程度的轉變;如果近代西方數學思想不發生“算法”的轉向,就不可能結出現代計算機算法思想的果實。而且,其間發生的思想交融與互補,並不隻止於數學方麵,它也與邏輯有關。也就是說,近代邏輯的“算法”轉向,與數學一道,對現代計算機科學思想產生了積極的影響。關於數學史上的“算法”轉向,將在後麵的第十三章中進行比較詳細的分析,這裏僅就邏輯算法傾向做一簡要追溯。
算法思想改變古典形式邏輯的一個突出例子,就是英國哲學家和邏輯學家托馬斯·霍布斯(1588~1679)關於“推理即是計算”思想的提出。作為近代歐洲邏輯史上的一個重要邏輯學家,霍布斯認為“計算”就是指數學上的加減乘除四則運算,其中,加和減是最基本的。而人類心靈的兩種基本活力也體現在加和減兩個方麵。因此在他看來,“所謂‘推理’是指計算”[21]。或者說,邏輯學上的“推理”隻不過是計算中的一種——語詞係列間的相加減。那種不用語言和斷言進行的推理,可稱作“不用語詞進行的內心推理”。這實際上是肯定了形式邏輯以外的“推理”活動的存在。那麽,這種新的邏輯形式又是什麽呢?霍布斯認為,這種新的邏輯是一種類似於計算的演算邏輯。研究表明,霍布斯的上述思想對後來的萊布尼茨創立邏輯演算體係有重大啟發意義。其中,從外延性的角度來處理命題和推理的觀點,對後來的布爾、弗雷格等人創立數理邏輯也有根本性的意義。甚至,霍布斯本人關於人類理性活動存在著大量機械活動的想法以及推理與計算合一的觀點,對當代計算機科學也有一定的意義。[22]
霍布斯之後的萊布尼茨繼承了前輩的思想。他試圖擺脫古典形式邏輯主要以自然語言作為表述工具的做法,代之以形式化的語言以建立他所謂的“通用語言”。他最初的通用語言符號素材更多地來自於以埃及象形文字和漢語表意文字為代表的語言符號係統。以後,他又進一步創製了一些邏輯符號,並借用了代數運算方法,提出了概念演算的思想。他設想,人們可以像進行數學演算那樣來進行“思維的演算”。他清楚地看到概念、判斷、推理所具有的數學演算性質,注意到邏輯學的詞項、命題、三段論等與代數的字母、方程式、符號變換等具有某種形式的相似性,認為所有這些都是克服亞裏士多德邏輯學的不足的方麵。在此基礎上,他創立了數理邏輯。鑒於數理邏輯對現代計算機的基礎性作用,人們普遍認為,萊布尼茨也是現代控製論和計算機科學的先驅者。
到19世紀,英國數學家、邏輯學家布爾(George Boole,1815~1864)提出的邏輯代數與其說是從代數方麵發展了數理邏輯,不如說是從邏輯方麵奠定了代數的邏輯基礎。在布爾的工作中,他運用邏輯的方法對代數的基本運算(AND、OR和NOT)進行了嚴格的定義。例如,AND的定義是,給定兩個類,稱它們為x和y,表達式xANDy表示由x和y的所有公共元素構成的集合。進一步,由xANDy表示為x和y的“邏輯積”,即xy。這是布爾的一個創造性貢獻。這樣,在嚴格定義的基礎上形成布爾代數的三個公理:
①xy=yx;
②x(y+z)=xy+xz;
③xn=x,其中n是任意自然數。
顯然,用邏輯符號表達代數運算關係,勢必將代數運算關係看作符號之間的邏輯關係,這在純粹數學方麵邁出了十分重要的一步。
更為重要的還在於,布爾代數中使用了二進製數碼0,1。如等式x=1的意義可理解為命題X是真的,等式x=0的意思可理解為X是假的。按照這種用法,更複雜的命題的真值可用小寫字母的組合,例如,命題X和Y的合取的真值可用xy來表示,X和Y不相容的析取的真值可用組合x+y來表示。這實際上是建立了二值邏輯的代數係統,也是邏輯史上第一個邏輯演算係統,它部分地實現了萊布尼茨當年的設想。尤其是,布爾代數的二進製數碼成為後來的計算機集成電路片的設計原理。就是使用熱離子管或晶體管而產生的電脈衝線開關狀態能夠為布爾代數的0,1數碼所描述:如果一個開關的接通(開關在兩種狀態中不是這一狀態就是另一狀態)與命題的肯定相仿,那麽它的切斷就與同一個命題的否定相仿;兩個開關串聯與兩個命題的合取相仿,而兩個開關的並聯就與用“或”聯結兩個命題相仿,諸如此類。可以說,計算機的邏輯電路可能是布爾代數的最好的物理表現形式。[23]
布爾的工作表明,算法思想的確立並非“單向度”的;在一定程度上,算法思想與演繹思想實現了某種程度的融合。在布爾代數的邏輯化工作之後,邏輯學家弗雷格等人加快了算術的邏輯化進程。弗雷格認為,算術是可計數的領域,因而“數”是算術中最基本的概念。但是,通常人們對數的理解要麽滿足於直觀,要麽認為其無法下定義。對此,弗雷格從集合論出發來“定義”數。認為一個數就是一個集合,“所謂數就是某個類的數”。這樣來理解數,數就成了一個普遍的概念。也即對數的理解被置於形式化的一係列條件當中;它不再是被當作直觀的對象,而是被當作思考的對象。在此基礎上,“算術定律是分析判斷,因而是先驗的。這樣,算術就會僅僅是一種擴展形成的邏輯,每個算術句子就會是一條邏輯定律,然而是一條導出的定律”[24]。
同時,弗雷格、羅素(Bertrand Russell)等人的謂詞邏輯或謂詞演算係統為數理邏輯的發展開辟了新的方向,進而成為人工智能知識表征的重要邏輯基礎。盡管他們的邏輯符號及公式中沒有出現例句中的“是”字,但其所蘊含的仍然是古老的“S是P”命題形式。而且,“S是P”中所指涉的“存在”含義仍然被保留下來。這說明,謂詞邏輯與古典形式邏輯有關。這些成果標誌著數理邏輯的最後形成,也為計算機原理的形成奠定了堅實的理論基礎。例如,在人工智能史上占有重要地位的麥卡洛克、皮茨兩人建構的模型,所采用的符號係統就是R.卡爾納普的語言Ⅱ係統(包括羅素和懷特海數理邏輯中各種記號)。他們還將神經元的輸入—輸出關係看作一個布爾函數。
在計算機數學史上最具有革命性的一步是由圖靈邁出的。1936年,圖靈在普林斯頓發表了《論可計算數及其在判定難題(entscheidungsproblem)中的應用》一文,首先提出“圖靈機”概念。由於此前的1931年,數學家科特·哥德爾(Kurt Godel)證明希爾伯特規劃是不可能的;因此,圖靈將他關心的問題放在任何按公理係統的特殊數學形式之外,來回答是否存在能在原則上一個接一個地解決所有數學問題的某種一般的機械步驟的問題。然而,這一問題回答的部分困難在於確定什麽叫作“機械過程”。為此,圖靈進一步設想如何才能把“機器”的概念表達出來。他認為也隻有當某種機器在進行機械運算時人們才能弄清所謂“機械過程”。這就是所謂“能行過程”,即存在這樣一些計算,它們的完成受到純機械法則的支配。關於這些計算,圖靈注意到哥德爾提出的一組重要的遞歸函數可具體化為若幹非常基礎的數字操作步驟;而所有圖靈機計算函數都可以是遞歸的。而且,根據“丘奇—圖靈論題”,對於任何可計算某一函數的有效步驟,都存在一個能夠進行計算這個函數步驟的圖靈機(TM)。也就是說:“算法”“可計算的”“遞歸的”“有效的”等,彼此是等價的,均表示圖靈機實行的機械運算。
必須注意的是,圖靈在回答是否存在能在原則上可一個接一個地解決所有數學問題的某種一般解題步驟問題時,實際上給出了“機械過程”“算法”“有效性”等概念的精確定義。當這些定義用抽象的數學形式(遞歸函數)表達時,實際上給出的是關於機械運算的形式係統,而他的圖靈機不過是一個理想化的機器而已。正如後來哥德爾(1964)評論到的:“由於後來的進展,特別是由於圖靈的工作可以給出形式係統一般概念的精確而又無疑地適當的定義,因而不可判定的算術命題的存在和一個係統的一致性在同樣係統中的不可證性,現在能夠對包含一定量有窮數論的每一個一致的形式係統加以嚴格的證明。圖靈的工作對‘機械程序’(別名‘算法’或‘計算程序’或‘有窮組合程序’)的概念作出了分析。這個概念被表明是等價於‘圖靈機’的概念的。”[25]這實際上就是我們所說的“一般算法概念”。
在這種算法概念的基礎上,1945年,馮·諾依曼用電子加法器和存儲的方式構成了計算機的體係結構,部分地彌補了圖靈機的不足。其設計的計算機類型被稱為“馮·諾依曼型計算機”。該計算機包括存儲器、控製器、運算器、輸入—輸出設備等組成部分。其中運算器和控製器是信息加工處理的中心部件,合稱為中央處理器(CPU)。其基本過程是:提取指令、操作(執行)指令和存儲結果。可以說,從數字計算機開始,通過一係列“提取”“操作”和“存儲”控製而實現的序列加工的主要思想,一直占據支配地位,而這一地位是由馮·諾依曼奠定的。
總之,現代數字計算機等價於通用圖靈機和馮·諾依曼機,在原則上可運行執行任何計算的程序。所謂“計算”或“算法”,就是按照預先編製好的程序對有限長的符號序列進行有窮的形式變換,以產生一組新的符號。它所遵循的是所謂“物理句法”。這依然是人工智能研究不可或缺的主要方麵,由此而形成的“心智計算理論”(computational theory of mind,CTM)自然成為人工智能和認知科學的主要理論基礎。
回過頭來可以看到,同樣是“算法”概念,在圖靈機與中算之間已經有了很大的差異。在中算中,算術並不表現為一類抽象的命題或陳述集,而是表現為以“術”為中心的一係列算法。這些算法是為解決具體實際問題而存在的。雖然在這個過程中,具有一般性的、有效的算法會以“術”的形式保留於算法程序當中,且算籌符號操作具有了“語形”的特征,但總的來看,算式或“命題”之間並不構成具有演繹推理性質的邏輯關係或句法關係,因而不能從算籌的符號及符號之間的關係進行“形式化”的推演。當然,圖靈機或圖靈算法畢竟處理的是“可計算”“算法”一類的問題,而且按照哥德爾定理:不管任何精確(形式化)數學公理和不同法則係統,如果它足夠寬廣於包容簡單算術命題的描述並且其中沒有矛盾,則必然包含某些用在該係統內所允許的手段不能證實也不能證偽的陳述。人們在確定哪一種算法為“真”時,並不是隻能在某個算法係統內所能確定的。這就必然包含某些非形式化(例如直覺)手段的使用。事實上,圖靈在他1936年的論文中的“假說”已經表明:對符號序列進行一種能行過程的非形式的直覺概念完全等價於一種用圖靈機所執行過程的精確概念。這一點正如M.A.阿爾貝勃所評論道的:“對於這個假說根本無法給出形式上的證明。一個形式證明必須對所包含的概念下定義,而這種形式上的定義是和直覺概念的想法不相容的。人們在此能做出的僅僅隻是一種借助於歸納推理的證明;迄今為止在遞歸函數論中凡是在直覺上顯然存在有能行過程的地方總是可能設計一種圖靈機來執行一種與上述過程相應的嚴格過程。”[26]對於形式化與非形式化在圖靈機中的這種相互關係,我比較讚同美國亞利桑那大學哲學和語言學教授、認知科學家R.M.哈尼什的觀點。他認為,算法是不同於程序的(程序通常用於編碼算法,並且能運行算法);算法與程序之間的關係就像數(number)與數字(numerals)的關係,也可以比作一個詞的意義與詞的聲音(形狀)之間關係。[27]後者涉及語形過程。
人工智能對人類知識的表征不僅體現在一般算法概念的形成方麵,而且還體現在數學的機器定理證明上。我們可以以吳文俊的幾何定理機器證明為例。正如吳文俊所指出的,20世紀六七十年代的幾何定理的機械化方法及其證明雖然展示出寬廣的前景,卻在實際研究工作中遇到了發展的“瓶頸”問題:雖然希爾伯特的《幾何基礎》證明幾何的基礎完全可以排除“連續”這樣一類公理,因而幾何的公理、定理與證明,實質上都可以用有限次的構造步驟來敘述和完成;但是,像希爾伯特依據公理係統引入數係統、坐標係統(如投影幾何、仿射幾何)並不是件很容易的事。而且,一般的幾何學著作偏重於歐幾裏得傳統,著眼於公理間的邏輯關係,而置數係統與坐標的引入於次要的地位,或直接從數係統出發建立幾何學,而不再考慮幾何對象的現實來源與公理基礎。[28]這兩種偏頗的傾向造成了公理係統與數量關係之間的“斷裂”。這樣,希爾伯特的方法使用範圍就顯得過於狹窄,而邏輯學家塔爾斯基(A.Tarski)的方法效率又太低。例如,1976年IEEE刊物上一篇關於美國機器證明試驗的報道指出,運用塔爾斯基方法於計算機隻能證明一些近於同義反複的“兒戲式”定理。為改變這種狀況,吳文俊另辟蹊徑,直接從中國古代機械化、構造性思想中汲取營養。他抓住中國古代幾何學始終不與數量相分離的傳統以及宋元時期將幾何問題化為多項式問題等解題“精華”,從幾何的公理係統出發,引進數係統與坐標係統,使任意幾何定理的證明問題成為純代數問題,並對幾何定理假設部分的代數關係式進行整理,最後在計算機上實施。[29]從吳文俊的證明方法可以看出,其方法的成功“是我國自《九章算術》以迄宋元時期數學的直接繼承”[30]。
人工智能既匯集人類不同的知識精華,同時又以自身獨特的形態對知識進行表征。最常見的知識表征形式(或方法)包括一階謂詞邏輯形式、生產式係統、語義網絡、框架、腳本、麵向對象的知識表征、過程知識表征、狀態空間知識表征以及與/或樹表征等。這些知識表征形式各有所長。其中,框架知識表征的“頂層”是固定的,代表假設局勢中的真實事物;下麵的若幹層有許多“終端”,每個終端可以規定它賦值必須滿足的條件。計算機科學家尚克(Roger C.Schank)的腳本展現了人類某種活動的事件序列,並且能隨具體情境的變化而對某些規則進行調整。這樣做的結果試圖在人類實踐的背景上將經驗知識納入知識表征當中。同樣地,基於規則的係統可以方便地表達關於“該做什麽”的策略性信息。例如,在西蒙等人的通用問題求解程序中,人們依靠啟發式方法,即依靠經驗性規則,求得問題的滿意解決,而無須考慮所有的可能。另外,語義網絡的進一步發展被看作是具有內部分層的網絡形式。網絡中的每一個節點或典型情境僅僅代表所謂“次概念”(subconcepts)和“次符號”(subsymbolic)。次概念和次符號之間通過網絡激活機製獲得的權值被認為是係統對於環境的真實表征。