网站首页 > 技术文章 正文
在这篇文章中,我们介绍了AlphaGo的训练方式以及它如何击败人类。
想象一下,你有一位名为Yoda的围棋大师作为锦标赛的顾问。无论什么时候轮到你,你都会问Yoda下一步的行动。过了一段时间,你决定收集他以前的所有下棋方法,并模仿Yoda做的任何事情。但是,有太多的移动组合(状态)。因此,我们建模一个函数f,它采用Go棋盘并输出所有可能棋步的概率分布。要做出这样的举动,我们可以选择出现概率最高的一个,或者从概率分布中抽样。
听起来很奇怪,但它确实有效,基本的概念就像一个深层的网络分类器。
实际上,我们将一个深度学习分类器重新定义为f模型。该分类器由13个层组成,包含可替代的卷积filters和rectifiers,然后是一个softmax分类器。由于这个网络是由监督学习创建的,它被命名为SL策略网络。
围棋盘19×19网格。下面是两个不同的位置,我们要下一个黑子到正确的位置。
2 different positions
分类器不接受原始图像。需要19×19×48输入特征来表示。但是这些特性很简单,而且很容易推导出来。
Input features to the SL policy networks
让我们来介绍一些RL术语。action 是 our move,状态(state)是我们的围棋盘位置和策略是采取动作a的概率分布。
训练
为了训练SL策略网络,AlphaGo收集了3000万个围棋位置下法。然后在深度学习中应用反向传播来训练模型参数σ:
AlphaGO使用50个GPU来训练网络,耗时3周。SL策略网络的准确率达到57%。这个训练有素的策略网络可能已经击败了一些业余爱好者高手。
部署策略
在稍后的模拟过程中,我们需要更快速地缩小搜索范围。因此,我们使用线性softmax分类器创建另一个称为“rollout policy π”的策略。每次移动需要2μs,SL策略网络需要3 ms。该推出策略的准确率较低(为55.7%),但速度提高了1500倍。
策略网络的强化学习(RL)
我们有一个近似主移动(master moves)的策略网络。但这还不够准确,还不足以打败大师。在训练的第二阶段,AlphaGo开始玩游戏,以制定更好的策略网络。
首先,我们复制SL策略网络并称之为RL策略网络ρ。我们将使用策略梯度强化学习来反复改进RL策略网络。我们使用RL策略网络玩我们的游戏。对于我们的对手,我们随机重用一个较老的RL策略网络。我们不会在同一个策略网络上玩对方,因为它会过度适应当前的策略。(即它会记住这些动作,而不是将它推广给不同的对手)。我们一直玩,直到比赛结束。在时间步t,游戏结果z t如果我们在最后获胜,则等于1;如果我们输了,则等于-1。我们修改模型参数ρ以使RL策略更容易获胜。事实上,除了我们使用游戏结果z来确定移动的方向之外,这与深度学习(DL)后向传播几乎相同。
该网络在一天内接受50个GPU的训练
强化学习(RL)的价值网络。
尤达大师很难理解,更难以捉摸。RL策略网络面临同样的问题。围棋游戏的结果会因微小的变化而变化。在RL策略网络中,小的“不精确”可将win改变为失败。对人类来说,我们评估位置并据此制定策略。在AlphaGo训练的最后阶段,我们训练一个深度网络来估计我们的位置值。在Go中,如果我们赢了,那么价值等于1,如果我们输了,价值等于-1。之后,我们相互补充我们的策略网络和价值网络,以便更好地采取行动。
我们使用相同的RL策略网络互相玩游戏。价值网络与策略网络类似,只不过它输出的是标量值而不是概率分布。我们计算值函数v(s)与游戏结果z的均方误差MSE,并使用反向传播来修改我们的模型参数θ。
但是,我们的训练数据集并不是每场比赛使用多个棋盘位置。因为所有的棋局在一场比赛中都会导致相同的结果(胜负),所以他们是紧密相关的。为了有效地训练模型,我们希望训练数据集是独立的。因此,我们使用RL策略网络进行超过3000万场比赛,并且从每场比赛中只挑选一个位置来训练价值网络。价值网络用50个GPU训练一周。
以下是策略网络和价值网络对相应董事会职位的预测可视化。与人类相似,AlphaGo在角落附近开始游戏。
概括
那么到目前为止我们做了什么?我们的培训已经完成,我们使用深度学习和强化学习来建立
一个策略网络告诉我们什么样的举措是有希望的,
一个价值网络,告诉我们哪个位置比较好。
我们知道这两个网络并不完美,微小的错误可能会改变游戏结果。我们的最后一项任务是互补两个网络,以实现最终目标。
蒙特卡洛树搜索(MCTS)
模拟策略和价值网络提出的举措是找到下一步行动的最佳途径。 我们模拟从当前棋盘位置开始的游戏。我们搜索动作并玩模拟游戏直到结束。经过多场比赛后,我们会得出哪个举措获得最多胜利的想法。但搜索空间太大,我们需要优先考虑它。幸运的是,我们从策略和价值网络得到两个很好的建议,告诉我们哪些举措更有前途。我们建立一个搜索树,记录我们模拟的移动序列以及每次移动获胜的次数。
因此,我们的搜索优先级取决于:
策略网络的预测,
价值网络的预测,
我们有多少次采取这一举措,
模拟游戏结果与胜利。
MCTS
蒙特卡洛树搜索(MCTS)是我们用来优先化和构建搜索树的算法。它由以下4个步骤组成。
Selection
MCTS模拟了许多游戏,以发现这些动作有多好。对于每个模拟,我们首先在搜索树中选择一条路径。稍后我们将讨论如何构建这个搜索树(或扩展为精确)。假设我们的搜索树看起来像左边的那棵。树的顶部是我们现在的董事会位置,它有3个位置,每条边都是从一个位置到另一个位置的移动。即每条边(s, a)表示从状态s到状态s的动作。在右侧,我们计算所有节点的Q + u,并选择每个父节点的最大值的子节点。选择红色箭头作为我们想要进一步研究的路径。
Q和u是下面定义的函数:
第一个方程意味着探索具有Q + u最大值的动作a(移动)。如果我们展开Q&ü,我们选定的举动取决于:
这些都是之前在讨论过的标准。只需要用方程来表示。对于我们在路径中选择的每一个移动(边),我们将N(s, a)加1。如果这个移动(s, a)被选择(否则),那么N(s, a)就是我们在所有模拟游戏中选择这个动作的时间。i代表模拟游戏i。
Expansion
我们的搜索树从当前位置开始。
然后,我们在树中添加更多位置,以反映我们尝试过的移动(边缘)。
每当我们展开一棵树时,我们用下面的方法初始化新的边(s,a):
P(s,a)是指示移动a有多好的概率。它由SL策略网络初始化,不会再更新。你可能会问为什么它不是由RL策略网络发起的。事实证明,我们想要探索更多样化的举措。RL策略网络中的顶级举措虽然不错,但没有多元化。SL策略网络是从人类经验中学习的。事实证明,人类试图探索更多不同的选择。在我们的游戏模拟过程中,Q为a的值函数保持加权平均值。在下面的例子中,我们用一个更多的状态和两个新的边来扩展树(带有2个初始化的P)。
我们将此节点称为leaf node,我们将使用我们的值网络来计算此节点的值函数。
评估
在评估阶段,我们使用从叶节点开始的Monte Carlo Rollout模拟游戏的其余部分。这意味着使用策略完成游戏并找到我们是否赢或输。
在这种情况下,我们使用部署策略而不是SL策略或RL策略。即使它精度较低,但速度要快1500倍。我们需要速度来模拟许多推出。为了玩游戏,我们使用展示策略来抽样。
Backup
评估结束后,我们知道我们的动作是赢还是输。我们使用加权平均值Q来记住移动的方式。又名价值函数(value function ),但不是一个state,而是一个动作(action)。我们将其称为action value function,而不是将其称为值函数。所以Q是 动作值函数的加权平均值。
我们更新Q:
所以Q是所有模拟游戏的结果z和叶节点的值函数v(s)的加权平均值。下图显示了来自3个游戏模拟的Q值备份。
在许多游戏模拟之后,我们应该对基于Q的移动有一个合理的估计,但是,AlphaGo并没有使用Q值来确定当前董事会位置的下一个动作。它使用的是最高N的移动(我们在游戏模拟中移动的频率)。因为在很多步骤之后,我们最终决定要打败大师!
搜索树将被重新用于下一步。所选移动成为根。我们将所有节点及其统计数据保留在当前根目录下。其他节点被丢弃。
什么是RL策略网络?
如果您查看MCTS中的方程式,RL策略网络不用于选择任何移动。因为我们需要多样化的移动搜索,所以我们使用SL策略网络来计算移动a(P(s,a))的先验概率。我们花费了很多努力来培训RL策略网络。为什么我们不使用它。其实,我们做到了。我们使用RL策略网络来计算在MCTS中扮演非常重要角色的价值网络。
如何运行MCTS?
为了有效地运行MCTS,搜索(模拟)在48个CPU上以40个线程运行。由于策略和价值评估计算密集得多,它在8 GPU上运行。
可视化
让我们看看什么样的动作(下面的红色圆圈)是由不同的方法推荐的。
下面的图a是价值网络的估计。我们显示价值网络中最高价值的头寸。红色价值网络中的价值最高。图b是我们使用价值网络时MCTS计算的值Q,但忽略了转出结果(λ = 0)。图c使用推出结果,但忽略价值网络(λ = 1)。图d来自我们的SL策略网络。图e是从计数?。图e是访问次数最多的路径。
AlphaGo改进了什么?
Go的搜索空间太大。为了获胜,围棋选手需要优先考虑搜索并评估位置。使用监督学习,我们创建一个模拟专家动作的策略网络。有了这个策略,我们可以在高级业余水平上打Go。然后,我们让策略网络与自己玩游戏。使用强化学习,我们应用游戏结果进一步完善策略网络。我们还训练价值网络来评估游戏模拟期间的位置。我们的训练已经完成。但我们还不能击败主人。为了决定下一步行动,我们模拟游戏以找到最好的举措。但事情并非如此简单。我们使用策略网络缩小搜索范围,并使用价值网络评估这些位置。但为了缓解我们评估中的错误,我们用我们的游戏结果和我们的评估来计算加权平均值。即使我们只能模拟有限数量的游戏,但我们希望它足够了,加权平均数将比我们的原始估计和模拟游戏更准确。AlphaGo是对的。这种策略胜过Go大师。在下表中,我们看到AlphaGo如何通过应用策略网络,价值网络和蒙特卡罗推出的不同组合来提高其Elo评级(Go玩家评分)。
为什么AlphaGo获胜?
预先培训的策略和价值网络是AlphaGo的真知。AlphaGo具有更多的计算能力,它可以开发比我们更细微的模型。在人的方面,我们的智力是有限的,我们将游戏计划分解成中间目标并且定义实现它们的策略。在AlphaGo中,“胜利”或“损失”是计算中唯一的目标函数,它使用从模拟游戏中学习的长序列预测。AlphaGo的目标非常直接。如果能够实现,解决方案将比我们的目标更优化。AlphaGo使用不同的方法来创建动作。一半的举动不是人类所猜测的。
一个人没有计算机的计算速度,我们依靠抽象思维和分析来解决问题。AlphaGo具有计算能力,因此研究人员可以找到缺少位置搜索以赢得比赛的东西。我们认为Go会太复杂,不能以速度取胜。AlphaGo证明,通过使用深度学习和强化学习将原始速度与智能搜索相结合,它可以击败我们。
猜你喜欢
- 2024-09-30 效果超过SGD和Adam,谷歌大脑的「神经网络优化器搜索」自动找到更好的训练优化器
- 2024-09-30 综述论文:机器学习中的模型评价、模型选择与算法选择
- 2024-09-30 Colab超火的Keras/TPU深度学习实战,会点Python就能看懂的课程
- 2024-09-30 结合符号与连接,斯坦福神经状态机冲刺视觉推理新SOTA
- 2024-09-30 端到端对话模型新突破!Facebook发布大规模个性化对话数据库
- 2024-09-30 神经网络基础篇二 神经网络的基础
- 2024-09-30 AI课堂第8讲:ML神经网络——MLP+ Softmax实现手写数字集分类
- 2024-09-30 吴恩达深度学习笔记(55)-Softmax 回归(Softmax regression)
- 2024-09-30 激活函数:ReLU和Softmax 激活函数relu和sigmoid
- 2024-09-30 火爆全网,只有4页!ICLR爆款论文「你只需要Patch」到底香不香?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)