解密Google Deepmind AlphaGo围棋算法

2016年1月28日,Google Deepmind在Nature上发文宣布其人工智能围棋系统AlphaGo历史性的战胜人类的职业围棋选手!这条重磅新闻无疑引起了围棋界和人工智能界的广泛关注!3月份AlphaGo对阵李世石的比赛更将引起全人类的目光!

是什么使围棋算法产生了质的飞跃?要知道,在之前最好的围棋程序也只能达到业余人类棋手的水平。是真的人工智能产生了吗?

对于大多数人来说,大家都知道1997年的“深蓝”计算机战胜了人类的国际象棋冠军卡斯帕罗夫,但是大家都不会认为“深蓝”真正拥有了人工智能,道理非常简单:国际象棋(当然围棋也是)每一步都是可见的,在一个确定性的棋局下,仅有有限个走法。这有限个走法中必然有一个最优的。一个基本的想法就是对棋局进行预测,遍历每一种走法直到一方胜出,然后回退计算每一个可能赢的概率,最后使用概率最高的作为最优的走法。“深蓝”就做了这么件事,暴力穷举所有的步子,然后找最优!赢了人类,但没有智能,因为整个算法完全就是人工设计的一个算法,根本看不到智能在哪里。

显然围棋理论上也可以暴力破解,但是问题就在于围棋的可走的步子太多了,以至于目前的计算性能根本做不到暴力破解。这也就是为什么围棋是挡在人工智能面前的一个重大挑战。

要使围棋程序战胜人类顶尖高手,只有依靠真正的人工智能!

对围棋有了解的朋友都知道下围棋需要对整个棋局有直观的理解,这就是围棋困难的地方。除非计算机真正理解了棋局,才有可能有大局观,才有可能下出真正的好棋!

那么,问题来了:

AlphaGo 有真正的人工智能吗?

我的回答:

AlphaGo有真人工智能,虽然还不完美!

那么

AlphaGo的真人工智能在哪里?

我的回答:

就在深度神经网络之中

一切的答案都在Google Deepmind在Nature上发表的文章: 
Mastering the Game of Go with Deep Neural Networks and Tree Search论文链接

本文将分析AlphaGo的这篇Nature文章,去解密真人工智能的奥秘!

AlphaGo的”大脑“是怎样的

 

深度神经网络是AlphaGo的”大脑“,我们先把它当做一个黑匣子,有输入端,也有输出端,中间具体怎么处理先不考虑。那么AlphaGo的”大脑“实际上分成了四大部分:

  • Rollout Policy 快速感知”脑“:用于快速的感知围棋的盘面,获取较优的下棋选择,类似于人观察盘面获得的第一反应,准确度不高

  • SL Policy Network 深度模仿”脑“:通过人类6-9段高手的棋局来进行模仿学习得到的脑区。这个深度模仿“脑”能够根据盘面产生类似人类棋手的走法。

  • RL Policy Network 自学成长“脑”:以深度模仿“脑”为基础,通过不断的与之前的“自己”训练提高下棋的水平。

  • Value Network 全局分析“脑”:利用自学成长“脑”学习对整个盘面的赢面判断,实现从全局分析整个棋局。

所以,AlphaGo的“大脑”实际上有四个脑区,每个脑区的功能不一样,但对比一下发现这些能力基本对于人类棋手下棋所需的不同思维,既包含局部的计算,也包含全局的分析。其中的Policy Network用于具体每一步棋的优劣判断,而Value Network则对整个棋局进行形势的判断。

 

而且很重要的是,AlphaGo提升棋力首先是依靠模仿,也就是基于深度模仿“脑”来进行自我水平的提升。这和人类的学习方式其实是一模一样的。一开始都是模仿别人的下法,然后慢慢的产生自己的下法。

那么这些不同的脑区的性能如何呢?

  • 快速感知“脑”对下棋选择的判断对比人类高手的下棋选择只有24.2%的正确率

  • 深度模仿“脑”对下棋选择的判断对比人类高手的下棋选择只有57.0%的正确率,也就是使用深度模仿“脑”,本身就有一半以上的几率选择和人类高手一样的走法。

  • 自学成长“脑”在经过不断的自学改进之后,与深度模仿“脑”进行比赛,竟然达到80%的胜利。这本质上说明了通过自我学习,在下棋水平上取得了巨大的提升。

  • 全局分析“脑”使用自学成长“脑”学习训练后,对全局局势的判断均方差在0.22~0.23之间。也就是有大约80%的概率对局面的形势判断是对的。这是AlphaGo能够达到职业棋手水准的关键所在。

