top of page

简单解释:AI程序如何掌握Go的古老游戏

Writer's picture: John YunJohn Yun

这是关于AlphaGo,谷歌DeepMind的Go玩AI在2016年通过击败世界上最好的球员之一Lee Sedol震撼了技术世界。

Go是一款古老的棋盘游戏,每一步都有很多可能的动作,未来的位置难以预测 - 因此需要强大的直觉和抽象的思维才能发挥作用。由于这个原因,人们认为只有人类才能善于玩Go。大多数研究人员认为,构建一个可以这样思考的人工智能仍需要数十年的时间。事实上,我今天发表这篇文章是因为本周(3月8日至15日)是AlphaGo与Sedol比赛的两周年纪念日!

但是AlphaGo并没有止步于此。 8个月之后,它在一个Go网站上以伪装成名为“大师”的玩家打了60场专业比赛,并赢得了每场比赛,对阵数十位世界冠军,当然没有在比赛之间休息。

当然,这是人工智能领域的一项巨大成就,引发了全世界关于我们是否应该对人工智能感到兴奋或担忧的讨论。

今天我们将采用DeepMind在Nature杂志上发表的原始研究论文,并使用简单的英语逐段分解。

在这篇文章之后,你会清楚地知道AlphaGo是什么,以及它是如何工作的。我也希望在阅读完这篇文章之后,你不会相信记者所做的所有新闻标题都会让你害怕AI,而是对此感到兴奋。

担心人工智能不断增长的成就就像担心微软Powerpoint不断增长的能力一样。是的,随着时间的推移它会随着新功能的增加而变得更好,但它不能无法控制地成长为某种好莱坞怪物。

你不需要知道怎么玩Go去理解这篇论文。事实上,我自己只阅读维基百科关于它的开头段落中的前3-4行。相反,令人惊讶的是,我使用基本国际象棋中的一些例子来解释算法。你只需要知道一个2人桌面游戏是什么,每个玩家轮流进行,最后有一个赢家。除此之外,您不需要知道任何物理或高级数学或任何东西。

这将使那些刚才开始学习机器学习或神经网络的人更加平易近人。特别是那些不使用英语作为第一语言的人(这使得阅读这些论文非常困难)。

如果您对AI和神经网络没有任何先验知识,您可以阅读我之前的一篇论文中的“深度学习”部分。阅读完之后,你将能够完成这篇文章。

如果你想对强化学习有一个浅薄的理解(可选阅读),你可以在这里找到它。

如果您想尝试阅读,这是原始论文:


至于我:嗨,我是Aman,AI和自动机器人工程师。我希望如果你自己研究这项工作,我的工作将为你节省大量的时间和精力。

你会说日语吗? Ryohji Ikebe在一系列推文中写了一篇关于这篇日文文章的简短备忘录。

让我们开始吧!

抽象


如你所知,这项研究的目的是培养一个人工智能程序,让世界级的专业人类玩家能够玩Go。

为了理解这一挑战,我先谈谈为国际象棋做类似的事情。在20世纪90年代早期,IBM推出深蓝色计算机,击败了国际象棋中的伟大冠军加里卡斯帕罗夫。 (他也是一个非常酷的家伙,请务必稍后阅读更多关于他的内容!)深蓝色是怎么玩的?

嗯,它使用了非常强力的方法。在游戏的每一步,它都会看到可能发挥的所有可能的法律动作,并继续探索每一个动作,看看会发生什么。移动一段时间之后,它将继续探索移动,形成一种由数千个移动组成的巨大决策树。然后它会沿着那棵树回来,观察哪些动作似乎最有可能带来好结果。但是,“好结果”是什么意思呢?那么,Deep Blue有许多精心设计的国际象棋策略,由专业的国际象棋选手构建,以帮助它做出更好的决策 - 例如,如何决定是保护国王还是在其他地方获得优势?他们为此目的制定了一个特定的“评估算法”,以比较不同董事会职位的优势或劣势(IBM硬编码专家国际象棋战略到此评估职能)。最后,它选择了一个精心计算的举动。在下一回合,它基本上再次经历了整个事情。

