Board logo

标题: 胡耀宇:通过星阵自对弈,聊聊怎么解读AI [打印本页]

作者: 天马行空    时间: 2019-3-30 21:55     标题: 胡耀宇:通过星阵自对弈,聊聊怎么解读AI

原创: 耀宇围棋  2019-03-28

大家好,这段时间在准备CCTV杯快棋赛,所以没有及时更新内容。

今天上午第一轮,发挥得不错,顺利晋级。

但下午第二轮,输在了优势下的松懈。该出招时不出招,反受其乱。

虽然有些遗憾,但作为人来说,下棋本来就是一种修炼和超越自我的过程。所以就当付学费买个教训,下盘棋争取做得更好便是。

[attach]146523[/attach]


今天,我要跟大家聊的这盘棋,对弈双方都不是人,而是一个人工智能自己在跟自己下棋。

大家看到这,可能会觉得这应该是AlphaGo的左右互搏自对弈棋局。

这次还真不是,我现在手上的这张棋谱,是星阵围棋的团队给我的,对弈双方是中国围棋人工智能星阵和自己。

提起星阵,大家应该都知道,它首先实力了得,去年“中信证券杯”世界人工智能大赛中,虽然绝艺未参赛,但它超越了AQ和ELF后夺取冠军,其含金量也很足。这充分证明了星阵的实力。

其次,星阵是一位特别与众不同的AI,当其他AI在优势局面下进行“剪枝”开始退让,不求多胜只求稳胜时,它却不这样干,无论多大优势,只要它认为能行的棋,就以最强手出击。颇有人类围棋的影子和味道。

我手上这张棋谱,是星阵每步棋花了30秒思考的左右互搏对局。

以前都是跟大家分享我对于人类之间或者人与AI之间对局的感想。

今天我尝试着和大家分享一下我如何来看AI自对弈的对局。

我会从三个方面聊起:

1:如何看待AI在布局上推荐的选点?

2:AI在中盘时重视什么?

3:遇到大型对杀时,如何验证AI是否正确?

下面让我们一起进入这盘星阵自对弈的精彩实战对局:

1
布局篇

[attach]146524[/attach]


星阵首选A点,胜率43.1%;若选B点,胜率42.4%

图1:我一下子不知道该怎么称呼两位“对局者”,就叫它们星阵A和星阵B吧。

现在星阵B白26飞起,右上角的流行定式告一段落了。布局则还在进行中。

这时候黑棋大致有两个选点:

A点挂角:这步棋是最容易想到的一手,它威胁着白左下星位一子的同时,还扩张了右边至右下黑三角阵势的规模,使之更加立体化。

B点挂角:这步棋意在破坏上方白三角阵势。

这两点到底哪个好呢?

可能有些棋友会回答:“胡老师,你看星阵首选的是A点,而且A点的胜率比B点多0.7%的胜率,那就选A点吧。

在回答这个问题前,我先跟大家分享一下自己对这两点的分析。

我们先来看A点挂角:

[attach]146525[/attach]


图2:黑1挂角,白棋对此有不少应法,我们就先假设白2小飞吧。

对此黑棋其实也有不少下法,但为了方便大家理解,我就按黑3大飞拆回来看。

此时右边至右下黑三角阵势由于黑1、3的呼应,升级成了立体阵势。立体阵势的高效就在于:“无论你打入哪一边,另一边必然会通过攻击自然成空”。

所以这时候白棋若直接深入黑阵未必是良策,因此白4左上小飞守角先确保左上角扎实,同时与右上白角呼应形成了阵势,再配合上左下白角,也形成了一个立体阵势。

如此进行的话,棋局将形成黑白互围大模样的格局。

那么B点挂角又会是什么情况呢?

[attach]146526[/attach]


图3:黑B位挂角,最需要担心的就是白1、3尖顶了跳,利用白上边的子力优势来攻击黑棋(白1若夹击,黑可点三三转身取角)

但此局面下,黑棋还是可以从容应对的:

1:黑4有充分的拆边空间。黑4是可以拆三而不是拆二。若只能拆二的话,黑棋不仅局部很局促,对白棋也构不成威胁,那这个破坏白阵的效率就不高了。

2:黑4拆三不仅是防守自己,同时威胁着右上角白棋大块,因为接下来黑A位飞的话,白右上大块未安定。

3:由于黑4拆三威胁着右上白角,因此等于间接的缓解了白C位动出手段的压力,由于白右上角未安定,白C位动出就需要掂量掂量了。

以上看似独立的三点,其实都由一个重要条件联系起来,那就是右上白三角大块的强弱问题:

[attach]146527[/attach]


假设白棋A位多颗子

图4:比如白若是在右上角有颗A位的子,那情况就完全不同了。