从上面的分析可以看到AlphaGo的不同“脑区”的强大。具体每个大脑是怎么学习的在之后的小节分析,我们先来看看有了这些训练好的大脑之后AlphaGo是如何下棋的。

AlphaGo 是如何下棋的?

在分析AlphaGo是如何下棋之前,我们先来看看一下人类棋手会怎么下棋:

  • Step 1:分析判断全局的形势

  • Step 2:分析判断局部的棋局找到几个可能的落子点

  • Step 3:预测接下来几步的棋局变化,判断并选择最佳的落子点。

那么,AlphaGo在拥有强大的神经网络”大脑“的基础上采用蒙特卡洛树搜索来获取最佳的落子点,本质上和人类的做法是接近的。

 

首先是采用蒙特卡洛树搜索的基本思想,其实很简单:

多次模拟未来的棋局,然后选择在模拟中选择次数最多的走法

AlphaGo具体的下棋基本思想如下(忽略掉一些技术细节比如拓展叶节点):

  • Step 1:基于深度模仿“脑” 来预测未来的下一步走法,直到L步。

  • Step 2:结合两种方式来对未来到L的走势进行评估,一个是使用全局分析“脑”进行评估,判断赢面,一个是使用快速感知“脑”做进一步的预测直到比赛结束得到模拟的结果。综合两者对预测到未来L步走法进行评估。

  • Step 3:评估完,将评估结果作为当前棋局下的下一步走法的估值。即给一开始给出的下一步走法根据未来的走向进行评估。

  • Step 4 :结合下一步走法的估值和深度模仿脑进行再一次的模拟,如果出现同样的走法,则对走法的估值取平均(蒙特卡洛的思想在这里)

反复循环上面的步骤到n次。然后选择选择次数最多的走法作为下一步。

说的有点复杂,简单的讲就是综合全局和具体走法的计算分析,对下一步棋进行模拟,找到最佳的下一步。对步子的选择,既要依赖于全局分析“脑”的判断,也需要深度模仿“脑”的判断。

分析到这里,大家就可以理解为什么在AlphaGo与Fan Hui的比赛中,有一些AlphaGo的落子并不仅仅考虑局部的战术,也考虑了整体的战略。

知道了AlphaGo的具体下棋方法之后,我们会明白让AlphaGo棋力如此之强的还是在于AlphaGo的几个深度神经网络上。

所以,让我们看看AlphaGo的大脑是怎么学习来的。

AlphaGo是如何学习的?

AlphaGo的学习依赖于深度学习Deep Learning和增强学习Reinforcement Learning,合起来就是Deep Reinforcement Learning。这实际上当前人工智能界最前沿的研究方向。

关于深度学习和增强学习,本文不做详细的介绍。深度神经网络是由巨量的参数形成的一个多层的神经网络,输入某一种类型的数据,输出某一种特定的结果,根据输出的误差,计算并更新神经网络的参数,从而减少误差,从而使得利用神经网络,特定的输入可以得到特定想要的结果。

以深度模拟“脑”为例。这个实际上是一个12层的神经网络。输入主要是整个棋盘的19*19的信息(比如黑棋的信息,白棋的信息,空着的信息,还有其他一些和围棋规则有关的信息一共48种)。输出要求是下一步的落子。那么Google Deepmind拥有3000万个落子的数据,这就是训练集,根据输出的误差就可以进行神经网络的训练。训练结束达到57%的正确率。也就是说输入一个棋盘的棋局状态,输出的落子有一半以上选择了和人类高手一样的落子方式。从某种意义上讲,就是这个神经网络领悟了棋局,从而能够得到和人类高手一样的落子方法。

换另一个角度看会觉得AlphaGo很可怕,因为这个神经网络本来是用在计算机视觉上的。神经网络的输入是棋盘,就类似为AlphaGo是看着棋盘学习的。

接下来的自学成长“脑”采用深度增强学习(deep reinforcement learning)来更新深度神经网络的参数。通过反复和过去的“自己”下棋来获得数据,通过输赢来判断好坏,根据好坏结果计算策略梯度,从而更新参数。通过反复的自学,我们看到自学成长“脑”可以80%胜率战胜深度模仿“脑”,说明了这种学习的成功,进一步说明自学成长“脑”自己产生了新的下棋方法,形成了自己的一套更强的下棋风格。

说到这,大家可以看到真人工智能来源于神经网络,具体神经网络的参数为什么能够表现出智能恐怕无人知晓?智能到底是什么还需要等待答案。

深度神经网络是人工智能的黎明!

【本文为原创文章,转载请注明出处:blog.csdn.net/songrotek】



