当前位置: 首页 > news >正文

AlphaZero进化论:从零开始,制霸所有棋类游戏

2017年末,DeepMind推出了AlphaZero——一套能够从零开始自主学习国际象棋、将棋(类似于日本版的国际象棋)以及围棋的技艺,从而全面超越各项目世界冠军的系统。

对于这一系统带来的初步成果,整个公司的研发人员都感到非常兴奋,并很高兴看到国际象棋界成员对此做出的热烈回应。他们在AlphaZero的棋艺当中发现了一种突破性、高度动态且“不同于传统”的对弈风格,这也使其完全不同于以往存在过的任何棋类游戏引擎。

今天,AlphaZero登上了著名的《科学》杂志,并以封面论文的形式发表,它背后的公司DeepMind也在官方博客上撰文,为这一系统取得的最新成就进行了详细解析,InfoQ将全文翻译整理如下:

今天,我们很高兴地发布AlphaZero的完整评估报告,这篇论文已经公开发表在《科学》杂志上:

http://science.sciencemag.org/content/362/6419/1140

评审编辑已经确认并更新了这些初步结果。论文描述了AlphaZero如何快速学习每一种棋类,包括在仅获得游戏基本规则、但完全不存在内置指导的前提下从随机游戏开始,一步步成长为有史以来最强大的棋手。

这种从零开始学习每种棋类的能力由于不受人类固有思维的约束,因此产生出一种独特、有悖于传统,但却极具创造性与动态思考的对弈风格。国际象棋大量马修·萨德勒(Matthew Sadler)与女子国际象棋大师娜塔莎·里根(Natasha Regan)在即将于明年1月出版的《游戏规则改变者(Game Changer)》一书中分析了AlphaZero进行的数千盘国际象棋对弈,并发现其风格不同于任何传统的国际象棋引擎。马修表示,“这就像是发现了古代棋艺大师的秘籍一样。”

传统的国际象棋引擎——包括世界计算机国际象棋冠军Stockfish与IBM广为人知的“深蓝”——依赖于数千条由顶尖人类棋手提供的规则与启发式方法。这些信息尝试解释游戏中的每一种可能性。将棋同样遵循此理,其程序仅适用于将棋本身,但采用与国际象棋程序类似的搜索引擎与算法。

AlphaZero采取的方法则完全不同,其利用一套深层神经网络与大量通用型算法取代了那些手工制作的规则,而且这些算法除了棋类的基本规则之外一无所知。

\"image\"在国际象棋当中,AlphaZero仅用了4个小时便成功击败Stockfish; 在将棋方面,其击败Elmo则仅用掉2个小时; 至于围棋,AlphaZero在30个小时即击败曾于2016年压倒世界冠军李世石的AlphaGo版本。注意:每个训练步骤代表4096个盘面位置。

为了学习每种棋类,这套未经训练的神经网络会通过一种被称为强化学习的实验与试错过程完成数百万盘自我对弈。起初,其完全是在随机乱下; 但随着时间的推移,系统会从胜利、失败以及平局当中学习经验,从而调整神经网络参数,使其更有可能在未来的选择中做出有利判断。网络所需要的训练量取决于游戏的风格与复杂程度——国际象棋大约需要9个小时,将其大约需要12个小时,而围棋则需要13天。

这套经过训练的网络被用于指导一种搜索算法——被称为蒙特卡洛树搜索(简称MCTS)——坐而选择当前盘面下最为有利的棋步。对于每一步棋,AlphaZero所需要的位置搜索量只相当于传统国际象棋引擎的一小部分。例如在国际象棋当中,AlphaZero每秒只需要搜索6万个位置; 相比之下,Stockfish则需要搜索大约6000万个位置。

\"image\"

