李翊
如果围棋世界是有层级的,以穷尽围棋的所有可能得到最优解为天,以懂得围棋基本规则为地,AlphaGo在四盘棋里表现出的棋力和弱点,让人类第一次有了伙伴和参照物,知道在天地之间,自己对围棋的理解处于怎样的位置。
和AlphaGo的第一局开局,李世石剑走偏锋:在他的职业比赛中从未使用过这一开局,甚至整个围棋界,没有人见过这一开局。避开流行布局,甚至避开曾经流行过的已经被淘汰的布局,李世石在考验AlphaGo在布局阶段的应变能力。然而,在新浪讲棋的俞斌认为李世石的下法勉强。“他在试探AlphaGo,但实际上效果并不好。”而现在回顾比赛,李世石对第一局的看法是:“即使重头来下,我也觉得没法赢。我从一开始错误估计了它的实力。”
李世石对AlphaGo实力的了解,或许更多来自之前樊麾和AlphaGo下的五盘棋。如果仅从这五盘棋所表现出的内容看,“AlphaGo大概在职业初段的水平”。这是俞斌、古力等职业棋手比较一致的评价。俞斌说,虽然知道5个月的时间里,围棋AI(人工智能)的水平经过深度学习一直在提高,但是能提高到现在这样的水平,谁都没有预料到。
第一局下完,中国围棋界议论纷纷,围棋人各种挑错,各种不服气,俞斌觉得李世石一开始太冒进,不好。两局战罢,俞斌所有的感受只有两个字形容:“服气!”
中国棋手李喆六段
“原来觉得,开放型复杂局面的对杀,电脑的计算力可能没那么准确,结果第一局AlphaGo居然扛住了。第二局从后半盘看,AlphaGo或许不能做到百分百的计算正确,但在残局的计算能力上已经远超人类,这不是单个人类可以抵挡的。就这两点可以确认,如果AlphaGo还会打劫,那么人类就没办法赢它了。”
在李世石以比较大的差距输掉第二盘比赛后,职业棋手九段罗洗河对李世石回避劫争的行为提出了质疑:“李世石是否和谷歌签了保密协议有不准打劫这一条?”这成为几乎所有人猜测的话题。李世石的棋风被人称为“僵尸流”,棋入中盘,他常常因出招过分而导致死大龙,在职业高手看来,这样一边倒的局面已可终局,尤其是对于老派的只研究前半盘的中日职业棋手而言。然而,绝境之中的李世石常常能爆发出惊人的力量,他一次次地如同僵尸复活一样满血归来,并且总能在最后一刻撞线。“这一局,有两次机会打劫,而且是在李世石输定的情况下,不打劫必输;打劫,按照人脑的计算,如果是人跟人下,有可能赢,因为人会犯错。但是跟机器下,它如果会处理,人还是可能输。第二局在形势明显落后的情况下,以李世石的性格和棋风,他应该反击。然而,两次打劫的机会李世石都放弃了,这可能是大家怀疑他的原因之一。”俞斌说,“棋手特别瞧不起那些输多了还麻木不仁的棋手。我们比较崇敬的,是那些在输定的情况下还孤注一掷的,这叫胜负心。我们崇敬有胜负心的人。所以,李世石在失败的情况下没有选择相对危险但是有胜机的打劫,我们奇怪。但是看视频,我觉得他当时并没有判断清楚局势,他应该是对胜负有疑惑,选择了一条相对稳妥的路。”
“第二局AlphaGo有一个打劫的机会,但是很长时间都没提回来。当然不提没关系,提一下,绝对的先手。但AlphaGo一直不走这一步,这也是怀疑的原因之一。”俞斌进一步解释说,“但这并不能成为AlphaGo害怕打劫的根据。因为这个劫很轻,也就是价值很小,跟别的棋子都没关系,所以它没必要去提。”
围棋界有句俗语,臭棋怕打劫。劫争会是AlphaGo的阿喀琉斯之踵吗?从俞斌过往和计算机打交道的经验来看,完全有可能。
打劫,也叫“劫争”,是指黑白双方都把对方的棋子围住,这种局面下,如果轮白下,可以吃掉一个黑子;如果轮黑下,同样可以吃掉一个白子。因为如此往复就形成循环无解,所以围棋禁止“同形重复”。根据规则“提”一子后,对方在可以回提的情况下不能马上回提,要先在别处下一着,待对方应一手之后再回“提”。顾名思义“劫材”就是“打劫”的材料。但是并非所有的劫材都会导致对方应一手,在价值判断取舍的情况下,对方也可能不应劫而解消劫争,“劫胜”也叫“消劫”。因为这里涉及找劫材及消劫的价值判断,是比较复杂的技术。
大概6年前,李喆曾经找了一些职业棋手做过研究,认为人能做到七路棋盘的最优解,计算机如果速度快,也能穷尽七路盘的计算。但是升级到九路盘的时候,电脑靠蛮力穷尽不了,就会出现一些问题,比如明知没棋的地方也要补一手。“我跟电脑下九路棋的时候,电脑在领先很多的情况下,自填一眼的事情也干过。”俞斌说,当时最好的对弈软件,Bug(漏洞)就是劫。“我们围棋队的棋手跟这个电脑下的时候,即使我方形势不好,只要出现这个Bug,我们就知道赢了。”
AI面对复杂劫争时的糟糕表现,是蒙特卡洛算法固有的顽疾。去年在北京夺冠的来自韩国的围棋AI“石子旋风”,在对阵世界冠军连笑时甚至不能理解循环劫,不停地找劫来回提,使局面一塌糊涂。“这是因为,基于概率,循环劫也总有打赢的可能。如果基于逻辑,会明白这是不可能的事情。”李喆说,“AlphaGo的算法缺乏逻辑能力,这一点实际在去年10月对阵樊麾时已经有所体现。蒙特卡洛算法使它并不是根据‘逻辑上A优于B来做选择,而是根据AB各自的胜率来做出决策。但在准确性上,概率不如逻辑。”
AlphaGo显然不是一般的围棋AI。在和李世石对阵的第三局,它表现出了打劫的能力,虽然这个劫相对封闭,应对并不复杂。“AlphaGo基本上就打会影响胜率的劫。当不打比打的胜率更低时,就会打劫。但它对打劫的胜率评估会偏低,因为可能性更多,所以它显得会回避劫。”连着的三局棋,李喆一直站在AlphaGo的角度在观察它,其间会和Facebook人工智能研究院智能围棋项目负责人田渊栋博士联系。田博士负责开发的围棋AI“Dark Forest”和AlphaGo一样使用了深度学习和蒙特卡洛搜索算法,但仍然无法避免打劫这一Bug。
“AlphaGo不害怕简单的劫,但在复杂阶段,如连环劫、循环劫,很多处劫争变化,它还会不会做出正确的选择,目前没有看到。”俞斌说,像连环劫这样复杂的劫争并不是刻意能为之,一百盘里能出现一盘就不错了。
在知道谷歌要在《Nature》发表关于AlphaGo论文的晚上,李喆和田渊栋有过简单交流,虽然李喆知道“黑暗森林”与传统的围棋AI水平持平甚至更好,但是对于谷歌能做到什么程度,谁都不清楚。
“樊麾的棋谱出来后,我们做了个评估。如果说之前的AI,是职业棋手让5子的水平,即普通人通过学习训练能达到,那么AlphaGo展现出的是让2子,这是普通人需要经过专业训练才能达到的。相对于以前的AI,这是个飞跃。”李喆说,当时棋界一片哀嚎,因为能看到的棋谱只有5盘,出于某种自尊,也出于对棋谱的解读,棋界大致认为樊麾发挥太差,AlphaGo不足以威胁到职业棋手。“奇怪的是,现在也在质疑李世石的水平。”
围棋里有个词语,手谈。围棋是人与人的竞技比赛,是人就会有情绪,多数时候,会在肢体语言上表现出来。日本古代有个著名的公案,“耳赤之一手”,说的是“本因坊”秀策比赛时下了一子,大家认为他形势不好。而在一旁观战的一个不懂围棋的医生却认为这是步好棋,因为他看到对手的耳朵红了。“下棋的时候需要对对方的应对有预估,然后做出判断和选择。这种预估一方面基于经验,一方面基于对对方的了解。然而,机器是没有情绪的,你甚至看不见它。用樊麾的话说,它就是一个虚无,但是它又无处不在。”李喆说,“我曾试着设身处地体会李世石的感受,坐在棋盘边上,有人在你的对面摆棋,水平不高。你不知道对手,它没表情,没动作,紧随你的落子是唯一的反馈。我们低估了人在面对机器时的感受。换一个人,未必能比李世石做得更好。”
大部分人认为,以人类的思维去下就好了,李世石不同,他有大量试探,试图理解AlphaGo行棋的棋理。
AlphaGo经常会下出一些让人无法理解的棋,有人认为这是电脑失误。然而,人类定义的失误在AI的思维里却未必是失误。“在AlphaGo与人类下棋之前,我们认为人能赢的一个原因是觉得电脑不像人会创新。事实上,它表现得比人类更不依赖定式,更会创新。”
第一盘棋,李世石用了个不在棋谱库里的开局,结果AlphaGo给出了“不存在”的一手。“它不在任何定式之中,然而,我认为这是好手。好处在于使右中下角的黑子变成效率低下的一手,虽然在右上局部白棋稍稍亏损,但加上右中下黑子的低效,白棋一点也不吃亏。”
传统的围棋AI,会根据已有棋谱来走定式,定式是经过长期检验的局部可以接受的定型。然而定式的弊端就在于,不同的周围环境,定式的适用性有所不同。实战白棋选择了一个定式里没有的、局部稍亏的,却使得另一个遥远黑子的效率变低的下法,非常清楚地证明了两点:电脑不依靠背谱来下棋;电脑的考虑基于全局而非局部。
“人类对失误的认识有几种,一种是开放性布局的情况下,一地亏损,从大局看,经验告诉我们摆了十手还是亏,那么人类不会下。第一局AlphaGo在左下角的那一子,人类基于经验判断会亏损,不能保证是绝对正确的一招;第二种是不能给出明确亏与不亏,也看不出最后是否有问题的下法。但是AlphaGo这么下,从结果导向——赢棋来看没问题。这种情况下,除非它被人类击败,才能证明这是失误。第三种,从逻辑上能严格证明的失误。在第一盘AlphaGo出现过两次,右上和右下,在封闭情况下,分别亏了一目棋,可通过计算判断有失误。之所以AlphaGo还会这么下,我认为它已经判断赢定了,即使有两个失误对胜率也不会有影响,甚至可能其他选择未必像这个选择能产生目前的结果。”
AlphaGo最石破天惊的一招是第二局的黑37尖冲。这一子落下,棋手们纷纷惊叹:“它想干吗?”有人说是臭棋,但这个下法却让人想起金庸在《天龙八部》里详述的“珍珑”棋局:这个“珍珑”的秘奥,正是要白棋先挤死了自己一大块,以后的妙招方能源源而生。任何人所想的,总是如何脱困求生,从来没人故意往死路上去想。若不是虚竹闭上眼睛、随手瞎摆而下出这着大笨棋来,只怕再过一千年,这个“珍珑”也没人能解得开。
“这虽然不是决定胜负关键的一子,但是用人类语言来说,却是基于对全局虚实的掌握,在子力的相互关系中找到的最为均衡的选点。”李喆说,在人类看来,300多个点里,根据已有经验知识看来这个点是会亏损而立即排除的一点。然而,从结果上看,这个棋没亏。“在这个局面下,我也会下这里,但我想不到。”
李喆尝试从AlphaGo的角度去理解。“同样一步棋,人类的思维是用道理的形式,辩证(势、地、厚薄、动静)来理解棋。而机器是以数据的方式求得胜率最高解而非最优解。类似这样的招法,AlphaGo其实是基于全局特定的情况的选择,而人会有常识性的下法,其实是局部性的判断。”
AlphaGo还有更让人目瞪口呆的出手。第二局李世石执白选择了最普通的布局应对,下到第12手,李世石心里或许还有一点兴奋:这个布局我是见得多了,白棋总是不亏的。然后,看到对方在右下角落下黑13。右下先虎之后脱先中国流,这又是职业棋谱中从未出现过的布局。通俗的解释就是:人类棋手认为交换一步棋后一定要拆一个,定式才完。如果你不拆反而在别的地方下了,这就脱先了。“以前学棋的时候,定式不走完就相当于故事没讲完,老师会骂的。”看到这一步,李世石站起来,出去抽了根烟。
抽完烟回来的李世石没有在黑棋脱先的地方下,而是当右下黑棋没交换那一下跟着下了。“如果李世石是跟人下,以他的性格和棋风,你敢脱先,我气势上一定追究你,会在脱先的地方下,这叫针锋相对,这叫气势。可是对AI来说,气势是什么?血性是什么?胜负感是什么?AI只看胜率是什么。”李喆说,所以李世石没有反击,跟着下了。“经过昨天的试探,AI不会背谱,人类整体的经验可能是最有力的,李世石要尽可能将局面导回到熟悉的套路中去。即使输了棋,他也值得所有人尊重,他一直在有针对性地调整策略,尽力让人们了解AlphaGo。”
吴清源曾经说过:不要记定式。但是,对于初学者而言,这是学棋必经的一个过程。张三丰说:“记了招式,再忘掉。”AlphaGo以其超出人类经验的下法表示,它做到了。
就AlphaGo秀完莫测高深的棋力让人类悲观地以为李世石将被其以5∶0的比分零封时,戏剧性的一幕出现了。AlphaGo竟然在第四局局面占优的情况下突然崩溃了。
比赛开局阶段,李世石始终落后于AlphaGo,一直在被吊打。然而,第78手的时候,局势峰回路转,李世石下出了关键的一步,一招极其冷门的妙手。对于这一步棋,视频观战的职业棋手古力评价为“神之一手”。
随后,AlphaGo一连串的差手让棋面局势利好于李世石。在第97手,AlphaGo再次出现低级失误,棋盘左下角落白子被李世石果断吃掉。最终经过长达4个多小时的鏖战之后,AlphaGo中盘认输。李世石终于在这场人机大战中赢回“尊严”之战。
俞斌说,李世石这一步棋,是妙手,给敌人造成很大麻烦,但并非无解。“AlphaGo至少有两个变化可以抵挡,然后它依然还能保持优势。可是它居然没有抓住。”
AlphaGo在迅速做出应对后,开始出现一连串业余棋手也不会犯的低级错误,导致棋面局势利好于李世石。看到这里,李喆不解地说:“AlphaGo疯了!”他想不明白为什么。“在我看来,不是电脑没算到这步棋,有可能是因为这步棋产生更多分支变化,接下来可能涉及劫争,又或者AlphaGo漏算了某一步关键的棋?”
反而是俞斌见怪不怪。“原来我和计算机下的时候,计算机在形势特别不好的时候也会走一步特别可笑的棋。如果下在别的地方胜率接近0,而其他地方有1%,那么计算机会应在有1%的地方,1%的胜率总强过0。这说明AlphaGo在面对复杂对杀需要精确计算时可能出现问题。”
AlphaGo原论文作者之一德米斯·哈萨比斯(Demis Hassabis)在赛后的总结说:“李世石下出白78后,AlphaGo自我感觉良好,在程序的‘价值网络(用于评估电脑胜率)中,误以为胜率达到70%,直到第87步才反应过来。短短几个子的时间,胜率陡降至40%以下。发现时为时已晚。”
“出门问问”的CTO、原谷歌研究院领导开发谷歌基于深度神经网络的离线语音识别系统的人工智能专家雷欣称,这其中的原因很可能是由于AlphaGo在复杂情况下的判断还是不够客观,碰到没见过的下法(如李世石的白78挖)会犯错误,而且在犯错误的时候不能够及时发现,会接连出低级错误。“对人类来说,如果犯了大错,应该很快就会发现并且纠正,但是机器的反应都是连续的,不能及时做出调整,这也许是AlphaGo的一个致命弱点。”
从专业技术的角度看,“出门问问”NLP工程师李理认为,如果一定要猜测,可能是开局主要靠“价值网络”,因为搜索空间太大,有可能在某些特殊的局面下出现非常差的结果。就像之前神经网络识别图片时也出现过很诡异的错误,还有人研究怎么构造让它识别出错的例子。
这和李世石赛后的实战分析颇为吻合。赛后李世石谈到AlphaGo的弱点时说:“AlphaGo觉得当它用黑棋时更难赢而不是白棋。当它遇到出其不意的招数时,有可能会导致失误。我发现AlphaGo执黑棋时似乎挣扎比较多。”李喆分析:“执黑先行要主动选择搜索路径,黑棋下第一步的胜率低。此外,按照中国规则,黑棋要贴7目半,即三又四分之三子。”
“从谷歌的角度来说,这盘棋帮助他们找到了AlphaGo的一个弱点,以后可以更有针对性地去解决这个问题。如果不是李世石这种顶尖棋手,也许很久也发现不了这个弱点,因为水平差距太大根本没有机会逼得AlphaGo犯错。从李世石的角度来看,这也是一个巨大的胜利,证明至少目前人类选手对战人工智能还是有机会的。人工智能虽然计算能力强大,但还是会犯错误,并且是很低级的错误。这样,人类棋手不会把人工智能神话,以后对战的心态会更好。”雷欣说。