[棋訊] 胡耀宇|通過星陣自對弈,聊聊怎麼解讀AI

作者: HeterCompute (異質運算)   2019-03-29 13:45:59
本文來自微信公眾號:耀宇圍棋,作者胡耀宇八段
大家好,這段時間在準備CCTV杯快棋賽,所以沒有及時更新內容。
今天上午第一輪,發揮得不錯,順利晉級。
但下午第二輪,輸在了優勢下的鬆懈。該出招時不出招,反受其亂。
雖然有些遺憾,但作為人來說,下棋本來就是一種修煉和超越自我的過程。所以就當付學
費買個教訓,下盤棋爭取做得更好便是。
今天,我要跟大家聊的這盤棋,對弈雙方都不是人,而是一個人工智能自己在跟自己下
棋。
大家看到這,可能會覺得這應該是AlphaGo的左右互搏自對弈棋局。
這次還真不是,我現在手上的這張棋譜,是星陣圍棋的團隊給我的,對弈雙方是中國圍棋
人工智能星陣和自己。
提起星陣,大家應該都知道,它首先實力了得,去年“中信證券杯”世界人工智能大賽
中,雖然絕藝未參賽,但它超越了AQ和ELF後奪取冠軍,其含金量也很足。這充分證明了星
陣的實力。
其次,星陣是一位特別與眾不同的AI,當其他AI在優勢局面下進行“剪枝”開始退讓,不
求多勝只求穩勝時,它卻不這樣幹,無論多大優勢,只要它認為能行的棋,就以最強手出
擊。頗有人類圍棋的影子和味道。
我手上這張棋譜,是星陣每步棋花了30秒思考的左右互搏對局。
以前都是跟大家分享我對於人類之間或者人與AI之間對局的感想。
今天我嘗試著和大家分享一下我如何來看AI自對弈的對局。
我會從三個方面聊起:
1:如何看待AI在佈局上推薦的選點?
2:AI在中盤時重視什麼?
3:遇到大型對殺時,如何驗證AI是否正確?
下面讓我們一起進入這盤星陣自對弈的精彩實戰對局:
1
布局篇
https://i.imgur.com/4WHicsW.png
星陣首選A點,勝率43.1%;若選B點,勝率42.4%
圖1:我一下子不知道該怎麼稱呼兩位“對局者”,就叫它們星陣A和星陣B吧。
現在星陣B白26飛起,右上角的流行定式告一段落了。布局則還在進行中。
這時候黑棋大致有兩個選點:
A點掛角:這步棋是最容易想到的一手,它威脅著白左下星位一子的同時,還擴張了右邊至
右下黑三角陣勢的規模,使之更加立體化。
B點掛角:這步棋意在破壞上方白三角陣勢。
這兩點到底哪個好呢?
可能有些棋友會回答:“胡老師,你看星陣首選的是A點,而且A點的勝率比B點多0.7%的勝
率,那就選A點吧。”
在回答這個問題前,我先跟大家分享一下自己對這兩點的分析。
我們先來看A點掛角:
https://i.imgur.com/gV3QcI1.png
圖2:黑1掛角,白棋對此有不少應法,我們就先假設白2小飛吧。
對此黑棋其實也有不少下法,但為了方便大家理解,我就按黑3大飛拆回來看。
此時右邊至右下黑三角陣勢由於黑1、3的呼應,升級成了立體陣勢。立體陣勢的高效就在
於:“無論你打入哪一邊,另一邊必然會通過攻擊自然成空”。
所以這時候白棋若直接深入黑陣未必是良策,因此白4左上小飛守角先確保左上角紮實,同
時與右上白角呼應形成了陣勢,再配合上左下白角,也形成了一個立體陣勢。
如此進行的話,棋局將形成黑白互圍大模樣的格局。
那麼B點掛角又會是什麼情況呢?
https://i.imgur.com/hrqU5Bp.png
圖3:黑B位掛角,最需要擔心的就是白1、3尖頂了跳,利用白上邊的子力優勢來攻擊黑棋
(白1若夾擊,黑可點三三轉身取角)。
但此局面下,黑棋還是可以從容應對的:
1:黑4有充分的拆邊空間。黑4是可以拆三而不是拆二。若只能拆二的話,黑棋不僅局部很
局促,對白棋也構不成威脅,那這個破壞白陣的效率就不高了。
2:黑4拆三不僅是防守自己,同時威脅著右上角白棋大塊,因為接下來黑A位飛的話,白右
上大塊未安定。
3:由於黑4拆三威脅著右上白角,因此等於間接的緩解了白C位動出手段的壓力,由於白右
上角未安定,白C位動出就需要掂量掂量了。
以上看似獨立的三點,其實都由一個重要條件聯繫起來,那就是右上白三角大塊的強弱問
題:
https://i.imgur.com/PbxxDnn.png
假設白棋A位多顆子
圖4:比如白若是在右上角有顆A位的子,那情況就完全不同了。
首先由於右上白角多了A位這顆子後已經徹底安定,黑4拆三不僅對白棋構不成威脅,反而
遭來白C的殘酷打入。所以黑4基本上只能委屈的在D位拆個小二。
其次由於右上白角已經徹底安定,因此黑4這顆子對右上白角產生不了任何威脅和牽制,所
以白今後隨時可在E位動出白圓圈一子,並且不用考慮後顧之憂。
那如果是這樣,黑B位掛角的價值頓時銳減。因為黑所得僅僅是單純破了白棋上邊的一些空
,不僅下一步對白棋毫無威脅,自身還落下一塊孤棋,將來慢慢還債。
所以黑B點掛角之所以在星陣的選點範圍內,是因為星陣早看見右上白角是未安定之形。
以上是我對圖1中AB兩個選點的分析,下面我們再來回答一下圖1的開始問題:
https://i.imgur.com/HZxnjuv.png
圖5:雖然星陣認為A點掛角是它的首選,並且勝率高於B點掛角0.7%。
但這兩個點對我來說,真的很難去以絕對的好壞來看待。
我認為兩個點均可選擇。
但是,我會留意兩個地方:
1:按理說,A點相對於B點空間更廣,價值應該更大,但為什麼星陣覺得其中差別不是很
大?
這其中有個很重要的先決條件就是白右上角還未安定。一旦黑B位掛角後能占到C點逼住白
右上角,白右上角的不安定因素頓時顯現。是這個先決條件,讓黑B位掛角的價值得到提
升。
2:AB兩點所導致的戰略格局是大不相同的。 A點很容易形成雙方互圍模樣的格局;B點則
很容易形成雙方小塊分割的細棋格局。
因此雖然我無法判斷AB兩點的優劣,但我會根據對手的風格,來決定我的選擇。
對手若是酷愛戰鬥型棋風,那我很可能就會選擇B位掛角,將局面導入小塊分割的細棋格局
,讓對手的力量發揮不出來;若對手擅長小刀割肉的細棋格局,那我就會選擇A位掛角,將
局面引入雙方互圍模樣的複雜格局中,避開對手的長處。
第1點是通過提出疑問來整理選點背後的邏輯,並通過邏輯來推斷出AI所給數據背後的”所
以然“來。
第2點是理解AB兩點的特性,並為己所用,根據不同的對手製定不同的策略。
我們可能經常會遇到這樣的情況:“明明這是AI推薦的招,怎麼自己實戰中一運用就碰壁
了?”
那是因為雖然局部狀態沒變,但此局部周圍的先決條件改變了(就像圖4多了A位這顆子)
,那你依樣畫葫蘆自然要出問題。
若只看勝率的變化,當你遇到下一盤不同的局面,還是兩眼一抹黑;但若是慢慢學會通過
勝率來觀察局麵條件變化的不同,你就等於掌握了應變的能力,可以經得起實戰的考驗。
關於實戰星陣黑27到底選擇了A點還是B點?大家可以去看文末的棋譜。
2
中盤篇
https://i.imgur.com/Xn44bhd.png
圖6:現在我們再來到白76衝的局面。左下戰役似乎剛剛結束,黑三角大塊和白三角大塊
雖然還未安定,但由於兩塊棋的出頭都還挺暢,根據地也隨時可搭出兩隻眼來。因此焦點
似乎應該轉向別處:
https://i.imgur.com/THWz7ab.png
圖7:既然左邊雙方暫時看不出啥死活危機,那麼黑1在右邊夾攻白三角一子,頓時成了此
局面下的香餑餑。
黑1不僅是利用了右上黑三角背景的厚味擴張了陣勢,使得三角標識處基本都要姓黑了;
更威脅著白三角一子的眼形,使之沒有根據地。
一旦白三角一子倉皇往外逃竄的話,黑可利用攻擊之便,將右邊和右下角順勢實地化。不
得不說,黑1這步棋是眼見的絕好點。
但是,星陣同學卻不這麼認為:
星陣首選黑77,勝率44%;A點不在選擇範圍內,勝率37%。
https://i.imgur.com/8COhupZ.png
圖8:星陣同學下出了黑77二路托,這步棋看著往二路下一手,到底啥意思?
此招位置雖然看著很低,但其用意則很深遠。我們先從技術層面來分析:
https://i.imgur.com/TQQ1tQk.png
圖9:面對黑77(黑三角一子)二路托,白第一感是A位二路扳反擊,但黑B二路長之後,
白棋發現白1接和黑2成見合之勢。
白1若是粘上,黑2粘上後,不僅自身連絡,還將白三角兩子收入囊中。收穫巨大。
那麼白A若是不反擊呢?
https://i.imgur.com/dtclx0R.png
圖10:面對黑77(黑三角一子)二路托,白既然無法反擊,那就只能白1粘回,這樣黑2二
路退回。
這樣相比黑2直接小尖,等於黑三角爬和白1粘先手交換到了。
這下先手交換獲利很大:首先使黑圓圈大塊徹底淨活了;其次使白三角大塊的根據地一隻
眼都沒了(白A位扳做不出眼)。
這就是黑三角二路託在技術層面的厲害之處。
下面我們跟著實戰走,再從價值層面分析一下黑77這步好手:
https://i.imgur.com/hfajtZM.png
圖11:實戰星陣B是白78先扳一下然後再白80位粘,對此星陣A黑81斷死白78一子。
粗粗一看,星陣B不是將白78一子送死嗎?
它是有意為之的,與圖10相比,星陣B就是想通過棄掉白78一子,獲取A位二路擋的先手。
這樣可確保今後B位二路虎能搭出一隻眼。
那麼黑77二路託的價值到底有多大呢?
請大家接著看下圖,我們來討論一下黑77的價值:
https://i.imgur.com/8SsKzI4.png
圖12:在圖7中,我們說到了第一眼就發現黑1價值太大了,但是當黑1落下時,幾乎所有
的AI,第一感都指向了白2二路小尖。
我們就拿此圖和圖11的實戰比較一下,看看圖11中黑77二路託的價值是多少。
我們先來看實地價值:
此圖白1小尖後,白局部實地大致約3目;黑局部實地大致約1目。
而圖11的實戰結果,白局部實地0目,而黑局部有6目。
這一出一入,實地價值相差約8目。
我們接著來看附帶價值:
此圖白1小尖後,白局部基本淨活;而黑局部則只有半隻眼。
而圖11的實戰結果,黑局部徹底淨活;而白局部只剩下半隻眼。
通過以上分析,我們大致有個結論:星陣黑77二路託的實地價值並不大,但附帶價值巨
大!
這附帶價值事關黑白兩塊的勞逸問題,此圖是別人安定了,自己漫漫長路;而實戰則是自
己徹底安定了,別人卻開始漫漫長路。
由此可見,在事關雙方的勞逸問題上,不管是星陣還是其他AI,都極為重視。
我小時候學棋時,經常聽到兩個圍棋名詞:急所和大場。
都說急所的價值要比大場大。
大場好理解,就是佈局時的布陣要點。
但急所是什麼,我那時老搞不明白。
星陣這黑77二路托,就是急所。
實地價值是眼見可量化的,誰見誰愛。
而勞逸問題也許暫時看不到現實的利益,卻很可能對棋局今後的發展產生巨大而深遠的影
響。
如果你無視勞逸問題而一味只看實地價值,那隨著棋局的進展,你先前撈的實地非但不保
,甚至還要倒貼很多。
在這一點上,如果你仔細去觀察,就會發現AI一直都在提醒我們。
AI的很多招法看似顛覆了我們的認知,但那隻是形式上的改變,在圍棋的根本規律上,其
實從未改變。相反,它的出現,更驗證了這些圍棋基本理論根基的牢固性。
3
死活篇
https://i.imgur.com/OSRKDmz.png
白選A點,黑勝率42.2%
圖13:最後一節,我們來看看本局最精彩的地方。
星陣A和星陣B廝殺了滿盤後,局勢依然很膠著。
果然是左右互搏,實力不分伯仲。
星陣A黑163衝,準備利用白三角大塊還未在A位連絡而獲取便宜。對此星陣B若正常在A位
連絡,將是白棋略優的局勢,勝負將取決於官子。
但星陣同學天生就不是為了穩贏而剪枝的AI,牠喜歡追求最強手。
於是星陣B同學就來了:
https://i.imgur.com/klVfcgX.png
圖14:星陣B同學沒有在B位救回白三角數子,而是跑去白164提劫。
這步棋的意圖就是:“你要敢B位吃我三角數子,我就A位提劫將你右邊陣勢打穿並反殺
你;你若聽話,乖乖在A位粘上,那我再B位連絡,這樣白164先手提一下劫總便宜了。”
這星陣B真是太猛了,冒著白三角數子被吃的危險,就為了那白164輕輕的先手提個劫。
但星陣B同學就是要在這裡針鋒相對:“你星陣A敢黑163威脅我,我逃命前也要白164噁心
一下你”。
真是一位性格剛烈的AI。
對此星陣A也不是好惹的:
https://i.imgur.com/XOTwIIC.png
白166=A
圖15:白164提劫的時候,本是同根生的星陣A那能忍受A位粘回的屈辱,它閉著眼睛就先
黑165將白三角數子切斷幹掉再說。
這樣白三角數子共25目的實地價值就被黑棋收進口袋。
這邊損失了,那邊肯定要補回來,白166接著提,黑右邊原本有近40目實地的陣勢,很可
能不僅被破,還要面臨被白反吃的危險境地。
關鍵就在黑167堵住後這個劫爭上了。
白168開劫後白170撲是絕對的一枚劫材,對此黑171必須應。
這時候按正常的邏輯來說,你白棋找完劫材,下一步肯定是A位接著提劫與黑棋打這個超
級劫爭。
但星陣B卻意外的沒提劫:
https://i.imgur.com/A2Mn9GZ.png
圖16:星陣B沒有在A位提劫,而是突然白172沖一下後白174單勾一個。
它的目的很明顯,就是想讓黑棋B位跟著應,它再C位接著擠,黑D位斷。
但這不是在浪費自己的劫材嗎?
本來A位提劫,這些先手交換都可以當劫材來使的。
我當時看到這就納悶了。再順著星陣B的用意往下推理,唯一的解釋就是它這串交換後,
下一手可確保E位斷吃黑三角一子。
可是黑三角一子的價值太小了,它老盯著這顆子乾嗎?
唯一的解釋就是它想先手加強白左上角。
可是左上白角不是無大礙嗎?黑棋最嚴厲的手段就是F位扳了後H位一路連扳強行做劫。但
這個劫一是黑棋打輸了很損,二是右邊還在超級劫爭呢,黑棋哪有功夫在這搞這麼勉強的
劫?
一時不明白星陣B到底是什麼用意。
直到我看到了星陣A下出黑175這本局的最後一手,才恍然大悟:
https://i.imgur.com/UwTqBfa.png
圖17:黑175是本局的最後一手棋。
這步棋粗粗一看,以為是擺錯地方了,但細細一品,卻發現此招妙不可言:
https://i.imgur.com/5A5rqeE.png
黑175=黑1
圖18:黑1一路侵襲白角後,白2若是普通二路長一個,黑3以下可利用黑三角子力的掩護
,從一路暗渡陳倉。
黑7渡過後,白角搭不出兩隻眼,與中央白子一起陣亡。
在這個過程中,白2有最強應對:
https://i.imgur.com/gl349mg.png
圖19:白1扳是最強應對,對此黑2一路夾是妙手。
然後白3、5祭出“苦肉計”,是白棋唯一可以避免淨死的組合好手。
以下黑A提、白B倒虎、黑C擋、白D撲劫,白局部雖可逃過無條件淨死,但也非常慘:
這個劫,首先白棋之前目數已經虧損巨大,黑棋完全無憂;而更重要的是,這個劫是白棋
不利的兩手劫,也就是說,白棋需要再花兩手棋才能淨活,這劫打起來太累了。
星陣B一看此圖雖可免死,但活罪難逃,於是就爽快認輸了。
https://i.imgur.com/1W5p3bs.png
圖20:現在我們再回頭來看星陣B白172、174的招法,就能明白它的用意了:
星陣B當初選擇白164(白三角一子)提劫的時候,還沒看到左上角黑D位的鬼手。等看到
的時候,已經來不及了。
於是它趕緊白172、174亡羊補牢,期待黑棋暫時沒看見,在A、C位跟著應,這樣白左上角
因為多了E位的斷吃黑三角一子的手段,就可逃過一劫。
但它忘了星陣A跟它是同一個“人”,它看到的手段,星陣A也能看到。
總的來說,由於黑隨時有D位的鬼手,星陣B白164反擊是不行的。
雖然白164後的變化還是很複雜,比如白170這枚劫材特別損(白方塊和黑方塊交換),讓
黑圓圈4子無氣緊之憂。白170可以找別的劫材。但總的來說,白棋還是極為危險。
這裡我也用其他AI看了一下,它們也是一開始都沒看到黑D位的鬼手。隨著往下擺幾步,
它們才慢慢看到。
在與大家一起欣賞到黑175這步絕妙手的同時,我也想與大家分享一個自己的心得:
在復雜死活對殺,生死攸關的地方,不要不加思索就把AI的第一感認為是正解。因為往往
在這種地方,AI很可能開始是沒看到手段的。
這時最好自己先思考驗算一下,然後再看AI的勝率和推薦招法,若是有疑問,可以試著再
往下擺幾步,這時候很可能AI的勝率會發生很大的反轉和變化。
總而言之,自己需要先思考,這樣一是可以驗證AI的推薦是否靠譜;二是思考過程本身,
就有利於你更好的吸收AI的“養分”。
最後做個總結:
本文通過星陣的自對弈對局,我從佈局、中盤、死活三個方面與大家分享了我如何學習AI
的心得體會。
其實三點殊途同歸,都指向一點:我們該如何吸收AI給予我們的“養分”?
或者更深入的說,我們該如何挖掘和提煉AI提供的數據和“答案”背後的意義?
希望本文可以對大家有所幫助和啟發。
感謝星陣團隊提供給我們精彩的星陣自對弈棋譜,我一直對星陣很感興趣,因為它有自己
獨到的三處特點:
1:在低資源下保證星陣的訓練水平:
星陣團隊只有AlphaGo團隊1/100的計算資源,於是他們就在“節流”上做文章。在深度強
化學習的過程中,星陣從各方面下功夫,使用少量資源依然可以讓星陣保持著良好的競技
狀態,並且在世界大賽中取得優異的成績。
2:除了顯示勝率外,還可以用相對量化的目差來衡量當下局勢的好壞:
現在我們能看到AI提供的形勢判斷,都是勝率的顯示,但是勝率有時候還是相對抽象,讓
人捉摸不透。而星陣除了顯示勝率外,還提供了雙方目差的數據,這樣讓我們多了一個參
考來評估當下形勢,而且這個目差數據可以讓我們更量化直觀的了解當下的局勢狀況。
3:可在貼6目半和7目半之間隨意切換,不影響勝率的判斷。
在直播日韓舉行的世界大賽時,往往會遇到這樣的問題:明明對弈規則應該是黑貼6目半
,但其他AI都只能當作黑貼7目半來判斷形勢。
這樣有個問題就是若到了最後官子階段還是細棋局面,這1目的誤差,很可能會對勝率產
生很大的影響。並影響到我們對當下局面的判斷。
但星陣可以做到在黑貼6目半的情況下進行判斷,這能讓我們更客觀的了解當下局勢的好
壞。
在寫這篇棋評期間,我與深客科技CEO,星陣圍棋主創人,畢業於清華大學計算機系的金
涬先生見面溝通了很長時間。
我們探討了棋局,查看了星陣的後台數據,並且聊了從2016年AlphaGo橫空出世後,到如
今所發生的各種事情。
金涬給我這位人工智能領域的初學者,普及了很多有關AI方面的知識:
原來深度卷積神經網絡是AlphaGo能戰胜李世石的關鍵武器。
而價值網絡和快速走子網絡原來曾經一起共事,但隨著價值網絡的不斷進步,快速走子網
絡逐漸淡出了一線。
策略網絡居然真的可以模擬我們人類的直覺,使得價值網絡的計算效率大大提高。
至於深度強化學習,原來就是AI可以在脫離人類提供的棋譜後,依然能通過自對弈來製造
數據供自己學習的過程。
當最後我們聊到有關AlphaGo的第二篇論文時,金涬談到了他創建星陣的初衷:
“完全照著AlphaGo第二篇論文的內容去做星陣,當然也可以而且還更輕鬆,但這樣似乎
就沒啥意思了。因為這就算做到極致,也就跟Alpha Zero一樣。
所以總還是想在這基礎上,做一些創新。這樣一來比較有趣,而且可以給人們帶來更多的
價值和幫助。
二來,我認為Alpha Zero並非極限,所以想看看用別的途徑,有沒有可能超越Alpha Zero
。雖然我們資源有限,但還是值得去嘗試。 ”
祝愿他能成功!
文末是這盤星陣自對弈的全譜:
https://i.imgur.com/PbQPsnl.png
https://i.imgur.com/o11hi93.png
作者: hank93304 (hank93304)   2019-03-29 18:54:00
棋譜後半沒有放上來
作者: kenwufederer (Nash)   2019-03-29 22:53:00
不退讓殺到底跟懂退讓保證贏,想看他們對弈
作者: hank93304 (hank93304)   2019-03-29 23:57:00
謝謝棋譜~
作者: lala202020 (吉吉)   2019-03-30 01:46:00
AI似乎在死活上常常發生這種都看不到的情況?我之前拿leela和絕藝覆盤,結果他們推薦了同一步明顯會炸掉的棋,然後再下一手勝率瞬間從90%變成不到10%…
作者: forb9823018 (風過無痕)   2019-03-30 13:12:00
有人訓練兩個版本的leela 其他條件差不多的情況強硬到底跟退讓型的下勝率只有40%但退讓型也不是非常簡單的官子也會會讓就是了
作者: enjoytbook (en)   2019-03-30 16:05:00
看來佈局電爆人類真的不需要太多資源...
作者: bjiyxo (若自礌)   2019-03-30 17:14:00
不退讓勝率40%是誰訓練的方便透露嗎?我問袁泉,他說他沒做過這樣的測試
作者: kenwufederer (Nash)   2019-03-30 18:25:00
代表強硬到底對於勝率並沒有幫助?
作者: enjoytbook (en)   2019-03-30 20:22:00
說到底電腦退讓的定義是什麼@@
作者: kenwufederer (Nash)   2019-03-31 17:30:00
電腦不就是選勝率最高的嗎?有時候收官電腦看起來是退讓但會不會是因為選點都是99%,所以隨機選…我是覺得退讓這個詞根本不存在就是…或者說判斷局面不錯,發現漏算時,但勝率回不去了像是柯潔最強棋士戰,決賽的第64手絕藝似乎就沒有這一手,但勝率判斷是60%比絕藝自己的另外兩個58%跟54%都高所以是修改對勝率的判定?所以出現AI誤判,然後出現一些莫名招法?因為AI在不行的時候會出現無意義打吃之類的我一直以為是讓AI選擇只選擇勝率最高的就算只有0.1%也是
作者: ddavid (謊言接線生)   2019-04-01 02:06:00
印象中某些AI的設定是在一定範圍內勝率相近的幾個最佳著手中,不一定會每次都選最高的樣子

Links booklink

Contact Us: admin [ a t ] ucptt.com