经过全面训练之后,这套系统被用于对抗最强大的传统国际象棋(Stockfish)与将棋(Elmo)引擎,甚至还包括AlphaZero“一奶同胞”的大哥AlphaGo——全球最强围棋棋手。

  • 每款程序都运行在专门设计的硬件之上。Stockfish与Elmo采用44个CPU核心(与TCEC世界锦标赛时的情况保持一致),而AlphaZero与AlphaGo Zero则使用一台配备有4个第一代TPU与44个CPU核心的机器。第一代TPU的推理速度与英伟达Titan V GPU等商用硬件大体相似——当然,二者的架构差别巨大,不具备直接可比性。

  • 所有比赛均采用单场3小时制,每步棋额外增加15秒。
    在所有对抗当中,AlphaZero都以毫无争议的方式击败了对手:

  • 在国际象棋方面,AlphaZero击败了2016年TCEC(第9季)世界锦标赛冠军Stockfish——其中AlphaZero获得155场胜利,且败率仅为千分之六。为了验证AlphaZero的稳健性,我们还刻意为双方准备了由人类常规开盘形成的残局。无论是哪种残局,AlphaZero仍能顺利击败Stockfish。此外,我们亦参加了2016年TCEC世界锦标赛,并在比赛中对阵近期刚刚进行升级的Stockfish版本——其中一种Stockfish变体采用了非常强大的开局走法组合,但AlphaZero仍无一例外全部取胜。

  • 在将棋方面,AlphaZero击败了在2017年CSA世界锦标赛上胜出的Elmo版本,胜率为91.2%。

  • 在围棋方面,AlphaZero战胜了AlphaGo Zero,胜率为61%。

\"image\"

然而,更令人着迷的是AlphaZero在对弈过程中展现出的行棋风格。例如,在国际象棋当中,AlphaZero在自我学习与训练当中独立发现并使用了常见的人类行棋模式,例如开口、保王以及兵阵等等。然而,由于自学成才且完全不受传统观念的影响,AlphaZero也发展出了自己的直觉与策略。其提出的一系列令人兴奋的新颖想法,大大拓展了几个世纪以来人类对于国际象棋战略的理解。

棋手们首先注意到的,一定是AlphaZero的行棋风格。马修·萨德勒表示,“它的走法充满了目的性与攻击性,始终围绕着对方的王进行谋划。”以此为基础,AlphaZero还拥有着高度动态化的对弈能力,这最大限度提高了其棋路的灵活性与移动性,同时最大限制着对方棋子的灵活性与移动性。与直觉相反,AlphaZero似乎对于“棋子角色”的重视程度较低。现代竞技项目的一大基础特性,所有参与方都具有价值。如果某一选手在棋盘上的棋子价值高于对方,则表示前者在棋子角色方面具有优势。但不同于此,AlphaZero更倾向于在开局之初就牺牲这些棋子角色,从而获得更为长远的形势性收益。

马修指出,“令人印象深刻的是,它在各种角色与位点上都表现出这种强烈的行棋风格。”他同时观察到,AlphaZero在起步阶段会非常刻意地以“与人类非常相似的意图”设计开局。

马修解释称,“传统引擎非常稳定,几乎不会出现明显的错误。但在面对没有具体且可参考解决方案的位置时,则显得束手无策。相比之下,AlphaZero则能够在这样的位置上表现出「感觉」、「洞察」或者「直觉」。”

这种独特的能力是其它传统国际象棋引擎所不具备的,而且也在最近的世界国际象棋锦标赛当中为国际象棋爱好者们带来了新的思路与启发。马格努斯·卡尔森(Magnus Carlsen)与法比亚诺·卡鲁安纳(Fabiano Caruana)之间的比赛就有所体现,《游戏规则改变者》一书就对此做出了进一步探讨。娜塔莎·里根表示,“对AlphaZero以及顶级国际象棋引擎乃至顶级大师的行棋方式进行分析,着实令人着迷。”

AlphaZero带来的经验,也与2016年AlphaGo与传奇围棋大师李世石间的对弈有所呼应。在此次比赛当中,AlphaGo走出了许多极具创造性的取胜手法,包括在第二场比赛中只用37步即告胜出——这彻底推翻了数百年来人类对于围棋运动的理解。这些棋步已经被包括李世石本人在内的众多棋手奉为经典案例。在评论第37步时,李世石表示,“我一直认为AlphaGo属于那种基于概率的计算工具,毕竟它只是一台机器。但在看到这一步时,我改变了看法。不可否认,AlphaGo拥有真正的创造力。”