首先由于右上白角多了A位这颗子后已经彻底安定,黑4拆三不仅对白棋构不成威胁,反而遭来白C的残酷打入。所以黑4基本上只能委屈的在D位拆个小二。

其次由于右上白角已经彻底安定,因此黑4这颗子对右上白角产生不了任何威胁和牵制,所以白今后随时可在E位动出白圆圈一子,并且不用考虑后顾之忧。

那如果是这样,黑B位挂角的价值顿时锐减。因为黑所得仅仅是单纯破了白棋上边的一些空,不仅下一步对白棋毫无威胁,自身还落下一块孤棋,将来慢慢还债。

所以黑B点挂角之所以在星阵的选点范围内,是因为星阵早看见右上白角是未安定之形

以上是我对图1中AB两个选点的分析,下面我们再来回答一下图1的开始问题:

[attach]146528[/attach]


图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
中盘篇

[attach]146529[/attach]


图6:现在我们再来到白76冲的局面。左下战役似乎刚刚结束,黑三角大块和白三角大块虽然还未安定,但由于两块棋的出头都还挺畅,根据地也随时可搭出两只眼来。因此焦点似乎应该转向别处:

[attach]146530[/attach]


图7:既然左边双方暂时看不出啥死活危机,那么黑1在右边夹攻白三角一子,顿时成了此局面下的香饽饽。

黑1不仅是利用了右上黑三角背景的厚味扩张了阵势,使得三角标识处基本都要姓黑了;更威胁着白三角一子的眼形,使之没有根据地。

一旦白三角一子仓皇往外逃窜的话,黑可利用攻击之便,将右边和右下角顺势实地化。不得不说,黑1这步棋是眼见的绝好点。

但是,星阵同学却不这么认为:

[attach]146531[/attach]


星阵首选黑77,胜率44%;A点不在选择范围内,胜率37%。

图8:星阵同学下出了黑77二路托,这步棋看着往二路下一手,到底啥意思?

此招位置虽然看着很低,但其用意则很深远。我们先从技术层面来分析:

[attach]146532[/attach]


图9:面对黑77(黑三角一子)二路托,白第一感是A位二路扳反击,但黑B二路长之后,白棋发现白1接和黑2成见合之势。

白1若是粘上,黑2粘上后,不仅自身连络,还将白三角两子收入囊中。收获巨大。

那么白A若是不反击呢?

[attach]146533[/attach]


图10:面对黑77(黑三角一子)二路托,白既然无法反击,那就只能白1粘回,这样黑2二路退回。

这样相比黑2直接小尖,等于黑三角爬和白1粘先手交换到了。

这下先手交换获利很大:首先使黑圆圈大块彻底净活了;其次使白三角大块的根据地一只眼都没了(白A位扳做不出眼)

这就是黑三角二路托在技术层面的厉害之处。

下面我们跟着实战走,再从价值层面分析一下黑77这步好手:

[attach]146534[/attach]


图11:实战星阵B是白78先扳一下然后再白80位粘,对此星阵A黑81断死白78一子。

粗粗一看,星阵B不是将白78一子送死吗?

它是有意为之的,与图10相比,星阵B就是想通过弃掉白78一子,获取A位二路挡的先手。这样可确保今后B位二路虎能搭出一只眼。

那么黑77二路托的价值到底有多大呢?

请大家接着看下图,我们来讨论一下黑77的价值:

[attach]146535[/attach]


图12:在图7中,我们说到了第一眼就发现黑1价值太大了,但是当黑1落下时,几乎所有的AI,第一感都指向了白2二路小尖。

我们就拿此图和图11的实战比较一下,看看图11中黑77二路托的价值是多少。

我们先来看实地价值:

此图白1小尖后,白局部实地大致约3目;黑局部实地大致约1目。

而图11的实战结果,白局部实地0目,而黑局部有6目。

这一出一入,实地价值相差约8目。

我们接着来看附带价值:

此图白1小尖后,白局部基本净活;而黑局部则只有半只眼。

而图11的实战结果,黑局部彻底净活;而白局部只剩下半只眼。

通过以上分析,我们大致有个结论:星阵黑77二路托的实地价值并不大,但附带价值巨大!

这附带价值事关黑白两块的劳逸问题,此图是别人安定了,自己漫漫长路;而实战则是自己彻底安定了,别人却开始漫漫长路。

由此可见,在事关双方的劳逸问题上,不管是星阵还是其他AI,都极为重视。

我小时候学棋时,经常听到两个围棋名词:急所和大场。

都说急所的价值要比大场大。

大场好理解,就是布局时的布阵要点。

但急所是什么,我那时老搞不明白。

星阵这黑77二路托,就是急所。

实地价值是眼见可量化的,谁见谁爱。

而劳逸问题也许暂时看不到现实的利益,却很可能对棋局今后的发展产生巨大而深远的影响。

