AlphaGo是故意在官子階段退讓的嗎?
今天將進(jìn)行柯潔和AlphaGo對弈三番棋的最后一局,下午對局結(jié)果出來后,恐怕再鮮有這樣的人機(jī)對弈了。
在這之前,AlphaGo已經(jīng)和柯潔對弈過兩局,和古力、連笑配對賽一局、和五大高手團(tuán)隊賽一局。四局比賽均是AlphaGo勝,棋下到這,AlphaGo開始展現(xiàn)出了更多讓人疑惑不解的下棋風(fēng)格。
比如官子退讓。
AlphaGo在中盤走棋的風(fēng)格都是很強(qiáng)勢的,但是到了官子階段,表現(xiàn)往往大跌眼鏡。
到底是Bug還是“故意放水”,我們先了解一下這個讓狗非常糾結(jié)“官子”到底是什么。
所謂官子,也就是收官的意思,“收官”這個詞也是這么來的,跟一場球、一個大會、甚至一個自然年一樣,一場圍棋進(jìn)入官子階段的時候,就是快要結(jié)束的時候,這個時候,大局基本已定,只需要處理一些零碎的事物。對于一盤棋來說,就是處理一些零碎的空地。專業(yè)點的說法也叫“詳細(xì)點目”。
下圍棋就是一個占地盤的過程,每走一步棋的目的,都是希望能擁有更大的地盤。等到棋越下越多,大的空地已經(jīng)被搶完,雙方就要從小的空地入手,這時候就是在收官子。
雖然中盤被認(rèn)為是確立勝負(fù)的關(guān)鍵,但高手對弈的時候,即便在官子階段也不會掉以輕心,因為棋沒有下到最后一步,誰也不知道會發(fā)生什么,對手隨時有可能在官子翻盤。
在23日和柯潔對弈的第一局比賽的官子階段,面對柯潔的強(qiáng)硬招數(shù),AlphaGo反而一改之前的兇悍,變得非常保守,能讓的子都讓了。
在26日的團(tuán)隊賽中,面對五位圍棋高手,AlphaGo依然取勝,但是仍在官子階段給了對手機(jī)會,并且規(guī)避一切復(fù)雜變化。甚至在小官子階段走出了看起來完全沒用的棋,被團(tuán)滅的五大棋手哭笑不得,甚至代為執(zhí)棋的黃博士都忍不住要笑了。
這不是AlphaGo第一次出現(xiàn)這種“事故”。
今年一月AlphaGo化身Master鍵盤俠在網(wǎng)上橫掃各大高手的時候,就常在官子階段退讓,羋昱廷和樸廷桓都曾僅以半目惜敗。這造成人類棋手在官子階段比AlphaGo強(qiáng)的印象:失了中盤,也總能在官子追回一二吧。
此前日本圍棋老將趙治勛和日版阿法狗DeepZenGo進(jìn)行對局的時候,柯潔就在微博上給趙治勛提建議:
“和AlphaGo擁有同樣技術(shù)的ZenGo,私底下我有一定的了解。我其實一直在研究、與別人探討,深度學(xué)習(xí)技術(shù)的計算機(jī)到底有何弱點,也親自實戰(zhàn)過。如果趙老能看的見我的微博,請留心我的建議:無論局面如何都不要認(rèn)輸,拖到官子,刮爆它。”
在Zen的身上,柯潔認(rèn)為官子階段是弱點。
但也有很多人認(rèn)為,在官子階段,人類棋手雖然還在對棋盤上剩下的領(lǐng)地焦灼,但是狗已經(jīng)認(rèn)準(zhǔn)了自己能贏。所以才一再退讓,狗其實就是故意在讓子。
至于狗為什么會在官子處處退讓,大家此前有很多猜測,不過大致集中在兩個方向上:
猜想一:你們都以為圍棋下到官子就簡單了,但實際官子才是對AI來說最難的。
人的“棋感”是多年的走棋的經(jīng)驗判斷,AlphaGo的“棋感”則是神經(jīng)網(wǎng)絡(luò)訓(xùn)練的結(jié)果。首先通過策略網(wǎng)絡(luò)縮小落子的選擇范圍,然后通過窮舉搜索模擬走棋到一定程度,這時候會生出許多可能性的分支。
但是這些分支太多,即便對于能力再強(qiáng)大的計算機(jī)來說也是過重的負(fù)擔(dān),所以要進(jìn)行“剪枝”,通過價值網(wǎng)絡(luò)評分,權(quán)衡比較,剪掉沒用的支,選擇一個最能贏的點。
在布局和中盤階段,棋子落在不同的地方,導(dǎo)致的后果是很不一樣的,長枝和短枝差得多,剪起枝來非常方便,同時計算的負(fù)擔(dān)也會小很多。
但是官子帶來的困惑就多了,官子階段,棋盤上到處都是棋子,到處都是子力(每一個棋子給外界帶來的影響)。對于算法來說,可以選擇的點越來越多,并且這些點之間的差距越來越小。
所以,看似棋局接近尾聲,對于人類棋手來說,可能棋局是越來越明朗,但是對于對于算法來說是越來越困惑。
在這個時候如果盲目剪枝,就可能會遺漏有價值的落子點。但是如果擴(kuò)大選擇范圍,又會帶來大量搜索和計算的負(fù)擔(dān)。
最后導(dǎo)致AlphaGo在官子階段漏洞百出。
猜想二:狗的策略是“贏不貪多”。
AlphaGo尋求的是簡明處理,也就是說,在模擬出來的眾多勝利之路中,找到第一條勝率更大的路一直走到黑。
可以假設(shè),AlphaGo在棋盤上找到了1000種贏的可能,但是有990種都是只贏半目,只有10種可以贏十目。
按照既定的策略,也就是價值網(wǎng)絡(luò)評分的標(biāo)準(zhǔn),狗會選擇最保守但能確保獲勝的那990種棋。贏的多少,并沒有作為AlphaGo價值判斷和打分的目標(biāo)。
如果一個點收官可能贏50目但有50%的幾率崩盤,另一個點可以贏5目但100%取勝,勝率優(yōu)先原則永遠(yuǎn)是后者,不是故意退讓。
到底AlphaGo如何能保持精準(zhǔn)的只贏半目,在25日第二局比賽結(jié)束的發(fā)布會上,DeepMind創(chuàng)始人Demis Hassabis給出了標(biāo)準(zhǔn)答案:
“第一盤棋的官子階段,AlphaGo在做的只是讓自己的勝率最大化,因此在比賽的最后階段,可能會在某些局部的點做一些放棄,AlphaGo只是專注于勝率,其它并不重要。 ”
所以正確答案是猜想二,包含一些猜想一的猜測,整個狗在下整盤棋的時候,是一個很復(fù)雜的計算過程,但是它的目標(biāo)是很簡單的,就是保證能贏,為此可以放棄一些局部。
甚至可以反過來應(yīng)用這個規(guī)律,只要在官子階段狗開始步步退讓,就說明它已經(jīng)贏了。
所以為什么不在AlphaGo的程序中寫入一個“贏越多越好”的目標(biāo)呢?
被當(dāng)做故意放水,狗也很委屈,如果想要保證每盤即能贏,又能贏得多,還要看工程師是否能加上一個“贏幾目”的補(bǔ)丁了。
等等,這樣的補(bǔ)丁原來也是有的!
有一種叫做Dynamic Komi的東西,翻譯過來叫做動態(tài)貼目。這個補(bǔ)丁的用途,簡單來說就是防止電腦在被讓子時下出太保守的棋,AlphaGo的團(tuán)隊曾在一篇論文《Mastering the game of Go with deep neural networks and tree search》中明確指出Alpha Go沒有使用動態(tài)貼目。
論文沒有指明原因,但是試用過動態(tài)貼目的人表示,動態(tài)貼目很容易下出漂亮的棋,但是會導(dǎo)致勝率降低。
所以,和人類棋手想要下手漂亮棋不同,狗被設(shè)定的目標(biāo)是贏就行了,隨便贏成什么樣。
但是AlphaGo也不總是能贏的,26日上午,它就下了一場必輸?shù)钠?,但不是故意輸?shù)摹?/p>
昨天上午進(jìn)行了一場配對賽:對弈雙方分別為古力九段和連笑九段,并會各自配一個AlphaGo外掛,和自己輪流執(zhí)棋。這就是說,不管輸?shù)氖悄姆?,都有AlphaGo的份。
這場比賽開始古力一方占據(jù)優(yōu)勢,連笑進(jìn)入了讀秒階段,現(xiàn)場講棋甚至已經(jīng)準(zhǔn)備好了結(jié)束語。但這個時候局勢突然逆轉(zhuǎn),連笑一方逐漸追趕,步步緊逼,古力眼前煮熟的鴨子就這么飛了。面對這樣的局勢,古力的AlphaGo選擇舉牌投降,但是被古力拒絕!被拒絕后的狗開始亂走棋,以示抗議——其實是因為計算走哪里都是輸,所以就放棄了進(jìn)一步計算,反而顯得“智障”——最后古力還是自己舉牌投降了。
古力賽后解釋為什么拒絕AlphaGo認(rèn)輸?shù)囊?,表示自己也是有小情緒的:“當(dāng)時我覺得我下的還可以呀。”
古力說,如果AlphaGo會說話的話,可能會說:古力呀,你下的這都什么棋……
最后古力認(rèn)輸,則是因為提出認(rèn)輸后的AlphaGo一直送子,不能忍。
AlphaGo認(rèn)為古力沒有能力,古力認(rèn)為AlphaGo沒有情懷。
人生的博弈也是這樣,輸贏不是最重要的,但狗生的博弈就是要贏!所以別想著讓狗狗放水一局了,如果贏了,那肯定是柯潔同學(xué)太努力。