与围棋一样,我们也对AlphaZero在国际象棋领域表现出的创造性感到兴奋。自从计算机时代开始以来,国际象棋一直是人工智能技术面临的主要挑战——包括巴贝奇、图灵、香农以及冯·诺伊曼在内的众多早期开拓者都在努力设计能够解决国际象棋问题的方案。但AlphaZero的适用于并不仅限于国际象棋、将棋或者围棋。为了建立起能够解决各类现实问题的智能系统,我们要求其具备灵活性并能够适应各种新情况。虽然我们已经在实现这一目标方面取得了一定进展,但其仍然是人工智能研究中的一大核心挑战。目前的系统虽然能够以极高的标准掌握特定技能,但却往往无法解决甚至只经过略微修改的任务。

AlphaZero这种掌握三种不同复杂棋类(甚至有可能涵盖一切完美信息类项目)的能力代表着克服这一问题的重要一步。这证明单一算法完全有可能在不同的具体规则之下学习并发现新知识。另外,尽管尚处于早期发展阶段,但AlphaZero的创造性见解加上我们在AlphaFold等其它项目中观察到的振奋人心的结果,使我们对于创建通用学习系统这一目标充满信心。这意味着我们有望发现更多新的解决方案,从而攻克那些最重要也最复杂的科学问题。

下载论文:

https://deepmind.com/documents/260/alphazero_preprint.pdf

原文链接:

https://deepmind.com/blog/alphazero·shedding·new·light·grand·games·chess·shogi·and·go/

会议推荐:

12月20-21,AICon全球人工智能与机器学习技术大会将于北京盛大开幕,学习来自Google、微软、BAT、360、京东、美团等40+AI落地案例年终总结,与国内外一线技术大咖面对面交流,不见不散。

\"\"

相关文章:

  • 一个程序员的自白(危机可导)
  • golang 学习笔记 ---数组/字符串/切片
  • 整数规划---割平面解法
  • 试水Proxmox最新版本PVE 5.3
  • javascript事件循环(浏览器/node)
  • http请求后台报406错误
  • 想写好前端,先练好内功
  • 关于在ViewPager的子页面中不能跳转的问题
  • 企业上云计划:上云前应该考虑哪些因素
  • 20181213交换分区管理 Swap
  • 菜鸟智慧新物流核心技术全解析
  • 基于drone的CI/CD,对接kubernetes实践教程
  • kubernetes(k8s)安装部署
  • nginx安装
  • 设置审批消息提醒
  • 【面试系列】之二:关于js原型
  • Angular 响应式表单 基础例子
  • AngularJS指令开发(1)——参数详解
  • ES2017异步函数现已正式可用
  • k8s如何管理Pod
  • Vue2.0 实现互斥
  • 程序员最讨厌的9句话,你可有补充?
  • 初识MongoDB分片
  • 大主子表关联的性能优化方法
  • 技术发展面试
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 容器服务kubernetes弹性伸缩高级用法
  • 微服务入门【系列视频课程】
  • 一道面试题引发的“血案”
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • ​520就是要宠粉,你的心头书我买单
  • ​卜东波研究员:高观点下的少儿计算思维
  • #pragma 指令
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (力扣)1314.矩阵区域和
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)nsfocus-绿盟科技笔试题目
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .Net 8.0 新的变化
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • @ConfigurationProperties注解对数据的自动封装
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • [Android View] 可绘制形状 (Shape Xml)
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [BUAA软工]第一次博客作业---阅读《构建之法》
  • [c#基础]值类型和引用类型的Equals,==的区别
  • [Excel] vlookup函数
  • [iphone-cocos2d]关于Loading的若干处理和讨论
  • [leetcode 双指针]
  • [Linux] Apache的配置与运用
  • [Linux基础开发工具---vim]关于vim的介绍、vim如何配置及vim的基本操作方法
  • [NOI2012]迷失游乐园