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