AlphaGo赢了围棋 人工智能就此崛起?


前言:在今日Google的Alpha Go和李世石的比赛中,耗时4小时击败了这位当今最强人类棋手。

这两天大家都纷纷在讨论这个人工智能的新星,大家都很好奇这个人工智能系统到底是如何工作的呢?要回答这个问题,我们先来从最基础的人工智能下棋算法说起。

文/Jason(出门问问NLP工程师)

传统的下棋人工智能算法

平时,我们形容一个人下象棋下的好,我们可能会说“他脑子很会算,能算到5步以后呢”。这个意思就是说,这个人在选择下一步走法的时候,他评估每一步走法,会往后继续多想几步——“如果我这么走,对方会怎么下呢?那对方这么下之后,那个时候我可能选择的最佳走法又是什么呢?”以此类推。对人类来说,他在大脑中会进行多次推演,来选择最好的走法路径。所以能够想到5步之后,已经是很厉害的人类了!但这种思维方式,恰恰是计算机特别擅长的。MinMax算法就是一个这样的算法,成功应用在很多棋类AI中,基本思想和之后要讲的AlphaGo的MCTS算法也有相通之处。

 

图:MinMax算法示例,来自于wikipedia

圆形的节点表示“你”面对的局面,而方块的节点表示对手面对的局面。这里是4层两个回合的搜索树。

- 我们从最下层第4层开始,这一层是叶子节点,不再展开,我们使用“估值函数”(Evaluation Function)评估局面的“好坏”,为每一种局面打分,如图上节点上的数字所示。在中国象棋中,比如“估值函数”可以考虑的因素比如中国象棋中车的个数、卒是否过河、是否有空头跑架在对方的帅上方等等。分数越高,对你越有利。一个正无穷的分数,代表游戏结束并且你获得胜利,反之亦然。

- 接着第3层对手从这些局面中选择他最好的局面(也就是你最坏的局面),也就是得分最少的局面(因为计算得分是从你的角度计算的)。

- 接着你在第2层选择得分最多的局面。

- 接着对手在第1层选择得分最少的局面。

- 最后你在第0层选择得分最多的局面,也就是得分为-7的节点。

这样的树形结构成为搜索树,也称为搜索空间,其中的每一个节点代表了棋局中的一个可能性。可以看到,这样的搜索空间的规模是跟这颗树的层数(也称深度),以及每个节点可以衍生出来的子节点的个数(称之为Branching Factor)。比如上图就是一个深度为4,Branching Factor为2的搜索树,其搜索空间的总数为2 + 4 + 6 + 9 = 21。

对于国际象棋来说,Branching Factor为35,即对于一个局面平均有35种不同的合法走法。对于围棋来说,Branching Factor是250。(https://en.wikipedia.org/wiki/Branching_factor)因此在真实的棋类比赛中,搜索空间是巨大的。从根节点枚举出所有的子节点,再逐一进行考虑是绝对不现实的,再快的计算机也无法完成这一浩大的计算。在MinMax中会采用一种叫做Alpha-beta的剪枝算法,通过简单的逻辑让系统在某些分支上停止展开,尽早避免把搜索时间花在肯定不会有好结果的分支上。

所以一个好的搜索策略,会应用更智能的剪枝算法,优先选择更有希望导致胜利的分支进行搜索。同时,一个准确的估值函数,能够正确的评估某个分支代表的局面的好坏,这样不用算到最后的决胜局,就可在较浅的深度通过估值函数来预估胜算。

为什么围棋这么难?

总结上文,一个好的棋类AI,需要结合高效的搜索策略和准确的估值函数。我们从这个角度来分析以下,为什么20年前AI就已经打败国际象棋的人类世界冠军,直到现在围棋AI才刚刚崭露头角呢?

其一,围棋棋盘是19x19,因此每一步可以选的合法走法远远大于象棋(刚刚也提到围棋的Branching Factor是250,象棋只有35)。因此围棋搜索空间相对于国际象棋来说大得多

其二,围棋的估值函数很难设计。象棋里面你尚能用简单的统计棋子个数来推断,围棋棋局千变万化,可能看似风平浪静其实暗藏杀机。

这两个主要原因导致了围棋AI上面一直很难有大的进展。

AlphaGo怎么这次怎么做到的?

那这次出战的AlphaGo,又是有什么独门绝技呢?类似之前提到的MinMax搜索框架,AlphaGo(以及现在很多其他的围棋AI),在决定下一步棋怎么走的时候,采用了MCTS(Monte Carlo Tree Search)的搜索框架。

大致思想可类比MinMax算法:MCTS算法,对于给定的当根前节点,通过计算机模拟推演以当前根节点出发的各种可能的走法,配合高效的“剪枝”算法来控制搜索空间大小,并用演算到最后一步的结果来反过来影响当前跟节点下一步棋的选择。之前也提到过围棋相对于传统棋类AI的设计难点:1)可能的走法太多(即Branching Factor较大)导致搜索空间非常大 2)没有一个好的估值函数对进行中的围棋棋局计算一个静态得分。于是MCTS针对这两个问题提出解决方案:搜索空间更大我们就采取比Alpha-beta剪枝更激进的剪枝策略,只把有限的计算资源留给最最有希望的走法(后面会提到的Selection、Expansion);对于中间棋局好坏很难估计,那我们就一路模拟到最后分出胜负为止(后面会提到的Simulation)!

