Thumb Up   Thumb Down Comments

中国围棋AI在日拿冠军,绝艺到底有多强


  一、消失的Master,挣扎的DeepZenGo

  最近围棋圈里又出现一件值得注意的新鲜事,3月4日晚,绝艺对“世界冠军及全国冠军”们取得了18胜2负的战绩,成为网络对弈世界里第一个10段。回顾2016年末至2017年初,围棋AI“群狗闹新年”,Master对人类顶尖高手华丽60连胜。现出真身后,Master飘然而去。大师已不在江湖,江湖上还流传着大师的棋谱。

  职业高手们纷纷推出了对Master棋局的解析,或感性、或深入。业余棋友们则利用ZEN6、LeeLa等市面上流传的围棋AI,对这60局棋的走势进行分析。人类从未在这60局中取得领先,这个结论得到了一致公认。

 

Master执黑对孟泰龄,107手怪异地没有F7位提吃白四子


Master执黑对孟泰龄,白吃掉黑7子后的局面

  之前认为孟泰龄在Master打吃不应后提吃Master七子,局势可能领先。如上图所示,黑99冲白100挡之后,白的102、104、106三子都还在棋盘上,黑下的101、103、105却没有出现在棋盘上,因为被108这手全提掉了。与黑第101手直接下107相比,白相当于108一手就同时下了102、104、106、108四个子到棋盘上,Master的亏损一望可知。但是Master的人肉机械臂Aja Huang发贴说这是他摆错了一招棋,电脑107这手是想在F7提吃白四子的,这样仍然是黑棋优势。虽然黑方摆错棋,但孟泰龄时间紧张后面错得更厉害,还是输了。

  分析越深,Master的实力越是让人觉得深不可测。但Master在2017年1月4日之后,是真的不出来下棋了,正式消息都极少。之后数次爆出柯洁和AlphaGo第二次人机大战的消息,甚至有和人类高手组团对战的说法,都没有得到官方确认。无论如何,以谷歌的行事风格,应该不会让AlphaGo和人类高手战个痛快。

  Master出来下了60局棋看似不少,但是对局者、对局用时都是挑选的。职业棋手们虽然对Master的水平全都服气了,但显然很不过瘾。和Master下得最多的朴廷桓也只下了5局,中国棋手里孟泰龄下了4局最多。网络对弈时代,勤奋的棋手一年要下上千盘,60局远远不够。

  日本的Zen是AI勤奋对弈的典范,长年在业余棋迷为主的KGS上公开测试,受到棋迷的拥护。在学习AlphaGo的论文后升级为DeepZenGo之后,Zen在KGS上打到了第一名,并在与赵治勋的三番棋中胜了一局,首次有了正式比赛战胜职业棋手的记录。2016年12月29日几乎和Master同时,DeepZenGo来到弈城接受业余高手和职业棋手们的检验。到2017年2月15日退出,DeepZenGo下了上千盘棋,多次升级版本不断调试。

  这应该是为DeepZenGo在两个日本举办的正式大赛作准备。一个是3月21-23日的首届世界围棋锦标赛,冠军奖金额高达3000万日元(约180万人民币)。DeepZenGo作为AI代表,与三个分别来自中日韩的人类代表各下一局。

  另一个是3月18-19日的传统赛事第10届UEC杯计算机围棋赛,由于一年来多个围棋AI水平突飞猛进,今年的赛事得到了空前的关注。之前UEC杯的冠亚军得主,会与日本职业棋手进行让五子、四子、三子的比赛,今年将分先与一力辽对弈。因为AI的水平已经追上人类,这个比赛也是最后一期,之后停办。Zen是这个比赛的多次冠军,当然希望再次取得好成绩。

  但是从弈城上的表现来看,DeepZenGo这两个比赛都会碰到不小的麻烦。不出意外,它对中日韩的芈昱廷、朴廷桓、井山裕太三局棋都会输掉。而UEC杯上DeepZenGo也只能争亚军。

  从上千局对局结果来看,DeepZenGo对业余棋手几乎可以保证胜利,对10个最高水平的业余高手(业余四大天王其实有职业水平)的10番棋只输了2局。对一般职业棋手胜率还可以,但也经常输。对一线高手是输面大,虽然有时也能胜。顶尖高手一般自重身份,不会与DeepZenGo交手,只有陈耀烨、连笑等人下过几局。这并非顶尖高手们无礼,而是DeepZenGo的水平无法得到足够的认可。想和高手下,总得先稳定地战胜不那么高的选手,或者高手愿意给机会时能抓住。

  有一段时间,DeepZenGo在弈城上的挣扎让人感觉有些悲壮,开发明显到了瓶颈,版本升了战绩却反而降了,不得不回退。总是没办法突破,陷在职业棋手们布下的阶梯中举步维艰。从Zen的开发历程来看,过去是人工写搜索代码、植入围棋开局与棋形知识,这个开发风格不易转型到靠多个服务器暴力机器学习强化学习的路线上来。将策略网强、价值网络等先进武器加进来后,Zen的实力提升很快。但之后再要提升,之前的代码反而变成拖累。

  围棋的江湖,跟红顶白,弱肉强食,输赢一清二楚。实力不行,高手就没有兴趣,这有点残酷,其实是公平的。高手陪低手下棋,给点面子可以下一两盘,下很多盘等于是帮低手涨棋,高手收获不多,和低手下多了棋力甚至可能降低,不愿意可以理解。虽然日本棋手对DeepZenGo的评价高些,认为它对顶尖高手有胜机,但这更象是一种鼓劲。

  面对围棋AI的震撼冲击,职业高手们有过恐惧,其实更多的是兴奋,仿佛来到了棋艺的新天地,不少职业棋手努力和AI对局提升技艺的动力十足。但是Master不下棋了,勤奋的DeepZenGo实力又还不行。幸好,还有一个围棋AI能够对人类高手取得压倒性战绩,而且愿意每天出来下棋,那就是腾讯开发的绝艺。

  二、绝艺与人类高手的混战历程

  和DeepZenGo没有多少顶尖高手愿意对局不同,对绝艺,这一切都不是问题。

  “绝艺如君天下少,闲人似我世间无”,带着这首应景好诗在野狐围棋上一出山,绝艺就受了极大的关注。它迅速完成了爬阶梯的过程,没多久就直接面对柯洁、朴廷桓等人类最顶尖高手,并且能战而胜之。2016年11月1日,绝艺下了第一盘棋。到11月19日,绝艺战胜了柯洁一次,11月28日,绝艺连胜朴廷桓五盘。之后,绝艺(以及不同的版本刑天、骊龙)对阵的棋手几乎都是等级分靠前的世界冠军或者全国冠军,一直互有胜负,杀得难解难分。从这个意义上来说,绝艺几乎一出来,就完成了对DeepZenGo的超越。

  Master是教人类如何下棋,顶尖高手们排着队等一个上阵被抬走的机会。而对于绝艺,高手们同样乐于出手,积极进行测试,共同提高。绝艺的测试者群体,和Master几乎是一样的。在众多学习AlphaGo的围棋AI开发团队中,目前只有绝艺达到了这个成就。

  和Master一出来就天下无敌不同,绝艺有着明显的棋力上升轨迹,经过数次下线开发升级。Master忽然出来对高手们排队密集敲闷棍,能提升神秘感,但未免显得重保密、轻交流,是围棋局外人的做法。AlphaGo的开发思想是,棋力提升靠人类棋谱以及海量自我对局就可以了,不需要真和人下。和人类高手对战,只是确认机器的棋力,不是用来提升机器实力,也不是帮高手涨棋。

  而绝艺却明显走了另外一个技术路线,积极和人类高手对战。无论是胜多还是败多,尽量从中发现问题,快速解决后又出来下棋,循环开发。这个路线显然更为亲民,也给高手们更多观察的机会,自身弱点暴露得更充分,神秘感不多。如果以后绝艺有机会与AlphaGo进行“机机大战”,它将以“围棋界自己人”的身份,与“局外人”AlphaGo对战,而且感觉这一天的到来并不遥远。我肯定希望绝艺获胜,相信这也是多数棋界人士的愿望。

  此前从未有这样高水平的AI与高手们持续作战数月,绝艺清晰的战绩轨迹,有助于我们理解围棋AI的特性,甚至人类高手自己的特性,也可以让我们对Master的无敌战绩加深理解。

  绝艺最初打出名头,是靠20秒的快棋。这是高手们在弈城、野狐等网站上练习时的标准时间配置,三次20秒读秒。高手们认为20秒时间足够思考了,绝大多数棋都在20秒内下出,关键时候才会用掉一次读秒。有的高手甚至认为20秒长了,下15秒甚至10秒的快棋。棋手们普遍认为自己快棋水平不比慢棋差多少,就差一先,有的甚至感觉实力差不多。孟泰龄在下棋的同时还能清楚地录制解说,大多数是20秒的对局,中间还跑去收快递盒饭。高手们20秒对战搞得有模有样,有时还战得很精彩。

  但是绝艺的20秒,早在2016年12月高手们就挡不住了,基本可以肯定不是绝艺的对手,硬来就是朴廷桓式的五连败。绝艺证明了高手们的20秒是充满了错误的低质量对局。中国棋院院长王汝南说:“腾讯搞的人工智能围棋,20秒一步,职业高手们不好对付”,就是这个意思。

  20秒还是更长时间,对绝艺以及Master的棋力毫无影响,因为它们都会在10秒内出手没有区别。但是对人类来说,20秒是绝对不够用的,真正能用于思考的时间很少。对方落子以后,人先要理解对方下的棋。预料之中的可能花个2秒就够了,出乎预料的,就要花更长时间去建立棋感。20秒的棋,到10秒就开始有读秒声,其实并不能怎么专注思考,一不小心就要超时,需要早点想好招确认。真正有效思考推理的时间可能就是10秒左右,推不了多深,多半是凭感觉拍。之所以下得有模有样,是因为下套路棋很熟。套路完了,后面会犯很多错。

  但双方水平差不多用时都不够,出错未必能抓住,抓住了下一个局面又送回去,概率性地互相翻盘,围观的人也没时间发现这些错误。即使是网棋水平最高的柯洁、朴廷桓、范廷钰等人,也不过是七成胜率,经常犯错,水平高主要体现在胜率高一些。有时说不清是棋更熟,还是真的对围棋理解更深。20秒的对局,主要培养的是棋感,以及快速计算的能力,但计算的深度广度就谈不上了,本质上是和业余棋手差不多的“感觉行棋”。业余棋手是没有计算的能力,高手们下20秒就是主动搞极限运动了。

  高手们面对绝艺,这个弱点暴露无疑。绝艺不用Master那么高水平,但是发挥也足够稳定,不会出简单的错招。高手们顿时显得压力极大,一出明显的错招一局可能就断送了,而绝艺会毫不留情地抓住,“感觉行棋”明显不行。绝艺虽然下得更快,但是计算机出身速度是本行,每招的计算都可以保证基本的水准。

  2016年12月开始,绝艺主要和高手们下30秒的快棋。多出来的10秒时间很关键,相当于实质思考时间翻倍还多,时间多了心态也会好,能够进行一些稳定计算了。高手们30秒的实力相比20秒明显提高,在“感觉行棋”上也加入了相当多的计算验证,能够设计一些手段。这一段时间,柯洁对绝艺战绩明显占优,曾连续获胜,显得对付AI很有办法,高手们也经常能杀掉绝艺的大龙或者吃掉局部一块棋获胜。绝艺的弱点也暴露出来,局部死活搞不清,大龙的死活掉以轻心。柯洁在野狐看棋时透露了对付绝艺的心得:做大模样,等它进来犯错。

  春节期间,绝艺也过年去了。假期结束后,绝艺似乎修复bug得力,棋力明显上升,对高手们30秒战绩提升明显。从2  月14日开始到3月5日,柯洁对绝艺惨遭13连败,对局时心态明显变异,经常很快就输掉了。这也可能是柯洁在试一些特殊招法,但绝艺对高手们的30秒战绩显然是压倒性的。绝艺的进步,让高手们的30秒又显得时间不够了。


  看到绝艺的出色战绩,可能是出于宣传目的,野狐适时地推出了升10段的规则。

  成为10段后,绝艺又与高手们下了一阵子30秒,仍然是9成胜率。因此3月5日之后,绝艺与高手们都是下60秒的对局。每步棋60秒,这给高手们相当大的时间自由,能够进行的思考要深入多了。在高手们的正式对局中,这是常见的情形。有些喜欢长考的高手早早进入1分钟读秒,但面对时间充裕的对手一直能顶住,对局质量很高。

  60秒的棋,人类高手算是拿出真本事和AI对局了。Master的60连胜基本是20、30秒的,只有对聂卫平给了60秒。面对Master的不拘一格的新手,高手们根本没有时间反应,往往一个局部就吃大亏,整局再无机会。看到新手,心里本来就有压力,又只有30秒,还不知道对手要干啥。应对的选择会有几个,根本没时间细算,连感觉一下时间都不够,多半是胡乱蒙一招了,很容易吃亏。

  Master对人类高手的压迫主要就是两个,一是时间攻势,二是新手攻势。事实证明,几乎没有高手能顶住。我认为人类高手输得其实有些冤,因为平时正式对局有1-3个小时思考时间,Master式的新手肯定出现在开局,人类高手会有充足时间去仔细琢磨,不可能象网上对局这样20、30秒就得下。人类高手正式对局也不时下出新手,但对方一看是新手,就会仔细琢磨,一般能找出妥善应对,很少被新手击溃。如果也是20、30秒就被逼下子,新手多半会很成功。

  可以承认Master的思维方式和人类高手不一样,把围棋布局与局面评估艺术带到了人类高手不曾想到的新境界。在职业棋手开局严重套路化千篇一律之时,这一股新风无比珍贵。但是不能说Master的新手,或者截然不同的布局风格,人类就无法应对。如果给人类高手多一些时间应对新手,同时主观上提升对布局的思考,不再机械地摆“常形”,那么人的表现会好得多。不说战胜Master,至少能逼出Master更多本事。现在Master就靠“新思维”,在布局阶段就打败了人类高手,这是很遗憾的。因为这是人类的思考时间不够,太可惜了。如果能看到Master在复杂死活、复杂劫争、大对杀、耍大龙等局面的表现,无疑会更为精彩,这也是围棋艺术必不可少的精华。

  如果再大胆一点,或者说为了人类棋手鼓劲,可以提出一个猜想:

  AlphaGo比人类主要强在思考速度快、布局理念创新、局面评估准确、水平稳定。但是一些复杂死活、复杂劫争、大对杀局面,AI搜索算法有本质困难,人类却能发挥逻辑推理的优势,比AI表现更好。可能的情况是,AlphaGo团队尚未给出解决复杂死活、复杂劫争、大对杀问题的可信算法,但把局面评估上的优势做到远超人类的程度(还通过把对局时间限制在20、30秒极度放大了这些优势),成功掩盖了这些弱点。

  而绝艺和高手们60秒对局的表现,似乎能对这个猜想提供一些证据。60秒对局,绝艺的胜率从30秒时的90%下降到60-70%,经常连输。相当于人类高手的胜率从10%升到了30%-40%,胜局数增加两三倍,表现大为好转。

  三、绝艺与围棋AI的典型弱点

  经常看绝艺下棋的棋友会知道,它主要是死活与对杀会出大问题。人类明显能判断对的问题,AI却搞不清楚,忽然就显得很笨。

  这些弱点从算法上可以解释。现在的高水平围棋AI都是靠价值网络与海量模拟至终局判断局势,优点是着眼于全局,评估比人类精确。但它的搜索框架中没有“搞清楚局部死活”、“算清大龙死活”这种概念,也很难改良放进这些概念。

  局部死活与对杀问题是,搜索树展开时,有可能漏掉了局部死活与对杀的关键点,发生漏算,以为是活的其实是死的。而人类高手训练有素,局部死活优劣会有感觉,能聚焦于局部集中计算去弄清楚。


