“圍棋程序何時入段、何時戰(zhàn)勝人類頂尖棋手?估計的長短不一。我估計的是2020年入段,2100年戰(zhàn)勝人類最高水平者?!?/p>
昨日,全世界都在關注人工智能AlphaGo與韓國圍棋棋手李世石的對弈。第一局韓國棋手李世石不敵人工智能AlphaGo,今日,雙方已經(jīng)進行了第2局比賽,李世石仍然告負。
在很長一段時間里,電腦上的棋類程序一直都被劃歸到“游戲”的范圍內(nèi),我的父親曾經(jīng)在家里的電腦上玩象棋和圍棋——那時候還沒有網(wǎng)絡和聯(lián)眾,AI也相當笨拙,但電腦展現(xiàn)出的無限可能就已經(jīng)讓我們沉迷。
“棋類程序”始終跟隨著電腦硬件和人工智能水平高速發(fā)展,在現(xiàn)在,一個非職業(yè)選手也很難有把握輕松戰(zhàn)勝哪怕最易得到的棋牌游戲,但所有的故事都有一個開始,本文講述的就是二十多年前的一位化學教授,他以一己之力編寫出圍棋程序,并用該程序在電腦圍棋比賽中連續(xù)奪得三屆冠軍。他預言AI會最終戰(zhàn)勝人類棋手。如今,這個預言已經(jīng)實現(xiàn)。
今天(原文載于3月9日),全世界都在關注一件事:李世石代表人類接受人工智能AlphaGo的挑戰(zhàn),捍衛(wèi)人類智慧的最后一道壁壘——圍棋。誰會輸誰會贏?如果李世石被打敗,意味著什么?現(xiàn)在,我們都知道,第一盤李世石敗了。(觸樂3月10日17點增補:第二盤李世石也敗了。)
短短幾年內(nèi),人工智能在圍棋盤上取得這樣的成就,其中的科學原理和技術細節(jié)已經(jīng)不是我們這些外行人能夠搞得懂的。甚至和風行一時的電腦圍棋程序也不是一回事。
二十多年前,有那么一群人,他們興致勃勃地編寫程序,想讓電腦學會下圍棋。他們無數(shù)次被告知,下圍棋,電腦是下不過人類的,可他們硬是要試一試。
而在這個過程中,有一位中國人曾經(jīng)站在最頂峰。在當時世界最高水平的電腦圍棋比賽中,他設計的程序連續(xù)奪得三屆冠軍,并且打破三次與人對弈的受子紀錄。在人人爭說AlphaGo的今天,我想,我們至少應該提到他的名字。
這個人叫陳志行。
1991年退休之前,他是中山大學化學系教授,主要研究方向是量子化學,出版過《有機分子軌道理論》。
你會想:量子化學?這么高端的概念,想必被利用到他的電腦圍棋里去了。
錯了。
他把電腦和圍棋結合在一起,是退休以后才開始做的事。他是狂熱的圍棋迷。不過有違于幼時學棋的規(guī)律,他到三十歲后才棄象棋而學圍棋。他學圍棋也體現(xiàn)出自然科學研究者的風格:
就像進行科學研究一樣,把收集到的資料分門別類做成卡片。這種卡片是用小方格本或幾何練習本裁成的,上面畫了圖、做了注解,其中很大一部分成為正面是問題圖、背面是解答圖的形式。這種工作一直做到1977年,帶資料的卡片積累到七八千張之多。……隨著棋力的增長,我越來越感到圍棋高深莫測,而自己智力不足,難以達到最高的境界以領會其無上的妙意。于是我獨辟蹊徑,結合自己所喜愛的“數(shù)字游戲”,研究外勢相當于多少目、弱棋相當于負多少目等問題,儼然形成了一種圍棋定量理論。這種研究似乎沒有使自己的棋力得到什么增益,卻為后來研究電腦圍棋伏下了重要的一筆。
文革期間,大學里正常的教學活動被打亂,陳志行把過剩的精力都投入到圍棋中。他甚至寫了一封信,表明不想當中山大學化學系講師了,請他的圍棋老師推薦他去廣州市體委工作,就是當一名雜工也好,只要能經(jīng)常得到圍棋老師的指點就滿足了。他的圍棋老師看信后不禁愕然,問他是不是發(fā)神經(jīng)。
他學計算機也是靠自學。
1977年,他去上海開學術會議,同住的另外三個人都懂電腦,經(jīng)常談論編程問題,他一竅不通。恰巧賓館樓下有一個書亭,里面有計算機書籍賣,他就去買了兩本。
就這樣,他開始接觸電腦。那一年,陳志行四十六歲。
陳志行是個坐言起行的人。
他在1977年12月22日從上?;氐綇V州,到一個月后的1978年1月25日,就第一次去中山大學的計算中心,使用計算機運行他編制的量子化學程序,而且還得到了小小的學術成果。七十年代末、八十年代初的電腦,和我們現(xiàn)在所熟悉的可不一樣。
那時卻要在穿孔機上把編好的程序轉化為穿在紙帶上一排排的孔,每排代表一個字符;程序有錯就得用剪刀和膠水來修改紙帶?,F(xiàn)在的計算機放在桌子上,只占半張書桌的位置。而那時的是一個龐然大物:比大衣柜還大得多的一組機箱,加上讀紙帶機、控制臺、打印機等,每件都比現(xiàn)在的一整套要大得多。但是它的計算速度和存儲量都還比不上我開始搞電腦圍棋時用的一臺XT電腦,而XT比現(xiàn)在流行的奔騰電腦要慢幾百倍,其他功能就更差得遠了。就是那樣的計算機,全校也只有一臺。要上機,就得登記、排隊。
就是靠這樣的條件,陳志行編寫了《BASIC練習與計算實踐程序系統(tǒng)》、《物理化學教學程序系統(tǒng)》、《熱力學計算程序系統(tǒng)》,于1989年獲得國家教委的優(yōu)秀教學成果國家級優(yōu)秀獎。
重要的是,他不僅把電腦當做工具,而且是真心喜歡玩電腦。
兩大興趣碰撞在一起,陳志行把圍棋和電腦結合起來似乎是順理成章的。
又聽說國內(nèi)已有人搞,還說日本在“第五代”電腦的研制目標下組織了圍棋程序的研究課題,要求在5年內(nèi)使程序達到5級的水平。這些消息使我的心弦被強烈地扣動了。把大量的時間花在下圍棋上,無非是過過棋癮。何不投入電腦圍棋的研究,更有意思?
1991年,陳志行從中山大學退休,他申明不接受返聘,而是把全部精力投入電腦圍棋的研究之中。
首先得買電腦。學校的那臺大家伙是蹭不了了,也太慢。他傾囊買了一臺XT電腦。
然后,再找了一本人工智能的書,“隨便看了一下,許多內(nèi)容也沒看懂”。
就這樣,陳志行用半個寒假編出了一套圍棋程序。
果然馬馬虎虎地能下棋了,而且比起世界上第一個商品圍棋程序“尼姆西斯”也不遜色。寒假后還用了一個多月的業(yè)余時間作了改進,棋力已超過“尼姆西斯”的最早版本。
他把這個程序取名為“手談”,handtalk。
1991年,陳志行參加國際電腦圍棋賽,取得第六名。
這一版本已經(jīng)初步解決了分塊、自由度、眼形判斷、串殲逃等問題,但遠未完善。
牛刀小試之后,他向朋友借了1200元,買了一臺286CPU電腦,一年多后升級為386/40,為的是作出以下改進:
加進定式;
廢棄原有的自由度方案而改為更合理的方案;
對棋子間的連斷問題作判斷:盡管還是初步判斷,卻要用一個大模塊。把串殲逃的以二氣串為限擴展到三氣串;
處理雙殲問題,即打吃一串而殲滅另一串;
增加模式;
給程序以初步的對殺能力。
經(jīng)過這樣的改造,大體完成了后來的世界冠軍程序的基本架構。
1992年,參加第一屆全國電腦圍棋賽,冠軍。
1992年,參加東京的國際電腦圍棋賽,亞軍。
拿到了不到一萬元人民幣的獎金。還是不夠買一臺Apple的Macintosh(麥金塔)電腦。而隨著計算精度的提高,“手談”在陳志行僅有的一臺XT和一臺286上運行得越來越慢。
當時的程序不像現(xiàn)在那樣具有兩臺電腦間通訊自動對弈的功能,只能把一臺電腦的走步人工地輸?shù)搅硪慌_電腦。后來把那臺286升級為386,又買了一臺舊的286。兩個程序的對弈就在這286和386間進行。
等得不耐煩的時候,他就在房間里打太極拳。打幾招,程序才下一步棋。
1993年11月,陳志行前去成都,參加新一屆國際電腦圍棋賽。他分別戰(zhàn)勝了克拉澤克的“波蘭之星”、韓國人李忠虎、陳克訓的“棋慧”、佛特蘭德的“多面”、高國元的“棋石”、德國人的MODGO。11月12日,陳志行以六戰(zhàn)全勝的戰(zhàn)績首次登上世界冠軍寶座。
這回終于有錢買28000多元的Macintosh了。
幾個月后,陳志行和日本一家公司簽了合同,以《棋王2》的名字在日本發(fā)行“手談”。1995年12月上市。
1994年11月,臺北的國際電腦圍棋賽,“手談”獲得第三名。
接下來,就是陳志行和“手談”最輝煌的時代了。
1995年9月,東京的FOST杯世界電腦圍棋錦標賽,冠軍。“手談”還被日本棋院認定為5級。
1995年,漢城的應氏杯國際電腦圍棋賽,冠軍。
1996年9月,東京的第二屆FOST杯世界電腦圍棋錦標賽,仍然是冠軍。
1996年,陳志行的老單位中山大學協(xié)辦應氏杯國際電腦圍棋賽,他主場作戰(zhàn)。除了“手談”,他所指導的一個小組編制的程序“烏鷺”也參加了比賽。
“手談”又是冠軍。
1997年,名古屋的第三屆FOST杯世界電腦圍棋錦標賽。“手談”在第二輪就出了問題:它的對手雖弱,卻使“手談”超時作負。
這也許是正是因為對手弱,在棋盤上留下許多未決的問題,使“手談”要花費大量時間來計算。
但有驚無險,“手談”仍然奪得FOST杯世界電腦圍棋錦標賽三連冠。
1997年,應氏杯國際電腦圍棋賽在美國舉辦?!笆终劇庇钟龅搅嗣盼荼荣惖淖畲髮κ郑塑撬乖O計的GO4++。在賽會所發(fā)的資料中,芮斯這樣說:
近兩年來我以全部工作時間改進GO4++……最近與『手談』96年應氏杯版本對弈66局,勝56局,平均勝15.6點……這個結果使現(xiàn)時GO4++成為日本市場上銷量最大的圍棋程序。
看來,競爭已經(jīng)從單純的智力比拼蔓延到商業(yè)領域。
在比賽中,“手談”意外地輸?shù)袅藥妆P。在與GO4++的正面對局中,也連續(xù)失誤,幾乎已成敗局,沒想到到收官時,GO4++卻應對失措,“手談”竟然反敗為勝,死里逃生。
至此,陳志行和他的“手談”連拿六次國際冠軍,成為當時電腦圍棋程序的最強者。
一個退休老教授,在人生的晚年另起爐灶,也摘取了世間的最強稱號,無論從什么角度來看,這個故事都太勵志了。
在剛開始研究電腦圍棋時,他的老朋友勸他不要太拼命,要注意身體,多活幾年,多看幾眼這個五光十色的世界。他的回答是:
我心里倒覺得不在乎多看這個世界,而是想多干點東西。我告訴他搞電腦圍棋的決心,并在信中表明:不拿下這個世界冠軍,死不瞑目!
平心而論,當年的電腦圍棋比賽在形式上是程序與程序的比賽,目的可以說是為了“教會電腦下圍棋”,與今天AlphaGo與真正的圍棋職業(yè)選手、人類的最強者競爭,完全不可同日而語。
每次應氏杯賽后,都會安排讓冠軍程序與三名少年棋手進行受子比賽。1997年,“手談”的三場受10手比賽,結果是二勝一負。可見“手談”棋力的真實水平。
但是再強大的巨人也有學步的時候。現(xiàn)在回頭看,以“手談”為代表的老式電腦圍棋程序盡管落后得有點可笑,但如果沒有它們,也就不可能有今天的AlphaGo。
陳志行這樣的人工智能先行者,就像牛頓寫出《自然哲學的數(shù)學原理》之前的古希臘自然哲學家一樣,在后人眼里他們的研究簡單、幼稚、充滿謬誤,但他們同樣體現(xiàn)了人類的智慧與理性在某個特定時期所能達到的最高成就。
今天,我在騰訊看李世石對決AlphaGo的現(xiàn)場直播,聽到嘉賓主持、CSDN總裁蔣濤在回顧人工智能學習圍棋的歷程時,提到陳志行的名字,說他是圍棋人工智能的第一代專家。
畢竟還是有人記得他,記得“手談”的。在那本名字叫做《電腦圍棋小洞天》的書結尾,陳志行這樣預言道:
人工智能科學現(xiàn)在還處于幼年,它能夠解決國際象棋那樣的智能問題;而對于圍棋那樣的復雜問題,就得靠好幾代人的不懈努力,認真研究,找尋規(guī)律,上升為理論,逐步提高。
究竟要多長,現(xiàn)在還不容易估計。有人在1997年FOST杯賽期間,也就是“深藍”戰(zhàn)勝卡斯帕洛夫不久,發(fā)起了一個意見征集:圍棋程序何時入段、何時戰(zhàn)勝人類頂尖棋手?估計的長短不一。我估計的是2020年入段,2100年戰(zhàn)勝人類最高水平者。
陳志行已于2008年去世,如果他知道今天AlphaGo戰(zhàn)勝了當今最強大的人類棋手李世石,比他預想的要快得多,想必也會激動不已。
謝謝你,陳老師。