AlphaGo 表現究竟如何?專業人士剖析圍棋世紀大戰第一場
引用本文轉載自微信公眾號“喆理圍棋”,作者為李喆六段,曾多次獲得全國圍棋賽事亞軍,有“天才型”少年的美稱。本文原標題為“【火線速遞】——李世石的策略與AlphaGo的弱點”,同時轉載時已經獲得作者同意。
引用這必將是載入史冊的一天。
人機圍棋巔峰大戰第一局,人類輸了。
賽前的預測,棋界絕大多數認為李世石必勝,科技界則大約是兩派各半。
認為李世石必勝的一方並非全都是出於傲慢無知,更多人不能相信的只是——這麼快。科技界也有很多人了解算法之後認為 AlphaGo 還不足以戰勝人類
從去年 10 月的五盤棋譜,到Google公開的論文,人們認為圍棋 AI 仍然存在弱點,存在不能在這麼短的時間內解決的問題,而這些問題將會導致 AI 在巔峰對決中失利。
然而,
李世石輸了。
關於這盤棋,會有很多解讀。不止在今天,甚至在數十年之後,這盤棋還可能會被拿出來研究,從棋譜上,更從人機不同的思維上。不論未來回看這盤棋的是人類還是真正有了自我意識的 AI,想必都會有與當下的我們不同的感受。而我們有義務把我們的感受和思考記錄下來,讓後人知道當時的人究竟是如何理解這盤棋,他們有哪些錯誤的認識、可笑的想法,又有哪些深刻的洞察。
我們來看看,今天這盤棋,究竟發生了什麼。這盤棋可能將是有史以來職業棋手最難以統一意見的對局,以下觀點是我個人見解,只是在圍棋AI時代毫無預兆迅猛而來時,一名棋手儘可能理性的分析和思考。
一、李世石的針對性策略
從棋譜來看,我認為李世石在這盤棋前後主要使用了一個試探,和兩個策略。
1)試探:從未出現過的佈局
李世石第 7 手,沒有按常規佈局在上邊連片,而選擇走在右邊。李世石自己在職業比賽中從未使用過這一開局,甚至整個職業圍棋界,沒有人見過這一開局。
李世石不按常規佈局,顯然是對電腦的一種試探。在去年 10 月 AlphaGo 對樊麾的五盤棋中,所有開局都是常規佈局,雖然那五盤的開局在今天已經不是主流,但都是曾經流行一時的佈局。
避開流行佈局,甚至避開曾經流行過的已經被淘汰的佈局,選擇一個從未出現過的佈局。李世石在考驗 AlphaGo 在佈局階段的應變能力。我們知道 AlphaGo 的深度學習基於大量已有對局的數據,那麼,面對一個棋譜庫裏從未見過的佈局,AlphaGo 你將如何應對?
AlphaGo 給出了完美的回答。
白 8 掛角正常,黑 9 二間高夾最為激烈。白 10,這一手……非常出色。
通常情況下,在右上白 8 遭遇二間高夾的時候,白 10 是“不存在”的一手,它不在任何定式之中。面對黑9,白棋有諸多定式選擇,卻沒有白 10 這一手。
然而,我認為白 10 是好手。
白 10 的好處在於使黑7變成效率低下的一手,雖然在右上局部白棋稍稍虧損,但加上黑 7 的低效,白棋一點也不吃虧。
AI 竟然會通盤考慮!傳統的圍棋 AI,會根據已有棋譜來走定式,定式是經過長期檢驗的局部雙方可以接受的定型。然而定式的弊端就在於,不同的周圍環境,定式的適用性有所不同。從這盤棋來看,黑 9 夾擊之後,白棋如果選擇面對二間高夾最常用的“妖刀”定式,即走在 15 位,反而將使黑7的位置成為絕對的好點,黑 7 的效率將會大大提升。
實戰白棋選擇了一個定式裏沒有的、局部稍虧的、卻使得黑7這個遙遠棋子的效率變低的下法,非常清楚地證明了兩點:
- 電腦不依靠背譜來下棋
- 電腦的考慮基於全局而非局部
當然,第一點其實在對樊麾的棋譜中已經可以看出來。在對樊麾的常規開局中,AI 出現了數次不同於“譜着”的下法。其中有一盤出現“大雪崩”定式,電腦選擇的次序是定式和棋譜裏沒有的,而且是從邏輯上不如譜着的。注意,這裏強調是邏輯上不如譜着,而不是在經驗上。即,AI 當時的次序是“絕對弱於”譜着,只可能虧沒可能便宜,雖然選點是正確的,但在我們看來是“次序錯誤”。這體現出,AlphaGo 不依賴於定式和譜着,但也暴露出 AI 在邏輯上的不足,反應在棋盤上就可能會出現次序錯誤。這一點,也是棋手普遍不看好 AI 能戰勝李世石的一個原因。
但這一問題在這盤棋我們並沒有看到。起碼,沒有非常明顯地顯現出來(後面會提到一個細微的類似問題)。
而第二點則是這盤棋 AI 開局給我們秀出的能力。他輕易擺脱了李世石設下的定式圈套,以全局的視野作出了定式中不存在的選擇。
如果説第一點是我們在 AlphaGo 對樊麾時已經能夠看到的情況,那麼第二點則是這局棋在佈局階段對人類試探的完美答覆。如果只依靠大量棋譜堆砌出來的局部圖像識別,AI 做不出這樣的選擇。
2)策略一:開放式複雜局面
李世石第一次試探得到了 AI 的完美答覆,然後李世石使用了他的一個重要策略。從局後來看,正是這一策略導致了李世石局面的被動,但在賽前,我們並未想到這一點。
我們不知道李世石在賽前有沒有接受人工智能領域專家對 Alphago 算法的分析,但從李世石採取的策略來看,他顯然有非常強的針對性。
我們知道,深度學習在圍棋盤上的主要作用是大量剪枝,通過價值網絡和策略網絡,將搜索的空間大幅減小,形成“棋感”。在這個基礎上,再輔以傳統的蒙特卡洛算法做搜索計算,最終確定落子的選擇。圍棋中存在一些封閉的計算空間,比如局部的“死活題”,對於 AI 而言可以通過窮舉來遍歷每一個選點,從而完成計算,得出落子點。但圍棋中更難的部分是開放式的複雜局面,每一處的不同選擇都會波及到其它地方,所謂“牽一髮而動全身”。而這種局面頭緒繁多,可供思考的選點很多,不同選點之後變化的深度和廣度都很大,並且往往一個細微的計算失誤會導致整局棋的徹底失敗。對於職業棋手而言,這種局面正是最難把握的局面之一。
賽前有人猜測,AlphaGo 的剪枝面對開放性複雜局面的效用將會降低,而搜索的深度廣度和準確度要求又使得AI不能依靠蒙特卡洛算法達到精確,因此這很可能是基於深度學習和蒙特卡洛的圍棋 AI 的一個弱點。
不論李世石是否了解到這些,總之他使用了一個策略:迅速導入開放式複雜局面。
這裏不做過於具體的技術分析。李世石第 23 手靠,和第 27 手擋,將局面導向了開放式複雜局面。原本李世石有更為柔和的選擇,但他選擇了最為強硬的下法。我們看到,AI 的白 24、26、28 是非常敏鋭的戰鬥嗅覺,完全沒有避戰。
從我的經驗來看,這個戰鬥是由黑方挑起的,而黑方挑起戰鬥的時機並不成熟。在勢均力敵的對局中,我們往往會試圖在認為有超過 50% 成功率的時機選擇戰鬥,只是棋手有力戰派和穩健派的分別,力戰派對於戰鬥的判斷會更為樂觀一些。
李世石是偏力戰的棋手。但在本局中,這一開戰時機仍然是過早了,可以説是立足未穩時衝向了敵營。我相信在對手是人的情況下李世石通常不會如此選擇,他會尋找一個更合適的時機展開戰鬥,而且他本身就是一個極為擅長尋找戰機的大師。
但是他選擇了不等佈局結束,直接開戰。
至此,形成了六七塊棋互相糾纏的局面,頭緒非常之多。這是典型的開放式複雜局面。
仔細觀察可以看到,AI 是有機會避開這種局面的。
白 42 手可以選擇在 1 位這裏貼吃,選擇吃掉中間兩子,棄掉上邊三子形成轉換,如此便會避免複雜的戰鬥局面,形勢也並不落後。
但實戰白棋選擇把上邊三子跳出,形成混戰局面。這是更強的下法。
那麼,在進入開放性複雜局面之後,AlphaGo 的表現如何呢?
答案是,非常好。
下午我在新浪和俞斌老師一起做現場直播時,同步進行至此,俞老表示擔心白棋上邊二路立一個先行搜刮,趁黑立足未穩先賺取利益。話音未落我們就看到 AlphaGo 下出了這一步。
這步靠,本身似乎是“不成立”的,因為黑棋可以輕易地徵吃白棋。這一步是業餘棋手絕難想到的下法,因為白棋右上自身正處於防守狀態,順着往下貼是本能下法。然而 AI 下出這一步,在防守時反手一擊,包含了棄子整形、試問應手等諸多人類理解的含義。
誠然,黑棋可以很輕易地吃掉白棋靠出來的這個棋子,但代價是黑 1 的俗手打吃和白 4 的先手便宜。職業棋手能夠很容易地看出白棋送一個子整形是有所便宜的,但 AI 也能輕鬆地做出這一判斷,並且在防守時有此“意識”,真的很神奇。
當然,對於跨斷送吃這步棋究竟是否“好”,棋界並不能給出十分確定的統一答案。但是 AI 下出這步棋,仍然是對其能力的展現,起碼認為 AI 不會主動棄子、不會防守反擊的論斷可以休矣。
棋局至此,其間的進程在這裏不做技術細節上的評論。簡而言之,面對開放式複雜局面,白棋處理得井然有序,該棄的棄,該取的取。李世石的第一策略宣告失敗。
這證明了,基於深度學習和蒙特卡洛的圍棋 AI 面對“開放性複雜局面”時的能力並未如設想般下降,反而應對得法,在李世石挑起不利戰鬥的情況下取得了局面的領先。
李世石或許意識到了這一策略並未奏效,於是迅速調整,進入了第二策略。
3)策略二:膠着的細棋局面
事實證明 AlphaGo 並不懼怕複雜的戰鬥格局,於是李世石選擇及時收手,試圖將局面導向細棋。
細棋局面下,要求雙方在每一處細小的地域爭奪上都儘量做到極致,一兩處的失誤雖然不會造成大片傷亡,但常常足以致負。
第77手,這是李世石第二策略的開始。這手棋宣告停戰,進入膠着的細棋狀態,比拼後半盤的功力。如果不選擇停戰,李世石可以考慮直接在左下掛角,引誘白中腹兩子逃出,進而繼續戰鬥。
但李世石認為第一策略的試探已經完畢,沒有奏效,因此選擇了第二策略。
接下來的棋局,我們轉換一下視角,從 AlphaGo 的角度來探究。
二、AlphaGo 的爭議着法
關於 AlphaGo 在此局的表現,棋界比較一致的觀點是從佈局到中盤的激戰白棋下得很好,分歧點主要在對 AlphaGo 在後半盤的表現。
1) 緩手?
第一個焦點是第 80 手。上一手黑棋剛在下邊掛角,白棋正常的下法是在左邊跟着守一步。但實戰白棋選擇脱先,在左上補了一手。
黑棋上一步沒有選擇在左上馬上行動,是認為這樣直接作戰並沒有把握。實戰先在下邊掛角,穩住實地,再作圖謀。
面對左下掛角,局部跟着應一個是最常見的下法。但黑棋在確保了下邊的地域之後,左上可能會選擇現在 2 位迂迴,如果白棋毫不退讓,那麼 6 位再戰出相當嚴厲。如果白棋退讓,黑棋可以得到左上的角地。這裏具體的定型變化並不容易得出結論,存在不少分支。
實戰白棋選擇了脱先補左上,左下黑棋得到“雙飛燕”作為補償。至此,對棋局的判斷出現分歧。做直播的棋手中,有一些認為此時已經是黑棋優勢,白棋上一步補棋是大緩手。也有人認為白上一步雖然緩,但形勢還是白棋不錯。
上一步究竟是不是緩手?我們這裏先不做結論,往下看。
2) 惡手?
下一個焦點在第 86 手。
白86斷,又是棋譜裏沒有的下法。不過對局至此,我們對此已經並不驚訝。這步斷的意圖對人而言很好理解,由於黑棋右邊很厚,白棋想通過棄子整形,使黑棋的厚勢變得重複、效率低下。從人的角度來看,這是白棋最明顯的意圖。
實戰結果,棋手普遍認為左下白棋虧損,並且是嚴重虧損。這是因為,黑棋圍住了一大塊空,白棋實地受損。
普遍推薦的變化是這樣,白棋在確保自身安全的同時儘可能縮小黑棋的地域。有人認為,這樣的進行白棋比實戰“便宜一個貼目”,也就是六七目。如果是這樣,實戰白棋的選擇虧損嚴重。
但是,這個圖存在一定的風險,關於這個風險我們留到後面來説。
三、載入史冊的一手!
左下定型結束,人類棋手普遍產生樂觀情緒:李世石優勢,AI 也不過如此嘛。
然而,接下來的 AlphaGo 的一步棋成為了此局最為閃耀的明星。
白 102,右邊三路點!
這一手必將載入圍棋的史冊,與古今諸多妙手共同譜寫燦爛的篇章!
在未來的 AI 棋譜中,必將留下非常多震撼人心的妙手:它們或許比這一手更加精妙,或許比這一手更加深奧,但它們都無法取代這一手在圍棋歷史中的位置!
此手完全出乎了李世石的預料,他面對這一手,進行了全局唯一一次長考,仍然遭受重創。
在直播時,也有職業高手在白棋下出這一步之前已經預測到這一手。但是,對於人而言這裏有一件非常有趣又苦惱的事情:對局者對於對方這種着法的預計往往不如觀戰者。
這是因為,觀戰者可以很輕鬆地站在雙方的立場來思考棋局,為雙方尋找最強的着法;而對局者更多時候是在思考自己的着法,相較而言會容易忽略對方隱蔽的強手。李世石如果預料到這一手,或許會在之前找機會刺一下作為防備。但作為對局者很難有如此周密的行為,尤其在面對AI的時候,更難想到電腦會有如此強的手段。
更有趣的是,這一手包含了相當大的計算量,有不少需要計算的分支,如果是人來下,即使能想到這一步,離真正算清楚並下出來還有不小的距離。也就是説,即使人類看到這一步,也要通過大量時間的計算來驗證這一步是否成立。然而,電腦下出這一步,並不比其他的着法用時更長,相反比後面一些人類看來簡單甚至必然的着法用時更短。
我們不禁要問:AI 真的都算清楚了嗎?
實戰的結果是這樣,白棋右邊先手割下黑棋三子,回到左上守角。順便提一句,這裏守角的手法值得注意,大量棋譜以及多數棋手的第一感都會走在旁邊一路,但只要仔細看一下就會發現,此局面下實戰 AlphaGo 的選點更好。
棋局至此,我認為已經是白棋稍優的局面,但也有人認為仍是細棋。
實戰黑棋 123 手以下明顯虧損,如圖尖頂活角優於實戰。但此圖究竟誰勝,還需要深入的仔細研究。我個人的意見是,白棋稍優,並且我猜測 AlphaGo 也認為能贏。
黑 123 以下在目數上虧損了接近一個貼目,使得棋局直接失去了懸念。最終雙方盤面接近,李世石無法貼目,投子認負。
我們驚異於 AlphaGo 的表現,驚歎於李世石的敗北。對於接下來的比賽,很關鍵的一個問題是,AlphaGo 究竟有沒有失誤?
四、AlphaGo 的“失誤”
這盤棋 AlphaGo 有沒有失誤?
令人欣慰,從人的眼光來看,我們可以找到 AlphaGo 的明顯失誤。這種失誤不是指那種基於人類經驗而認為的失誤(經驗有可能會騙人),而是可以通過邏輯分析來確認的失誤。
1)“失誤”一:
白 136 手吃。對於職業棋手而言很容易判斷,應該吃在一路,比實戰便宜大約 1 目。
2)“失誤”二:
白 142 手擋,對於職業棋手而言,這也是一個很容易確認的明顯虧損。
白棋正確的下法是1位跳,這樣將來留下了 5、7、9 吃兩子救回三子的下法,從目數上分析明顯優於實戰(大約 1-2 目)。即使白棋不在 5 位扳,走 8 位先手粘掉也優於實戰一點點。
這兩處“失誤”都是在局部,沒有任何與外界的關聯性,屬於封閉式的失誤,其虧損可以用邏輯推理的方式證明。相較於AI展示出來的水平,似乎這兩個失誤是“不應該”的。
基於此,又有棋手錶示:“這都看不到,AI 不過如此啊”。
前面“惡手”裏講到的左下角白棋的問題,也有人看做是第三個失誤。但那個失誤的性質與這兩個不同,我們對那個失誤的認定在很大程度上還是基於經驗的,雖然也包含了邏輯推理,但並不完全。在我看來,按照笛卡爾的理論,對這那失誤的認定是可懷疑的。
但這兩個失誤卻不可懷疑。既然如此,我為什麼要在標題裏給“失誤”打引號呢?
這引出了一個非常有趣的話題:在棋盤上,失誤的定義是什麼?
3)不同的“失誤”定義
對於我們棋手而言,什麼是棋盤上的失誤?假如我們把基於經驗認定的失誤都排除在外,只留下基於邏輯推理認定的失誤,那麼失誤意味着:A在邏輯上優於 B,而我選擇了 B。
在這個意義上,只要我們找到了“可確認的更優下法”,就認為我們出現了失誤。
但是,對於 AI 而言,失誤是否意味着相同的事情?我們怎麼理解AI出現了在我們看來低於其水準的失誤?
這就涉及到 AI 的算法問題。假如AI有一天窮盡了圍棋,那麼只要它有一步不踏在最優解集合裏,就是失誤。但是,現在的 AI 還遠無法窮盡圍棋。
AlphaGo 的算法運用了神經網絡加蒙特卡洛,蒙特卡洛算法的一個特點是:不求最優。
蒙特卡洛算法給出搜索之後的勝率評估,然後 AI 會根據這個勝率來選擇落子點。也就是説,AlphaGo 本來就不追求最強最優的下法,它只是追求在它看來勝率最高的下法。
那麼,回到前面那兩個“失誤”,之所以打上引號,是因為在 AlphaGo 看來,或許這根本不是失誤!
雖然在我們人類看來,邏輯上明顯 A 優於 B,但 AI 在那時認為兩者的勝率相似,從獲勝的角度來説,兩者沒有區別!甚至 A 之後的犯錯概率高於 B,從而導致它認為 B 的勝率高於 A!
如果兩條路同樣能通往勝利,在AI的意義上,你還能説它是失誤嗎?
或許能!
但是前提條件是人類利用這種“失誤”擊敗了它!否則,在AI的意義上我們無法指責那是它的失誤。
再回過頭看前面,白棋左上的補棋和左下損目搶得先手,真的是可以確認的壞棋嗎?
左上的補棋,證明 AI 認為補棋的勝率優於走左下,這一判斷很可能是建立在 AI 對右邊那手點的認識之上。甚至大家公認的左下白棋虧損,也可能是基於對右邊那手點的認識,希望在左下搶一個先手,並且在勝率上認為這是沒有問題的。
而李世石對形勢的判斷顯然是基於沒注意右邊那手點。
五、AlphaGo的“弱點”
這麼説,難道 AlphaGo 真的就不可戰勝了?不一定。從這盤棋中,我們可以看出 AlphaGo 的弱點。問題在於,這幾個弱點是否足以影響人機對決的勝負?
1) 邏輯缺失
雖然上一章我認為對AI失誤的認定需要謹慎,但在另一個層面上,這還是説明了 AlphaGO 的弱點。
深度學習加蒙特卡洛,AlphaGo 在剪枝和搜索這兩方面的能力在這盤棋中已經得到證明,人類下棋同樣依靠剪枝和搜索,並不能在這兩點佔得上風。
但是,AlphaGo 的算法缺乏邏輯能力。這一點實際上在 10 月對陣樊麾時已經有所體現,在這一局的兩處“失誤”則體現更為明顯。
蒙特卡洛算法使它並不是根據“邏輯上 A 優於 B ”來做選擇,而是根據AB各自的勝率來做決策。
在準確性上,概率不如邏輯。
AI基於邏輯缺失而導致的“失誤”,是否可能成為人類棋手的突破口?
2) 逃避劫爭?
AI 面對複雜劫爭時的糟糕表現,是蒙特卡洛時期固有的頑疾。去年在北京奪冠的圍棋 AI,在對陣連笑時甚至不能理解循環劫,不停地找劫來回提,使局面一塌糊塗。這是因為,基於概率,循環劫也總有打贏的可能。這也是第一個弱點的延伸,如果基於邏輯,會明白這是不可能的事情。
使用的深度學習的AI能否避免這個問題?目前我還沒有看到。不過,似乎 AI 有刻意逃避劫爭的傾向。
回到有爭議的左下角,棋手普遍認為白棋如圖是最強的下法,
但是 AlphaGo 可能擔心劫爭:
黑6開劫是最強的下法,在右邊點一手找劫,接下來可能形成轉換,白棋是否肯定便宜?粗粗一看,不能確定。
另一處有趣的是最後的官子:
此時白棋勝勢已定,在做最後的定型。黑棋左下先手搜刮,白棋需要做活。
實戰白棋選擇的是 1、3 做活,並非最強手。
最強手是白 1,成連環劫活,目數優於實戰。
但是,無論是出於不考慮最強手,還是出於對劫爭的逃避,實戰白棋沒有這樣選擇。
這麼看來,起碼 AlphaGo 還沒有顯示出它有應對複雜劫爭的能力。
那麼,劫爭是否會是 AlphaGo 的一個命門呢?
在我目前看來,AlphaGo 最可能的弱點只有這兩個。
六、人類可能的策略
基於對AlphaGo弱點的分析,我認為李世石接下來可選擇的策略並不是很多。
1,我最期待的策略是,李世石按照人類研究很深的套路開局,因為AI並不會背套路。即使不能憑此佔優勢,也要儘可能保持局面的均勢。在這個條件下,AI 或許會在一些簡單的局部因邏輯缺失而有所虧損,人類牢牢把握住這些微小的利益,最終取得小勝。不過,這似乎並不是李世石常用的風格。
2,另一個策略是在局面選擇中儘可能製造劫爭,即製造對方不開劫就不利的局面。當然,AlphaGo 目前沒展現出複雜劫爭的能力並不能證明它沒有這種能力,因此這種策略是存在風險的,太過刻意是不行的,還要考慮局面的自然和均衡。
七、結語
如果我們只用人類思考圍棋的方式來理解 AlphaGo,或許我們將永遠都不知道是怎麼輸的。
引用人類歷史上的最後一次“深藍”大戰?!3 月 9 日- 15 日,Google 出品的人工智能 AlphaGo 將迎戰目前世界最頂尖圍棋選手之一的李世石(韓國)。究竟人類能否在 5 場比賽中守住最後的尊嚴?愛範兒為你邀請了多位圍棋界頂尖棋手、人工智能領域專家進行全程跟蹤和報道,敬請持續關注!
題圖來自 Wikipedia
資料來源:愛範兒(ifanr)
作者/編輯:愛範兒