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