APP下载

漫长的对决

2016-04-05潘超豪

南方人物周刊 2016年8期
关键词:对局蒙特卡洛阿尔法

潘超豪

1968年,第一个围棋程序问世。今天,阿尔法几度战胜了人类的顶尖棋手。这场人机对决,漫长,而没有终点

3月13日,首尔。当李世乭九段步入新闻发布会场之时,全场观众齐呼“李世乭”,一如两千年前的罗马市民迎接凯旋的将军。李世乭在职业生涯中曾赢得冠军无数,但受到如此祝贺是头一回。李世乭说,只是赢了一盘棋,不需要这样隆重祝贺的。不过,从他嘴角掩藏不住的笑容可以窥见,他的内心或许比现场的观众更为喜悦。

这是一场在三尺纹枰上“人类”与“人工智能”的巅峰对决。坐在棋盘两边的,一方是李世乭九段,人类最优秀的围棋手之一;另一方是围棋程序AlphaGo(以下称“阿尔法”),由谷歌旗下DeepMind公司开发。

围棋界在赛前一致看好李世乭横扫阿尔法。然而,比赛的进程却出乎所有人的意料。前三局比赛,李世乭不但全部落败,而且甚至没有寻觅到明显的胜机。

在李世乭提前输掉系列赛之后,棋界舆论风向调转。韩国顶尖棋手金志锡九段称要受让二子才能和阿尔法一战,中国的古力九段则在解说中开始称阿尔法“老师”。此时,几乎没有人认为在余下的两局棋中,李世乭还有机会赢一局。

在此背景下,李世乭的绝地反击才显得弥足珍贵。

这一盘棋,李世乭在黑方阿尔法的大阵中撒豆成兵,这正是他的成名绝技“僵尸流”。阿尔法一步步落入李世乭的圈套,却毫无察觉。就在黑棋即将合围大阵,将白棋一网打尽之时,李世乭祭出惊天一“挖”,正中黑棋的软肋。阿尔法的招法开始变得凌乱。数个回合之后,阿尔法接连犯下低级错误。李世乭此后安全运转,守住了胜利果实。数据显示,阿尔法似乎没有预见到李世乭的妙手,以至于形势急转直下。对此,李世乭说:“我的眼里只有那一手棋,没有任何其他选择,我必须走那里。我只能谦卑地感谢神明,我这些天的祈祷换来了这样的闪光。”

令人稍感意外的是,研究计算机围棋的工程师们在赛前也并不看好阿尔法获胜。从计算机围棋几十年的发展历史来看,他们做出如此推断是相当客观的。

1968年,第一个围棋程序问世。此后的二十多年间,计算机围棋发展缓慢。

1991年,中山大学教授陈志行退休后开始研发名为“手谈”的围棋程序。其后,“手谈”在8年间九获计算机围棋世界冠军,并接连受让15子、13子、11子战胜青年业余高手。陈志行自己也是业余围棋高手,曾多次参加全国业余围棋大赛,并取得不俗成绩。陈志行曾经设想“手谈”能够在让九子对局中战胜自己。

围棋盘纵横19道,其上均匀分布着9个黑色的圆点,称“星位”。让9子对局,就是白方让黑方先占据棋盘上的9个星位,才开始对局。部分棋手认为,能够受让9子战胜业余高手,才算是“会下围棋”。

世纪之交,国际象棋的程序在与人类顶尖棋手的对抗中已经稳稳占据上风,而围棋的程序则在“会下围棋”和“不会下围棋”的边缘徘徊。据此,有职业棋手推断,几十年之内都不会有围棋程序战胜人类顶尖棋手,或许永远都不会。

围棋人的自信并非无源之水。围棋和国际象棋都是两人对战的完全信息游戏,而人类棋手在棋盘上的决策过程也差异不大:首先搜寻当前局面下看上去所有可行的下一步,然后对其中每一步棋产生变化之后的局面进行评估,最后通过比较,选择对自己最有利的一步棋。

理论上来说,计算机程序只需要解决“搜寻”和“评估”这两个问题,就可以达到很高的水平。“深蓝”正是这样做的。

“深蓝”在搜寻方面近乎“穷举”。虽然效率不如人类,但能够比人类算得更深一层。至于评估,“深蓝”采用和人类相似的办法,给不同的棋子赋予相应的权重。“深蓝”之后的国际象棋程序,原理上大同小异,却已经将人类棋手远远甩在身后。