如果你无视劳逸问题而一味只看实地价值,那随着棋局的进展,你先前捞的实地非但不保,甚至还要倒贴很多。

在这一点上,如果你仔细去观察,就会发现AI一直都在提醒我们。

AI的很多招法看似颠覆了我们的认知,但那只是形式上的改变,在围棋的根本规律上,其实从未改变。相反,它的出现,更验证了这些围棋基本理论根基的牢固性。

3
死活篇

[attach]146536[/attach]


白选A点,黑胜率42.2%

图13:最后一节,我们来看看本局最精彩的地方。

星阵A和星阵B厮杀了满盘后,局势依然很胶着。

果然是左右互搏,实力不分伯仲。

星阵A黑163冲,准备利用白三角大块还未在A位连络而获取便宜。对此星阵B若正常在A位连络,将是白棋略优的局势,胜负将取决于官子。

但星阵同学天生就不是为了稳赢而剪枝的AI,它喜欢追求最强手。

于是星阵B同学就来了:

[attach]146537[/attach]


图14:星阵B同学没有在B位救回白三角数子,而是跑去白164提劫。

这步棋的意图就是:“你要敢B位吃我三角数子,我就A位提劫将你右边阵势打穿并反杀你;你若听话,乖乖在A位粘上,那我再B位连络,这样白164先手提一下劫总便宜了。”

这星阵B真是太猛了,冒着白三角数子被吃的危险,就为了那白164轻轻的先手提个劫。

但星阵B同学就是要在这里针锋相对:“你星阵A敢黑163威胁我,我逃命前也要白164恶心一下你”。

真是一位性格刚烈的AI。

对此星阵A也不是好惹的:

[attach]146538[/attach]


白166=A

图15:白164提劫的时候,本是同根生的星阵A那能忍受A位粘回的屈辱,它闭着眼睛就先黑165将白三角数子切断干掉再说。

这样白三角数子共25目的实地价值就被黑棋收进口袋。

这边损失了,那边肯定要补回来,白166接着提,黑右边原本有近40目实地的阵势,很可能不仅被破,还要面临被白反吃的危险境地。

关键就在黑167堵住后这个劫争上了。

白168开劫后白170扑是绝对的一枚劫材,对此黑171必须应。

这时候按正常的逻辑来说,你白棋找完劫材,下一步肯定是A位接着提劫与黑棋打这个超级劫争。

但星阵B却意外的没提劫:

[attach]146539[/attach]


图16:星阵B没有在A位提劫,而是突然白172冲一下后白174单勾一个。

它的目的很明显,就是想让黑棋B位跟着应,它再C位接着挤,黑D位断。

但这不是在浪费自己的劫材吗?

本来A位提劫,这些先手交换都可以当劫材来使的。

我当时看到这就纳闷了。再顺着星阵B的用意往下推理,唯一的解释就是它这串交换后,下一手可确保E位断吃黑三角一子。

可是黑三角一子的价值太小了,它老盯着这颗子干吗?

唯一的解释就是它想先手加强白左上角。

可是左上白角不是无大碍吗?黑棋最严厉的手段就是F位扳了后H位一路连扳强行做劫。但这个劫一是黑棋打输了很损,二是右边还在超级劫争呢,黑棋哪有功夫在这搞这么勉强的劫?

一时不明白星阵B到底是什么用意。

直到我看到了星阵A下出黑175这本局的最后一手,才恍然大悟:

[attach]146540[/attach]


图17:黑175是本局的最后一手棋。

这步棋粗粗一看,以为是摆错地方了,但细细一品,却发现此招妙不可言:

[attach]146541[/attach]


黑175=黑1

图18:黑1一路侵袭白角后,白2若是普通二路长一个,黑3以下可利用黑三角子力的掩护,从一路暗渡陈仓。

黑7渡过后,白角搭不出两只眼,与中央白子一起阵亡。

在这个过程中,白2有最强应对:

[attach]146542[/attach]


图19:白1扳是最强应对,对此黑2一路夹是妙手。

然后白3、5祭出“苦肉计”,是白棋唯一可以避免净死的组合好手。

以下黑A提、白B倒虎、黑C挡、白D扑劫,白局部虽可逃过无条件净死,但也非常惨:

这个劫,首先白棋之前目数已经亏损巨大,黑棋完全无忧;而更重要的是,这个劫是白棋不利的两手劫,也就是说,白棋需要再花两手棋才能净活,这劫打起来太累了。

星阵B一看此图虽可免死,但活罪难逃,于是就爽快认输了。

[attach]146543[/attach]


图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。虽然我们资源有限,但还是值得去尝试。”


祝愿他能成功!

文末是这盘星阵自对弈的全谱:

[attach]146544[/attach]


[attach]146545[/attach]






欢迎光临 亦苏围棋社区 (http://ysgo.91em.com/bbs/) Powered by Discuz! 7.2