(一)興頭的產(chǎn)生 看到樓下陳蘇杭關于用人工智能判斷詩文的帖子,突然激活了我泯滅了 兩年多的對計算機人工智能(AI,artificial intelligence)的興趣。 想談一談,又覺得不帶上點文學的味道,怕不能在這文學論壇上立足。于是 乎,“假作真時真亦假,無為有處有還無”,自己命了這樣一個題:人工智 能判斷一篇文字是否是五言律詩。 不過,人工智能不是一般的窮舉法加“If…Then…”計算機編程語句。 我先說點自己的認識,才能心安理得地進入正題。 (二)人類對自己的挑戰(zhàn) 總的來說,人工智能的研究開發(fā)進度,至今還是令人失望。在一九八○ 前后,似乎有過一個高期望期,但是人們很快就冷靜下來了。 首先是這個項目的復雜性,涉及到哲學、邏輯學、數(shù)學、計算機科學、 生理學、心理學,等等。從理論上講,人類對人工智能的研究,限于數(shù)理邏 輯的不完整性,并且是一個典型的“自我引證”的邏輯循環(huán)圈(self- referring logical loops)。一九三一年,哥德爾(Kurt Godel)發(fā)表了 一篇論文,被許多人認為是二十世紀純數(shù)理邏輯發(fā)展最有意義的事件:他向 人們展示了基本數(shù)理邏輯的不完整性(The Incompleteness Theorem)。 簡單說來,就是一些數(shù)理邏輯的“公理”,例如2+2=4,是無法證明也 無法否定的。關于“自我引證”,古希臘哲學家埃皮明尼底斯(Epeminides )提出過一個著名的例子:“此言虛也”(“This statement is false” )。所謂“自我引證”就是證明者和被證明者為同一事體?;舴蛩惯_特 (Hofstadter)在《哥德爾、埃舍、巴赫》一書中(“Godel,Escher, Bach”)詳細論述過人工智能的這兩大障礙,限于篇幅,我只能點到為止。 其次,從工程實踐上講,人工智能受制于計算機資源的發(fā)展。盡管在短 短的十五年內(nèi),普通微機運算速度從幾個MHz到了上千MHz,內(nèi)存從幾百KB 到了近百萬KB,但是據(jù)說人腦的信息儲存能力在10的7次方個GB的數(shù) 量級(但愿我沒有記錯),很明顯,電腦和人腦單是“硬件”這個差距仍然 在短時間無法逾越。幾年前,IBM的“深藍”系統(tǒng)(注意我用的“系統(tǒng)” 這個詞)戰(zhàn)勝了國際象棋冠軍卡爾帕若夫,人們的確振奮了一下,但隨之也 清醒地看到了人工智能事業(yè)之艱巨。第一,國際象棋是一個相對簡單的“完 整信息系統(tǒng)”(后面將進一步論及),而且“完美”的游戲數(shù)理邏輯和代數(shù) (minimax)在五十年前就建立了,并有人不斷改進。第二,IMB動用了 當今最強大的電腦系統(tǒng),別的特制硬件不說,單是用64個CPU來一對一 負責棋盤上64個位置的運算,就令人咋舌。有趣的是,“深藍”系統(tǒng)的軟 件卻是相對地簡單!基本上就是平行運算、成熟的游戲代數(shù)、由特級大師現(xiàn) 場調(diào)控的勝數(shù)函數(shù)(scoring function)、碩大無比的舊值表(hash table,用來避免重復運算)、龐大的開局和殘局數(shù)據(jù)庫。 難搞并不等于放棄,越具有挑戰(zhàn)性的項目,對人們常常越有吸引力! (三)人工智能的兩大對象系統(tǒng) 完整信息系統(tǒng)是一個透明的、沒有隱蔽條件的系統(tǒng)。圍棋、象棋就是典 型的例子。棋子擺在棋盤上,雙方都占有相同的原始信息(raw informa- tion)。從理論上講,運用改進的 minimax 代數(shù)、單算子力(王=99, 皇后=9,車=5,馬、象=4,兵=1)而不計位置優(yōu)勢的勝算函數(shù),就 能做出永不輸棋的國際象棋程序,只是這樣的程序按現(xiàn)在最好的計算機能力 也需要計算千百年才能走出第一步棋!圍棋主要是爭位置優(yōu)勢,其勝算函數(shù) 仍然相當不成熟,連不入段的水平都難做到。 不完整信息系統(tǒng)是一個只公開部分信息的系統(tǒng)。例如橋牌,在叫牌階段 只精確知道自己手上的牌,叫完后也只精確知道自己和明手的牌。戰(zhàn)爭模擬 是另一類典型的不完整信息系統(tǒng),情報再好,也是不完全的。模糊邏輯是解 決這種體系的唯一手段。 在不少情況下,很多不完整信息系統(tǒng)可以通過限制條件而轉(zhuǎn)換為完整信 息系統(tǒng)。我后面要做的判斷詩詞格律的“人工智能”就是這樣。這里先舉個 極端的例子。大家都知道戰(zhàn)國時期孫臏的賽馬決策:“下馬對上馬,中馬對 下馬,上馬對中馬”。如果我們做兩個數(shù)理邏輯定義:再快的下馬也快不過 中馬,再快的中馬也快不過上馬,這就形成了一個完整信息系統(tǒng)。用簡單的 minimax和幾十行源碼,一秒鐘不到的運算,就能得出和孫臏同樣的結(jié)論。 有的系統(tǒng)似乎是完整信息的,但由于數(shù)理邏輯處理的復雜性,也失去了 部分有用的信息,而成為“不完整信息系統(tǒng)”。人工智能的一個大項目“物 體識別”就是如此。作為第一步的“圖形識別”,就是認清明擺在那里的一 件東西,再賦予它準確的邏輯意義,為后面的判斷打下基礎。對于簡單的歐 基里德幾何各體,對象素進行矩陣代數(shù)運算,基本上能解決。稍稍復雜一點 的,就力不從心了。美國最新的“戰(zhàn)斧”巡航導彈,前幾百公里由全球定位 系統(tǒng)(GPS)制導,是人們預先設置好的,談不上人工智能,只有最后幾公 里,打開了彈攜攝像機,尋找具體目標,才有一點“圖形識別”的意義。盡 管一般建筑物的外形是簡單的幾何體組合,這“戰(zhàn)斧”還是常?!翱场逼兀? 那可以說是代表了目前最先進的“圖形識別”人工智能技術,更何況更深一 層的“物體識別”?兩個同樣大小、漆成白色的木球和銅球,即使識別出了 是相同的球體,仍然沒有解決問題的一半:雖然伽利略在比薩斜塔證明它們 作為自由落體有共同點,你把它們?nèi)舆M水里,一沉一浮卻是迥然不同的。海 灣戰(zhàn)爭中有一定數(shù)量的坦克毀于“友邦火力”,也可見“物體識別”人工智 能的致命性。另一方面,因為缺乏統(tǒng)一的數(shù)理工具,有些“圖形識別”看似 復雜,做起來卻很簡單。一個明顯的例子就是指紋甄別:你在象素矩陣里找 到分岔點(minutiae)連接起來,再比較它們的相對位置就行了。 (四)數(shù)理邏輯的精巧性 對于數(shù)理邏輯,西方人常常強調(diào)其“精巧性”(elegance)。說穿了, 所謂“精巧性”就是用簡單而嚴密的代數(shù)方程描述邏輯。例如歐基里德幾何 的邏輯,傳統(tǒng)是用畫線畫圓來描述和證明。迪卡爾(Descartes)于一六一 九年十一月十號(他的日記記下了這個精確的日子),躺在戰(zhàn)地醫(yī)院床上, 看著天花板一角一只飛來飛去的蒼蠅而觸動靈感,發(fā)明了迪卡爾坐標系。從 那以后,不但歐基里德幾何變得精巧了,非歐幾何也成為可能。在計算機人 工智能的開發(fā)上,將邏輯問題用簡單的代數(shù)公式來表達,已經(jīng)不是選項,而 是必需! 多次提到的minimax游戲代數(shù),就充分體現(xiàn)了“精巧性”,這個一切智 力游戲的邏輯基礎,其核心部分,用C/C++等支持循環(huán)調(diào)用(recursive calls,即一個函數(shù)調(diào)用這個函數(shù)本身)的語言寫出來,可以不超過30個 句子!這循環(huán)調(diào)用的技術本身,也是解決不可測循環(huán)深度的人工智能運算的 首選手段。一個談不上什么人工智能的BBS程序,事先不能預料一個頭帖 會有多少跟帖,編程者可以預設一個最深層次,例如1000吧,雖然足夠, 但在數(shù)理邏輯上總是不穩(wěn)的、不夠精巧的。而循環(huán)調(diào)用卻能簡單地做到不依 靠任何預設常數(shù),因為后者能自我判斷深入還是中止的邏輯操作,算是淺顯 的“人工智能”。 (五)詩詞格律的人工智能 現(xiàn)在,該做自己的作業(yè)了。 判斷一篇文字是否是五言律詩屬于人工智能中最難命題之一的“自然語 言處理”(natural language processing)。為了自己能做,需要定義一 些條件,使之成為一個“準”完整信息系統(tǒng): (1)五言律詩有四個基本句式: 仄仄平平仄 平平仄仄平 平平平仄仄 仄仄仄平平 這里不包括所謂“孤平補救”(平仄平仄平)的特例。當然,主要問題 解決后,多加幾個“If … Then …”邏輯判斷來處理“孤平補救”并不是 什么太難的事。 (2)嚴格的“粘對”法則 律詩中的奇數(shù)句叫“出句”,偶數(shù)句叫“對句”,出句和緊跟的對句組 成一“聯(lián)”。按照“一三不論,二四分明”的字位,同一聯(lián)中,出句和對句 的平仄要相反,上聯(lián)對句和下聯(lián)出句的平仄要相同。這就是“粘對”法則。 (3)沒有脫簡串簡、缺字串字的情況。 (4)對句(或首句)的韻,屬于語音判斷(phonetics)的項目,不在這 里考慮。 (5)所判斷的文字能準確分句,即有分句符號(delimiter),或者是標 點,或者是空位,或者是斷行。這個不是必要條件,不行就數(shù)五個字算一句。 這個“準”完整信息系統(tǒng)定義后,就可以著手按下列步驟開發(fā)。 (1)首先在計算機建立一個漢字平仄圖錄(map)或者數(shù)據(jù)庫,以便能迅 速有效地確定一個漢字的平仄。陰平和陽平是平聲,上聲和去聲是仄聲,這 是沒有問題的。但已經(jīng)在現(xiàn)代普通話里消失了的入聲(吳系方言似乎還保留 著)屬于仄聲,并分別演化成了上述四聲:化入上聲和去聲的無所謂,反正 都是仄,并入陰平和陽平則有點麻煩(例如“國”、“白”)。不過這個圖 錄或者數(shù)據(jù)庫是一次建立,永久使用。雇一個江浙一帶的人來搞,應該準確。 (2)為了“精巧”地使用邏輯代數(shù),將五言律詩的四個基本句式用一個整 數(shù)來表示。辦法之一可以這樣:在32-bit操作系統(tǒng)中,一個整數(shù)(integer) 含有32個bits,原則上可以用來表示最多三十二個字的句子,對五言律詩是 多多有余。從最小bit開始,句子中每一個字占一個bit,平聲為“0”,仄 聲為“1”: 句 式 二進制 十進制 ————— ————— ——— 仄仄平平仄 10011?。健?9 平平仄仄平?。埃保保埃啊。健?2 平平平仄仄?。保保埃埃啊。健?4 仄仄仄平平 00111?。健? (3)將被判斷的文字,按分句符號為界讀入內(nèi)存,按上列代數(shù)通過漢字平 仄圖錄或者數(shù)據(jù)庫進行賦值,如果不是這四個基本句式中的任何一個,就可 以立即否定返回。句式判斷肯定后,保留這一句的賦值。 (4)讀入下一句并賦值,先判斷新一句的句式,符合后再用 bit級邏輯代 數(shù)判斷“粘對”法則。設有兩個句子,賦值分別為A和B,則 “粘”成立如果(A AND 10)XOR(B AND 10)= 0, 這里“XOR”是排己或然操作,而“AND 10”的操作是施行“一三不論, 二四分明”的過濾(十進制10=二進制01010); “對”成立如果(A AND 10) XOR (B AND 10) = 10。 (5)保留最后一句的賦值,重復(4)到(5)直到文字全部讀完,或者某 一步出現(xiàn)否定結(jié)果。 (6)如果同時紀錄讀入的句數(shù),還可以判斷肯定了的文字是五絕、五律、 長律,還是沒有寫完的作品(最后的出句沒有對句)。 上面的開發(fā)過程,很容易引申到七言: 句 式 二進制 十進制 ——————— ——————— ——— 平平仄仄平平仄?。保埃埃保保埃啊。健?6 仄仄平平仄仄平?。埃保保埃埃保薄。健?1 仄仄平平平仄仄?。保保埃埃埃保薄。健?9 平平仄仄仄平平?。埃埃保保保埃啊。健?8 “粘”成立如果(A AND 42)XOR(B AND 42)= 0, “對”成立如果(A AND 42) XOR (B AND 42) = 42。 至于詞,在句式方面工作量要大些,因為每個詞牌有不同的句式結(jié)構(gòu), 需要建立詞牌賦值(每個詞牌由一串整數(shù)構(gòu)成)的數(shù)據(jù)庫,然后逐句判斷。 但是,詞沒有統(tǒng)一的“粘對”法則,在本身的句式結(jié)構(gòu)里面就包括了。 (六)最后幾句話 上面判斷五言律詩的人工智能,大致是可以用的,也留下了許多改進提 高的余地,例如“孤平補救”的特例。具體的源碼則視編程語言有所不同。 最后,我想再說一遍:人工智能不是簡單的窮舉法加“If … Then…”, 而是一門數(shù)理邏輯和計算機結(jié)合的科學。遠未成熟,大家努力! |
|