計算機下棋簡史|AlphaZero完爆世界棋類冠軍背後

Play is the beginning of knowledge.

遊戲是知識之源。

——George Dorsey(多爾西)

… because chess requires intelligence.

下棋需要智能。

——Alan Turing(圖靈)

1. 機器下棋史前史

1769年,德國發明家兼外交家肯佩倫(Wolfgang von Kempelen)男爵準備造一臺機械的下棋裝置,一年後機器完工,取名“土耳其人”(The Turk),那時大家就把這玩意叫作“自動機”(automaton)。肯佩倫把這臺機器展示給奧匈帝國的掌權者特蕾西婭(Maria Theresia,奧國女大公、匈國女王),於是它就成為娛樂歐洲各皇室的保留節目。稱為“土耳其人”是因為這個裝置的後面坐著一個土耳其裝束的木頭人。1804年,男爵死後,“土耳其人”被轉賣給德國發明家兼娛樂人馬澤爾(Johann Nepomuk Maelzel),1809年馬澤爾把它展示給拿破崙,並和這位歐洲不可一世的征服者對弈一局。拿破崙執白棋先手,但最後“土耳其人”大勝,拿破崙惱羞成怒,把棋盤上的棋子全胡擼到地上。有好事者把拿破崙和“土耳其人”的對戰棋譜記錄在案,確實藝不如“機”。陸續和“土耳其人”接觸過的名人還有富蘭克林、愛倫坡和數學家巴貝奇。

计算机下棋简史|AlphaZero完爆世界棋类冠军背后

肯佩倫製造的、號稱能自動下棋的“土耳其人”,其實是個騙局。(南方週末資料圖)

土耳其人”在歐洲巡演了幾十年,最後被人發現是個徹頭徹尾的假貨:那個裝置裡總是有個活人,而且是個下棋高手。肯佩倫只是發明了個魔術而已。那時的水平,想造臺會下棋的機器,門兒都沒有。1827年,“土耳其人”到美國巡演時,請了美國當時的頂級高手施倫伯傑(Schlumberger)藏匿其中。在巴爾的摩的一­­次表演中,兩個孩子發現施倫伯傑頻繁出入後臺,發現了這個秘密並透露給報界。見過這臺機器的高人(如富蘭克林和巴貝奇)一開始就猜這是魔術而不是科技。但當時還是有很多人願意相信“土耳其人”真會下棋。1838年馬澤爾和施倫伯傑相繼去世,隨後“土耳其人”也退役,被費城的中國博物館收藏,1854年博物館的一場大火徹底摧毀了“土耳其人”。

和牛頓、霍金一樣,巴貝奇還做過一屆劍橋大學的盧卡斯教授,他對所有機器裝置都感興趣,他在看到“土耳其人”時,正在研製第一臺機械計算機“分析機”(analytical engine)。他認為他的分析機也可以下棋,但那至多是猜測。

计算机下棋简史|AlphaZero完爆世界棋类冠军背后

圖靈

下棋一直就是人類智能的挑戰,自然也成了人工智能的標誌之一。二戰沒結束時,圖靈就研究計算機下棋,他1947年編了第一個下棋程序,可惜那時計算機的時間(簡稱“機時”)很寶貴,輪不到他上機——地主家沒餘糧,圖靈也不能保證機時。但即使後來拿到機時,那機器和程序的水平也很有限。米奇(Donald Michie)是圖靈的追隨者,1950年試著在紙上模擬程序,和圖靈對弈,但這實在不是辦法。圖靈在曼徹斯特大學的同事普林茨(Dietrich Prinz)接著圖靈的思路,在1951年寫了一個殘局程序,能在離將死還有兩步的情況下,找到最優解。這個問題也被稱為“兩步將死”(mate-in-two)問題。

2. 跳棋插曲

1951年,圖靈的朋友克里斯特拉切(Christopher Strachey)在曼徹斯特Mark-1上寫了第一款跳棋程序。圖靈在1952年曾與之對弈一局,輕鬆取勝。1956年IBM的塞繆爾(Arthur Samuel,人工智能里程碑達特茅斯會議的參加者之一)寫了第二個跳棋程序,這款程序的特點是自學習,這也是最早的機器學習程序之一,後來不斷改進,曾經贏過盲人跳棋大師。

20世紀80年代末,最強的跳棋程序一直就是加拿大阿爾伯塔大學的Chinook,作者是現任阿爾伯塔大學理學院院長的計算機系教授舍佛(Jonathan Schaeffer)。數學家丁斯利(Marion Tinsley)自20世紀50年代起就一直是跳棋的人類冠軍。丁斯利對跳棋理論研究很深,對舍佛團隊也很支持,但美國、英國和加拿大的跳棋協會一直拒絕Chinook參賽。