MCTS算法是一个多轮迭代算法,每一轮迭代都会以此经历四个阶段:Selection,Expansion,Simulation和Back Propagation。下图展示了MCTS的某一时刻搜索空间的情形,当前有有限个子节点(而不是所有的可能性组成的全搜索空间)正在算法的搜索范围之内。

 
图注:MCTS搜索策略每一轮迭代的四个步骤

这四个步骤分别为:

1) Selection:根据现有的搜索空间,选择一个“最最需要展开”的子节点,比如图中Selection步骤当中,沿着粗线一路走到底的最下方的叶子节点。这个节点被选中,意味着当前状态下,系统认为沿着这个节点的这条路径,最有可能导致胜利

2) Expansion:对于上面被选中的节点,从它的子节点中挑选出一个最有希望的子节点,展开之(即加入到当前搜索空间中)

3) Simulation:从刚刚展开的这个节点,继续往下模拟(也称Rollout),直到分出胜负。当然这个往下模拟采用了另一套搜索策略,由于在这个阶段搜索深度需要达到最终分出胜负为止,所以会采用更加简单的搜索策略,以保证在有限时间内能够搜索到决胜节点。

4) Back Propagation:Simulation阶段已经搜索到最终的决胜节点。那么根据这个Simulation的最终胜负,我们会反过来更新刚刚的选择和展开的节点所在的路径。比如Simulation最后结果是我方胜,那么说明刚刚导致这个结果的所有每一步(图中粗线所经过的所有节点),都是需要表扬和肯定的。那么具体来说,会更新这些节点所对应的得分,保证在下一轮迭代的时候这些节点会有更大的几率被选中。反之,如果Simulation的最终结果是我方输,那么相应的节点都会受到惩罚,在下一轮迭代中会更小的几率被选中。

那么经历过足够多轮的迭代之后(或者限定时间耗尽),迭代结束。这时候,会从当前根节点的所有探索过的子节点中,选择一个得分最高的子节点,作为最终的下一步走法。

类比之前对于MinMax的分析,MCTS策略的好坏,也是建立在对子空间的选择之上的。因为不可能枚举所有的子空间,所以在Selection和Exapansion阶段,就必须有效的挑选出最有希望的走法进行Simulation。如果选择不好,则会导致浪费大量的时间在其实没有希望的子节点上,甚至是错过最终可能导致胜利的子节点。

AlphaGo用两个深度神经网络来帮助这个选择:Policy Network和Value Network。

其中Policy Network用来在Selection和Expansion阶段,衡量为每一个子节点打分,找出最有希望、最最需要预先展开的那个子节点。Policy Network网络的训练,是通过观察其他人类之间对弈的棋局来学习的,主要学习的目标是:“给定一个棋局,我接下来的一步应该怎么走”?(这是一个静态的过程,不用继续深入搜索更深层的子节点)为此,AlphaGo先读取KGS(一个网络围棋对战平台)上面近16万局共3000多万步的人类走法,通过Supervised Learning的方法,学习出来一个简单的SL Policy Network(同时还顺便训练出来Simulation阶段用来一路算到决胜局使用的Rollout Policy)。然后基于这个在人类棋局上学习出来的SL Policy Network, 使用强化学习(Reinforcement Learning)的方法通过自己跟自己对弈,来进一步优化Policy Network。这么做的原因,一个可能的原因是通过人类棋局学出来的SL Policy Network,受到了人类自身能力的局限性的影响(KGS棋局中包含了很多非专业棋手,实力层次不齐),学不出特别好的策略来。那不如在此基础上,自己跟自己打,在此过程中不断学习不断优化自己的策略。这就体现了计算机的优势,只要不断电,计算机可以不分昼夜不断自己跟自己下棋来磨练棋艺。RL Policy Network初始参数就是SL Policy Network的参数,但青出于蓝而胜于蓝,实验指出RL跟SL策略对弈,RL胜率超过80%。RL Policy Network也是最终应用在实际对战过程中MCTS Selection阶段的策略。