然而, 围棋程序不可能采取相同的办法。一方面,围棋变化的深度和广度都远超国际象棋,这使得“深蓝”的暴力搜索算法没有可行性。另一方面,评估一个局面孰优孰劣,在围棋上也并非易事。

职业围棋手判断形势的方法,由于具有很大模糊性,很难被程序模仿。于是,包括“手谈”在内,与“深蓝”同时代的围棋程序几乎都是在试图模仿人类棋手的招法。

工程师们竭尽全力让程序理解“征子”、“双活”、“愚形”、“小飞”等人类初学者在一个月之内就能掌握的概念,然而效果却并不理想。也有开发者给程序输入开局库,使得程序在遇到常见布局时能够复制职业棋手的招数。不过,一旦对手变招,程序便无所适从。陈志行等人苦心经营十余年,也未能让“手谈”突破顶尖业余棋手的9子大关。

就在大部分同行还在努力给程序打补丁之时,2006年,法国工程师Remi Coulom取得了突破。他将蒙特卡洛搜索法应用到他的围棋程序CrazyStone中,并在当年的计算机围棋世界奥林匹克9路棋盘项目上夺魁。

蒙特卡洛法的主要优势在于其独辟蹊径的局面评估方法。对于某一个特定的选择,程序用近乎随机落子的方式快速完成一盘棋,并判定胜负。

重复此过程多次,比如说10万次之后,黑方在其中获胜4万局。那么程序就认为最初的那步棋胜率是40%。这种判断方式,与人类的“数目法”,即估计双方领地大小的差距,有本质不同。

如果说之前的围棋程序都只是拙劣地模仿人类的围棋知识,那么采用蒙特卡洛法的程序则拥有了自己的“思维方式”。

此后两年,采用蒙特卡洛法的程序如雨后春笋般出现。2008年,程序MoGo首次在受让9子的对局中战胜职业棋手。同年,CrazyStone接连突破职业棋手的8子和7子关。2012年,程序Zen在仅受让4子的一局棋中,战胜久负盛名的日本职业棋手武宫正树九段。Zen的这一成就意味着它达到了业余5段的水平,跻身业余好手之列。这段时间,计算机围棋的发展速度让业内人士预测,十年之内将有程序达到职业水平。

技术的进步并非总是一帆风顺。2012年之后,采用蒙特卡洛法的程序几无寸进。Zen、CrazyStone等少数程序在计算机围棋赛中轮流坐庄,绝对实力却未见提升。蒙特卡洛法似乎遇到了瓶颈。幸运的是,2015年前后,深度学习技术飞速发展,研究计算机围棋的工程师也从中找到了新的灵感。阿尔法由此横空出世。

阿尔法的开发团队由22名优秀的工程师组成。其中,来自台湾的黄士杰(Aja Huang)扮演重要角色。黄士杰是台湾的业余6段棋手,他开发的程序Erica曾击败Zen,夺得2010年计算机围棋奥赛冠军。虽然阿尔法的开发时间并不很长,但其中的关键部分与黄士杰等人的多年积累密不可分,可谓十年磨一剑。

阿尔法主要由走棋网络、估值网络和蒙特卡洛法三部分组成。

走棋网络和估值网络均基于“深度卷积神经网络”技术。该技术的灵感与人类大脑的结构密切相关。走棋网络和估值网络就好比阿尔法的“左脑”和“右脑”,走棋网络负责选择招法,而估值网络负责评估局面,然后由蒙特卡洛法将它们连结成一个完整的大脑,最后输出招法。

走棋网络通过学习职业(或业余高手)棋谱和大量自我对局训练而成。经过训练,走棋网络对于一个特定的局面,能够快速给盘面上所有可能的选择给出评分。

走棋网络的判断赋予了阿尔法如同人类棋手一样的特殊“棋感”,即对特殊棋形做瞬时判断的直觉。对于人类棋手,通常需要多年的训练才能建立这样的“棋感”。这种棋感,曾被认为是人工智能难以模仿的。无论是手谈还是Zen,它们在类似功能的实现上,基本只是对工程师输入知识的直接反馈。一旦遇到知识库里不存在的棋形,它们就可能一脸茫然。

