编者按:本文来自“腾讯科技”,36氪经授权转载。
2016年,谷歌的人工智能程序击败了世界上最好的围棋选手李世石(Lee Sedol),这场比赛吸引超过1亿人观看
据外媒报道,几周前,谷歌人工智能(AI)子公司DeepMind的研究人员在《科学》(Science)杂志上发表论文,描述了AI在游戏中的应用潜力。虽然他们的AI系统是通用的,可以用于许多双人游戏,但研究人员将其专门用于围棋、国际象棋和日本象棋。除了每种游戏的规则之外,它没有被输入其他任何知识。
最初的时候,这种AI系统只是随机下子。随后,它开始通过自我游戏来学习棋路。在九个小时的训练过程中,该程序的国际象棋版本在大量专门的谷歌硬件上与自己进行了4400万场比赛。两个小时后,它的表现开始好于人类选手;四小时后,它击败了世界上最好的国际象棋引擎。
这个项目名为AlphaZero,它是从AlphaGo基础上发展而来的。AlphaGo也是一种AI,因在2016年3月击败了世界上最好的围棋选手李世石(Lee Sedol)而闻名于世。今年早些时候在Netflix上播放的纪录片《AlphaGo》中,制片人跟踪了开发这款AI的团队及其人类陪练,他们将毕生精力都投入到了这款游戏中。
我们看着这些人经历了一种新的悲伤。起初,他们不认为人类会输给机器,李世石在在与AlphaGo进行五场比赛的前一天说:“我认为,人类的直觉仍然非常有用,AI无法赶超。”可是当机器开始获胜的时候,一种恐慌感油然而生。在一个特别令人痛心的时刻,李世石在输掉第一场比赛后承受了巨大压力,他从棋盘后面站了起来,不顾比赛时间限制,走到外面去抽烟。他站在首尔高楼的屋顶上往外看。
与此同时,AlphaGo不知道它的对手已经去了其他地方,依然走出了评论员所谓的“创造性、令人惊讶的棋路”。最后,李世石以1:4的比分输掉了比赛,这让他感觉非常沮丧。在一次新闻发布会上说,李世石承认:“我想为我的无能道歉。”最终,李世石和围棋社区的其他成员开始欣赏这台机器。他说:“我认为这将带来一种新的范式改变。”欧洲围棋冠军范辉对此表示赞同,他指出:“也许AlphaGo可以向人类展示一些我们从未发现过的东西。也许它很美!”
对于AlphaGo的开发者来说,这的确是一场胜利,但仍然不令人满意,因为AlphaGo在很大程度上依赖于人类的围棋专业知识。在某种程度上,AI通过模仿世界级旗手的棋路来积累经验。它还使用了手工编码的启发式方法,以避免AI在游戏中思考未来棋路时出现最严重的错误。对于开发AlphaGo的研究人员来说,这些知识就像是一根“拐杖”。为此,他们开始建造新版本的AI,它可以自学,并独创出自己的棋路。
2017年10月,DeepMind研究人员发表论文中详细介绍了这一成果,之所以称新的AI系统为“AlphaGo Zero”,是因为它对除了围棋规则外一无所知。这个新项目的知名度要低得多,但从某种意义上说,这是一项更了不起的成就,尽管这一成就与围棋没有多大关系。事实上,不到两个月后,DeepMind发表了第三篇论文的预印本,表明AlphaGo Zero背后的算法可以推广到任何两人、零和的完美信息游戏(即不存在隐藏元素的游戏)中。
DeepMind去掉了AlphaGo名字中的“Go”,并给它的新系统命名为AlphaZero。它的核心是一种强大的算法,你可以给它提供被人类研究得最透彻、经验最丰富的游戏规则,然后那天晚些时候,它将成为有史以来最好的玩家。也许更令人惊讶的是,这个系统的迭代也是迄今为止最简单的。
典型的国际象棋引擎堪称是个大杂烩,需要经过几十年基于尝试和错误进行调整。世界上最好的国际象棋引擎Stockfish是开源的,它通过被称为“达尔文式选择”变得越来越好:即有人提出一个想法,成千上万的游戏来验证这个想法,最好的版本最终会胜出。因此,它可能不是特别优雅的程序,而且程序员可能很难理解。
程序员对Stockfish所做的许多改变最好是从国际象棋而不是计算机科学的角度来表述,他们更多关注如何在棋盘上评估给定的情况:骑士应该值2.1分还是2.2分?如果它是在第三等级,而对手有个相反颜色的主教呢?为了说明这一点,DeepMind的研究主管大卫·西尔弗(David Silver)曾在Stockfish中列出了移动策略。
它们有五十多个步骤,每种都需要大量编码,每一个都是来之不易的国际象棋奥秘:反移动启发式(Counter Move Heuristic)、已知结束游戏数据库、叠兵(Doubled Pawns)和抽将(Trapped Pieces)等评估模块、搜索可能移动旗子的策略等。
相比之下,AlphaZero只有两个部分:一个神经网络和一个被称为Monte Carlo Tree Search(MCTS)的算法。人们常说,MCTS算法背后的理念是,像国际象棋这样的棋类游戏实际上是一棵充满了各种可能性的树。如果我把车移到d8位置,你可以抓住它,或者随它去,这时我可以移动兵、移动主教或者保护我的王后……
问题是,这棵树变得难以置信的大,难以置信的快。任何计算能力都不足以彻底地搜索它。专业的人类玩家之所以是专家,正是因为她的大脑能自动识别出树的基本部分,并将注意力集中在其上。而计算机想要竞争,必须以某种方式做同样的事情。
国际象棋评论员对AlphaZero的表现赞不绝口
这就是神经网络的作用所在。AlphaZero的神经网络作为输入,接收游戏最后几步的棋盘布局。作为输出,它估计了当前玩家获胜的可能性,并预测了当前可用的哪些棋路可能效果最好。MCTS算法使用这些预测来确定树上的重点位置。例如,如果网络猜测“骑士干掉主教”可能是一步好棋,那么MCTS将投入更多时间来探索这步棋的后果。
起初,指导搜索的神经网络显得相当笨,它或多或少地随机做出预测。结果,MCTS在集中于树的重要部分方面做得非常糟糕。但AlphaZero的天赋在于它的学习方式。它需要两个部分的工作,并使它们彼此磨练。即使一个愚蠢的神经网络在预测哪些动作会起作用方面做得不好,在博弈树中向前看仍然很有用。例如,在游戏结束时,MCTS仍然可以学习哪些位置实际上会促使胜利,至少在某些时候是这样的。
这些知识可以用来改进神经网络。当游戏结束时,你知道结果,你看神经网络对每个位置的预测,并将其与实际发生的情况进行比较。然后,你可以通过调整神经网络的突触连接来“校正”神经网络,直到它找到获胜几率更大的棋路。本质上,MCTS的所有搜索都被提炼成神经网络的新权值。当然,有了个稍微好点儿的网络,搜索就不那么容易被误导了,这使它能够更好地搜索,从而为训练网络提取更好的信息。就这样,在一个反馈回路中,它的能力会不断提高。
当AlphaGoZero和AlphaZero的论文发表时,有些棋类爱好者开始在博客文章和视频中描述该系统,并构建他们自己的模仿版。这项工作的大部分都是解释性的,它源于业余爱好者对学习和分享的渴望,这种冲动最初导致了网络的出现。但是,为了大规模地复制这项工作,还需要其他努力。毕竟,DeepMind的论文只描述了世界上最伟大的围棋和国际象棋程序,它们没有包含源代码,该公司也没有向玩家提供这些程序。在宣布胜利后,它的工程师们已经离开了战场。
曾在Mozilla公司工作的计算机程序员吉安-卡洛·帕斯卡托(Gian-Carlo Pascutto),在构建有竞争性游戏引擎方面有着良好的记录,首先是国际象棋,然后是围棋。他跟踪最新的研究。随着将MCTS和神经网络相结合成为围棋AI领域的最新技术,帕斯卡托创建了世界上最成功的开源围棋引擎,首先是Leela,然后是LeelaZero,这也反映了DeepMind的进步。
问题在于,DeepMind可以访问谷歌庞大的云计算平台,但帕斯卡托却没有。为了训练自己的围棋引擎,DeepMind使用了5000个谷歌的“张量处理单元”(TPU)13天,它们是专门为神经网络计算设计的芯片。而为了在桌面系统上做同样的工作,帕斯卡托必须运行自己的程序1700年才能取得同样的效果。
为了弥补计算能力的不足,帕斯卡托分发了这项工作。LeelaZero是个分布式系统,即任何想要参与的人都可以下载最新版本,将他拥有的任何计算能力贡献出来,并上传自己生成的数据,这样系统就可以稍加改进。分布式的LeelaZero社区已经让他们的系统与自己玩了1000多万场游戏,比AlphaGo Zero略多一点儿。它现在是现有的最强大的围棋引擎之一。
没过多久,这个想法就扩展到国际象棋上。2017年12月,当AlphaZero预印本出版时,加里·林斯科特(Gary Linscott)说:“它就像一颗炸弹击中了社区。”林斯科特是从事Stockfish研究的计算机科学家,他使用了现有的LeelaZero代码库,以及AlphaZero论文中的新思想,创建了LeelaChessZero。
关于DeepMind团队在他们的论文中遗漏的细节,有些问题需要解决,也有些经验猜测,但在几个月内,这个神经网络就开始改进了。国际象棋界已经痴迷于AlphaZero:Chess.com上的帖子庆祝了这款引擎的诞生,评论员和特级大师仔细研究了DeepMind在论文中发布的几款AlphaZero游戏,宣称“国际象棋就应该这么玩”。
很快,就像Leela Chess Zero的名字一样,Lc0吸引了数以百计的志愿者。由于他们贡献了他们的计算机能力和改进的源代码,引擎变得更好用。如今,一位核心撰稿人怀疑,距离赶超Stockfish只有几个月的时间了。不久之后,它可能会变得比AlphaZero本身更好。
当我们在电话中交谈时,让林斯科特感到惊奇的是,像他推出的项目,曾经需要才华横溢的博士生几年的时间,现在却可以由一个感兴趣的业余人员在几个月内完成。神经网络的软件库只需要几十行代码就可以复制一个世界一流的设计,在一组志愿者之间分发计算的工具已经存在,而英伟达等芯片制造商已经将价格低廉、功能强大的GPU(图形处理芯片)完美地用于训练神经网络,并将其投入到数百万普通计算机用户的手中。像MCTS这样的算法非常简单,可以在一两个下午内实现,你甚至不需要是这方面的专家。在创建LeelaZero的时候,帕斯卡托已经有20年没玩围棋了。
DeepMind的研究主管大卫·西尔弗(David Silver)指出,他的公司最近在游戏方面的工作核心似乎存在一个悖论:程序越简单(从AlphaGo到AlphaGo Zero再到AlphaZero),它们的表现就越好。他在2017年12月的一次演讲中说:“也许我们追求的原则之一是,通过少做些事情,消除算法的复杂性,使我们的技术变得更加通用。”通过去掉围棋引擎中的围棋知识,他们开发出更好的围棋引擎。同时,它也是可以玩日本象棋和国际象棋的引擎。
我们从未想过,事情会变成这样。1953年,帮助创造现代计算机的艾伦·图灵(Alan Turing)写了一篇题为《数字计算机应用于游戏》的短文。在论文中,他开发了一个国际象棋程序,“基于对我玩棋时思维过程的内省分析”。这个程序很简单,但在它的例子中,简单并不是一种美德:就像图灵一样,他不是个有天赋的棋手,它错过了游戏的很多深度思考,而且玩得不太好。
尽管如此,图灵猜测,“人不能设计出比自己玩得更好的游戏机器”,这个想法是个“相当荒谬的观点”。虽然说“任何动物都不能吞下比自己更重的动物”这句话听起来是对的,但事实上很多动物都能做到。类似地,图灵提出,糟糕的棋手开发出色的国际象棋程序,可能也不会有矛盾。要做到这一点,一个诱人的方法就是让这个程序自己去学习。
AlphaZero的成功似乎证明了这一点。它有个简单的结构,但能够学习游戏中最令人惊讶的特征。在AlphaGo Zero的文章中,DeepMind团队展示了他们的AI在经过训练数周后,可以找到熟练玩家所熟知的策略,但只在几个周期后就抛弃了它们。看到人类最好的想法在通往更好的道路上徘徊让人感觉有点儿怪异,也让人感到不安:它以一种让人眼睁睁看着物理机器超越我们的方式冲击着我们。
在《科学》杂志最近的社论中,1997年曾输给IBM“深蓝”计算机的前国际象棋冠军加里·卡斯帕罗夫(Garry Kasparov)表示,AlphaZero的下棋方式并没有反映出系统性的“程序员优先事项和偏见”;相反,尽管它每一步搜索的位置要比传统引擎少得多,但它以开放、积极的方式发挥作用,似乎从战略而不是战术的角度考虑问题,就像一个有着不可思议远见的人一样。卡斯帕罗夫写道:“通过AlphaZero的程序本身,我想说它的风格反映了事实。”
当然,像人一样下棋和像人一样思考象棋,或者像人一样学习,并不是一回事。有一句老话说,玩游戏就是AI的果蝇,这就像果蝇之于生物学家、围棋和国际象棋等游戏之于研究智能机制的计算机科学家,它们都同样重要。这是个令人回味无穷的类比。然而,下棋的任务一旦转化为在一棵博弈树中每秒搜索数万个节点的任务,所使用的智能可能与我们最关心的截然不同。
以这种方式下国际象棋可能比我们想象的更像地球运动:这种活动最终不是我们的强项,因此不应该对我们的灵魂那么珍贵。要学习,AlphaZero需要比人类多玩几百万个游戏。但当它完成时,它就可以像天才那样去玩。它依靠的搅动速度比人通过深层搜索树所能做到的更快,然后使用神经网络将它发现的东西处理成类似直觉的东西。
当然,这个项目教会了我们更多关于智力的新东西。但它的成功也突显出,世界上最优秀的人类玩家可以通过一种非常不同的方式看到更多东西,即除了亲身体验外,我们还可以基于阅读、交谈和感觉等方式加以理解。也许最令人惊讶的是,我们人类在那些似乎是为机器设计的游戏中表现得同样好。
领取专属 10元无门槛券
私享最新 技术干货