2017年6月2日 星期五

聊聊AlphaGo

繼去年3月AlphaGo擊敗了李世乭之後
前陣子AlphaGo又擊敗了目前圍棋積分世界第一的柯潔
這樣的結果在圍棋界和AI界都造成了極大的轟動
剛好我對這兩個領域都稍有涉獵,就來談談AlphaGo的出現代表了什麼意義吧

和人類比起來,AI下棋會有什麼優勢呢
大部分人第一個想到的應該是計算能力吧
在下棋的時候,棋手會在腦內模擬棋局的各種變化
我下這、你下那、我再下這、你再下那,啊!這樣的下法好像不好
然後重新模擬另一種變化,直到找到一個比較滿意的下法
不過人類的計算能力有限,一秒鐘能夠計算3~4種變化就很厲害了
但AI一秒鐘卻可以計算上千甚至上萬種變化
這樣的計算能力的確讓AI在許多棋類佔盡優勢

但是圍棋比較特別,和其他棋類比起來,圍棋比較複雜
圍棋每一步都有上百種選擇,一盤棋通常會下至少100手棋,因此能產生的變化數量非常的多
就算AI擁有強大的計算能力,想要在短時間內模擬所有的變化也是不太可能的事情
那麼人類是怎麼克服這個困難的呢
答案是經驗,也就是是有時候我們所說的"棋感"

人類透過不斷下棋累積經驗,在面對一個新的盤面時,這樣的經驗讓棋手可以快速判斷這時候哪些地方絕對不可能下,哪些地方有很大的機率要下
有了這樣的判斷,棋手將大部分的思考時間花在那些比較可能的地方,不用浪費時間去思考那些不可能的地方
換句話說,經驗幫助人類減少了需要計算的變化數量
減少的量其實非常的多,說刪掉了99%的變化數量可能都不為過

除了判斷可能的著手以外,經驗也幫助了人類判斷棋局優劣的能力
正常來說,可能要模擬20~30手以上才能判斷一個變化是黑棋有利還是白棋有利
不過經驗老到的棋手可能只模擬了5~6手就可以判斷哪方有利,不需要繼續計算下去
更複雜的狀況是圍棋的盤面很大,有時候局部的優劣並不能代表全局的優劣,如何準確的判斷都是需要經驗的
如果判斷棋局優劣的能力越好,對於每一步棋的價值也能比較精準的估算,就能下出比較好的棋步

棋力高低的差別就在於計算能力以及經驗的掌握度,兩者都相當重要
一般來說,大家會覺得和計算能力比起來,經驗的掌握度是比較抽象的概念,是比較憑感覺的東西
大家也普遍認為這種抽象又沒有明確目標的能力,對於AI來說是很難學習的,這反而是人類的強項

的確在AlphaGo之前的AI雖然有強大的計算能力,但是卻無法妥善的利用過往對局的經驗
因此花了大量的計算在相對不重要的地方,導致下出來的棋步不夠有威力
但是這次的AlphaGo卻讓人大吃一驚,在這個人類自認強項的地方表現非常好
AlphaGO甚至從自己和自己的對局中學到了新的經驗,下出了人類以前不曾想過,卻又有威力的棋步

對圍棋界來說,AlphaGo帶來了革命,不但力壓了人類自認的長處,甚至打破了長年以來透過經驗建立起來的棋局判斷方法,這當然是一件相當震撼的事情
而對AI界來說,AlphaGo成功的學會了人類認為抽象模糊的概念
甚至可以自己累積經驗,擁有比人類還厲害的判斷能力
這讓AI能模仿人類做其他事情的機率提升了許多
也讓我們思考是否那些人類認為的抽象概念,要透過數學模型模擬出來其實沒有那麼困難呢

雖然電腦在圍棋打敗人類是遲早的事情
只是沒想到這一天來的這麼快
以後的AI還能做些什麼事情呢,非常令人期待