2017年2月5日,绝艺执白对北海的早晨(范蕴若)

  如上图,范蕴若黑91挡住,绝艺认为白棋右边一块死活没问题,脱先占了92位大棋。对黑97又应在98,导致黑99出手,做成了打劫杀。局部变化复杂,但是绝艺肯定应错了。


2017年3月10日,绝艺执黑对clover77(尹峻相)

  如上图,绝艺黑45长出,白46飞。黑49封锁,局部对杀黑死。虽然黑勉强算是弃子封锁,但是主动送死这么大一块,还是有点过于慷慨了,而且51封锁还是后手,黑棋形势大差。这更象是绝艺局部误算了。


2017年3月10日,绝艺执白对天选(柁嘉熹)

  白右边大块与黑对杀,这个局面人类高手一眼就知道白棋对杀不利。但可能是手数比较多,白可以在外围搞事,内部收气次序也不简单,绝艺算不清楚,还是走进了这个必输的大对杀。

  绝艺碰到的常见大龙死活的问题有两种。一是大龙很长,“棋长一尺无眼自活”,虽然没有明确两眼,但杀棋要经过很多步,做活头绪很多,杀棋容易失败。二是开始只是局部的一小块棋,杀死它需要放出来跑成大龙,要经过非常多手。这两种棋绝艺都倾向于认为是活棋,失去警惕,因为绝艺的策略网络是学人类棋谱的,而棋谱中这种棋确实都是活的,谱中也不急于做活。

  出现这种局面,人类高手会暗中布子增加杀棋可能性,绝艺却没有发现危险最后被杀。这种杀棋步数远超AI搜索展开树的深度,展开完了之后靠快速走子终局也发现不了危险。模拟至终局是直线往下走,会忽略对手的杀着,对手围杀时稍一松软,大龙就做活了。人类高手会主动关注大龙的死活,远处自己对于杀棋的帮助的势力会有意去规划,杀棋条件成不成熟有阴险的盘算。一旦人类高手判断杀龙时机成熟,而AI却没有察觉,大龙被杀就会发生。绝艺的败局中不少是大龙被杀,远多于局部死活问题。