Value Network是AlphaGo第一次提出来的,它的作用是为给定的局面打分,类似于之前MinMax算法中的估值函数(这也是我们提到的围棋AI中的一个难点,之前的研究都回避的这方面的工作)。Value Network可以给某个特定的局面打分,这样,在MCTS做Selection的时候,可以更准确的评估一个子节点的优劣,避免不必要的Expansion和Rollout Simulation。

 

(图注:AlphaGo使用了Policy Network和Value Network在实战中的MCTS搜索中高效选择搜索子空间。训练过程:通过KGS上的人类棋局(Human expert positions)来学习SL Policy Network和Rollout Network,然后基于SL Policy Network进行机器自我对弈(Self-play Positioning)学习出更优秀的RL Policy Network, 最后通过RL Policy Network学习出Value Network)

可以看到,AlphaGo通过当前很火的深度学习,更有效的模拟了人类的下棋策略。并且通过不间断的自我学习,不断优化这个策略。通过Policy Network和Value Network共同筛选出MCTS搜索中下一步最应该优先探索节点,AlphaGo才能在有限的计算资源下,更快速准确地找到最佳下一步。

人工智能就此崛起了么?

在跟李世石的首局比赛中获胜,是人工智能发展史上有一个里程碑。也有人猜测,首局比赛中李世石为了避免下出AlphaGo曾经学过的棋路,特意采取了一种比较冒险的下法,导致最终的失利。并且,作为一个人类棋手,李世石的决策还受到了心理因素的影响,而不像冷酷无情的AlphaGo,自始至终的每一轮的计算都是那么的理性和缜密。我们拭目以待接下来李世石会以什么样的策略继续迎战AlphaGo,就算AlphaGo最终还是输了,以它现在每天不吃不喝左右互搏的学习能力,假以时日赢过人类也也是非常有可能啊。

那么,如果被人工智能攻克下被称为人类最后的智力优势的围棋,是否预示着人工智能就此崛起了呢?我觉得完全不用那么悲观。

首先,在现有的计算机体系下,程序都是确定的(deterministic),即人类让程序怎么做,程序就只能这么做,绝对不会超过人类预先划定的范围(包括计算机产生的随机数,从某种程度上讲,也是确定的哦)。人工智能作为程序的一种类型,也遵循这么一个铁的定律。即使本文中讲到的RL Policy Network训练中的自我“学习”,也是在人类规定下进行的:迭代多少轮、每一轮怎么通过强化学习更新模型参数,都是由人一一事先确定的好的。这并不是人类意义上可以举一反三的自我学习。除非一种全新的体系诞生,让程序可以自行推理、自我复制、自我学习,在超出人类界定框架之外自我进化,并且恰巧进化出来要消灭人类这么一个念头,那才是我们真正需要担心的事情。

其次,虽然现在计算机在象棋、围棋、智力问答方面已经超过了人类,能够在微秒之内完成百万之间的乘法运算,能够存储下世界上所有图书馆里面的知识 —— 但是在某些方面,连3岁的人类小孩都不如。比如人类小孩能够轻易的认出妈妈和爸爸,能够通过观察大人关灯的动作就自己学习出来墙上的开关和屋顶的电灯存在着某种联系,这些看似事对于当今最强的人工智能算法,也无法做到。所以有一些任务,如果不能被很好的抽象成一个具体的步骤序列,那么计算机根本无能为力。

所以,距离真正的人工智能,还有很长的一段距离。距离战胜人类象棋冠军过去了20年,人类才刚刚造出来一个可以击败人类围棋冠军的AI,何足畏惧。

不过,这次Google的AlphaGo的意义仍是非比寻常的。1997年IBM的深蓝计算机在国际象棋上击败了当时的国际象棋世界冠军,2011年IBM的Watson系统在知识问答类竞赛Jeopardy!上击败了竞赛有史以来最聪明、知识最渊博的几位人类选手。今天,终于,轮到了Google的AlphaGo,在围棋上击败了人类世界冠军李世石。虽然这只是5轮比赛的首轮,最终鹿死谁手尚未可知,但无疑今天AlphaGo的首战告捷已经成为了人工智能历史上又一个值得被载入史册的里程碑!