计算机下棋简史|AlphaZero完爆世界棋类冠军背后

1992年,跳棋程序Chinook(奇努克)挑戰跳棋高手馬裡恩·廷斯利(Marion Tinsley),當時,跳棋程序還是不敵人類。

為了和Chinook比賽,丁斯利放棄了他的冠軍稱號。1992年丁斯利大戰Chinook並取勝,1994年再戰,但在比賽中,丁斯利不幸確診為胰腺癌,不久病逝。丁斯利的公開紀錄,除了輸給Chinook幾局棋外,從沒有輸給過任何人類棋手。此後Chinook孤獨求敗。

舍佛團隊繼續精研跳棋理論和實踐,直到2007年,他們證明對於跳棋,只要對弈雙方不犯錯,最終都是和棋,而Chinook已經可以不犯錯。他們的結果發表在2007年9月的《科學》雜誌上,自此跳棋這一頁就算翻過去了。舍佛的興趣遂轉向德州撲克和圍棋。

3. 計算機下棋之初

幾乎和圖靈同時,馮諾伊曼也在研究計算機下棋,他和經濟學家摩根斯頓合作的《博弈論》1944年出版,其中首先提出兩人對弈的Minimax算法。香農(Claude Shannon)1950年在《哲學雜誌》發表“計算機下棋程序”(Programming a Computer for Playing Chess)一文,開啟了計算機下棋的理論研究,其中主要思路在“深藍”和AlphaGo中還能看到。有趣的是,戰時圖靈在布萊徹利莊園破解德國密碼,而香農在貝爾實驗室研究密碼理論,其中還用到了他後來發明的信息論。圖靈的工作涉及軍事,直到1974年才部分解密,而香農則偏理論。圖靈戰時到訪美國普林斯頓大學和貝爾實驗室,曾和香農多次會晤,但他們從來沒聊過密碼學,儘管香農猜到了圖靈在幹啥。

计算机下棋简史|AlphaZero完爆世界棋类冠军背后

香農

1950年香農去英國參加信息論會議時到曼徹斯特大學圖靈的辦公室回訪,他們這次只聊了下棋和大腦,仍然沒聊密碼。圖靈沒有參加這次在倫敦的會議,但貢獻了兩篇短文,一篇講機器學習,另一篇講下棋。直到圖靈的工作解密,香農才知道圖靈在戰時已經用到了“熵”,但是不是從瞭解信息論的美國同事處學來的就無從考證了。信息安全專家史密斯(S. W. Smith)曾寫過一篇題為“圖靈來自火星,香農來自金星”的文章,很明顯這是受那本《男人來自火星,女人來自金星》的啟發。

香農把棋盤定義為二維數組,每個棋子都有一個對應的子程序計算棋子所有可能的走法,最後有個評估函數(evaluation function)。傳統的棋局都把下棋過程分為三個階段:開局、中局和殘局,不同階段需要不同的技術手段。香農的論文引用了馮諾伊曼的《博弈論》和維納的《控制論》。

计算机下棋简史|AlphaZero完爆世界棋类冠军背后

馮·諾依曼

Minimax算法中,二人對弈的一方為max,另一方為min,max一方的評估函數要越高越好,min一方的則越低越好。max和min的對弈就形成了博弈樹。樹的增長是指數式的,當樹很深時,樹的規模會變得不可控。達特茅斯會議的組織者之一麥卡錫首先提出α-β剪枝術以控制樹的增長。紐厄爾、司馬賀和肖(Newell,Simon,Shaw,簡稱NSS)在他們著名的定理證明程序之後,又做了下棋程序。他們首先實現了α-β剪枝術,其程序是在一臺Johnniac上實現的。原始的Minimax算法是在博弈樹被全部畫出後再靜態地計算評估函數,而α-β剪枝術則採取邊畫樹邊計算評估函數的動態方法。當評估函數的值超越給定的上界和下界時,樹的搜索過程就停止,這樣大大減少了樹的規模。平均而言,在同樣資源限制下,α-β剪枝術要比原始Minimax算法搜索的樹深度多一倍,也就是說,可以比Minimax向前看的步數多一倍。

计算机下棋简史|AlphaZero完爆世界棋类冠军背后

IBM 704