2017年3月8日,绝艺执黑对炼心(时越)

  再如上图,绝艺执黑左边大块被“场均一条龙”时越102点眼硬杀。最后大龙被杀的惨状如下图。


  过过50多手的追杀,绝艺才确定大龙死掉的结局,上面中间黑白是双活。但是时越在前面点眼的时候,就已经对杀棋有把握了。至少不会明显漏算,发动追杀是时机比较成熟时才会做。而绝艺却明显对这类局势判断不清楚。


2017年3月10日,绝艺执白对北海的早晨

  如图,右边白棋其实已经被杀了。但是由于黑外围看似有很多弱点,白棋R11长再O9长,能够到处冲击,虽然最后还是被杀,但手数特别多,所以绝艺还是这么下了。


2017年3月8日,绝艺执白对maker(朴廷桓)

  绝艺90长出,被黑凌空一断,下面到中间的一条大龙已经死了。但是要吃掉它也要经过很多手,还有打劫,中间黑的大龙也要跑,变化还是很多的。这种局面人类高手能判断出白棋很危险,绝艺却无知觉地陷入了绝境了。

  绝艺60秒对人类高手的棋,很容易就找到不少出bug的例子。当人思考时间相对充分的时候,这类局面发生的概率大增。这说明绝艺还是有很多bug。之前因为绝艺在20-30秒对人类高手的压倒性战绩,人们认为它已经有AlphaGo战胜李世石的V18版本的水平。现在看来人类高手思考时间一长,绝艺的Bug概率明显上升。绝艺还不一定有V18的水平,因为V18下的是慢棋。另一方面,对Master的60局棋,人类高手的表现要重新评估,20-30秒人实力降了非常多,Master的压倒性胜利可能更多是时间因素。

  绝艺除了复杂死活与对杀是棋艺弱点,还显然在布局创新上与Master差距很大。它还是学习人类棋谱布局的感觉,只是比较犀利,出手狠辣,有机会就挑起战斗占高手的便宜。而Master有不少让人眼前一亮,甚至完全想不到的布局新手与构思,在局部简单几个定型选择,人类高手在全局配置就吃了大亏,这种能力绝艺还没有。

  通过与绝艺的数百局对战,人类高手对高水平围棋AI的了解确实加深了很多。虽然Master的底还没有摸到,但人类并非毫无希望。绝艺的那些bug,理论上AlphaGo的早期版本肯定也有,V18对李世石也暴露了一次。后面Master没有出这些bug,但可能是因为靠时间攻势与新手优势早早控制了局面,人类没有找到机会摸进Master的bug区间。

  如果之后柯洁等人类高手在慢棋中,或者绝艺继续进步,能够顶住AlphaGo的布局,将局面导入复杂,逼出AlphaGo的算法局限,这将是非常激动人心的进展。

  2017年的3月开始的世界棋坛,将因为众多高水平AI的表现而无比精彩,我们会满怀期待地等待。


Related Articals