正如你所看到的,这意味着Deep Blue在玩每一步之前都想到了数以百万计的理论位置。对于Deep Blue的AI软件而言,这并不是那么令人印象深刻,而是在硬件方面 - IBM声称它是当时市场上最强大的计算机之一。它可以看到每秒2亿个棋盘位置。


现在我们来吧。相信我这个游戏更开放,如果你在Go上尝试深蓝战略,你将无法发挥出色。在每个步骤中都会有很多位置,以至于计算机通过地狱是不切实际的。例如,在国际象棋的开场动作中,有20种可能的动作。在Go中,第一个玩家有361个可能的移动,并且这个选择范围在整个游戏中保持广泛。


这就是他们所说的“巨大的搜索空间”。此外,在Go中,判断特定棋盘位置在游戏中的任何特定点有多么有利或不利也不是那么容易 - 你有点必须玩整个游戏而在你确定谁赢了之前。但是,让我们说你神奇地想要做到这两点。这就是深度学习的地方!

所以在这项研究中,DeepMind使用神经网络来完成这两项任务(如果你还没有读过关于神经网络的话,那么这里又是链接)。他们训练了一个“策略神经网络”来决定哪个是特定棋盘位置中最明智的移动(所以它就像遵循一个直观的策略来从任何位置挑选移动)。他们训练了一个“价值神经网络”来估计特定棋盘安排对玩家的优势(或者换句话说,你从这个位置赢得比赛的可能性)。他们首先使用人类游戏示例(您古老的普通监督学习)训练这些神经网络。在此之后,AI能够在一定程度上模仿人类的游戏,因此它就像一个弱小的人类玩家。然后,为了进一步训练网络,他们让人工智能对抗自己数百万次(这是“强化学习”部分)。有了这个,人工智能变得更好,因为它有更多的练习。

仅凭这两个网络,DeepMind的AI就能够很好地对抗其他研究人员之前建立的最先进的Go游戏程序。这些其他程序使用了已经流行的预先存在的游戏算法,称为“蒙特卡罗树搜索”(MCTS)。稍后会详细介绍。

但是猜猜看,我们还没有谈到真正的交易。 DeepMind的AI不仅仅是关于政策和价值网络。它不使用这两个网络来代替蒙特卡罗树搜索。相反,它使用神经网络使MCTS算法更好地工作......并且它达到了超人的水平。这种MCTS改进的变化是“AlphaGo”,人工智能击败Lee Sedol并在人工智能史上成为有史以来最伟大的突破之一。从本质上讲,AlphaGo只是一种非常普通的计算机科学算法的改进实现。你现在明白为什么现在的AI绝对没什么好害怕的吗?

哇,我们已经花了很多时间在摘要上。


好吧 - 从这一点开始理解论文,首先我们将讨论一种称为蒙特卡罗树搜索算法的游戏策略。现在,我将在足够深度解释这个算法来理解这篇文章。但如果你想深入了解它,一些聪明的人也在这上面制作了精彩的视频和博客文章:

1. 来自Udacity的短片

2。Jeff Bradberry对MCTS的解释

3。Fullstack Academy的MCTS教程

以下部分很长,但很容易理解(我会尽我所能)并且非常重要,所以请留在我身边!本文的其余部分将更快。


我们来谈谈上面文章的第一段。还记得我所说的Deep Blue在游戏的每一步制作了数百万个棋盘位置的大树吗?您必须进行模拟并查看并比较每个可能的移动。正如我之前所说,这是一种简单的方法和非常简单的方法 - 如果普通的软件工程师必须设计一个玩AI的游戏,并拥有世界上最强大的计算机,他或她可能会设计一个类似的解决方案。


但是让我们想一想人类如何下棋?假设你在游戏过程中处于特定的董事会位置。根据游戏规则,你可以做十几种不同的事情 - 在这里移动这个棋子,在这里移动女王两个正方形或在那里移动三个正方形,依此类推。但是你真的列出了你可以用你所有作品制作的所有可能的动作,然后从这个长长的列表中选择一个动作吗?不 - 你“直觉地”缩小到你认为有意义的几个关键动作(假设你提出3个合理的动作),然后你想知道如果你选择这3个动作中的一个,游戏中会发生什么。考虑到这3个动作及其未来中的每一个,您可能花费15-20秒 - 并注意到在这15秒内您不必仔细计划每个动作的未来;你可以直接“推出”由你的直觉引导的一些心理动作,而不需要太多仔细的思考(好吧,一个优秀的球员会比普通球员更深入,更深刻地思考)。这是因为你的时间有限,你无法准确地预测你的对手在你大脑中正在烹饪的美好未来的每一步都会做些什么。所以你只需要让你的直觉感觉引导你。我将这部分思考过程称为“推出”,所以请注意它!