第一個可以走完全局的下棋程序是IBM的工程師伯恩斯坦(Alex Bernstein)1958年在一臺IBM 704上做的。估計那時IBM支持下棋就像後來支持“深藍”和谷歌支持AlphaGo一樣,雖沒什麼短期實用價值,但是很好的公關。機器每步要花8分鐘想,隨便會走幾步棋的人就能擊敗這個程序。

1959年,麻省理工學院的幾位本科生在當時剛到校任教的麥卡錫指導下開始學習計算機下棋,他們1962年本科畢業時,用Fortran實現了一款實戰下棋程序,跑在IBM新出的7090大型機上,此時已經可以擊敗一般的象棋初學者了。這個結果變成了其中一位學生Kotok的本科學位論文。1962年麥卡錫前往斯坦福大學任教,他進行了持續改進,這個程序後來被稱為Kotok-McCarthy程序。

1966年,美蘇的對抗也擴展到計算機下棋。蘇聯科學院的理論與實驗物理研究所(ITEP)也在本所研製的一臺M20計算機上開發了一款下棋程序,他們要和斯坦福大學的Kotok-McCarthy程序一決高下。從1966年11月22日開始,直到1967年3月10日止,他們通過電報的方式走了四局。最後蘇聯3:1戰勝美國。

當時麻省理工學院的程序員格林布拉特(RichardGreenblatt)也在改進Kotok的程序,還是位成績不錯的棋手。他在PDP-6上實現了程序MacHack VI。1966年,一直批評人工智能的哲學家

德雷弗斯*也和MacHack對弈過一局,並且輸給了MacHack,這倒沒有改變他對待人工智能的態度。1967年MacHack參加象棋錦標賽,並累計積分1400 ,這相當於不錯的高中生水平。這個程序用了16KB內存,後來PDP的廠家DEC把它預裝到所有PDP系列的機器中。MacHack也是Internet前身ARPANET上最早的網絡遊戲。當時給格林布拉特幫忙的志願者中有個人叫克柔可(Steve Crocker),他後來成為Internet前身ARPANET的重要人物,並創辦了互聯網標準化組織IETF且寫了第一個標準化文本RFC。

* 那時德雷弗斯的那本後來引起爭議的《計算機不能幹什麼》還沒出版。

司馬賀在1957年預言十年內計算機下棋程序可以擊敗人類,明顯未果,於是他在1965年再度預言這個目標在20年內可以實現。1968年國際象棋大師列維(David Levy)和麥卡錫打賭十年內機器不可能贏列維。1978年最厲害的計算機程序CHESS和列維比了一盤,自然是列維贏,麥卡錫為此輸了500英鎊。CHESS在20世紀70年代末80年代初一直是計算機下棋的冠軍。此時尚看不到計算機短期內可以贏人的可能性。

1971年,當年擊敗Kotok-McCarthy的蘇聯小組改進了他們的程序,新程序名叫KAISSA(象棋女神)。KAISSA和傳奇大師斯帕斯基(Boris Spassky)賽了兩局,一負一和,這個戰績驚動了棋界。1972年KAISSA接受了《共青團真理報》的挑戰:KAISSA將和讀者下兩盤,《共青團真理報》從讀者寄來的各種走法中挑出推薦最多的。這其實就是“眾包”概念的雛形。最終,KAISSA還是一負一和。但1972年斯帕斯基卻又輸給美國怪人菲舍爾(Bobby Fischer),這是美國第一次在國際象棋領域戰勝蘇聯,尼克松稍晚在會見勃列日涅夫時送了對手一副袖珍國際象棋,成心噁心人家。

1970年開始,美國計算機學會(ACM)的年會都在晚餐時舉行計算機象棋比賽,作為娛樂節目。CHESS連著四年都是冠軍。第二屆時,紐厄爾的學生柏林納(Hans Berliner)參加了,取得第二名,這鼓舞了紐厄爾,他決定把柏林納留校,專職在卡內基梅隆大學研究計算機做計算機象棋。柏林納本人也是國際象棋高手,曾贏得美國通訊賽冠軍,他留校後,並沒有走教學制(tenure track),而是走了研究口——卡內基梅隆的研究制教員也分三級,研究員(Research Scientist)對應助理教授,高級研究員(Senior Research Scientist)對應副教授,而首席研究員(Principal Research Scientist)對應正教授。後面幾年的比賽,都有紐厄爾的學生參加,成績不錯。

计算机下棋简史|AlphaZero完爆世界棋类冠军背后

貝爾實驗室總部