更重要的是,借助AlphaGo研究这个契机,一些深度学习方面的算法得以进一步被深入研究,并且可以平行借鉴到其他领域中去。如同IBM闭门5年造出来Watson Deep QA系统,在Jepardy!大赛上击败人类选手之后,除了为IBM带来了巨大声誉,也让IBM将相关技术应用到金融、医疗等领域。又如同前段时间发现引力波的LIGO的研发,其顺带的研究副产品,比如减震系统技术,也惠及了人类其他科技领域的发展。所以,AlphaGo对于人类的意义,绝不仅仅是它击败了人类围棋冠军而已。

我们是这个时代的幸运者,能够见证一个新的里程碑的诞生。不管最终谁输谁赢,都是我们人类的胜利。

http://tech.163.com/16/0310/09/BHPNPO5J00094P0U.html

 


本期封面所示为作为一个电脑芯片嵌入在一块集成电路板上的一张围棋盘。该围棋盘的布局来自2015105日在Fan Hui (黑子)AlphaGo (白子)之间所进行的一场历史性围棋比赛的最终棋局。这场比赛是在没有让子或让先的游戏中、在19 × 19的标准大小棋盘上一个电脑程序历史上第一次战胜了一位职业棋手。下棋电脑 “深蓝”1997年在一场六局比赛中对战当时的国际象棋世界冠军加里•卡斯帕罗夫的胜利被看成是人工智能发展中的一个重要里程碑。但这之后仍有一个甚至更大的挑战需要应对——古老的围棋运动。尽管经过了几十年的优化,但直到不久前最强的电脑下围棋的水平也仍然只相当于人类业余棋手。AlphaGo上阵了。由Google DeepMind开发的这个程序利用深度神经网络来模仿专业棋手,并通过从和自己对阵的棋局中学习来进一步提高其性能。AlphaGo 对阵其他最强围棋程序的胜率达到了99%,并在一场巡回赛中以5-0战胜了卫冕欧洲冠军Fan Hui

 

原文检索:Mastering the game of Go with deep neural networks and tree search

DeepMind创始人Demis Hassabis

Demis Hassabis说,围棋是人类发明的最复杂也是最美的游戏。通过战胜Fan Hui,「我们的程序赢得了长期以来一项重大人工智能挑战的胜利。而这项技术在Google的首个用途将是开发更好的个人助理软件。这样的个人助理能够从用户在线行为中学习用户偏好,并对产品和事件作出更符合直觉的建议。」

Hassabis还说道,他们用来创造Alpha Go的技术,也正是他的团队努力开发强人工智能的尝试。他说:「最终,我们想要将这些技术应用到真实世界的重要问题中。因为我们用的方法是通用的,我们希望有一天,它们能延伸得更广,帮助解决最紧迫的社会问题,从医药诊断到环境模型。」

实际上在几年前,大多数围棋选手和棋类程序员都相信,围棋实在是太困难了,必须要花上几十年的时间,计算机才能达到人类专业棋手的标准水平。对计算机来说,围棋比象棋的挑战更大,原因有二:每个回合可能存在的走法数量多得多,没有一个简单的方法来测算优势。所以,棋手只能学着在棋盘上几百个棋子中识别出抽象模式。即使是专家也经常会很难解释为什么一步棋看起来很有优势或有问题。


众专家的评价

1997年,当IBM深蓝计算机在象棋上称霸时,它使用的是手工编码的规则,在搜索时将穷尽所有可能发生的步法。Alpha Go从本质上则是随着时间而学习的,可以识别出可能具有优势的模式,然后模拟出数量有限的潜在结果。

Google的成就受到了广泛的祝贺,也引起了许多本领域研究者的惊讶。

新成立的非营利性组织OpenAI的AI研究者Ilya Sutskever说:「从技术的角度说,这个研究对AI具有纪念碑式的贡献。」他说,这个成果非常重要,因为Alpha Go从本质上教会了自己如何赢得比赛。「同样的技术也可以用于其他棋类游戏中,以获得高超表现。」

加拿大阿尔伯塔大学的计算机科学教授Michael Bowling最近开发了一个能在扑克牌上赢过人类的程序。他听到这个消息也很兴奋。他相信,这个方法在许多可以运用机器学习的领域都很有用。他说:「许多我们通常认为是人类智能的东西其实都构建于模式匹配上。许多被我们看做学习的东西,其实都是在过去看到了某些模式,然后意识到它们与现在的状况有何联系。」

纽约大学认知教授Gary Marcus说:「这不是所谓的端对端深度学习系统。而是精心建构的模块化系统,在前端具有一些缜密的手工操作,也就是说,几乎媲美人类心智:丰富,模块化,通过演化做出些微调整,而不仅仅是一束随机互联的神经元,完全通过经验做出调整。」

  Facebook不甘示弱:提前发表论文,LeCun精彩回应