因此,在“推出”你的一些明智的动作之后,你最终会说它,并且只是发挥你最好的动作。

然后对手采取行动。这可能是您已经很好的预期,这意味着您现在对下一步需要做的事情充满信心。您不必再花费太多时间在推出上。或者,可能是你的对手用你没想到的非常酷的动作打你,所以你必须对你的下一步行动更加小心。


这就是游戏的进展方式,随着距离越来越接近结束点,您可以更轻松地预测行动的结果 - 因此您的推出不需要花费太多时间。


这个长篇故事的目的是描述MCTS算法在表面层面上所做的事情 - 它通过每次构建一个移动和位置的“搜索树”来模仿上述思维过程。同样,有关更多详细信息,请查看我之前提到的链接。这里的创新是,它不是经历每个位置(Deep Blue所做的)的所有可能的移动,而是智能地选择一小组合理的移动并探索那些移动。为了探索它们,它“推出”了每个动作的未来,并根据它们的想象结果对它们进行比较。


(说真的 - 这就是我认为你需要理解这篇文章的全部内容)

现在 - 回到论文截图。 Go是一个“完美的信息游戏”(请阅读链接中的定义,不要担心它不可怕)。理论上,对于这样的游戏,无论你在游戏中处于哪个特定位置(即使你刚刚进行了1-2次移动),你有可能正确猜出谁将赢或输(假设两个玩家都玩)从那一点开始“完美”。我不知道是谁提出这个理论,但它是这个研究项目的一个基本假设并且它起作用。

所以这意味着,给定一个游戏状态,有一个函数v *(s)可以预测结果,假设你赢得这个游戏的概率,从0到1.他们称之为“最优值函数” 。由于某些董事会职位比其他董事会职位更有可能导致您获胜,因此可以认为它们比其他职位更“有价值”。让我再说一遍:价值=赢得比赛的0到1之间的概率。


但是等等 - 比如你在玩国际象棋时有一个名叫Foma的女孩坐在你旁边,而且如果你输赢,她会一直告诉你每一步。 “你赢了......你输了......不,还在输......”我认为选择你需要做出的举动对你没什么帮助。她也很讨厌。相反,如果你绘制了所有可能移动的整棵树,以及那些移动会导致的状态,那么Foma会告诉你整个树状态是哪些状态是赢得状态,哪些状态是失去状态。然后你可以选择一些动作来引导你进入胜利状态。突然之间Foma是你犯罪的伙伴,而不是讨厌的朋友。在这里,Foma表现为您的最优值函数v *(s)。早些时候,人们认为不可能有一个准确的价值函数


第一行是自解释的。在MCTS中,你可以从一个不熟练的Foma和不熟练的Lusha开始。你玩的越多,他们就越能预测可靠的结果和动作。 “将搜索范围缩小到一系列高概率行动”只是一种复杂的说法,“Lusha通过为他们分配专家会玩他们的概率,帮助你缩小你需要推出的动作”。之前的工作已经使用这种技术来实现强大的业余级AI玩家,即使他们的政策功能简单(或称为“浅”)。


是的,卷积神经网络非常适合图像处理。并且由于神经网络采用特定输入并提供输出,因此它本质上是一个函数,对吧?因此,您可以使用神经网络成为一个复杂的功能。所以你可以传递一个板位图像,让神经网络自己弄清楚发生了什么。这意味着可以创建神经网络,其行为就像非常准确的策略和价值函数。其余的是非常自我解释的。


在这里,我们讨论如何训练Foma和Lusha。为了训练政策网络(预测专家会选择的给定位置),您只需使用人类游戏的示例并将其用作良好的旧监督学习的数据。