進入20世紀80年代,又出了新一茬象棋程序。當時最厲害的兩個電腦棋手,一個是跑在超級計算機克雷上的Blitz,另一個則是貝爾實驗室的專用機器Belle。Belle的發明人之一湯普森(Ken Thompson)那可是了不起的人物,在計算機界無人不曉。他最傑出的成績是發明了UNIX操作系統(現在蘋果操作系統、波音747的飛行系統和安卓手機操作系統都是Unix的變種)和C語言,1999年被克林頓授予美國“國家技術獎章”。他在計算機下棋上的貢獻多少被略視了。在1982年的北美計算機象棋錦標賽上,Belle擊敗了Blitz。Belle是第一個取得“大師”稱號的計算機棋手。1982年在去蘇聯比賽的路上,Belle被美國政府在肯尼迪機場海關沒收,理由是企圖向蘇聯輸送先進武器,Belle的終端裡確實有當時對蘇聯禁運的超大規模集成電路。拖了小一年功夫,最後湯普森等破費了600美元罰款,才贖回Belle,但比賽耽誤了。

20世紀80年代,機器之間的比賽此起彼伏,但機器和人之間仍然有著不可逾越的鴻溝。1980年,天才弗雷德金(Edward Fredkin)專為計算機下棋建立了弗雷德金獎金,獎有三等,頭等獎是10萬美元,獎給第一款能贏現任世界冠軍的下棋機器。

4. “深藍”

20世紀80年代中期,卡內基梅隆大學的柏林納開始用專用硬件來實現下棋機,他的成果HiTech馬上成為最強的機器棋手。這時來自中國臺灣的許峰雄到卡內基梅隆大學計算機系跟隨孔祥重讀計算機體系結構(常說的“硬件”)方向的博士,孔祥重是孔子的嫡孫。許峰雄的室友很快把他拉到HiTech項目幫忙設計一個硬件的評估函數,但許峰雄卻和柏林納關係不睦。在資金有限的情況下,許峰雄和幾個研究生利用業餘時間快速開發出了ChipTest,而ChipTest立即變成了HiTech的競爭對手,並受到柏林納的打壓。許峰雄在計算機系也變成眾矢之的,每次都是靠導師孔祥重的幫忙化險為夷。ChipTest的改進版“深思”(Deep Thought)1989年贏得弗雷德金二等獎:成為第一個國際象棋特級大師的機器棋手,累計分超過2400。隨後HiTech也加入這個行列。而此時IBM意識到“深思”的商業價值,於是勸說整個團隊在畢業後加入IBM,開發下棋機,把對手鎖定為當時的世界冠軍俄羅斯特級大師卡斯帕羅夫。卡斯帕羅夫對機器下棋非常熟悉,他在屢次和機器對決後曾說:機器下棋沒有洞見(insight)。

计算机下棋简史|AlphaZero完爆世界棋类冠军背后

IBM的外號叫Big Blue,於是新的項目1996年被命名為“深藍”(Deep Blue)。1996年ACM年會的閉幕節目是“深藍”對決卡斯帕羅夫,六局棋。“深藍”旗開得勝,第一局就贏了老卡,最後還是老卡4:2贏得決賽。但此時老卡對“深藍”刮目相看,他說機器對手不光有洞見,而且有幾步簡直像“上帝下的”。

第二年“深藍”和老卡再戰,老卡號稱要捍衛人類的智力尊嚴。他贏了第一局,但隨後則越來越保守,徹底輸給“深藍”。老卡下棋過程非常情緒化,這有時會給人類對手施加壓力,但“深藍”壓根不吃這套。

1997年5月11日,老卡認輸,“深藍”成了第一位戰勝當時世界冠軍的機器。事後,卡斯帕羅夫回憶:第二局是關鍵,機器表現超出他的想象,它經常放棄短期利益,表現出非常擬人的危險(“showing a very human sense of danger”)。

在“深藍”贏了卡斯帕羅夫之後,職業棋手並沒有因此而改行,他們反而更多地依賴計算機來訓練。而職業比賽的解說者也越來越多地藉助計算機程序來分析解說一場比賽。機器作為教練,反而更快地幫助人類棋手進步。有美國高中的象棋教練觀察到從來就沒有過這麼多年輕棋手在年齡很小時就積分這麼高,這都得益於計算機教練,因為過去的孩子從來就沒有機會能和特級高手比賽。