阿尔法则不同。“深度卷积神经网络”让阿尔法能够在输入知识的基础上举一反三。不仅如此,阿尔法还通过自我对局进一步提升判断的准确度,这使得阿尔法拥有了超越人类“棋感”的潜力。

“棋感”足以让阿尔法成为一名业余好手,但离职业棋手还很远。仅凭直觉做出的选择仍然包含着大量的错误。与人类棋手一样,阿尔法也需要判断形势。人类的形势判断算法大致是估计对局双方地盘大小的差值。阿尔法的估值网络则计算特定局面下双方的获胜概率。

与走棋网络类似,阿尔法同样进行大量(三千万局)自我对局获得样本。一局棋中如果是黑方获胜,那么阿尔法就对相似局面下黑棋优势的判断更有信心。

另外,阿尔法还有名为“快速走子”的技术辅助判断。

“快速走子”,顾名思义就是以比走棋网络更快的速度落子。虽然这样走出的招法质量稍逊,但速度比走棋网络快一千倍。更重要的是,通过“快速走子”代替传统蒙特卡洛法中的随机落子,使得阿尔法对胜率的估计更为准确。

将“快速走子”与估值网络结合,阿尔法能够相当准确地判断绝大多数局面的胜率。这种形势判断的方法不同于人类棋手的思路。从阿尔法与李世石对战的结果看,阿尔法的判断在大多数时候甚至强于李世石,令职业棋手们高山仰止。

尽管深度学习技术帮助阿尔法完成了飞跃,蒙特卡洛法仍然是阿尔法不可或缺的一部分。蒙特卡洛法把走棋网络的选择和估值网络的形势判断结合在一起,通过逻辑判断输出最优的招法。

阿尔法的三个组成部分分工明确,配合默契,完整地实现了类似于人类棋手的思考过程,且拥有超越人类思考能力的潜力。

阿尔法的进步速度,远远超出业内人士的想象,甚至可能也超出了阿尔法开发团队的期望。

2015年10月,阿尔法击败樊麾之时,开发者估计阿尔法世界排名约为250名左右。2016年1月末,在新闻发布会上,阿尔法团队声称对抗李世乭“有五成把握”。

前三局棋,阿尔法几乎没有给李世乭什么机会。若不是李世乭在逆境下的灵光一现,人类或许就要认为阿尔法是无懈可击的了。所幸李世石九段奋力一击,暴露了阿尔法的问题所在。

阿尔法在第四局中的低级错误,大致是在面对带有劫争的复杂变化时误判,因而在开劫之前耗尽劫材。前一代以蒙特卡洛法为主算法的程序多数出现过相同问题。在赛前,就有业内人士怀疑阿尔法是否已经解决了此问题,从结果来看似乎并没有。这是一个有十年历史的“顽疾”,不一定能够在短期内得到解决。

然而,无论如何,能够战胜李世乭,证明阿尔法和计算机围棋的前方是一条康庄大道。采用类似技术的其它围棋程序也已取得不俗成绩。

由田渊栋博士开发的Facebook旗下程序Darkforest,短短几个月就达到了业余4段的水平;新一代的Zen在结合了深度卷积神经网络之后,也提升到了强业余5段的水平。几年之内,拥有职业水平的围棋软件就将飞入寻常百姓家。

阿尔法的“思维方式”和人类棋手大相径庭,却达到了人类的顶尖水平。她的未来没有极限。

阿尔法的胜利是几代工程师智慧的结晶,是人工智能技术进步的里程碑;而李世乭的“神之一手”是人类棋力登峰造极的浓缩,是四千年围棋艺术的冰山一角。这一场挑战赛,没有输家。古老的围棋和新兴的人工智能都还有很长的路要走,希望它们在未来能够擦出更耀眼的火花。

猜你喜欢

对局蒙特卡洛阿尔法
极狐阿尔法S HI版
“萤火虫-阿尔法”小型火箭首飞概述
ARCFOX极狐阿尔法S
征服蒙特卡洛赛道
利用控制变量方法缩减蒙特卡洛方差
第29届欧洲象棋锦标赛对局选评
蒙特卡洛模拟法计算电动汽车充电负荷
基于蒙特卡洛的非线性约束条件下的优化算法研究
赵国荣先胜吕钦
阿尔法磁谱仪(AMS)