联系电话:400-079-0573
邮箱:zyl@baixueqiyuan.com
地址:嘉兴市中环北路塘汇路路口
2016年3月15日人机大战第五盘,AlphaGo执白280手中盘胜李世石,总比分4:1结束了这场持续一周的围棋盛事。
我在广州爱范儿公司和吴肇毅九段一起直播了这场比赛,感觉对机器的招法比较能够理解。这使得我在这场特殊的比赛中,有时对局势的判断比吴九段更为准确,虽然我的围棋水平不高。下面用几个图来解释一下机器开盘的失误和技术特色。
在右边的常见套路中,AlphaGo选择了16位挡而不是Q10拆,放黑17位打入,接着继续18位打,放黑19位冲21位断,很简单地就弃掉了三子。粗粗一看黑吃下三子实空不小,但这是AlphaGo的招法创新,黑布局感觉已经落后了。因为白有A位靠下的手段,会在上面形成一道厚势,白棋把棋走在外面,对于厚味外势的价值估计得比人类棋手更准,而且它的整体行棋方式也能与之配合。人类高手出于实战考虑选择实地的更多,通常认为虚虚的外势不太好掌控。从大局观来看,AlphaGo的理解更合乎棋道。
这个局面的看点是AlphaGo第48手断入,然后被黑51全部吃下,亏了不小的目数。这是确定无疑的损失,机器犯了错。这个错误非常象AlphaGo和樊麾的第三局,它也是在黑右下大空里走了几手,没有棋却损了空。为什么它这么下?
48手这个断是很明显的直觉要点,在AlphaGo的策略网络里估计会是排名很前的选择。后续捣乱可以连续多招,黑要小心应对,下错了就立刻完蛋。黑应对了,白可以继续“考验”黑。AlphaGo也会用策略网络模拟黑的应对,正确应对的招数肯定有,但也有错误的建议给出来。这样,连续搜索展开后,在不少叶子节点AlphaGo高兴地发现黑应错了被白一举击溃。就算黑一直应对正确,最后白损失也不大,能够完封右边中,大局上还是自己好。所以,蒙特卡洛模拟(MCTS)对48这手给出的胜率评分会比较高。这应该算是AlphaGo算法框架的一个bug。AlphaGo愿意下这种“局部变化复杂,对手应对错误自己立刻胜利,应对正确自己稍亏但大局还好”的辣招。对人类高手来说,这种计算应该不难,所以就占了便宜。48手算是亏目较多的一次小bug,但是局面还早。这时AlphaGo对自己的胜率估计应该比下出48手时低一些了,它终于知道吃了亏,但当初就是愿意去这么试。因为手数较多,它下48的时候并不知道会亏。只有定型的差不多了,才觉得算清了,没有东西。
同样原理的着手在收官阶段出现多次,AlphaGo几次在一路扑吃被提。它不亏,不会减少自己的胜率,万一对手不应还提高了胜率,损了劫材但反正它不想打劫。我估计这类着法是它的策略网络向人学习的,人经常在后半盘打劫、读秒打将的时候下这种一路扑。AlphaGo不理解人的意图,但把招学了过去。学过去发现能提高胜率,就这么用起来了。
象48手亏空这样的小bug是人可以利用的。如果人类高手完美发挥,各个环节都顶住,可能下和平的收空棋也能赢它了。但难度会很高,AlphaGo在划分地盘这个环节实在太厉害了。这种棋要做的选择非常多,哪步能占更多的空人没有特别好的精确测算方式,只有靠感觉为主。而AlphaGo用几百万次模拟来统计性地判断,比人要准得多。这是AlphaGo的核心能力,大局观碾压人类。
不少职业棋手认为李世石69过于靠上,被70镇头攻击局势很不利。具体应该在哪吊,说法很多。不管黑下哪,这种局面是AlphaGo擅长的。它不一定要成哪一块空,黑进来它各种方法都会模拟试一下。如果模拟发现退缩不行,它就会进行镇头分断攻击,最后往往会将成空潜力转移到另一片地方去。最后人下来下去,总是被它在某个区域围出很大的一片空。这种以厚势为基础的浮动攻击,靠吃棋威胁最后把虚空做实的下法,真的是很赏心悦目。
人类棋手评棋时往往会觉得,是不是破空手法不对啊,是不是该往这个方向跑,是不是打入深一些才好,是不是进得太深了。我认为这很可能是根据结果来看的马后炮。在这种局面下,拥有厚势的一方可能已经有了局面的主动权,AlphaGo根据自己的评分还是判断得比较准的,你怎么进来它都有应对的办法。
李世石如果选择正确,可能情况会好些。可是实战几乎所有人都发现黑大亏了,自己两眼苦活,白左上角已经活了,中间又瞬间出现大空。这时白下出了100这手棋,人们应该立刻意识到这等于是“胜利宣言”。这手很有味道,它并不是试图在左下围更多的空,而是准备让黑打入做活,但白也消除所有不安定因素收官稳稳获胜。下C5之类的点是可能围空更多,但黑仍然可以进来捣乱,黑右下的厚势就有用了。还不如用100这手消除任何变数。这种思维是人很难有的,它不去在里面守,反而在外面用坚实的拆一来守。
后半盘黑的挣扎都没有用,AlphaGo展现了高超的局面控制能力。最后认输时李世石盘面领先5目,是因为电脑想稳胜,让了一些回去。
这局李世石算是成功地测试出了AlphaGo开局亏目的一个小bug,但由于自身发挥有问题,还是被AlphaGo控制了,基本没有机会。李世石的大局观和局面判断比AlphaGo要差很多,右下意料之外的收益可能反而害了他,让他以为领先优势不小,后面没有果断出手制造第四局赖以获胜的复杂局面。这局也没有制造出劫争,AlphaGo避劫照样控制大局。
在总共五局高水平对局中,AlphaGo确实表现出了令人叹为观止的技术水平。可以非常有把握地预测,以AlphaGo为代表的新一代围棋AI将有超过职业棋手的技术实力。而人类的围棋水平在人工智能程序的帮助下,会取得突飞猛进,特别是在大局观上的认识。机器即使在围棋上完全战胜了人,也不是灾难。可以看看国际象棋领域已经发生过的事,有助于围棋界正确认识机器的作用。国际象棋程序的等级分比人类最高水平还高四五百分,对人类可以让一个兵或者二先,平下人最好结局只是和。人们已经完全承认AI水平远高于人,用它们来更新布局理论,研究新手,在人与人对下时应用。这样人的水平也取得了飞速进步,国际象棋大师越来越多。这次人机大战围棋的关注度空前提高,这对围棋发展是非常有益的。所有热爱围棋的人,都要感谢AlphaGo的贡献。
但另一方面,围棋也将通过人类高手与机器的反复缠斗,以一种前所未有的方式展示其自身的魅力。AlphaGo与李世石的五盘人机大战,只是一个开始。不少新闻分析说,围棋人工智能将很快全面战胜人类,我认为这是不正确的。
理论上来说,因为劫的存在,围棋是一种“上下文有关文法”,同样一个局面,前一招是不是提劫,后续逻辑就会完全不一样(按中国规则禁止全局同形再现,有更多形式的“上下文有关”,但最常见的是劫)。而国际象棋、中国象棋等棋种是“上下文无关文法”,当前局面如何形成的不影响后面结果。围棋的复杂性,广为人知的是状态空间数比国际象棋多100多个0。但是从围棋艺术和计算机算法角度来看,这种“上下文有关”造成的复杂性,远远超乎人的想象。下棋的人都知道,劫是让围棋的境界与艺术性大大升华的一个东西。基于MCTS的国际象棋程序,因为“上下文无关”,可以用多次模拟完美逼近看似很大的搜索空间。但是在围棋上,“上下文有关”的劫,因为可以在全盘任何一处找劫,MCTS算法的分枝数量瞬间爆炸,对搜索质量造成毁灭性的打击。这还只是一些简单的劫争。如果再考虑缓气劫、两手劫、连环劫、多劫循环,可以说围棋搜索算法仅仅只摸到打劫的边,根本没有深入劫争问题的核心。
可以想象将围棋盘扩大到21路,状态空间数又多几十个0,AlphaGo训练之后在划分地盘这个核心能力上还是可以超过人类,并不怕状态空间增多。但是就算棋盘缩小到17路,AlphaGo也还是不喜欢打劫。只要还是MCTS算法框架,面对劫争程序开发者想过各种处理办法,都没能很好应对复杂的劫争。谷歌团队也不太可能在这个问题上取得突破性进展。
可以非常有把握地说,打劫的能力将是人类远远强于围棋程序的地方。但是这个问题上机器也不是没有出路,AlphaGo就向我们展示了如何通过避开劫争分枝来控制局面。人类如何通过行棋,将机器逼得不得不打劫,会是一个很有意思的技术问题。从围棋理论上来说,一方不怕打劫,一方拼命避劫,总是善于打劫的一方有利一些,高手善打劫。人类最高水平的棋手打劫能力是9段,机器的打劫能力可能只有业余3段。按AlphaGo把劫材走光的风格,它不可能是一个劫争高手。但是人类高手也没有这样的经验,如果将一个不配合的却棋艺高超的对手逼入劫争。
在对于非确定地域的价值估计上,AlphaGo可以通过几百万次收完算子的统计模拟,对人类有着压倒性的技术优势。表现出来就是大局观非常好,人类最高水平是9段,AlphaGo可能有13段。
在封闭式局部的战斗中,AlphaGo对人类最高水平也仍然有优势。因为人类存在算不清、得失判断不清的问题。这方面的能力对比AlphaGo是10段,人类是9段。
在多个头绪关联的开放式接触战中,不需要引入劫争的复杂,AlphaGo的搜索模块也会碰到不小的麻烦。因为头绪多,对杀结果决定胜败,只有人类高手能理清逻辑,找到正确的行棋路线图。在这种复杂盘面,AlphaGo的三大搜索武器,价值网络、快速走子策略、策略网络全都失灵,就会忽然出现怪异的行棋选择。这是人类战胜机器最有希望的领域,人类是9段,机器只有业余5段。
在局部区域的定型手法中,AlphaGo出现了不保留变化早早定型的倾向。有些局面还会过早把手段使出来,以目数绝对亏损收场。这都是小问题。而人类心理状态不稳定,很难做到持续稳定地发挥出最高水平,是一个大问题。
总体来说,AlphaGo和人类高手风格迥然不同。事先分析,AlphaGo和人类高手各有所长,交锋起来看点十足。AlphaGo会的,是在实战中最经常使用的。以大局观为基础的行棋方向选择,是行棋中最常用最实用的本事,AlphaGo远超人类。在局部接触战中,AlphaGo拥有类似于穷举的战斗力,人类占不到便宜(亏目是AlphaGo为了提升胜率的小bug行为,明知杀不过也下。真正对它有利的战斗,它不会放过)。这两项本事都是最常用的,所以AlphaGo平时行棋就带有一种独特的魅力,时不时让人类惊叹它的判断力与创造力。人类如果在这两项技术上和AlphaGo斗争,将毫无胜算,甚至差距会越拉越大。
而人类需要有意地将局面引入对自己这方有利的格局中。通过劫争,复杂盘面多处头绪关联分析,在适合于自己的战场将AlphaGo击溃。人类互相之间针锋相对,很容易到达这种局面。然而AlphaGo会有意绕过劫争分枝,抢先定型简化局势。
双方这样各有所长,又特点鲜明,持续缠斗起来会非常火爆,看点十足。我非常期待,职业棋手们能够普遍了解AlphaGo的特性,制定正确的迎战策略。而双方又无疑会互相学习,试图减轻自己的弱点,学习对方的长处。如谷歌可能会通过持续训练与研发,将AlphaGo的弱点隐藏得更深。而人类一方面加强自己的大局观与局部手段,另一方面又动脑筋去使出手段将局面引导入劫争、复杂盘面。从围棋艺术发展来看,这会是一个非常激动人心的历史机遇。
因此,要非常感谢谷歌研发出了AlphaGo这么一个威力强大又十分有趣的好东西。人类与机器激动人心的缠斗不会很快结束,双方的优势与弱点都会长期存在。围棋作为计算机算法“完全信息博弈”问题中当之无愧的皇冠,会进一步展示出它真正的魅力,不会一下子被突破,很长时间内还会是核心难题。人类也会不断向机器学习它擅长的领域,提高自己的技艺。围棋历史上又一次意义巨大的革命已经在发生。