而就在国外媒体对谷歌这篇论文进行大规模报道之前,Facebook人工智能实验室(以下简称FAIR)负责人Yann LeCun也非常「巧合」地在自己Facebook主页贴出了Facebook刚刚发表在arXiv.org的一篇针对围棋问题的论文,还意味深长的从围棋问题的历史、相关技术、Facebook研究进展等方面进行了详细说明。

首先,Yann LeCun解释了我们为什么要研究围棋?他说,作为一项非常困难的任务,围棋是一个很好的案例来验证各种学习技能的结合,包括模式识别、问题解决和规划等,也是一个可以用来测试新想法的工具,包括机器学习、推理和规划的结合。

Yann LeCun说,Facebook FAIR的一位科学家Yuandong在几个月前开始独立研究围棋项目,他开发了一款叫做「黑暗森林」的机器人。根据论文中的描述,最新版机器人将卷积神经网络和目前围棋机器人的经典方法——蒙特卡洛树搜索进行了有机结合。

此前,曾在2014年东京围棋擂台赛上通过让子以微弱优势战胜人类棋手的Crazy Stone就是依赖于蒙特卡洛树搜索,这是一套能够从本质上对每一步走法的所有结果都进行分析的系统。所以,有些机器能够非常精通西洋棋、国际象棋和其他棋类。它们比人类棋手看的更远,所以能够轻松的击败他们。但围棋不是这样,下围棋有太多的可能性需要考虑。在国际象棋的任何一个回合,平均可能的走法有35种。但围棋的走法却能达到250种。并且在这250种可能的走法之后,还对应着另外250种可能,以此类推。因此,用蒙特卡洛数搜索去计算每一步走法所带来的所有结果是不可能的。

从Facebook的研究成果可以看出,通过将训练过的卷积神经网络和蒙特卡洛树搜索的结合,我们可以在模式匹配功能上再加入策略评估这个新功能。这也将有益于游戏之外的其他应用,比如说自然语言生成,在回复中能够加上自发性和多样性,同时也能进行推理,而推理所需要的就是搜索可能的答案并挑选出最优的逻辑链。我们的兴趣并不在于要开发出世界上最好的围棋选手,但这是我们人工智能研究进展的一次有趣练习。

从去年11月起,DarkForest就已经在公开的围棋服务器KGS上击败了一些人类选手和其他围棋机器人。DarkForest的第一版完全是基于卷积神经网络。通过有监督模式的训练让它来「模仿」人类选手。我们使用了大量人类专业选手比赛录像的数据库,然后将比赛的棋盘格局输入到卷积神经网络中,以此来训练它预测人类选手的下一步走法。这需要大规模卷积神经网络,它的输入是一个带有注释的完整的19x19围棋棋盘,而神经网络输出的是一个代表着人类专业棋手每一步走法概率分布的棋盘地图。这充分利用了卷积神经网络的模式识别能力,而这种能力在图像中的物体识别、人脸识别和语音识别方面的成功早就得到了证明。

LeCun表示,将卷积神经网络应用于围棋的想法要追溯到很久之前的1994年,Nicol Schraudolph及合作者共同在NIPS上发表了一篇论文,将卷积神经网络和增强学习结合起来应用于围棋问题研究。但当时对这些技术的理解还不够深入,而且那时的计算机限制了可以被训练的卷积神经网络的规模和复杂性。近期,多伦多大学的博士生Chris Maddison与Google DeepMind的研究者在ICLR 2015上共同发表了一篇论文,文章中提到,用比赛视频数据库训练过的卷积神经网络能够在预测走法上拥有优秀表现。爱丁堡大学Amos Storkey团队发表在ICML上的论文同样体现出这个结果。许多研究者开始相信,或许深度学习和卷积神经网络真正能够在围棋上有所作为。Amos Storkey说:「围棋是由棋盘上的各种模式来驱动,深度神经网络非常擅长从棋盘的各种模式中进行归纳总结,因此非常合适下围棋。」

这就是促使Yuandong将第一版黑暗森林发布在KGS服务器上的原因,此后,一个更加先进的版本很快攀升到了KGS服务器上的第三名,远好于之前的研究。这项排名要好于大多数开源程序,即便是人类棋手,也需要花费几年时间才能达到这个水平。人类棋手喜欢和它对弈的原因在于它的走法非常像人类棋手。但同时它又非常擅长作战策略。赢下局部和策略有关的战争有时需要非常具体的探索,而非单纯的模式识别。

