設萬維讀者為首頁 廣告服務 聯繫我們 關於萬維
簡體 繁體 手機版
分類廣告
版主:彎刀
萬維讀者網 > 競技沙龍 > 帖子
說說電腦圍棋
送交者: fatcop 2007年10月04日00:00:00 於 [競技沙龍] 發送悄悄話

五十年代末的時候人工智能專家預測過個10來年電腦會跟人腦一樣聰明,但是至少到現在,電腦下圍棋比人腦還差得遠 。

電腦下不過人腦可能有兩種原因,一是電腦還不能處理圍棋的複雜度,二是電腦圍
棋不受重視。電腦圍棋確實比較難以上手,開發一個圍棋程序需要較高的圍棋棋
力,軟件開發經驗和人工智能背景。儘管如此,電腦圍棋研究已經有40年了,現在
包括劍橋和微軟研究院在內的多個研究組都在研究電腦圍棋的算法,特別是大家
熟知的應昌期先生的百萬美元懸賞更是在上世紀末掀起了一股電腦圍棋熱,可惜
如今最好的電腦程序棋力還低於業餘初段,遠沒達到應先生戰勝職業棋手的標
准,只能眼睜睜地看着百萬獎金在2000年過期。

那麼電腦圍棋到底複雜在哪裡?深藍可以戰勝象棋世界冠軍,為什麼圍棋程序不行?電腦圍棋和電腦象棋有什麼區別?

電腦象棋的基礎是樹搜索,簡單地說就是根據當前棋局狀態,先試一下可能的
每一步,然後試一下每一步對手的應手,針對對手的應手再決定你的下一步,
如此下去直到終盤。大家可以把這個過程想像成建立了一個樹狀結構,樹的第一
層是本方下一步,樹的第二層是對方應手,樹的底部是棋局最終結果。根據最
終結果,象棋程序就可以選擇當前情況下最佳的下一步。當然這棵樹奇大無比,
目前計算機還不能算到底部,通常必須停止在中間某層。程序停止往下算的時候,
因為棋局尚沒結束,對該層的每種狀態(或者樹分支)必須做一下形勢判斷。電腦
象棋的判斷函數是基於盤面的子力和對王的相對位置,準確度相當高而且耗時
少,再加上深藍每秒鐘可以評價兩億個盤面狀態,使得計算機可以準確地算出
去15,6步,而人腦要想在一盤棋里自始至終保持這樣的算度,幾乎是不可能的。

圍棋棋手的思路和電腦象棋的算法還是比較接近的:搜索和評價,但是圍棋高手能
夠很快地去掉絕大部分搜索分支,並且對難以定量的棋形和味道,有常人難以
理解的判斷。趙治勳在評價老對手小林光一的時候說:他對棋形有特殊的感覺,
總是能夠很快找到棋局的重點,從而把時間花在需要的地方。雖然快速縮小搜索
空間是圍棋對弈必須的技能,不可忽視的是這樣思考的結果往往會漏掉看似無
理其實絕妙的招數。被稱為千古奇局的棋聖施襄夏讓張振西四子局,其中的
強扭活羊頭至今為人津津樂道;無獨有偶,小李飛刀李世石近期也曾上演過強征
活子的一幕。電腦圍棋如果採用電腦象棋同樣的搜索方法,會不會找到職業棋手
的盲點,從而超過職業棋手呢?答案是遙遙無期!


沈括在《夢溪筆談》中論及圍棋時說“大約連書萬字四十三,即是局之大數。” 古人
的數學還是很牛的,假定終局時棋盤上每個點有獨立的黑,白,空三種狀態, 棋盤狀
態就有3的361次方,約為10的172次方,也就是連書萬字四十三。因為棋盤每個點
狀態不能獨立,科學家估算圍棋的狀態空間約為10的160次方,而象棋的狀態空
間只有10的123次方。 圍棋一盤棋平均可着點是200,而象棋只有40,如果圍棋
採用上面描述的搜索方法,算出10步的話,就要評價200^10個狀態,是象棋的
900多萬倍(40^10) 。

如果圍棋只是狀態空間大也好辦,因為根據摩爾定律,計算機的速度每18個
月翻一倍,這樣總有一天計算機會超過人類。但是計算機面臨的更大的挑戰是
盤面狀態評價,圍棋一手棋不但會改變局部,還會影響全局,一手棋的價值有
時在當前形勢下不明顯,卻在幾十手後凸顯出來。
當專業棋手誇獎一手棋味道好的時候,業餘棋手卻感受不到他的味道,計算機
則更難把味道轉換成評價值。事實上人類對形狀和模式有特殊的辨別能力,而
計算機則需要存貯大量數據和進行複雜的計算,但仍然遠達不到人類大腦的辨
識能力,因此評價棋盤狀態是電腦圍棋發展的真正瓶頸。9X9圍棋的狀態空間
是10^85次方,複雜度小於國際象棋,然而迄今為止9X9電腦圍棋仍然落後人腦。