并且您希望训练另一个稍微不同版本的此策略网络以用于部署;这个会更小更快。我们只是说,由于Lusha经验丰富,她需要一些时间来处理每个职位。她很高兴开始缩小范围,但如果你试图让她重复这个过程,她还是会花一点时间。所以你为推出过程训练一个*更快的政策网络*(我会称之为...... Lusha的弟弟Jerry?我知道我知道,这些名字已经足够了)。在那之后,一旦你使用人类玩家数据训练了慢速和快速策略网络,你可以尝试让Lusha在Go棋盘上玩几天,并获得更多练习。这是强化学习部分 - 制定更好的政策网络版本。

然后,您训练Foma进行价值预测:确定您获胜的概率。你让人工智能练习在模拟环境中一次又一次地玩耍,每次观察最终结果,并从错误中学习,以便变得越来越好。

我不会详细介绍这些网络是如何训练的。您可以在本文后面的部分(“方法”)中阅读更多技术细节,我在这里没有介绍过。事实上,这篇论文的真正目的并不是要展示他们如何在这些神经网络上使用强化学习。 DeepMind之前的一篇文章,其中他们教AI玩ATARI游戏,已经深入讨论了一些强化学习技术(我已经在这里写了一篇关于那篇论文的解释)。对于本文,正如我在摘要中略微提到的并且在上面的屏幕截图中强调的那样,最大的创新是他们使用RL与神经网络来改进已经流行的游戏算法MCTS。 RL是工具箱中的一个很酷的工具,它们用于在常规监督培训之后微调策略和价值函数神经网络。这篇研究论文是关于证明它是多功能和优秀的这个工具,而不是教你如何使用它。在电视行话中,Atari论文是一个RL电视广告,这个AlphaGo论文是商业广告。

好吧,我们终于完成了“介绍”部分。到目前为止,您已经对AlphaGo的所有内容有了非常好的感觉。

接下来,我们将更深入地讨论上面讨论过的每一件事。您可能会看到一些丑陋且危险的数学方程式和表达式,但它们很简单(我会解释它们)。放松。

在继续之前快速说明。你想帮我写更多这样的文章来解释很酷的研究论文吗?如果你是认真的,我很乐意和你一起工作。请发表评论,我会与您联系。


两张日本女性玩Go的照片,放在这里,万一你已经厌倦了看着长长的文字。


因此,第一步是培训我们的政策NN(Lusha),以预测专家可能会采取哪些行动。 NN的目标是让人工智能与人类专家相似。这是一个卷积神经网络(正如我前面提到的,它是一种特殊的NN,在图像处理中非常有用),它采用了一种简化的电路板排列图像。 “整流器非线性”是可以添加到网络架构中的层。他们赋予它学习更复杂事物的能力。如果您之前曾经训练过NN,那么您可能已经使用过“ReLU”图层。这就是这些。

这里的训练数据是随机对的棋盘位置形式,标签是人类在这些位置时选择的动作。只是定期监督学习。

在这里,他们使用“随机梯度ASCENT”。嗯,这是一种反向传播的算法。在这里,您正在尝试最大化奖励功能。奖励函数只是人类专家预测行动的概率;你想增加这个概率。但是嘿 - 你真的不需要考虑太多。通常,您会训练网络,以便最大限度地减少损失函数,这实际上是预测结果与实际标签之间的误差/差异。这称为梯度DESCENT。在本研究论文的实际实施中,他们确实使用了常规的梯度下降。您可以轻松找到与奖励函数相反的损失函数,以便最大限度地减少此损失将最大化奖励。


策略网络有13层,称为“SL策略”网络(SL =监督学习)。数据来自...我只是说它是一个受欢迎的网站,数百万人玩Go。这个SL政策网络的表现有多好?

它比其他研究人员早些时候做的更准确。该段的其余部分是不言自明的。至于“推出政策”,你会记得几段前,SL政策网络的Lusha如何缓慢,以至于无法与MCTS算法很好地整合?我们训练了另一个更快的Lusha版本叫Jerry,她是她的弟弟?好吧,这就是杰瑞就在这里。正如你所看到的,Jerry的精确度只有Lusha的一半,但它的速度要快几千倍!当我们应用MCTS时,它将真正帮助更快地完成对未来的模拟。

