星陣很強(qiáng)大,在與Leela Zero和人類職業(yè)棋手對局的棋譜中,我們看得很清楚了。 之前我們也講解了星陣與Leela Zero的第一局棋。 參見:【經(jīng)典對局講解】圍棋AI之戰(zhàn):星陣 執(zhí)黑 vs Leela Zero | 看看柯潔在四月底人機(jī)大戰(zhàn)時(shí)將面對的對手實(shí)力如何 當(dāng)時(shí)我們得出的一個初步評估是:如果星陣能夠穩(wěn)定地發(fā)揮如第一局的水平,尤其是出色的大局觀和完美的節(jié)奏掌控能力,那么它是一個棋力比肩或稍遜色于AlphaGo Master的強(qiáng)大AI,與最新版的絕藝和BensonDarr處于同一梯隊(duì)。 第二局,星陣的表現(xiàn)依然很好,不過以我的視角來看,招法有些過于剛猛,不及第一局的彈性。在人類棋手中,現(xiàn)在有很多年輕棋手的棋風(fēng)都比較“剛”,比如前天結(jié)束的天元戰(zhàn),連笑和謝科就是“剛”中自有更“剛”者。日本的井山裕太和一力遼,中國的羋昱廷、時(shí)越和辜梓豪也是”剛“棋。 這樣的棋風(fēng)看著很爽,不愿退讓,能來硬的絕不愿來軟的,“一言不合,大打出手”,一言合了,也還是要揍你的。能下這樣的棋成名的棋手,計(jì)算力都很強(qiáng),對自己的計(jì)算力也比較有自信。 缺點(diǎn)就是把弦繃得太緊了,不留余地,一旦有閃失,便一瀉千里。由于他們在優(yōu)勢下,經(jīng)常也照剛不誤,不給對手留余地,也不給自己留余地,不管風(fēng)險(xiǎn)大小,把人家逼得沒辦法了、不得不拼,有時(shí)候,煮熟的鴨子最后飛掉了。他們的棋沒有控制流的棋手在取得優(yōu)勢后穩(wěn)當(dāng)。 AI不是人類,我們不確定星陣是成竹在胸才“剛”著來的,還是它的特點(diǎn)就是如此。 按說,強(qiáng)大的圍棋AI不一定存在棋風(fēng)之說,怎么贏它就怎么下,以勝利為目標(biāo)。比如AlphaGo Master與柯潔的第一局和第三局,它就是均衡型、控制流,“你不來招惹我,我也不招惹”;但如果人類棋手想殺Master的棋,跟它來”剛“的,它就會拎起40米長的大刀,讓你見識一下什么叫棋局戛然而止,比如柯潔與AlphaGo三番棋的第二局。它無所謂棋風(fēng),看你想怎么來。 反正贏家就是贏家,前兩局星陣都贏了,”剛“不”剛“似乎也無所謂了。 第三局,星陣依然贏了Leela,但由于第一步落在了天元上,初始勝率略降。這一局還是贏了,星陣依然很“剛”,而且這一局它顯露出一些破綻。Leela有機(jī)會在搏殺中扳回一局。在大型對殺中,星陣“剛”則“剛”矣,穩(wěn)卻未必穩(wěn)。越是走鋼絲的棋,對計(jì)算的可靠性就要求越高?!皠偂钡綐O致,就需要“無漏”,所謂的“算無遺策”。但星陣的計(jì)算力似乎不足以支撐它下出這么“剛”的棋來。 第四局,星陣輸給了Leela,敗因是在打劫和死活的判斷上不夠精確;第五局,星陣再度敗北,這次其實(shí)還是與打劫和死活判斷,以及由此導(dǎo)致的形勢判斷和收官有關(guān)。在這兩局中,星陣撐得依舊很滿,局部它認(rèn)為有可能有手段的便宜都算進(jìn)自己的賬面上了,但實(shí)際上有些手段是不成立的。 在其他平臺同時(shí)進(jìn)行的與職業(yè)高手讓先的對局中,星陣取得了不錯的戰(zhàn)績。但與姜東潤對局時(shí),星陣再次出現(xiàn)了死活判斷不清的問題。看到下面這張棋譜,哪怕沒關(guān)注進(jìn)程的棋友也能一眼看出星陣下得很剛猛,然而涉及到大區(qū)域多塊棋的死活問題,星陣沒能處理好。這個場面在DeepZenGo身上,我們看到過太多次了,不感到陌生。 如果是人類棋手之間的對局,上演這種屠龍大戲,我們通常會贊美黑棋的計(jì)算力勝過白棋。姜東潤計(jì)算固然強(qiáng),但真的是他靠計(jì)算力強(qiáng)壓星陣一籌,所以生吞對方大龍嗎?恐怕不能這么說。問題不是星陣的計(jì)算力沒有人腦強(qiáng),而是它誤算漏算了。 至于為什么會出現(xiàn)這樣的場面,我們看看開局。在左下角,白棋被黑棋搞成這么慘,活了個極小的角,外邊被黑棋吃了這么多目數(shù),而且厚成鐵,虧到厄瓜多爾去了。 角部白棋應(yīng)該是算錯了,從而全局的形勢判斷也不靠譜了,否則不會干這種事兒。 后面白棋為什么被屠龍,與左下黑棋這里厚成鐵有直接關(guān)系。當(dāng)然,也不是說白棋一定會全死進(jìn)去,這個過程中,星陣依舊有下錯的地方。不過,要想拖家?guī)Э谌孔Щ?,那是不可能的?/p> 星陣為什么會出現(xiàn)與DeepZenGo相似的死活判斷錯誤呢? 這個問題沒有簡單的答案,我們也無法僅憑看幾張棋譜就給出一個準(zhǔn)確的解釋。不過,看了昨天的一篇報(bào)道,也許我們能有一個猜測的方向。 首先,po主想提醒并更正一下,按照AlphaGo Zero體系架構(gòu)的AlphaZero既可以下圍棋,也可以下國際象棋,還能下將棋,都達(dá)到了頂尖水平。DeepMind雖然沒明確說九路、十三路或貼任意目數(shù),但這應(yīng)該對AlphaGo不是問題,——再復(fù)雜的貼目和改小棋盤,能復(fù)雜過跨棋類的難度嗎?說星陣“超越了AlphaGo的架構(gòu)”,po主覺得這種提法不夠準(zhǔn)確。當(dāng)然,po主相信星陣肯定有與AlphaGo不同的地方,有該團(tuán)隊(duì)自己的創(chuàng)意。 對于金先生公布的這些信息,歸根到底可以概括為一句話,星陣比AlphaGo施加了更多的人工干預(yù)。而po主始終認(rèn)為,以基本規(guī)則為根據(jù),人工干預(yù)的越少,圍棋AI就越強(qiáng),破綻就越少。人為附加的條條框框越多,這個AI的棋里漏洞也就越多。 “下出優(yōu)勢下不退讓的圍棋對局”,這句話有實(shí)施上的問題。其實(shí)人類專家(不管是圍棋專家還是人工智能專家)并不一定能夠判斷出這個優(yōu)勢下的退讓是會贏得更穩(wěn)、是一種需要,還是純粹AI覺得怎么都贏了、隨機(jī)選擇一條路徑。 有時(shí)候,你覺得優(yōu)勢下”我不退讓照樣能贏“,可能就下崩了,因?yàn)槟闶锹┧懔藢κ值哪撤N反擊,尤其對手的棋特別高、高到超出你的預(yù)計(jì)時(shí)。孟泰齡覺得沒棋的地方,柯潔可能覺得有棋呢;柯潔覺得這樣下絕對沒事的場合,AlphaGo可能覺得“我這里還有手段呢”。 哪個人類棋手敢面對任意一個局面拍板“這里百分百可以不退讓,我說行就行”? 極簡單的局面也許可以判斷得準(zhǔn)確,比如固定幾目棋的小官子階段。可這又需要確定什么時(shí)候叫”極簡單的局面“,什么時(shí)候是”還不那么簡單的局面“,什么時(shí)候是”其實(shí)沒那么簡單、但以你以為已經(jīng)很簡單了的局面“。這是個很復(fù)雜的事情。 如果你能準(zhǔn)確的判斷出在每一個局面下“我不退讓也一定能贏,不管對手有多強(qiáng)、下出什么樣的棋,所以這個時(shí)候我不需要退讓”,那你已經(jīng)超越了人類頂尖棋手,也超越了這些AI,你是圍棋之神了。po主不認(rèn)為這是現(xiàn)階段人類有辦法做到的事情。 ※ 為什么po主認(rèn)為人類要少施加干預(yù),讓AI盡可能地根據(jù)圍棋的基本規(guī)則自己學(xué)習(xí)才會更強(qiáng)呢? 很容易理解。因?yàn)橹挥袊宓幕疽?guī)則在圍棋的領(lǐng)域里是“絕對真理”。而人類以為的“正確棋理和判斷”,要么是可以通過圍棋的基本規(guī)則直接推導(dǎo)出來的,這一點(diǎn)機(jī)器可以通過大量的自我對弈找到規(guī)律,沒必要人為添加(AlphaGo Zero和AlphaZero就是這么做的,并證明了可行性,而它們的前代AlphaGo Master也已經(jīng)極少施加人為干預(yù)了,不過即便是少施加干預(yù),也比從“零”開始的AlphaGo Zero實(shí)力弱),要么是錯誤的,或局限于人類有限的理解范圍內(nèi)是相對正確的,它們不足以幫助AI提升到遠(yuǎn)超于人類的棋力。人為干預(yù)越多,給AI造成的“誤導(dǎo)”就越多。 當(dāng)人為干預(yù)達(dá)到極致的時(shí)候,所謂的“圍棋人工智能”就退回到了早年的“人工補(bǔ)丁+專家數(shù)據(jù)庫”的計(jì)算機(jī)圍棋程序時(shí)代。 DeepZenGo為什么存在著直到引退都無法克服的死活判斷+打劫+官子缺陷?就是因?yàn)?span>它的算法里含有很多Zen時(shí)代的東西。DeepZenGo始終沒有擺脫舊日領(lǐng)先、今時(shí)落后的負(fù)累,——這些曾經(jīng)是他們引以為傲的成果。 “星陣”是否背負(fù)了“神算子”算法上的某些負(fù)資產(chǎn)呢? 當(dāng)年的計(jì)算機(jī)圍棋程序是怎么做的?這個地方發(fā)現(xiàn)有bug,好,打個補(bǔ)?。徊季植惶?,那就把人類高手的對局?jǐn)?shù)據(jù)拿來作參考數(shù)據(jù);定式下得不對,那就把常見定式弄進(jìn)去。可是圍棋的變化太多了,不會重復(fù)的棋局?jǐn)?shù)量浩如煙海,你怎么管得過來?總有你預(yù)料不到的新問題出現(xiàn)。 AlphaGo Lee在第四局出錯了。2016年的那次人機(jī)大戰(zhàn)結(jié)束后,DeepMind在幾個月內(nèi)沒有對外發(fā)聲。所有人都在猜測他們是怎么尋找這個bug,然后怎么修補(bǔ),說白了就是覺得他們會打補(bǔ)丁唄。以前不都是這么做的嗎? 然而DeepMind沒打補(bǔ)丁。讓AlphaGo通過自我學(xué)習(xí),然后就克服了這個問題。他們沒有做針對某一個錯誤的人工修補(bǔ)。當(dāng)然,為了讓AlphaGo學(xué)習(xí)得更快,DeepMind倒是設(shè)計(jì)了一些專門喂招的特殊AlphaGo,針對性地提供前代版本容易上套的招法,使得升級后的AlphaGo吃一塹長一智。這都是AlphaGo“靠自己學(xué)習(xí)”得到的長進(jìn)。 DeepMind還進(jìn)一步優(yōu)化了神經(jīng)網(wǎng)絡(luò)架構(gòu),讓AlphaGo消耗更小的運(yùn)算資源便獲得更強(qiáng)大的棋力,同時(shí)更不需要人類圍棋專家的知識和建議作指導(dǎo),直至后來走上了“從零開始”的道路。 從AlphaGo的演進(jìn)過程中,我們看到AlphaGo越來越強(qiáng),直到現(xiàn)在,大家也公認(rèn)AlphaGo Master / AlphaGo Zero / AlphaZero 占據(jù)圍棋的三座高峰,只有效仿其思路的AI才可與其有接近的棋力,它們的共同特點(diǎn)就是讓AI自我學(xué)習(xí)、人工干預(yù)少。 其他AI,人工干預(yù)得越多,成長所遇到的障礙就越多,下著下著,不是這個地方出現(xiàn)低級錯誤,就是那個地方又崩潰了。問題總比補(bǔ)丁多,打到什么時(shí)候是個頭?。?/strong> 機(jī)器學(xué)習(xí)存在“黑盒子現(xiàn)象”。我們不知道施加一個人工干預(yù)的動作后,是否會引發(fā)什么不可知的連鎖反應(yīng)。人工干預(yù)越多,產(chǎn)生的影響越難監(jiān)測和控制,有一個形象的比喻是“牽一發(fā)而動全身”。至于為什么牽了一發(fā)就會動全身,對不起,這一過程發(fā)生在漆黑一片的密閉空間,天知道是什么個機(jī)理。 ※ “優(yōu)勢下不退讓”,這種說法本身就是要對AI施加人工干預(yù)。而且,如我們前文所述,這個干預(yù)還個標(biāo)準(zhǔn)很難確定的東西。 退讓,那就意味著有贏多贏少的概念了。AlphaGo是贏得越穩(wěn)越好,不在意贏多贏少,星陣則是贏得越多越好。 贏得目數(shù)越多,就越得到“鼓勵”。怎樣贏得更多呢?殺棋屠龍,或者下得更撐。逆收七目的官子大,還是搏一把干掉對方一條大龍贏二十目大? 這不僅是對終局結(jié)果設(shè)置了“考核標(biāo)準(zhǔn)”,還相當(dāng)于蔓延到對整個對局進(jìn)程產(chǎn)生干擾。 曾經(jīng),圍棋也有下彩棋的,贏得目數(shù)越多,彩頭就越多。下彩棋的棋手在整個棋局的進(jìn)程中都是以此為目標(biāo)選擇招法的。這可絕不僅僅是官子收得嚴(yán)謹(jǐn)一點(diǎn)而已。 我們在星陣的棋譜中,看到了不少“撐得很猛”的招法,有些是成立的,有些是不成立的。不知道這樣的棋風(fēng)是無心插柳,還是有意栽花? 如果星陣在局部死活判斷、大范圍對殺、打劫和官子上存在與DeepZenGo相似的問題,那么柯潔在10天后的人機(jī)大戰(zhàn)中未必沒有機(jī)會。 ※ 星陣輸?shù)倪@幾局棋,并不是在分先正常下的對局中輸?shù)舻摹?/strong>這一點(diǎn)也應(yīng)該指出來。 輸給Leela Zero的兩局是“讓位”了,即第一手或前兩手落在高位,勝率比正常下略低;輸給姜東潤的對局是讓先的棋份。在這三局中,星陣均有明顯冒進(jìn)的高風(fēng)險(xiǎn)招法,似乎急于扳回。 正常進(jìn)行也許未必會輸。然而,死活判斷和打劫出錯與此關(guān)系不大,這個明顯的BUG肯定是存在的。 只是不清楚星陣的這些BUG有多大成分是純粹的計(jì)算力不足所致,又或者與DeepZenGo相似,是人工干預(yù)和其他因素產(chǎn)生的算法固有缺陷而所致。 理論上,如果計(jì)算力無窮大,我們直接用蒙特卡洛樹搜索的算法就能戰(zhàn)無不勝;但實(shí)際上,誰也做不到計(jì)算力無窮大,算法設(shè)計(jì)得越好,達(dá)到同樣棋力所需的計(jì)算力就越小,在同等計(jì)算力支撐下達(dá)到的棋力就更高。AlphaGo Master用四個TPU所達(dá)成的棋力,AlphaGo Lee就絕對做不到,分布式的棋力仍不及前者的單機(jī)版。 計(jì)算力多少叫夠用呢?永遠(yuǎn)都不夠用。在計(jì)算力有限的前提下,只能把算法做得更好了。 訓(xùn)練AI所需要的計(jì)算力與運(yùn)行其所需要的計(jì)算力不是一回事。這一點(diǎn)正是大公司掌握豐富資源的優(yōu)勢所在。不過,如果設(shè)計(jì)思路本身就有缺陷,即便提供足夠的資源,恐怕也未必能夠達(dá)到所期待的高度。 |
|