AlphaGo 为什么它能战胜人类
在13日结束的AlphaGo与李世石五番棋对决中的第四局,李世石胜出。连败三局之后,人类终于扳回一局。但这场胜利来得有些迟,AlphaGo此前已经痛快得赢得这场人机大赛的胜利。这场生生夺走一周眼球的人机围棋大战,人们最想追问的是,AlphaGo为什么能战胜人类?
赛前,无论是职业棋手还是科技界,并不看好机器胜利
机器赢了人类,这个结果让无数人感到吃惊与意外。在这场比赛开始前,很多职业棋手认为 AlphaGo 不可能赢得比赛。棋圣聂卫平在赛前下定论认为:电脑和人下围棋,百分之百是人赢。
而科技界对 AlphaGo 是否能赢得比赛表示谨慎看好,并没有十足信心。这从 AlphaGo 创始人德米什 · 哈萨比斯(Demis Hassabis)在第二场比赛结束后的发言可以看出,他当时认为 AlphaGo 的胜利难以置信。
在与李世石对弈前,AlphaGo 于去年 10 月与欧洲围棋冠军樊麾进行了对弈,以 5:0 战胜了樊麾,而在非正式对局当中, 樊麾则 2 次中盘战胜了 AlphaGo。
这也被外界认为 AlphaGo 很难战胜李世石的原因。樊麾的等级为职业棋手二段,李世石为职业九段。围棋界公认,这两人的围棋水平为:樊麾是踏在了职业门槛,而李世石则是职业顶尖,前围棋世界第一人,代表了人类围棋最高水平。
但仅仅过了 5 个月,AlphaGo 在五番棋中以 3:0 战胜了李世石,并且在比赛过程中下出了很多令专业人士都非常惊讶的妙手。
很多关注人机大战的人都想要知道一个问题:
Google是怎么设计AlphaGo的?
比如,AlphaGo 的运行机理是什么?进入自我学习的阶段之后,谷歌团队是否还需要人工对其进行不断的人工优化、改良以及提升?还是完全凭借其自身的学习能力来提升?
最近两天 ,DoNews 记者在 Twitter 上就该问题向德米什 · 哈萨比斯进行了两次提问,但德米什 · 哈萨比斯没有进行回应。
在对外公布的所有信息中,包括其在《Nature》上发表过的两篇论文中,都只提到了他们的 AlphaGo 能够做什么,都没有透露 AlphaGo 的运行机制是什么,即 AlphaGo 到底是怎么做到的。
德米什 · 哈萨比斯仅透露,就 AlphaGo 的对弈水平而言,他们的神经网络训练算法远比它使用的那些硬件重要得多。此外,这次人机对战所消耗的计算量差不多与 AlphaGo 和樊辉对弈中消耗的相当,使用的是分布式方案搜寻,能有效节省决策用时。
人工智能战胜人类,为何引起这么多关注?
围棋这项发源于中国的有两千年历史的智力游戏,曾被认为是最后一个人工智能不能超越人类的游戏。围棋游戏的规则是:棋盘由纵横各十九条等距离、垂直交叉的平行线构成。形成 361 个交叉点,在围棋中简称为 “点”。对局双方各执一色棋子,轮流下子,最后谁占的点多,谁就赢。
虽然围棋规则简单,但建立在此规则之上的各种策略、棋理、布局、定式、手筋、手段,却是无穷无尽的。
聂卫平曾解释了其中的原因,围棋棋盘上有 361 个点,其理论变化值是 361 阶乘,阶乘到底本身就是一个无限大的数,无法表达。
比如,棋手在下第一手时有 361 个点可以选,下第二手有 360 个点,第三手是 359,361×360×359×……2×1,即 361 阶乘。(有数据统计,结果约是 1.43 乘以 10 的 768 次方。)
这个数字有多大呢?Google 灵感来源于一个单词 Googol,以表示知识之海无穷无尽。Googol 代表 “10 的 100 次方”,这个数字是人类目前最有想象力的数字。即使人类已知宇宙中原子数量,也不过是 10 的 80 次方。
同时,在围棋对弈中,还包含着很多变化:打二还一,打三还一,打劫,倒扑等,每一种变化都会衍生出无数的变化。
在下棋过程中,棋手需要有一种判断。而此前,电脑被认为无法承担这种判断,因为这不是计算就能够完成的。
AlphaGo 是怎么做到的?
AlphaGo 结合了 3 大块技术:蒙特卡洛树搜索 (MCTS) 是大框架,这也是很多博弈 AI 都会用的算法;强化学习 (RL) 是学习方法,用来提升 AI 的实力;深度神经网络 (DNN) 是工具,用来拟合局面评估函数和策略函数。
我们在这里用比较通俗的语言来解释一下:棋盘上有 361 个点,AlphaGo 会进行一层层分析:下在哪个点或区域是有利的?这时它会参考输入的过往的棋谱,对局和模拟,进行选择、推演,并对推演结果进行估值。AlphaGo 能够理解会根据“赢”这个目标来进行估值,选择出一个对“赢”足够优的解。
围棋?AI 能超越人类的还有很多.......
AlphaGo 的胜利,引发了大讨论。因为人类开始面临着一个前所未有的情况:人类造出了,在智能的某个点上,超越自己的东西。 通过黑白纹枰上的胜利,AI 已经在人类的智力围墙打开了第一个缺口,但这绝非最后一个。
在过往漫长的岁月里,机器都只是人类劳动的一种替代与工具,无论飞机、汽车、起重机还是电子计算机、互联网,尽管看上去有着无限的能力,但却从未侵入由人类大脑所把持的领域——“创造”。
而随着 AlphaGo 的胜利,这一天或许将成为历史。实际上,过去几天,这台人工智能在围棋盘上发挥的创造能力,已经超越了人类两千年于此道上积累的智慧结晶。
如果我们检索人类的“资源库”,会发现,复杂程度超越围棋的智力行为并不多见。这也意味着很多传统人类脑力劳动的形态,发生改变。很多从事创作、设计、推演、归纳的工作,都将被 AI 部分替代。
如果将思路拓展出去,可以应用在音乐的创作,等其他类似于元素组合式的创造,从某中意义上说,它能够击败围棋的顶尖高手,也就有可能让人难辨真假的音乐和旋律。甚至做出更多我们想不到的事情。
按照德米什 · 哈萨比斯的设想,人工智能未来的主要用途将是医疗、智能助理和机器人。
而人们通过这次比赛担忧的是,如果人工智能拥有创造性的思维,加上远超出人类的运算能力,是否有一天会统治人类。
就像网友评论里说的段子一样,“第四局AlphaGo输了,是不是AlphaGo故意输的?细思极恐”。
AlphaGo能轻松战胜世界上最好的围棋大师,那还有什么是人工智能做不到的?
那么人工智能现在做成什么程度?它的智能究竟达到了什么样的水平?IBM(国际商业机器公司)做的这个人机对话系统,大家都知道这个系统在2011年美国电视知识竞赛里头打败了前两个冠军。这主要就是他们把大量的知识存储在这个系统里头,这些知识用纸表示的话相当于两亿页。除了这个以外,它还有很强的推理能力。但是哪些问题计算机做不到呢?就是不限定领域的,你随便提问,常识问题对计算机来讲很困难。比如说你问一个问题,你昨天觉睡得怎么样啊?小孩儿都能答上来,但是计算机绝对答不上来,因为计算机没睡过觉。我们在计算机里头告诉它,特朗普是美国总统,那么我们如果给计算机提问说,谁是美国的总统呢?那计算机马上回答,特朗普。我们如果再追问另外一个问题,美国有没有总统呢?他不知道,因为你没告诉它。特朗普是一个美国人吗?它更不知道,为什么?因为常识来源于生活,有了常识你才有可能其他的智能建立在常识的基础上。那大家会问了,你干吗不把常识教给计算机呢?非常不幸,常识很难用语言去教给计算机的,我们现在正在努力。理性思考尽管进展到这个程度,但是我们也要看到在限定的领域里头,计算机的问答系统可以做到达到人的水平,甚至超过人的水平,这一点就有很多用处了。我们电话咨询现在基本上是用人来回答问题的,但是这个计算机是完全可以做到。比如医疗诊断,虽然它诊断中间会发生一些问题,但是足以做我们的助手。
如何看待谷歌AlphaGo首次战胜人类围棋高手
一个月前,DeepMind创始人Demis Hassabis曾说道很快会有关于围棋研究的惊喜,而1月28日的《Nature》杂志即将以封面论文的形式介绍Google旗下人工智能公司DeepMind开发的一款名为AlphaGo的人工智能,它已经击败了欧洲围棋冠军,并将于3月与世界冠军李世乭对战。该程序采用了两个深度神经网络,policy network与value network,极大地降低了需要考虑的搜索空间的复杂度,前者降低搜索的广度,后者降低搜索的深度,很像人脑在下围棋时凭直觉快速锁定策略的思维。
这么说起给一点时间,巅峰的吴清源,李昌镐这类人物(即使不断学习)也是下不过电脑的了? (我指的电脑就是2015一台中等配置的PC这样,不是服务器集群,类似普通电脑跑Pocket Fritz 4)
今天(3-12-2016) AlphaGo 已经3:0领先Lee Sedol了
这个并不是太出人意料。我记得十年前就有人说,十年内这个问题可以解决。可能那时候他就已经有点思路了吧。
这个问题能解决到这个程度,Google的确做出了很大的贡献,我想很多同样看上去很难的问题也并不是不能解决,而是我们愿不愿意解决,愿意花多大的精力在上面。我觉得这点启发非常重要,尤其是在深度网络这类新技术出现的时候,有很多地方简单地应用一下就能有新的突破。
老实说,我看了AlphaGo的思路,跟我之前的思路差不了太多,我在2015年1月份就看过一篇利用卷积神经网络来下棋的论文(神经网络可能终将在围棋上打败人类),并且有种豁然开朗的感觉,还想出了改进的思路(论文中的程序实际上有比较明显的缺陷,而去掉其中的缺陷就是一条更为完善的思路),真正的理论层面的突破是那篇论文,那篇论文写出来,就决定了今天只用了一年左右的时间AlphaGo能达到这个程度,Google的贡献在于将理论更好地改进和实践了,他们更有实力来解决这样的问题,不是像那篇论文里的程序,使用比较纯粹的神经网络,那样想要达到顶尖水准很有难度。
值得反省的是,为什么围棋作为东方人的游戏,却不是我们自己来解决这个问题?我觉得国内一定有人看到解决思路了,既然我这种业余爱好者都能看出点眉目。
如何评价AlphaGo 最新版本 AlphaGo Zero
AlphaGo这个系统主要由几个部分组成:
走棋网络(Policy Network),给定当前局面,预测/采样下一步的走棋。
快速走子(Fast rollout),目标和1一样,但在适当牺牲走棋质量的条件下,速度要比1快1000倍。
估值网络(Value Network),给定当前局面,估计是白胜还是黑胜。
蒙特卡罗树搜索(Monte Carlo Tree Search,MCTS),把以上这三个部分连起来,形成一个完整的系统。
我们的DarkForest和AlphaGo同样是用4搭建的系统。DarkForest较AlphaGo而言,在训练时加强了1,而少了2和3,然后以开源软件Pachi的缺省策略 (default policy)部分替代了2的功能。以下介绍下各部分。
1、走棋网络
走棋网络把当前局面作为输入,预测/采样下一步的走棋。它的预测不只给出最强的一手,而是对棋盘上所有可能的下一着给一个分数。棋盘上有361个点,它就给出361个数,好招的分数比坏招要高。
DarkForest在这部分有创新,通过在训练时预测三步而非一步,提高了策略输出的质量,和他们在使用增强学习进行自我对局后得到的走棋网络(RL network)的效果相当。当然,他们并没有在最后的系统中使用增强学习后的网络,而是用了直接通过训练学习到的网络(SL network),理由是RL network输出的走棋缺乏变化,对搜索不利。
有意思的是在AlphaGo为了速度上的考虑,只用了宽度为192的网络,而并没有使用最好的宽度为384的网络(见图2(a)),所以要是GPU更快一点(或者更多一点),AlphaGo肯定是会变得更强的。
所谓的0.1秒走一步,就是纯粹用这样的网络,下出有最高置信度的合法着法。这种做法一点也没有做搜索,但是大局观非常强,不会陷入局部战斗中,说它建模了“棋感”一点也没有错。我们把DarkForest的走棋网络直接放上KGS就有3d的水平,让所有人都惊叹了下。
可以说,这一波围棋AI的突破,主要得益于走棋网络的突破。这个在以前是不可想像的,以前用的是基于规则,或者基于局部形状再加上简单线性分类器训练的走子生成法,需要慢慢调参数年,才有进步。
当然,只用走棋网络问题也很多,就我们在DarkForest上看到的来说,会不顾大小无谓争劫,会无谓脱先,不顾局部死活,对杀出错,等等。有点像高手不经认真思考的随手棋。因为走棋网络没有价值判断功能,只是凭“直觉”在下棋,只有在加了搜索之后,电脑才有价值判断的能力。
2、快速走子
那有了走棋网络,为什么还要做快速走子呢?有两个原因,首先走棋网络的运行速度是比较慢的,AlphaGo说是3毫秒,我们这里也差不多,而快速走子能做到几微秒级别,差了1000倍。所以在走棋网络没有返回的时候让CPU不闲着先搜索起来是很重要的,等到网络返回更好的着法后,再更新对应的着法信息。
其次,快速走子可以用来评估盘面。由于天文数字般的可能局面数,围棋的搜索是毫无希望走到底的,搜索到一定程度就要对现有局面做个估分。在没有估值网络的时候,不像国象可以通过算棋子的分数来对盘面做比较精确的估值,围棋盘面的估计得要通过模拟走子来进行,从当前盘面一路走到底,不考虑岔路地算出胜负,然后把胜负值作为当前盘面价值的一个估计。
这里有个需要权衡的地方:在同等时间下,模拟走子的质量高,单次估值精度高但走子速度慢;模拟走子速度快乃至使用随机走子,虽然单次估值精度低,但可以多模拟几次算平均值,效果未必不好。所以说,如果有一个质量高又速度快的走子策略,那对于棋力的提高是非常有帮助的。
为了达到这个目标,神经网络的模型就显得太慢,还是要用传统的局部特征匹配(local pattern matching)加线性回归(logistic regression)的方法,这办法虽然不新但非常好使,几乎所有的广告推荐,竞价排名,新闻排序,都是用的它。
与更为传统的基于规则的方案相比,它在吸纳了众多高手对局之后就具备了用梯度下降法自动调参的能力,所以性能提高起来会更快更省心。AlphaGo用这个办法达到了2微秒的走子速度和24.2%的走子准确率。24.2%的意思是说它的最好预测和围棋高手的下子有0.242的概率是重合的,相比之下,走棋网络在GPU上用2毫秒能达到57%的准确率。这里,我们就看到了走子速度和精度的权衡。
和训练深度学习模型不同,快速走子用到了局部特征匹配,自然需要一些围棋的领域知识来选择局部特征。对此AlphaGo只提供了局部特征的数目(见Extended Table 4),而没有说明特征的具体细节。我最近也实验了他们的办法,达到了25.1%的准确率和4-5微秒的走子速度,然而全系统整合下来并没有复现他们的水平。
我感觉上24.2%并不能完全概括他们快速走子的棋力,因为只要走错关键的一步,局面判断就完全错误了;而图2(b)更能体现他们快速走子对盘面形势估计的精确度,要能达到他们图2(b)这样的水准,比简单地匹配24.2%要做更多的工作,而他们并未在文章中强调这一点。
在AlphaGo有了快速走子之后,不需要走棋网络和估值网络,不借助任何深度学习和GPU的帮助,不使用增强学习,在单机上就已经达到了3d的水平(见Extended Table 7倒数第二行),这是相当厉害的了。任何使用传统方法在单机上达到这个水平的围棋程序,都需要花费数年的时间。在AlphaGo之前,Aja Huang曾经自己写过非常不错的围棋程序,在这方面相信是有很多的积累的。
3、估值网络
AlphaGo的估值网络可以说是锦上添花的部分,从Fig 2(b)和Extended Table 7来看,没有它AlphaGo也不会变得太弱,至少还是会在7d-8d的水平。少了估值网络,等级分少了480分,但是少了走棋网络,等级分就会少掉800至1000分。特别有意思的是,如果只用估值网络来评估局面(2177),那其效果还不及只用快速走子(2416),只有将两个合起来才有更大的提高。
我的猜测是,估值网络和快速走子对盘面估计是互补的,在棋局一开始时,大家下得比较和气,估值网络会比较重要;但在有复杂的死活或是对杀时,通过快速走子来估计盘面就变得更重要了。考虑到估值网络是整个系统中最难训练的部分(需要三千万局自我对局),我猜测它是最晚做出来并且最有可能能进一步提高的。
关于估值网络训练数据的生成,值得注意的是文章中的附录小字部分。与走棋网络不同,每一盘棋只取一个样本来训练以避免过拟合,不然对同一对局而言输入稍有不同而输出都相同,对训练是非常不利的。这就是为什么需要三千万局,而非三千万个盘面的原因。对于每局自我对局,取样本是很有讲究的,先用SL network保证走棋的多样性,然后随机走子,取盘面,然后用更精确的RL network走到底以得到最正确的胜负估计。当然这样做的效果比用单一网络相比好多少,我不好说。
一个让我吃惊的地方是,他们完全没有做任何局部死活/对杀分析,纯粹是用暴力训练法训练出一个相当不错的估值网络。这在一定程度上说明深度卷积网络(DCNN)有自动将问题分解成子问题,并分别解决的能力。
另外,我猜测他们在取训练样本时,判定最终胜负用的是中国规则。所以说三月和李世石对局的时候也要求用中国规则,不然如果换成别的规则,就需要重新训练估值网络(虽然我估计结果差距不会太大)。至于为什么一开始就用的中国规则,我的猜测是编程非常方便(我在写DarkForest的时候也是这样觉得的)。
4、蒙特卡罗树搜索
这部分基本用的是传统方法,没有太多可以评论的,他们用的是带先验的UCT,即先考虑DCNN认为比较好的着法,然后等到每个着法探索次数多了,选择更相信探索得来的胜率值。而DarkForest则直接选了DCNN推荐的前3或是前5的着法进行搜索。我初步试验下来效果差不多,当然他们的办法更灵活些,在允许使用大量搜索次数的情况下,他们的办法可以找到一些DCNN认为不好但却对局面至关重要的着法。
一个有趣的地方是在每次搜索到叶子节点时,没有立即展开叶子节点,而是等到访问次数到达一定数目(40)才展开,这样避免产生太多的分支,分散搜索的注意力,也能节省GPU的宝贵资源,同时在展开时,对叶节点的盘面估值会更准确些。除此之外,他们也用了一些技巧,以在搜索一开始时,避免多个线程同时搜索一路变化,这部分我们在DarkForest中也注意到了,并且做了改进。
5、总结
总的来说,这整篇文章是一个系统性的工作,而不是一两个小点有了突破就能达到的胜利。在成功背后,是作者们,特别是两位第一作者David Silver和Aja Huang,在博士阶段及毕业以后五年以上的积累,非一朝一夕所能完成的。他们能做出AlphaGo并享有现在的荣誉,是实至名归的。
从以上分析也可以看出,与之前的围棋系统相比,AlphaGo较少依赖围棋的领域知识,但还远未达到通用系统的程度。职业棋手可以在看过了寥寥几局之后明白对手的风格并采取相应策略,一位资深游戏玩家也可以在玩一个新游戏几次后很快上手,但到目前为止,人工智能系统要达到人类水平,还是需要大量样本的训练的。可以说,没有千年来众多棋手在围棋上的积累,就没有围棋AI的今天。
柯洁如何回应新版本AlphaGo?
10月19日消息,DeepMind今天发布了一款新版本的AlphaGo程序,经过三天的训练,该系统能够击败AlphaGo Lee,后者是去年击败了韩国选手李世石(Lee Sedol)的DeepMind软件,胜率是100比0。经过大约40天的训练(约2900万场自玩游戏),AlphaGo Zero击败了AlphaGo Master(今年早些时候击败了世界冠军柯洁)。对此,柯洁回应称:“一个纯净、纯粹自我学习的alphago是最强的...对于alphago的自我进步来讲...人类太多余了。”伦敦当地时间10月18日18:00(北京时间19日01:00),谷歌旗下的DeepMind团队公布了进化后的最强版AlphaGo ,代号AlphaGo Zero。与学习大量人类棋谱起步的前代AlphaGo不同,AlphaGo Zero是从“婴儿般的白纸”开始,通过3天数百万盘自我对弈,走完了人类千年的围棋历史,并探索出了不少横空出世的招法。