对于下一部分,你不必*已经知道强化学习,但是你必须假设我所说的无论如何。如果你真的想深入了解细节并确保一切,你可能想先了解一下RL。


一旦你拥有了SL网络,就会使用人类玩家的动作和人类移动数据以受监督的方式进行训练,正如我之前所说的,你必须让她自己练习并且变得更好。这就是我们在这里所做的。因此,您只需使用SL策略网络,将其保存在文件中,然后再制作它。

然后你使用强化学习来微调它。在这里,您可以让网络对抗自己,并从结果中学习。

但是这种训练方式存在问题。

如果你只是永远练习对抗一个对手,并且那个对手也只是专门与你练习,那么你可以做的新学习并不多。你只是训练练习如何击败那个玩家。这就是,你猜对了,过度拟合:你的技术很好地对抗一个对手,但不能很好地概括为其他对手。那你怎么解决这个问题呢?

好吧,每当你对神经网络进行微调时,它就变成了一种稍微不同的玩家。所以你可以将这个版本的神经网络保存在一个“玩家”列表中,谁的行为略有不同呢?太棒了 - 现在在训练神经网络的同时,你可以随机对抗从该列表中选择的对手的许多不同的旧版本和新版本。它们是同一个播放器的版本,但它们的播放方式略有不同。你训练得越多,你就可以训练更多的球员!答对了!

在这次培训中,唯一指导培训过程的是最终目标,即输赢。你不需要专门训练网络来做一些事情,比如在棋盘上捕获更多区域等等。你只需要给它选择所有可能的合法动作,然后说“你必须赢”。这就是为什么RL如此多才多艺;它可以用来训练任何游戏的政策或价值网络,而不仅仅是Go。


这里必须注意的是,即使在训练这个RL策略网络之前,SL策略网络已经比现有技术更好了 - 现在,它已经进一步改进了!我们甚至没有像价值网络那样来到流程的其他部分。


您是否知道小企鹅可以打喷嚏比狗吠更大声?实际上这不是真的,但我认为你在这里想要一个小小的笑话,以分散上面那些可怕的方程式。再来一篇文章:我们在这里训练了Lusha。现在回到Foma--记住“最佳价值函数”:v *(s) - >只告诉你如果两位球员从那一点上完美运动,你在当前的棋盘位置上获胜的可能性有多大?

显然,要训练NN成为我们的价值功能,我们需要一个完美的球员......我们没有。所以我们只是用

我们最强大的玩家,恰好是我们的RL政策网络。

它采用当前状态板状态,并输出您将赢得游戏的概率。你玩游戏并了解结果(赢或输)。每个游戏状态都充当数据样本,并且该游戏的结果充当标签。因此,通过玩50个移动的游戏,您有50个数据样本用于值预测。


哈哈,不。这种方法很幼稚。您不能使用游戏中的所有50个动作并将它们添加到数据集中。

必须仔细选择训练数据集以避免过度拟合。游戏中的每一个动作都与下一个动作非常相似,因为你只动了一次,这给了你一个新的位置,对吗?如果你在所有50个动作中取出状态并将它们添加到具有相同标签的训练数据中,那么你基本上会有很多“有点重复”的数据,这会导致过度拟合。为了防止这种情况,您只选择非常独特的游戏状态。因此,例如,您只需选择其中的5个并将其添加到训练集中,而不是游戏的所有50个动作。 DeepMind从3000万个不同的游戏中获得了3000万个位置,以减少重复数据的可能性。它奏效了!


现在,这里有一些概念:有两种方法来评估董事会职位的价值。一个选项是神奇的最佳值函数(就像你上面训练的那个)。另一种选择是使用您当前的政策(Lusha)简单地展望未来并查看此次推出的最终结果。显然,真正的游戏很少会按照你的计划进行。但DeepMind比较了这两种选择的效果。您也可以混合使用这两个选项。稍后我们将了解这个“混合参数”,所以要记住这个概念!


那么,你的单个神经网络尝试近似最优值函数比使用推出策略进行数以千计的心理模拟更好!福马真的踢了屁股。当他们用两倍准确(但很慢)的RL政策Lusha取代快速推出政策时,并且做了数千次模拟,它做得比Foma好。但只是稍好一点,而且太慢了。所以Foma是本次比赛的冠军,她已经证明她不能被替换。