很明显,通过将卷积神经网络和蒙特卡洛树搜索的结合可以提升程序在策略方面的能力。在过去五年中,计算机围棋程序通过蒙特卡洛树搜索取得了很大进步。蒙特卡洛树搜索是一种应用于计算机国际象棋程序中的树形搜索方法的「随机」版本。INRIA的法国研究者团队第一次提出了蒙特卡洛树搜索。之后,这种方法很快在几个最好的计算机围棋团队中流传开来,并变成开发顶级围棋机器人所需要的标准方法。

今天发布的新论文描述了DarkForest的最新版本,被称作黑暗森林3,它使用了卷积神经网络和蒙特卡洛树搜索的结合。这个程序已经在KGS服务器上运营了一个多月,并取得了成人组第五的排名。这个排名意味着它已经成为全美国最好的前100名选手之一,也步入了世界最顶尖围棋机器人之列。

有趣的是,这个项目是由我们一个小团队仅花了几个月时间开发出来的,没有投入任何围棋专家资源(当然,除了比赛录像数据库)。这是对机器学习威力的一次伟大证明。

接下来明智的选择是将卷积神经网络和蒙特卡洛树搜索与增强学习结合起来,就像Nicol Schraudolph的开创性研究。使用增强学习的优势在于可以让机器自己与自己对战连续玩很多次游戏,自己训练自己。这个想法可以追溯到Gerry Tesauro的「NeuroGammon」,一个二十世纪九十年代的计算机西洋双陆棋程序,它将神经网络和增强学习结合了起来,并打败了这款游戏的世界冠军。我们知道,世界范围内的几个团队正在积极研究这一系统。我们的系统仍处在开发中。

Yann LeCun最后的结尾非常有深意:

Facebook对研究的态度素来是「尽早发布,时常发布」,以此诠释开源软件世界颇受欢迎的座右铭。我们的围棋机器人系统已经运营在KGS服务器上,我们的论文已于早些时候发表在 arXiv.org。我们认为,当研究团队彼此迅速交换研究成果并以彼此研究为基础来推进研究时,科学会进步的更快。

  谷歌和Facebook的围棋军备之争

谷歌和Facebook正在开展一场破解围棋的算法竞赛。此前,Facebook一名研究员Rob Fergue认为,「围棋就是高级人工智能的目标。」同时他也承认,Facebook此举至少在小范围内是在与谷歌进行竞争。谷歌的围棋研究令人印象深刻。

如今,谷歌和Facebook使用深度学习来识别网络图片中的人脸;计算机能够识别出我们的语音命令;可以将一种语言翻译成另一种;有时甚至能够理解人类的自然语言。

这些技术都依赖于深度神经网络。如果你将足够多的关于树木的照片输入进去,它们就能学会识别出一棵树。如果输入足够多的对话,它们就能学会如何进行一段得体的对话。如果输入足够多的围棋走法,它们就能学会下围棋。

「围棋是由棋盘上的各种模式来驱动,深度神经网络非常擅长从棋盘的各种模式中进行归纳总结,因此非常合适下围棋。」爱丁堡大学教授 Amos Storkey表示。他正在使用深度神经网络来处理围棋问题,就像谷歌和Facebook所做的那样。

他们相信这些神经网络最终能够缩小机器和人类之间的差距。在下围棋时,即使是最高段的棋手也无法检查出每一步走法所带来的所有结果。他们往往是基于盘面来进行决策。借助于深度学习,研究者就可以对这种方法进行复制。将成功走法的图片输入到神经网络中,从而帮助机器掌握每一次成功走法的模样。「这种方法并不是希望找出最优走法,而是学习人类的下棋风格,然后对人类棋手进行有效的复制。」Storkey说到。

谷歌和Facebook交战过程如下(美国当地时间):

1)2015年11月,Facebook在Arxiv发表论文,提到了一种将蒙特卡洛数搜索与深度学习相结合的方法,这套系统在与人类棋手的比赛中丝毫不落下风,公司表示,它甚至能够表现出人类般的下棋风格。毕竟,这套系统是从人类棋手的棋路中进行学习的。RéMI COULOM Coulom称这项结果「非常惊人」。

2)2015年12月初,谷歌DeepMind创始人Hassabis在接受视频采访被问到「或许你们会在围棋上有所突破?」Hassabis笑着说:「我现在不能谈论这件事,但是几个月后,我相信会出现一个大惊喜。」

3)2016年1月26日,Facebook对去年11月发表的论文《Better Computer Go Player with Neural Network and Long-term Prediction》进行了更新,Yann LeCun在个人Facebook主页发表长篇声明。

4)2016年1月27日,谷歌DeepMind在《Nature》发表论文。


http://it.sohu.com/20160128/n436171455.shtml

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页