2018年8月11日星期六

AlphaGo与人类的恩怨情仇(二):初试啼声

关于AlphaGo,我们从头讲起。2010年,德米斯·哈萨比斯(Demis Hassabis)离开伦敦大学学院(UCL),与Shane Legg、Mustafa Suleyman共同创立了DeepMind公司。随后的几年里,DeepMind完成了数项重要成果。2014年初,声名鹊起的DeepMind被谷歌以4亿欧元(6.5亿美元)的价格收购。同年,AlphaGo项目启动。

在当时,DeepMind并没有为AlphaGo制定具体的目标。曾经的优秀国际象棋手哈萨比斯对于开发围棋AI的难度有深刻认识: 国际象棋的游戏树复杂度(即“香农数,Shannon Number”)约为10^120. 所谓游戏树复杂度,就是不同棋局的总数,可以用国际象棋的平均游戏长度(约40回合)乘以每个回合的平均变化数(约10^3种)估算得到。注意,游戏树复杂度和局面总数并不相同。国际象棋大约有10^40种局面,而将不同的几十个局面串联在一起,才是一局棋。换句话说,一个局面就是游戏树上的一片叶子;把所有的叶子用枝杈连在一起,方成一棵游戏树。

(图为井字棋游戏树的一部分,来源:https://www.cs.cmu.edu/~adamchik/15-121/lectures/Game%20Trees/pix/TicTacToe.gif

因此,游戏树复杂度比局面总数大很多。围棋的合法局面总数为2.0*10^170,而对应的游戏树复杂度达到3*10^511. 这还是一个非常保守的估计。须知,可观测宇宙的原子总数不过10^80个。这意味着任何形式的穷举,或者暴力搜索,对于围棋都是不现实的。在本系列的上一篇中也提到,围棋手的决策一定程度上依靠直觉,这是很难被人工智能模仿的。

围棋问题的高难度并没有吓走DeepMind,因为他们手上有先进的工具:深度学习。2015年2月,DeepMind在《自然》杂志发表论文,宣布DQN(Deep Q-Network)项目的成功。在DQN项目中,DeepMind团队采用深度强化学习,让AI从零开始学会了玩各种街机游戏,和最优秀的人类玩家操作得一样好。哈萨比斯常以“打砖块”游戏展示深度学习的力量。

(打砖块游戏截屏)

在初始条件下,AI对打砖块一窍不通,甚至都接不到球。但在失败中,AI似乎慢慢学到了些什么,开始接球、控制球的方向,直到最后,掌握了秘笈:打通边缘一列的砖墙,然后就可以让球反复在砖墙上边反弹而不下落,无风险坐收分数。整个学习过程没有任何人工干涉。此前类似的成果,都有人工干涉的成分。相形之下,深度强化学习,让打街机的AI向真正的智能前进了一小步。

如果说深度学习是一把力重千钧的大锤,能够像锤钉子那样征服一个又一个的难题,那么围棋无疑是最顽固的一枚钉子。DeepMind团队起初并无征服围棋的雄心,只想看看他们能走到哪一步。然而,新技术的力量让这些世界上最优秀的工程师们都感到吃惊。半年多过去,团队里棋力最强的高级研究员、台湾业余6段棋手黄士杰也下不过AlphaGo了。不仅如此,AlphaGo在与其它商业围棋软件(Zen, Crazystone)的对战中,让四子仍能取得99%的胜率。要知道,武宫正树让Zen四子还曾输掉一局。种种迹象表明,AlphaGo很可能已经达到了职业水平。

当然,AlphaGo是否真的达到职业水平,还要通过一名真正职业棋手的检验。三届欧洲冠军、职业二段棋手樊麾被选为AlphaGo的第一块试金石。

樊麾,1981年出生于中国,1996年通过定段赛成为职业棋手,1998年升为职业二段。目睹自己与古力等天才棋手在天赋上的差距,樊麾觉得继续做职业棋手的前途并不理想。心怀见识更大世界的念头,不满19岁的樊麾只身前往法国,学习酒店管理。刚到法国的前几年,樊麾有意让自己忘记围棋,一门心思扑在专业课和语言的学习上。等到学业变得顺畅之时,樊麾却想重新拾起围棋。“我一直和会下棋的人说,这东西,沾上了就戒不掉”,樊麾如是说。好在当时的欧洲已不是围棋的荒漠,法国的围棋俱乐部遍地开花,其中的高手也有相当于中国业余5段的水平。樊麾一面担任法国国家围棋队的教练,一面在赛场上力挫群雄。2013年,樊麾加入法国籍,其后在2013-2015年三夺“欧洲冠军”头衔。

在纪录片《AlphaGo》中,樊麾骑自行车穿过法国小巷,赶到一处街头棋摊,与当地爱好者下一对三的指导棋。棋局进行中,樊麾接到了来自哈萨比斯的电话,邀请他参与围棋软件的开发测试。樊麾虽很疑惑,但就如同十五年前赴法留学一样,喜欢探索未知的樊麾说走就走,登上了前往英国的飞机。樊麾半开玩笑半认真地说,当他接到邀请时,他以为工程师们会在他的脑袋上贴满电极片,以研究棋手的大脑内部构造。结果完全不是这么一回事。DeepMind竟然要让一个围棋软件挑战他,还是正式的对抗!“只不过是一个软件而已,”樊麾想。没有太多犹豫,樊麾接受了挑战。

樊麾与AlphaGo的对抗赛共计十局。其中五局为正式局,使用较长的限时,并计入总比分;另五局为非正式局,使用较短的限时,不计入总比分。正式局和非正式局的AlphaGo配置完全相同(除用时外)。比赛在2015年10月5日-10月9日间进行。

从事后看,在五盘正式对局中,首局大概是樊麾发挥最好的 。

樊麾(黑) - AlphaGo (白)对抗赛第一局, 1-30手。

这盘棋的开局,双方在三个角上摆了三个不同的简单定式。左下角的定式,曾在上个世纪流行,但在21世纪基本已被淘汰。现代棋手的看法是,黑棋5、7、9三子的组合过于坚实,效率偏低。右上角的“双枪定式”,通常是初学者学到的第一个定式。现代棋手同样认为黑棋速度稍慢,略有不满。职业棋手对定式看法的变化,一方面是在大量实战中加深了认识,另一方面与规则的变化有关。从上世纪80年代到今天,黑棋的贴目负担加重。中国规则由黑贴2.75子变为黑贴3.75子(大致相当于7.5目),日本、韩国规则由黑贴5.5目变为黑贴6.5目。大贴目的负担,逼迫黑棋加快布局的速度;须快速展开阵型,而不是像图中5、7、9一样龟爬。

而本局中国规则黑贴3.75子的背景下,持黑棋的樊麾执意“复古”,大概是有一种对AlphaGo的“上手”心态。心态放松,所以开局稍亏一点点也不太在意。

11-60手。

随着棋局进行,樊麾很快意识到他的对手并不简单。白方36-42手法坚实,在黑方的势力范围内硬生生开辟出一片根据地。虽然黑方43-51还以颜色,也掏掉白棋下边的空,但白方右上52-56再占便宜。随后,AlphaGo用白58小秀一把“棋型的感觉”。这招棋的目的是补住K4位的断。与笨拙的M3位粘相比,白58极具视觉效果,不落俗套。从效果来看,这未必是最佳的一手,却能让棋盘对面的樊麾疑惑:莫非AI也理解什么棋型丑陋,什么棋型优雅?

之后的棋局并无激烈战斗,双方各自鸣金收兵之后便进入官子争夺。这里最值得注意的是下图的这一招。


白130,精妙的手筋。借此,白棋先手将Q18一子连回。此手一出,大概樊麾就知道自己要输了吧。


终局画面如图。AlphaGo以1.25子的优势取胜,差距并不大。樊麾布局时稍稍松懈,使得整盘棋只能追赶。然而AlphaGo基本功扎实,在一盘比拼内力的功夫棋中未给樊麾反超的机会,笑到最后。该终局画面也在三个月之后登上了《自然》杂志的封面。


输棋后的樊麾表现得难以置信,但他并没有多少用来调整的时间。当天晚些时候,樊麾与AlphaGo再战一盘非正式对局。结果是樊麾取胜。棋谱没有公开,所以我们无从得知棋局中间发生了些什么。不过,樊麾大概恢复了一些自信,这可以在次日的第二盘正式对局中看出端倪。

AlphaGo(黑)- 樊麾(白)对抗赛第二局,1-12手

刚一开局,樊麾直接祭出“大雪崩”定式。此形如白雪从黑山坡上滑落(把上图的黑白交换一下即可),因而得名“雪崩”。“大雪崩”,与“妖刀”、“大斜”并称围棋“三大难解定式”,变化莫测,而且常有新变。大雪崩是难解定式中,近年在职业赛事中出现最频繁的一个。在2015年百灵杯决赛第三局中,邱峻就在大雪崩定式中藏了一把飞刀,令柯洁猝不及防,结果棋局早早失去悬念。既然顶级棋手在大雪崩中都会犯错,那么AlphaGo会如何表现呢?

1-44手

笔者棋力有限,对大雪崩的千般变化不甚了了。接下来一段的内容参考金明完九段的解说。

金明完认为,白26粘是旧定式。比较新的变化是改走E6位扳。如果AlphaGo不犯错,白26粘以下的变化应该是黑棋稍好。但紧接着,AlphaGo立刻犯下了一个错误:黑31。


如果没有实战中黑31与白32的交换(即上图中O与X),其它手顺保持不变,则G2位的黑9是先手。白棋必须在左下角补棋,否则被黑10立下全灭。黑9白10交换以后,白6、8气势汹汹的攻势显得相当浮夸。黑棋既可以A位轻松逃逸,或者B位穿断反击,令主动权易手。


如果是大雪崩的另一变,如上图,则白棋在B位点入,赚取官子便宜,且保证上边一块的眼位,就是正着。在此局面下,下边一块不再有先手,于是左边的点入也就不必保留。

AlphaGo在此处的错误,大概是策略网络从人类棋谱中学到了这一着,知道在相似棋型下,“点入”是有效的手段,但并不能准确的判断点入的场合。如果AlphaGo是一名人类棋手,可以评价为“知其然,而不知其所以然”。

随后黑棋甚至都没能将黑31一子救回,被白38先手笑纳,局部亏得吐血。持白棋的樊麾借着AlphaGo的失误,白40、42、44连续压迫,心情愉快。棋下到这里,也许樊麾觉得自己要赢了吧。


棋谚云,“一着不慎,满盘皆输”。之前顺风满帆的樊麾想以持续压迫黑棋巩固优势,却立即遭到AlphaGo的强力反击。黑55、57冲断白棋以后,白棋深陷乱战,54、58两子,及42这一块白子均有风险。不过,此处白棋若处理得当,脱困并不难,棋局还很漫长。然而……


白62,本局败招。此处的变化对于樊麾来说应该难度不大,实战犯下如此低级错误,可能是心态波动吧。被黑棋扳到71,白棋右下五子全灭,棋局实际上已无以为继。接下来的一百多手,白方奋力拼搏,但没有找到逆转的机会。本局双方各有犯错,但樊麾的错误更为严重,以至于“突然死亡”。

接下来的第三局,只说一个局部。


AlphaGo的白60,猛一看像是好棋。职业棋手常用类似手段,在边角处占一点便宜,或者制造一个劫争。然而,黑61挡,干净利落地吃掉入侵的白子。此处AlphaGo犯的错误和第二局大雪崩中的一“点”相似,都是在貌似可行的棋型下,实际上并不成立的手段。这可以解释为AlphaGo的策略网络已经能够敏锐地像人类高手那样感知棋型,并挑出候选的手段;但AlphaGo的后续计算准确度尚不足够高,导致有时仍会犯低级错误。

不过,即使AlphaGo在此处犯错,白棋依然掌握主动。白64断以后,黑棋在右上陷入苦战。最终黑右上被全歼,从而告负。至此樊麾以0-3落后。


在后来AlphaGo战胜樊麾的报导中,都有樊麾双手抱头懊恼的照片,棋盘上正是第三局的终局画面。

第四局,执黑的AlphaGo发挥近乎完美。

AlphaGo (黑) - 樊麾(白)对抗赛第四局,1-20手。

左边的定式,执黑的AlphaGo在11拆、13跳,堂堂正正,和人类教科书里的下法一模一样。之后我们还会看到左下角的“托退定式”,以及AlphaGo不一样的表演。

然后AlphaGo在右边布下三连星。金明完评曰,“黑棋左右阵势遥相呼应,而白棋14尖略缓,布局至此黑好”。


接下来,孤单的白18一子被黑棋猛攻。半途中,白32一着不慎,被黑棋强硬分断。


白棋两边都是苦战。结果黑71心慈手软,放白棋右边大块一条活路。若黑71改走A位尖,则局部白棋没有一个眼,非常危险。不过,即使黑棋放活白棋,仍然保持优势。


下边的战斗,黑棋计算精准,先手将白棋打成一条“光棍”,继续巩固优势。


最终樊麾眼看棋局不利,在左上角“玉碎”,AlphaGo再下一城。

最后一局,前面的部分略过不提,我们还是只说一个局部。


左上角的劫争,持续了十个回合。AlphaGo在过程中,找劫、应劫、判断得失,毫厘不爽。最终双方形成对等的转换,AlphaGo也保全胜利果实。有此劫争为先例,我不是很懂为什么在后来AlphaGo与李世乭对战期间,有那么多围观群众、棋迷、甚至棋手传播AlphaGo不会打劫的谣言。即使是上一代的AI,如Zen,应对单个的劫争,也不会犯大错。AlphaGo在此劫争中的表现,没有无谓地浪费劫材,也没有找损劫,表现出了比Zen高至少一个档次的实力。

AlphaGo赢了。五比零。这是历史上首次由人工智能在分先(平等)的棋份下战胜一位职业棋手,而且是完胜。2016年1月,介绍AlphaGo成果的论文登上《自然》杂志封面。这是对DeepMind团队取得阶段性成果的最好肯定。

成功并未丝毫影响DeepMind团队的判断力,他们对AlphaGo的实力有客观、清醒的认识。在论文《Mastering the Game of Go with Deep Neural Networks and Tree Search》中,参考樊麾职业二段(2p)的段位及8:2的总对战成绩,DeepMind团队将AlphaGo的实力评为职业五段,等级分3150分。从他们参考的等级分体系来看,3150分相当于中国的二线职业棋手水平。(参见谷歌围棋程序AlphaGo实力几何? - 知乎专栏)这与后来中国职业棋手对AlphaGo基于棋谱的实力评价基本一致。

当时,与李世乭的比赛时间已经敲定。想在几个月的时间里,让AlphaGo从一名平庸的职业棋手,成长为超越顶尖职业棋手的存在,并非易事。为此,哈萨比斯请回“手下败将”樊麾做AlphaGo的教练,为AlphaGo捉虫。人类与AlphaGo由对手变成了伙伴,这是第一次,在将来会变成常态。

历史性的一战,即将展开。

引文链接

“AlphaGo与人类的恩怨情仇” 全文系列:()()()()()()结束。

没有评论:

发表评论