围棋,规则简洁而优雅,但玩法却千变万化,欲精通其内涵需要大量的练习与钻研。与此同时,围棋被认为是最复杂的棋盘游戏之一,据估计,围棋的决策点大概有10的170次方之多,其复杂度已于1978年被Robertson与Munro证明为PSPACE-hard(一类复杂性集合)。
1933年,19岁的吴清源五段已经战绩辉煌,在读卖新闻社主办的“日本棋院选手权战” 中获得优胜,取得与本因坊秀哉名人 的对弈资格,轰动日本。围棋运算量极大,对于棋手的算力要求极高,同时,由于当时并未采用封棋制,名人可以视情况暂停,这场笼罩着“中日对抗”色彩的世纪棋局整整下了3个月才结束!最终本因坊秀哉名人取胜,但是其取胜过程引人怀疑,很多人怀疑胜负手非本因坊秀哉个人智慧所得。很多人认为,正是这盘棋开启了人类现代围棋理论的“启蒙运动”。
几千年来,无数伟大的棋手在方寸乾坤中展示出自己的勇气与真意,可是,无论是本因坊秀哉名人,还是吴清源都不会想到,在他们的“世纪对弈”将近一个世纪后的2016年,与当世最优秀棋手对弈的竟然是一台机器,更不会想到,人类1比4不敌AlphaGo。2016年12月,神秘棋手Master登录中国弈城围棋网,以每天10盘的速度接连击败中外各大顶尖棋手,取得了空前绝后的60连胜。人们耳熟能详的职业棋手如古力、常昊等纷纷落败,柯洁也不幸成为AlphaGo的手下败将。2017年1月4日,AlphaGo团队公布,Master背后正是升级版AlphaGo的这一事实。猛然间,人们意识到,新一轮人工智能(AI)浪潮已经汹涌而至。
AlphaGo是于2014年由英国伦敦Google DeepMind公司开发的人工智能围棋程序。一直以来,相比起国际象棋,计算机在围棋方面胜过人类的难度更大,因为围棋有着更大的分支因子(Branching Factor),使得使用传统的AI方法(如Alpha-Beta修剪、树遍历和启发式搜索)变得非常困难。1997年,IBM公司的计算机程序Deep Blue在比赛中击败了国际象棋世界冠军Garry Kasparov。在此后的近20年时间里,使用人工智能技术最强大的Go程序仅仅达到了业余5段围棋选手的级别,且在无让子的情况下仍然无法击败专业的围棋棋手。
从技术的角度来说,AlphaGo的做法是使用了两个深度神经网络与蒙特卡洛树搜索相结合的方法,其中一个以估值网络来评估大量的选点,而以走棋网络来选择落子。在这种设计下,计算机既可以结合树状图的长远推断,又可以像人类的大脑一样自发学习进行直觉训练,以提高其下棋实力。从更深层的算法层面来说,AlphaGo的算法设计了两个深度学习网络:价值网络(Value Network)和策略网络(Policy Network),二者的作用分别是预测游戏的胜利者和选择下一步行动,而神经网络的输入是经过预处理的围棋面板的描述(Description of Go Board)。此外,AlphaGo还使用了蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS),并使用了大量的人类和计算机的对弈来进行模型训练。
继围棋之后,DeepMind又瞄准了暴雪公司的代表作之一——《星际争霸》。当AlphaGo下围棋时,可能的下法有10的170次方种,虽然这个数字比整个宇宙中的原子数量10的80次方多了几十个量级,而这对于《星际争霸》来说简直是小儿科。《星际争霸》作为一款经典的即时战略(Real-Time Strategy,RTS)游戏,玩家必须在宏观管理和微观个体的控制之间保持谨慎的平衡,因此,《星际争霸》在每一瞬间都有10的26次方种可能的操作——几乎无法计算。同时,在这款游戏中不存在最优策略,人工智能程序需要不断地探索和拓展更新战略知识,且操作空间巨大,需要同时操作上百个不同的单位,所以可能的组合空间非常大。DeepMind团队在《自然》上撰文表示,“《星际争霸》已成为人工智能研究的一项重要挑战,这要归功于它天生的复杂性和多智能体挑战,成就了它在专业电竞中的持久地位,并且它与现实世界具有很强的相关性。”无独有偶,纽芬兰纪念大学计算机科学教授David Churchill曾说,“《星际争霸》太复杂了,能适用于《星际争霸》的系统,也能解决现实生活中的其他问题。”
DeepMind团队针对这样的游戏“神作”开发了专用的AI系统AlphaStar,正是这一套AI系统,在《星际争霸2》中战胜99.8%人类,登顶“宗师”段位。众所周知,在RTS游戏中对于选手有一项关键评价参数,即Actions Per Minute(APM) 。实际上,AlphaStar的平均APM只有277,而职业玩家的APM则可以达到559。那么,是什么原因促使APM水平并不顶尖的AlphaStar可以战胜一众职业选手?
从游戏的角度来看,是策略;从计算机的角度来看,是模型。完美的策略来源于精心优化的模型,而正是这一点的足够强大,使AlphaStar可以不拼“手速”也能轻松获胜。
是什么使得AlphaStar的策略,或者说模型会被如此精妙地优化呢?
算力与算例。
这两个发音相同的词语的含义完全不同,二者实质上可以囊括本轮人工智能浪潮的两大主要动因。我们回到AlphaStar的例子来解释这两个词语。先看算力,AlphaStar的硬件基础是10亿亿次浮点运算的液冷张量处理单元(Tensor Processing Unit,TPU),TPU正是专门为神经网络机器学习而开发的专用集成电路(ASIC)。而算例,则是用于训练和优化模型的数据。AlphaStar最初的训练数据仅仅是暴雪公司发布的匿名人类游戏,以此为起点开始训练模型;接下来,使用“Alpha League”循环比赛方法,先对比从人类数据中训练出来的神经网络,然后逐次迭代,不同的AI实例开始相互对战,成功实例的分支被采用,并作为新选手重新引入“Alpha League”,使其不断发展壮大;最后,在“Alpha League”中选择最不容易被利用的AI程序去挑战人类,这个被选中的“天之骄子”称为“The Nash of League”。也正是这位“The Nash of League”战胜了《星际争霸》人类选手,最终登顶“宗师”段位。