现在我们已经培养了政策和价值功能,我们可以将它们与MCTS结合起来,生下我们的前世界冠军,大师的驱逐舰,一代人的突破,重达二百六十八磅,一只且只有Alphaaaaa GO !

在本节中,理想情况下,您应该对MCTS算法的内部工作有一点了解,但到目前为止您所学到的内容应该足以让您对这里发生的事情有一个很好的感受。您应该注意的唯一事项是我们如何使用策略概率和值估计。我们在推出期间将它们结合起来,以缩小我们想要在每一步推出的动作数量。 Q(s,a)表示值函数,u(s,a)是该位置的存储概率。我会解释一下。

请记住,政策网络使用监督学习来预测专家移动?而且它不只是给你最可能的移动,而是为你提供每个可能移动的概率,告诉他们成为专家移动的可能性。可以为这些动作中的每一个存储该概率。在这里,他们称之为“先验概率”,他们显然在选择要探索的行动时使用它。所以基本上,要决定是否探索特定的举动,你要考虑两件事:第一,通过这一举动,你有多大可能获胜?是的,我们已经有了“价值网络”来回答第一个问题。第二个问题是,专家选择此举的可能性有多大? (如果专家不太可能选择此举,为什么甚至浪费时间考虑它。我们从政策网络获得


让我们谈谈“混合参数”(见回到它!)。如前所述,要评估头寸,您有两种选择:一种,只需使用您一直用来评估状态的价值网络。第二,你可以尝试用你当前的策略快速玩一个推出游戏(假设其他玩家将玩相似的游戏),看看你输赢。我们看到了价值函数如何比一般的推出更好。他们在这里结合了两者您尝试给每个预测50-50重要性,或40-60,或0-100,依此类推。如果将%的X附加到第一个,则必须将100-X附加到第二个。这就是混合参数的含义。您将在本文后面看到这些热门和试用结果。


每次推出后,您都可以使用在模拟过程中获得的任何信息更新搜索树,以便下一次模拟更加智能化。在所有模拟结束时,您只需选择最佳动作。


这里有趣的见解!

还记得RL微调政策NN如何比SL人类训练的政策NN更好吗?但是当你把它们放在AlphaGo的MCTS算法中时,使用经过人工训练的NN被证明是比微调NN更好的选择。但是在价值函数的情况下(你会记得使用强大的玩家来近似一个完美的玩家),使用RL策略训练Foma比使用SL策略训练她更有效。


“做所有这些评估需要大量的计算能力。我们真的不得不拿出大枪才能运行这些该死的程序。“


另一张照片,来自第一张AlphaGo vs Lee Sedol游戏。


自我解释。


“大声笑,我们的节目从我们面前的所有其他节目中脱颖而出”


这又回到了“混合参数”。在评估位置时,对值函数和推出同等重要,而不仅仅使用其中一个。其余的是自我解释,并揭示了一个有趣的见解!


自我解释。


自我解释。但是再次阅读那个红色下划线的句子。我希望你现在可以清楚地看到,这条线就是整个研究项目的全部内容。


结论段落。 “让我们在这里吹嘘一点,因为我们应得的!”:)

5 views0 comments

Recent Posts

See All

强化学习的未来 - 第1部分 Hunter Heidenreich

https://towardsdatascience.com/the-future-with-reinforcement-learning-part-1-26e09e9be901 2018年8月8日 想象一下,每个计算机系统都根据您自己的个性进行定制。它可以了解您的沟通方式...

人工智能 概述

https://en.wikipedia.org/wiki/Artificial_intelligence 计算机科学,人工智能(AI),有时也称为机器智能,是机器展示的智能,与人类展示的自然智能形成鲜明对比。俗话说,“人工智能”一词通常用于描述模仿人类与人类心灵相关的“认...

Comments


Contact

PO Box 1707

Bellaire, TX 77402

​​

Tel: 832-378-8899​

  • Black Facebook Icon
  • Black Twitter Icon
  • Black Instagram Icon
  • Black YouTube Icon

Thanks for submitting!

© 2019 by Sling and Stones

bottom of page