瑞典青年棋手卡爾森(Magnus Carlsen)就是如此。內行說卡爾森的下法很像計算機。2013年卡爾森在印度的金奈(Chennai)客場擊敗印度老將、衛冕冠軍阿南德。現在兩臺個人電腦下棋,人已經看不懂它們在下什麼。儘管如此,“深藍”隊員,同樣畢業於卡內基梅隆大學的坎普爾(Murray Campbell)仍然不認為機器有智能。這其實是整個“深藍”團隊的意見,他們都不是人工智能出身,反而和同系的人工智能教授結下樑子。“深藍”獲勝後,美國人工智能學會(AAAI)曾經組織過一個研討會,對人工智能啟發式搜索做出過傑出貢獻的加州大學洛杉磯分校教授科夫(Rich Korf)曾不滿“深藍”團隊的立場。

5. 圍棋和AlphaGo

相對於計算機在國際象棋中的勝利,中國象棋的進展一直落後。一些外行認為中國象棋要比國際象棋難,其實非也。“深藍”勝利之後,聰明人認為計算機下棋這事已經到頭了,沒人願意費力不討好,IBM也解散了“深藍”團隊。遲至十年後的2006年,中國象棋程序開始擊敗特級大師級別的人類棋手。倒是圍棋確實更具挑戰性,但圍棋在西方沒什麼受眾,自然沒什麼聰明人願意花時間。

圍棋的棋子多,組合可能性也多,畫出博弈樹的所有可能枝葉後,在上面跑α-β不太經濟。於是聰明人想到了蒙特卡洛方法。蒙特卡洛方法最常用的教學例子就是計算圓的面積:在一個正方形裡貼邊畫一個圓,然後隨機向這個正方形裡扔沙粒,扔到足夠多時,開始數有多少沙粒落在圓裡,結果除以所扔沙粒總數再乘以正方形面積,就是圓的面積。

思路和求圓的面積類似,隨機模擬對弈雙方走棋。當走棋的次數很多時,就可算出下棋點的概率,然後挑概率最大的地方落子。谷歌的AlphaGo首次引用了強化學習(Reinforcement Learning),使得機器和自己對弈學習。強化學習的發明者是巴託(Andy Barto)和他的學生薩頓(Richard Sutton)。

计算机下棋简史|AlphaZero完爆世界棋类冠军背后

說來話長,馮諾伊曼在普林斯頓大學設計計算機的主要助手是伯克斯(Arthur Burks),伯克斯培養了有史以來第一個計算機科學的博士霍蘭德(John Holland)。霍蘭德發明了遺傳算法。霍蘭德的一個有名的學生是科德(Edgar Codd),因發明關係數據庫而獲圖靈獎。巴託是霍蘭德的一個大器晚成的弟子,巴託博士畢業後被神人阿比卜(Michael Arbib)招到麻省大學計算機系,在那裡培養了自己的第一個博士生薩頓。在經歷了人工智能的此起彼伏後,薩頓現在阿爾伯特大學任教。正是他和已經轉向圍棋研究的舍佛的碰撞,萌生了把強化學習應用到圍棋的想法。在神經網絡的低潮期,巴託和薩頓利用他們所在的麻省大學計算機系和GTE實驗室資助了一幫同仁,其中就有後來成大器的麥克·喬丹。

強化學習從20世紀80年代就被髮明,但一直不被重視,是AlphaGo使得它發出亮光。薩頓還值壯年,AlphaGo團隊裡就有4個薩頓的學生,其中包括首席科學家席爾瓦(David Silver)。巴託老兵不死,在做了一屆計算機系主任後,幾年前從麻省大學退休了。退休前,他終於看到強化學習漸成顯學,他和薩頓合著的《強化學習》馬上要出第二版了。

內容摘自@圖靈教育 出版的《人工智能簡史》。

计算机下棋简史|AlphaZero完爆世界棋类冠军背后

定價:49.00元

  • 視野宏闊,筆法風趣,全方位解讀人工智能

  • 兼具廣度與深度,給普通讀者以趣味,給專業讀者以激情

  • 領域內資深前輩尼克老師作品,與書中部分人物或為師友或相熟相知,除了詳實的考證還有奇聞軼事

本書全面講述人工智能的發展史,涵蓋人工智能的起源、自動定理證明、專家系統、神經網絡、自然語言處理、遺傳算法、深度學習、強化學習、超級智能、哲學問題和未來趨勢等。

本書既適合普通讀者詳細瞭解人工智能的來龍去脈,作為人工智能的啟迪之書;也適合專業人士瞭解人工智能鮮為人知的歷史,並提供深入學習的資料。

活動推薦:

本期 GIAC 部分人工智能與機器學習精彩議題如下:

计算机下棋简史|AlphaZero完爆世界棋类冠军背后


分享到:


相關文章: