返回列表 发帖

深度解读AlphaGo Zero 教你训练一个“围棋高手”

2018年01月17日 11:23 新浪综合


AlphaGo漫画形象



  (来源:智能观)

  在2017年,深度学习和人工智能都取得了惊人的进步,尤其DeepMind的AlphaGo系列,令人记忆犹新。其中,AlphaGo Zero这个版本更是取得了惊人的突破:三天内通过自我对抗赛,超过了AlphaGo 的实力,赢得了100场比赛的全胜;21天内达到AlphaGo Master的水平,并在40天内超过了所有旧版本。知名计算机科学研究员Xavier Amatrain称它比“机器学习”中“过去5年的成果加起来都重要”。

  那么DeepMind是如何做到的呢?在这篇文章中,我将尝试用最通俗易懂的语言来解释AlphaGo Zero使用的技术、工作方式,以及对未来的AI研究产生的影响。让我们从AlphaGo和AlphaGo Zero工作的一般方法开始吧。

  一般方法

  AlphaGo和AlphaGo Zero都是在棋盘上进行评估,并使用两种方法组合来选择落子位置:

  执行 “ 前瞻 ”的搜索结果:通过模拟游戏进行预判,从而了解哪些位置最有可能在未来成为一个“好”位置,也就是多看几步。

  根据“ 直觉 ”来评估落子位置,即落子位置是“好”还是“坏”,落子会导致胜利还是失败。

  AlphaGo和AlphaGo Zero都巧妙地结合了这两种方法。我们来分别看一看:

  落子方法1:“前瞻”

  围棋是一个非常复杂的游戏,电脑不能简单地搜索所有可能,使用蛮力找到最好的答案(因为围棋的变化实在太多,数不胜数)。

  AlphaGo使用“ 蒙特卡罗树搜索 ”(MCTS)克服这个问题。这种方法首先需要在棋盘上探索许多可能的变化, 然后随着棋局的进行,把这些变化集中起来比较优劣, 就会发现某些着法比其他着法更有可能通向胜利。

  AlphaGo 和 AlphaGo Zero简单地使用MCTS搜索棋谱中的最佳着法,并罗列出来, 在大量最佳着法之间权衡比较,选择新的落子点;并且更深入地探索棋谱中已经出现的变化。

  其实在AlphaGo之前,MCTS就已经是所有棋类程序使用的核心技术了,但DeepMind将这一技术巧妙地与基于神经网络的“直觉”相结合,使AlphaGo超越了人类水平。

  落子方法2:“直觉”

  DeepMind对AlphaGo的主要创新是利用深层神经网络来理解游戏的状态,然后利用这种理解智能地指导MCTS进行搜索

  更具体地说,他们训练的网络可以看到:

  当前棋盘上的状态。

  是哪位棋手正在下棋。

  棋手最近的一系列着法(必须排除那些不可能的着法)。

  鉴于这些信息,神经网络可以推荐:

  应该采取的措施。

  目前的棋手是否有可能获胜。

  DeepMind如何训练神经网络做到这些? AlphaGo和AlphaGo Zero使用了非常不同的方法。我们先从AlphaGo说起。

  AlphaGo的“直觉”:策略网络和价值网络

  AlphaGo有两个分开训练的神经网络。

  1。第一个神经网络(随机初始化)从大量真实对弈的棋谱中学习,模拟人类高手。这个问题是深层神经网络擅长解决的,看似困难,却是很直接的模式识别问题; 事实上,一旦接受了训练,这个网络确实学会了一些人类高手的最佳着法。

  2.DeepMind不只希望AlphaGo模仿人类玩家,他们也希望赢得胜利。为了选出对弈中更有可能取得胜利的着法,模拟人类高手的第一个神经网络开始与自己对弈。

  随后DeepMind从这些“自我对弈”棋局中随机抽取着法;如果一个选定的着法使当前玩家在对弈中最终获胜,那么网络在将来更有可能采取类似的下法。

  3.DeepMind将这两个神经网络与MCTS结合在一起——也就是说,程序的“直觉”加上强大的“前瞻”搜索——这是一种非常聪明的方式,即,使用已经训练过的网络预测一个着法,指导MCTS搜索,并判断选择的位置是否会取得最终“胜利”,用此结果评估搜索期间选择的落子位置是否妥当。这让AlphaGo智能地搜索接下来的动作,并最终击败了李世石。

  然而,AlphaGo Zero把这些提升到了一个全新的高度。

  AlphaGo Zero工作的三个技巧

  从更高的层面上来说,AlphaGo Zero的工作方式与AlphaGo相同:具体来说,它也使用MCTS预测搜索,通过神经网络智能引导。

  然而,AlphaGo Zero的神经网络——它的“直觉”——与AlphaGo的完全不同。

  技巧1:如何训练AlphaGo Zero

  DeepMind认识到,神经网络无论多么智能,想要“理解”围棋游戏,都要借助MCTS。

  MCTS执行一种预测搜索,一个人类棋手,只要有足够的时间,也能做出这些预测:智能地猜测所有变化,未来着法的优劣,那些着法是最有希望获胜的,并模拟这些变化,来决定此刻的着法,以及接下来的走法。

  下面是一个例子。假设有一个神经网络正在读棋盘,当前局面会导致平局,评估结果为0.0。然后,网络智能地向前看一些着法,发现一系列下法可能获胜,评估结果为0.5。然后,它随时更新对当前棋局的评估,以保障自己下一次处于更有利的位置。

  DeepMind的神经网络无论和业余爱好者还是职业高手对弈,采取的都是这样的方式:通过“前瞻”查看当前哪个选项会产生更有利的结果。

  另外,就像AlphaGo一样,DeepMind也希望神经网络能够了解哪些着法可能会走向胜利。因此,与以往一样,神经网络和自己对弈,赢得一些经验,并去除一些不妥当的着法。

  这些数据纯粹是通过预测和自我对弈生成的,是DeepMind用来训练AlphaGo Zero的主要数据。

  很多人认为,AlphaGo Zero的训练没有使用任何人类的棋谱有些不可思议,而这个“技巧”就是原因:对于对弈中的一个给定状态,执行MCTS的前瞻预测,并利用结果来改善对弈情况。这就是AlphaGo Zero能够不断提高的原因,从击败业余选手一直到击败人类的职业高手。

  第二个技巧是一个新的神经网络结构,我称之为“双头怪物”。

  技巧2:双头怪物

  AlphaGo Zero的神经网络架构,是一个“双头”架构。它的前20层是常见的神经网络结构。这些层后面有“两个头”:其中一头,利用前20层的输出,产生下一步落子获胜的概率,另一个头利用前20层的输出,推理出当前玩家在此情形下最终获胜的概率。

  这是很不寻常的。因为在几乎所有应用中,神经网络只有一个固定的输出。如果一个网络接收两组信号,网络如何学习?是选择对大局的评估,还是选择对下一步最有利的下法?

  答案很简单:请记住,神经网络只是一些数学函数,大量参数决定了预测结果; 通过反复向网络展示“正确答案”,让它更新参数,使产生的答案更接近正确答案。

  因此,当使用双头神经网络的头1进行预测时,我们只需更新“身体”和“头1”中的参数。同样,当我们使用头2进行预测时,更新“身体”和“头2”中的参数。

  这就是DeepMind用来指导MCTS的“双头”神经网络,就像AlphaGo用两个独立的神经网络一样。这个窍门使AlphaGo Zero比AlphaGo增加了一倍的实力。

  另一方面,AlphaGo Zero实力的增加还结合了该领域最新技术。

  技巧3:残余网络

  AlphaGo Zero使用了比AlphaGo更“尖端”的神经网络。具体来说,他们使用残余神经网络,而不是纯粹的卷积网络。2015年末,就在AlphaGo第一个版本完成时,微软研究院率先推出了残余网络,所以,DeepMind并没有在最初的AlphaGo中使用它,这是可以理解的。

  从原始的“ResNet”文件中比较残余与卷积网络

  有趣的是,这两个与神经网络相关的技巧——从卷积到残余,使用“双头怪物”神经网络——导致了AlphaGo Zero比AlphaGo增加了一倍的实力,如下图所示。

  AlphaGo Zero的改进版

  技巧总结

  这三个技巧使得AlphaGo Zero能够实现令人难以置信的性能,即使Alpha Go使用这三个技巧也一样会增强实力。

  值得注意的是,AlphaGo并没有使用任何经典的,甚至“尖端”的强化学习概念,没有深度Q学习(无模型强化学习),或者任何其他与强化学习相关的东西。它只是使用模拟来生成神经网络的训练数据,然后以监督的方式学习。在发布AlphaGo Zero之后,Denny Britz曾在推特中发表了自己的看法:

  从零开始训练AlphaGo Zero

  1。初始化神经网络。

  2。进行自我对弈,每一步进行1600次MCTS模拟(大约需要0.4秒)。

  3。随着自我对弈的进行,从最近的50万场比赛中抽取2048个落子位置以及比赛的输赢情况作为样本。

  4。使用MCTS向前搜索,对着法进行评估,训练神经网络。

  5。对步骤3、4每1000次进行迭代,评估当前的神经网络与以前的最佳版本;如果胜率达到55%,就使用新的神经网络生成游戏,摒弃以前的版本。

  重复第3、4步70万次,而自我对弈游戏不断进行——三天后,你会有自己的AlphaGo Zero!

  对AI其他研究的影响

  DeepMind在人工智能研究领域取得了令人难以置信的成就。这里有几个关键因素:

  首先,模拟产生的自我训练数据“足够好”,DeepMind的神经网络训练表明,模拟的自我对抗数据可以训练主体在极其复杂的任务中超越人类的表现,甚至从头开始,完全从数据开始。而对于人类来说,想成为专家靠的可不是数据,因为我们的成长需要经验的积累。

  其次,“双头怪物”的技巧似乎可以帮助神经网络执行多个相关性很强的任务,单独的任务发挥不了它的优势。DeepMind似乎非常喜欢这个技巧,并使用它及其高级版本,学习多个不同领域的多个任务。

  很多机器人项目,特别是使用模拟教机器人用肢体完成任务的项目,正在使用这两个技巧,以取得良好的效果。

  Pieter Abbeel在最近的NIPS主题演讲中就介绍了许多令人印象深刻的新成果,这些成果使用了以上技巧以及许多其他的出色的强化学习技术。

  事实上,竞技运动与“双头怪物”似乎完美契合:例如,同时训练机器人用球棒击球,并用拳头击打一个移动的目标,因为这两项任务需要学习一些共同的常用技能(如保持平衡、躯干旋转)。

  DeepMind的AlphaGo Zero是2017年人工智能和深度学习方面最令人感兴趣的进步之一。我迫不及待地想知道2018年他们会带给我们什么!

  来源:Hackernoon

  作者:Seth Weidman

  智能观 编译

  —完—

  亲爱的朋友:

  2017年,AlphaGo Zero惊艳了世界。我们感叹人工智能的发展之快,也好奇甚或恐惧Zero是如何自我修炼的。

  这篇文章里,作者用通俗易懂的方式,给我们介绍了AlphaGo Zero的使用技术和工作方式;并教我们如何训练自己的Zero。

  希望能对你有所启发。

  安!

  智能观 一米

  2018-1-16 于北京中关村
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

返回列表