在昨天結(jié)束的人機(jī)對(duì)弈第一盤比賽中,柯潔執(zhí)黑半目負(fù)于AlphaGo,由于勝負(fù)差距非常微小,許多網(wǎng)友認(rèn)為AlphaGo領(lǐng)先人類并不多。這里我們從AlphaGo的原理與棋局的進(jìn)程兩方面談一下AlphaGo只贏了半目的背后究竟意味著什么。
要了解AlphaGo的原理,首先要知道一個(gè)叫做蒙特卡洛模擬的東西,蒙特卡洛模擬的是一種在不了解背后規(guī)律的情況下,依據(jù)大樣本的獨(dú)立事件測(cè)量找出近似的最優(yōu)解,而圍棋是一種非常合適的使用蒙特卡洛模擬為基礎(chǔ)原理進(jìn)行程序設(shè)計(jì)的游戲,蒙特卡洛模擬出來的仍然是概率,所以AlphaGo下圍棋的過程可以簡單描述為在任一局面下尋找當(dāng)前勝率最高的一點(diǎn)的過程。
回到比賽中,這盤棋柯潔的敗局在左上的戰(zhàn)斗結(jié)束后就確定了。白棋54花一手后手?jǐn)嗟臅r(shí)候,阿爾法狗已經(jīng)積累了巨大優(yōu)勢(shì)。雖然柯潔后半盤拼命追趕最后只輸了1/4子。但這1/4字卻讓柯潔震驚,賽后他甚至說再也不想和機(jī)器下棋了,可見AlphaGo在這盤棋給了柯潔多大的震撼和陰影,所以至少從柯潔的口中,他深知自己確實(shí)是被吊打了。
而人類圍棋理論可不是什么全局勝率,而是實(shí)打?qū)嵉哪繑?shù),棋盤上的一切得失最后都要量化成具體的目數(shù)來衡量,“這個(gè)局部白棋虧了2目棋”,“那個(gè)局部黑棋一個(gè)妙手便宜了1又1/3目”,這種描述在人類對(duì)局的講評(píng)中是經(jīng)??梢钥吹降?。但是目數(shù)便宜的多不代表勝率就高,因?yàn)樽非筅A得更多有時(shí)候意味著局面的復(fù)雜化,復(fù)雜化意味著風(fēng)險(xiǎn)。舉個(gè)通俗的例子:90%贏10目和100%贏1目,AlphaGo一定會(huì)選擇贏1目的變化,因?yàn)閯俾矢摺?/p>
而優(yōu)勢(shì)局面下,勝率高往往和行棋簡單化,減少變化劃等號(hào)。換句話說,AlphaGo的算法決定了它在優(yōu)勢(shì)局面下,會(huì)選擇一些簡單的、甚至稍微虧損但變化較少,不確定性較少的變化,以求更快達(dá)到勝利的重點(diǎn)。
第一局棋局全譜
這盤棋左上戰(zhàn)斗下完就是白棋明顯優(yōu)勢(shì)的棋,54斷以后白棋開始了穩(wěn)步收兵,邁向勝利終點(diǎn)的故事,下面我們舉幾個(gè)例子從棋的內(nèi)容上看一下AlphaGo具體是如何做的:
第一個(gè)例子是面對(duì)黑棋55點(diǎn)入,白棋下得極其厚實(shí),特別60粘,簡直是不給黑棋任何變化的余地,只能扳粘做活。局部黑棋最大限度掏掉了白角,可以說非常滿意,但白棋也消除了局部任何的不確定因素,局面大大簡化。
第二個(gè)例子是右上作戰(zhàn),面對(duì)黑棋91刺,白棋沒有直接粘上和黑棋戰(zhàn)斗,而是柔軟的托過,棄掉四路一子,取得邊空。這樣右上徹底定型,也沒有了不確定性。全局唯一的不確定的地方就是上邊了。而上邊過于寬廣,黑棋想全圍住是不可能的,后來白棋輕松做活也印證了這一點(diǎn)。
第三個(gè)例子是官子階段,左邊下到143的時(shí)候白棋第144手完全可以在145位拐把5顆棋子(價(jià)值10多目)救回來,可是這樣下目數(shù)雖然便宜,黑棋會(huì)取得先手在中央騷擾白棋,增加局面不確定性。白棋實(shí)戰(zhàn)果斷把這5個(gè)賣死,取得先手后在中間進(jìn)一步定型徹底簡化局面。
以上三個(gè)例子是非常直觀的,局部有更強(qiáng)硬或者目數(shù)更便宜的選擇的時(shí)候,AlphaGo果斷選擇簡單無變化的手法,最大限度減少局面變數(shù),更快將局勢(shì)導(dǎo)向終局的下法。在第二、三局中,只要AlphaGo開局取得優(yōu)勢(shì),這樣類似的下法會(huì)屢見不鮮,雖然柯潔堅(jiān)持到最后也許只是以半目的微小差距落敗,但這半目就是不可逾越的天塹,想要“勝天半子”恐怕是極其困難的事情。
但蒙特卡洛算法也有兩個(gè)致命的缺陷:首先是圍棋的總變化數(shù)量過于龐大(遠(yuǎn)超宇宙全部的粒子數(shù)量),所以你模擬個(gè)1000次甚至10000次這個(gè)樣本相對(duì)于整體而言占比過于微小。蒙特卡洛模擬準(zhǔn)確度的核心在于龐大的樣本數(shù)量,所以要想用這個(gè)方法下出高水平的圍棋,必須增大每個(gè)選點(diǎn)的后續(xù)模擬次數(shù),這樣就帶來了第二個(gè)問題:計(jì)算資源不足,雖然人類的超級(jí)計(jì)算機(jī)已經(jīng)發(fā)展到相當(dāng)?shù)乃?,但要?shí)現(xiàn)模擬足夠樣本的圍棋變化那還是遠(yuǎn)遠(yuǎn)不夠的。
要克服上述兩個(gè)致命缺陷,就要引入先進(jìn)的算法做一件事情:剪枝。從字面意思也很好理解,就是剪掉不必要的計(jì)算分支。其實(shí)人類高手下棋的時(shí)候也是很擅長剪枝的,人類高手通過常年累月的計(jì)算,對(duì)每個(gè)局面可以形成出色的第一感,這樣就大幅度縮小了選點(diǎn)數(shù)量,然后對(duì)每個(gè)選點(diǎn)進(jìn)行計(jì)算的時(shí)候也不用一直算到整盤棋下完,往后計(jì)算若干步,這個(gè)選點(diǎn)是不是成立也就清楚了。AlphaGo就是通過深度學(xué)習(xí)技術(shù)訓(xùn)練出了價(jià)值網(wǎng)絡(luò)和策略網(wǎng)絡(luò),實(shí)現(xiàn)了和人類高手一樣的第一感和出色的剪枝技術(shù),再結(jié)合蒙特卡洛模擬那就如虎添翼了。