目前最強的電暖電腦圍棋程式是什麼?棋力達幾K?
- 2023-01-21
MOGO的
360問答
誕生
先從王一早說起吧。一早是北大數學00的學生,之後來Ecole Polytechnique學習應用數學碩士(Polytechnique是法國的清
師報風映傳屋臺沙章
華)。看到他的名字,我總是不
由自主地想起魯迅刻在書桌上
的那個‘早’字。事實上,一早很聰明也很勤奮,做事認真一絲不苟。事實上,mogo中他編寫的程式碼可讀性最
至顧照訓隨保幹勢到雷漢
強。2006年4月,他在l
演刑配佔礎封幫苦九題
ri(法國資訊科技研究室)作了畢業實習,和Sylvai
夜策氫織序強侵祖緊星翻
n Gelly(當時還是在
讀博士)一起工作。因為一
早他從小熱愛圍棋(我的
圍棋就是他教的,哈哈
),就開始嘗試計算機圍棋的編
寫。
在我看來,計算機圍棋和象棋相比,主要難點在於沒有一個好的評估函式(Evaluate functi
求蒸古降
on)。在國際象棋中,
是微業措
如果一方損失了大子,如後,或者子力沒有及時展開,那麼形勢很可能就一邊倒了。所以評估函式往往是各個子的加權平均,加上每個子可以攻擊到位置,再加上一些修正項。有了評估函式,就大大簡化
迅太加增呀信電脫面
了搜尋。如果評估函式是1
只農粒它他當端
00%精確的,只要進行一次
使呢按切刑媽效
max min的搜尋找最大值
易
就可以了。即使評估函式
只是近似,也可以省去很多
無用的搜尋。但是在
圍棋中,據我所知,還
沒有一個令人滿意的評估函式。在
這種情況下,大家就提
出用MC模擬來代替評
估函式。但是問題又出現了
,MC模擬的收斂速度是1/sqrt(N),走不能只模
模卷州組史礦刻以斷
擬不搜尋其他可能的棋步啊。這就是一個典型的Explor
揮頂守訴
ation vs Exp
照據神展首歌快直算
loitation的問題。在
Bandit問題中,
UCT演算法是相當不錯的。當N(模擬次數)趨於無窮時,最好
校機根例州苗備誰與山價
的分支和其他分支的模擬次數分別是N和LnN量級。MC和UCT的結合產生了
MOGO的雛形。
在06年6月份,MOGO的雛形就完成了。一早邀請我們和MOGO對弈,來尋找bug。當時MOGO棋力很
存南麼膠唱揮
差,在9x9的棋盤上,連
我這個只學了2個月圍棋的菜
鳥都下不過。(想想現在,我都已經沒有和mogo下棋的勇氣了
職封
)
MOGO的MC改進
在棋魂中,佐為,塔矢
都在追求著神之一招。我不明白神之一招的確
切含義,但是在電腦圍棋這
個領域裡,大家確實
是不斷創新,不斷改進,來挑戰人
對圍棋的壟斷。
Random MC部分
前面已經說過了,用MC模擬來代替評估函
括
數,但是問題是好
耐徵武物紅基希府很管
比兩個高手下棋,下了一半,讓兩個不會下棋的門外漢來胡走一氣,直至終局,來判斷之前高手下棋的形勢。這總是說不過去的。一早在這裡做了一個關鍵的改進。
即使在高手下棋中,除了開局和突然投入對方陣地的棋,大家一般都是使用飛,長,斷,連,尖,衝,立等圍繞著自己已有棋子和對方的棋子做文章的棋,所以一早讓MC模擬部分只能做這些固定的形。就好比是高手下棋之後讓兩個庸手下至終局,這樣評判的效果比兩人胡下,要好太多了。這個改進立竿見影,MOGO的棋力立刻可以和已有的電腦圍棋程式一較高下了。
之後,就是對MC部分的微調了,可以想象,當MC部分越智慧,他給出的終局結果越有意義,但是相應的運算時間就長,模擬次數就少了。為了找到這兩者之間的平衡,光是我看到MC程式碼,就有45種,一早和sylvain以及之後的開發者,不停試驗,不斷改進。
UCT部分
事實上,在現在的MOGO程式中,已經不使用UCT演算法了,而是代以很類似AMAF演算法。之所以換演算法,原因也很簡單,使用AMAF演算法的圍棋程式對UCT的勝率超過50%。
基於MC的圍棋程式相對於基於圍棋知識的程式,最大的好處就是,隨著電腦運算能力的提高,MC圍棋的棋力也是水漲船高。大家都熟知的摩爾定律——CPU的效能每18個月提高一倍,價錢下降一半。我記得幾年前,大家還熱熱鬧鬧的討論摩爾定律是否能持續下去——因為隨著IC尺度的縮小,散熱,量子效應都成為難以逾越的瓶頸。但是現在看來,這個定律透過另一種方法持續下去了——多核技術。(插一句題外話,Playstation 3以他強大華麗的9核,令人乍舌的價格,不到4000人民幣,出人意料的找到了除了遊戲迷外新的粉絲——並行運算的實驗室)
判斷一個圍棋程式優劣的最佳方法就是相互下棋看贏棋率,但是這很耗時間。所以大家選用了另一個緊密相關但可以實時監測的引數——每秒MC的次數作為一個最佳化的目標。在單CPU的最佳化有所突破之後,下一步自然是並行運算。事實上,MC是天然適合並行運算的。
在這一點上,mogo和其他基於蒙特卡洛演算法的程式就顯示出優於其它傳統的基於定式的程式的優點了。如果只是向人類模仿,是永遠贏不了的。
mogo運用了800cpu的cluster。今年在被讓9子的情況下在19x19上戰勝了八段韓國職業棋士MyungwanKim。當然,kim開始嚴重低估了mogo的棋力,開始下得很差。他輸棋之後,當然大讚mogo,汗。
上個月,mogo在臺灣向周俊勳挑戰(在9x9上分先,持黑持白各一局,19x19被讓7子)。在9x9的比賽中,周俊勳險勝,在19x19上,mogo下的很差(mogo的特點是如果能夠領先,就能咬住,下出比較有質量的棋;但是一旦落後,就自暴自棄)。(也是上個月,在北京,mogo輸給了many faces go,一個美國的圍棋程式,原因據說是——位於荷蘭的cluster遇上停電。。。)
MOGO最近又作了新的改進,現在單機版大概達到KGS上1k的水平。在kgs上MOGO的賬號是mogobot1和mogobot3。