基於以上原因目前多數圍棋程序沒有使用電腦象棋的搜索方法來利用計算機的
計算能力,而是把開發者的圍棋知識直接寫到程序中輔以少量的局部搜索和模式
數據庫。開局時使用定式庫,中盤利用模式庫和搜索把棋子分塊,對每塊
棋判斷死活,如果是本方死活不明塊,判斷是否需要補強,如果是對方死活
不明塊,判斷是否可以進攻,哪些地域是自己控制的,哪些是對方控制的,哪
些是雙方都有機會。完成棋盤狀態判斷後,程序選擇一個目標:攻擊,補強
或者占地。對每一個目標,有一個模式庫建議可行的下一步。計算計圍棋的收官
研究相對較好,使用的技術是把整個棋盤分塊,由於棋近結束,變化很少,每
塊相對獨立,只要在塊內搜索即可,計算機的收官技術已經達到職業棋手
水平,另外封閉空間的死活研究也達到了職業棋手水平。

可以想象電腦圍棋依靠開發者的電腦知識和有限的搜索是沒法和職業棋手抗衡
的,隨着越來越多的知識加進程序,管理起來也越來越困難,甚至多條規
則可以互相矛盾,產生意想不到的後果。於是機器學習被引進來自動產生
圍棋知識,值得一提的是微軟劍橋研究院的工作,科學家把18萬盤職業選
手的棋譜輸入數據庫,因為每盤的結果是已知的,這樣對於數據庫中的每一種
棋盤狀態我們知道這盤棋的最終結果,通過機器學習產生一個從狀
態空間到勝負結果的評價函數,這個評價函數可以用來進行如電腦象棋
程序般的搜索,這個項目可惜還沒有產生一個可以對弈的圍棋程序。

過去幾十年裡,計算機圍棋屆一年一年面對人機對抗時黑壓壓的讓子,更
多的是無奈和沉默,而2006年他們卻出人意料地宣稱計算機圍棋的春天
即將來臨。科學家如此樂觀的原因是由於匈牙利人發明的一種叫作UCT新算法。
基於該算法的程序MoGo在9X9的棋盤上對郭娟五段取得了9勝5負的成績,
可惜在19X19的正常棋盤上,MoGo還不是傳統電腦圍棋程序的對手,更
別說和人腦對抗。UCT是一種結合搜索和隨機取樣的算法,基本
原理十分簡單,電腦圍棋的瓶頸不是棋盤狀態的評價嗎,把棋下完數數
目不就知道好壞了嗎!當然在介紹電腦象棋時已經說過,計算機沒有
能力把所有搜索分支都算完再評價,但是可以取樣分析給出一個粗魯的估計,
也就是所謂的Monte Carlo Sampling。UCT從一個要評價的狀態開始隨機下
很多盤棋(比如1000盤) ,每一步的着點都是隨機產生,最終綜合
1000盤棋的勝負結果來評價這個狀態。事實上93年的時候就有一個
德國小伙寫過這樣的程序,除了判斷什麼時候棋局結束和進行數
目,整個程序沒有用到一點圍棋知識,頗似風清揚的無招勝有招。可惜
當時算法過於粗糙,結果不佳而沒受到重視。當然UCT是否能夠在
大棋盤上得到檢驗還未可知。

說起電腦圍棋就不得不提一下陳志行教授,老教授是中山大學化工教授,
業餘5段,1989年58高齡時開始寫電腦圍棋程序手談,因為沒有
C編譯器,竟然用匯編開發了手談程序,並且多次在電腦圍棋世界
大賽中奪冠,最近幫助年青人在寫下一代烏鷺程序,新程序的棋力
還不清楚。另外MoGo的作者之一YIZHAOWANG聽起來也是個來自中
國的學生,希望將來沙龍也能有人加入電腦圍棋的研究和開發,寫出
好的圍棋程序。


主要參考文獻

Computer Go: An AI oriented survey. Authors: Bouzy B.1; Cazenave T.
http://www.ai.univ-paris8.fr/~cazenave/CG-AISurvey.pdf


0%(0)
0%(0)
標 題 (必選項):
內 容 (選填項):
實用資訊
回國機票$360起 | 商務艙省$200 | 全球最佳航空公司出爐:海航獲五星
海外華人福利!在線看陳建斌《三叉戟》熱血歸回 豪情築夢 高清免費看 無地區限制
一周點擊熱帖 更多>>
一周回復熱帖
歷史上的今天:回復熱帖
2005: 無人喝彩:我的第一次鐵人三項賽(一)
2005: 馬 拉 松 熱 身 賽 : 10K紀 實
2004: 季後賽前話棒球
2004: CLUB 建立好了.the ID# is 38007 and t