90

[译]阿尔法狗零--如何不依赖人类知识也能成为围棋专家 - 恒生技术之眼 - 恒生研究院

 6 years ago
source link: http://rdc.hundsun.com/portal/article/844.html?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

[译]AlphaGO Zero--如何不依赖人类知识也能成为围棋专家(一)

10月19日,DeepMind在《Nature》杂志发表了最新成果AlphaGo Zero,本文为对其原文的翻译加上部分自述理解,希望可以帮助大家理解其内容。本文为论文正文篇,方法篇将于下期刊登。文中自弈对应原文self-play,即自己跟自己下棋,也表示自己跟自己博弈的意思。文中极少量不适合翻译为中文的专有词,还是用原文替代。

跟前代阿尔法狗相比,新的架构和训练方式意味着更低的计算量需求和更少的数据量需求,对于可以完全建模的场景,就能通过self-play的方式持续产生抽样数据,不基于人类经验的数据,能完全摒除人类自身可能带来的负面影响。不得不说,本文结果的复现如果没有问题,一定会成为年度经典论文,人类向着智能的方向又迈进了坚实的一步。

人工智能的长期目标是找到一个算法能在不同领域从一张白纸开始学习,最终超越人类表现。近来,阿尔法狗成为了第一个打败世界围棋冠军的程序。阿尔法狗在树搜索中使用了深度神经网络来评估和选择每一步棋。这些神经网络又是从人类专家的对局中通过监督学习训练得到,然后再用强化学习方法通过自弈进行提高。今天我们介绍一种新算法,只基于强化学习本身,不再依赖于除了博弈(游戏)规则之外的人类数据、指导或者领域知识。让阿尔法狗来当自己的老师:训练一个神经网络来预测阿尔法狗自己每一步的选择和最后谁会取得胜利。这个神经网络提高了树搜索的能力,使得下一次阿尔法狗自弈时下棋更厉害。从一张白纸开始训练,新程序阿尔法狗零取得了超人的表现,在100场比赛中完胜以前的阿尔法狗!

擅长于像专家一样给出决策的监督学习系统让人工智能领域取得了许多亮眼的成绩。然而,专家数据集经常是昂贵,不可靠或者不可用的。哪怕有可靠数据集又可用的时候,它也会给在这种数据上训练出来模型的表现强加上一个天花板。与之相对比,强化学习得出的系统从自己的经验中学习,理论上允许他们超越人类的能力,并且也能应用于缺乏人类专家经验的领域。最近,应用了深度神经网络的强化学习正朝着这个目标快速发展。这些系统在像阿塔利,3D虚拟环境等游戏中实现了超人的表现。

但是在人类文化中的充满挑战的领域,比如说大家都公认为人工智能伟大挑战的围棋,需要在极其巨大的状态搜索空间中精确而玄妙的前瞻性果,之前的通用学习方法都没有达到人类下棋水平。阿尔法狗是第一个在围棋中实现超人表现的程序。已经发布的版本,我们称之为阿尔法狗凡,2015年10月打败了欧洲冠军Fan Hui。阿尔法狗凡用到了2个深度神经网络:一个策略网络用于输出下一步棋的概率分布,一个价值网络用于评估每一步可能的棋的价值。策略网络一开始用监督学习训练,能精确的预测每一步专家棋,接下来用基于策略梯度的强化学习方法来提高。价值网络通过策略网络的自弈来训练,并用于预测每一局自弈的胜负。当训练结束时,将2个网络与蒙特卡洛树搜索(MCTS)结合来提供前瞻性搜索,用策略网络把搜索范围缩小到较高概率的棋,并利用价值网络(快速走子,结合蒙特卡洛走子)来评估搜索树的节点价值。之后的版本,阿尔法狗李,用了相似的训练方法(详见方法篇),然后在2016年3月打败了赢得18次国际赛事的李世石。

我们这次的程序,阿尔法狗零,对比阿尔法狗凡和阿尔法狗李在几个重要的方面都有了明显不同。第一点也是最重要的一点,只通过自弈的强化学习训练,从随机走子开始,没有人类监督或者使用人类数据。第二,只用围棋黑白子的盘面作为输入特征。第三,不同于之前的价值网络和策略网络分开,只使用一个神经网络。最后,用了更简单的树搜索,该树搜索只基于前述的单个神经网络来评估棋子和抽样棋步,而没有涉及任何蒙特卡洛快速走子。为了达成这些结果,我们介绍一个新的算法,该算法在训练循环中运用了前瞻性搜索,让训练拥有更快的提升速度和精准稳定的学习。(学习曲线更陡峭,但是单位方差更小,且方差的导数恒定)更多在搜索算法技术上的不同,训练过程和网络架构将在方法篇章节中讲到。

【阿尔法狗零中的强化学习】

我们新的方法用到了一个带参数向量fθ的深度神经网络 。这个神经网络获取盘面位置和历史信息的表达 s 来作为输入,然后输出棋步的概率分布和盘面价值, 。棋步的概率向量用p 来表示选择每一步 a 的概率(包括虚着),p(a)=Pr(a|s) 。价值v是一个标量价值,评估当前选手从盘面 s 获胜的概率。这个神经网络同时将网络和价值网络整合到了同一个架构中。很多个用了卷积,Batch Normalization和RelU的残差网络模块构成了该神经网络(详见方法篇)。

阿尔法狗零中的神经网络是用一个新强化学习算法通过自我博弈来训练得到的。在每一个盘面状态s,按照神经网络fθ执行一次MCTS搜索。这个MCTS搜索输出每一步可行棋的可能性π。MCTS搜索得出的概率所选择的棋步通常比直接用神经网络算出的概率p所选的棋步强;因此,MCTS也可以看做是一个强大的策略提升算子。自弈中的搜索——用提升的基于MCTS策略来选择棋步,然后用胜者z来作为价值的一个样本——可以看作是一个强大的策略评估算子。我们强化学习算法的主要想法就是在策略迭代过程中重复使用这些搜索算子:神经网络参数的更新使得其所预测的可行棋概率分布和盘面价值更接近用蒙特卡洛方法提升过后的概率分布和盘面价值(π,z);这些新参数用于下一轮自我博弈使得搜索也更强。

图1展示了自弈(self-play)训练的流程图。 

f_818ae278c56fd41a64c1b882d574956c.png

MCTS用神经网络 来指导它的模拟(见图2)。搜索树中的每一条边(s,a)存储一个先验概率P(s,a),访问次数N(s,a)和一个行为价值Q(s,a)。每一次模拟都从根节点状态开始,然后迭代的选择棋步来最大化置信度上界Q(s,a)+U(s,a),其中U(s,a)正比于P(s,a)/(1+N(s,a)),直到遇到一个叶节点(即终止状态)。这个叶节点的位置只被网络访问和评估一次就可以获取先验概率和价值, 每一条边(s,a)经过的时候都要更新增加它的访问次数N(s,a),然后要将行为价值更新为多次模拟的平均值, ,其中s,a->s’表示一次模拟从状态s采取a行为后最终到达s’状态。

f_15a46589362e63e4b2164f96ba19dfce.png

MCTS可以看成是在给定网络参数θ和根状态s的情况下,计算得到概率分布f_5b4c4e2c2e1b953d43ebf152010bf344.png 来建议下一步走棋,该概率分布正比于每一步访问次数的指数函数,f_2ae51e2f518b051822e48e82705bdfc0.png,其中τ是一个温度参数。
神经网络的训练是通过自弈的强化学习算法,用MCTS来走每一步。首先,随机初始化这个神经网络的权重θo。在每一次接下来的迭代i≥1时,获取自弈的游戏(图1a)。在每一个时刻t,用之前迭代的神经网络f_dca8073c53657d71f10a370df0c77903.png执行一次MCTS搜索,f_b537af9a5b924fb2078d4477df660e9e.png,通过采样搜索概率 来走一步棋。一局游戏的终结时刻T定义为,当双方玩家都使用虚着时,当搜索值低于一个给定的阀值时,或者当游戏长度超过最大长度限制时;这局游戏之后被评分给出一个最后的奖励f_a9ae65d989fe880fd9c99f7b953f23ef.png(详见于方法篇),每个时刻t的数据保存为 ,其中f_72870ae0556d802b34deecc6383e5747.png正负号取决于根据当前时刻t玩家的视角。在并行图(图1b)中,新网络参数θi是从上一轮自我博弈的迭代的所有时刻正态分布取样数据(s,π,z)训练得到的。该神经网络的调参目标是最小化预测价值v和实际价值z的误差,最大化网络预测棋步概率分布p和搜索概率分布π之间的相似度(一般度量相似度,用KL散度,或者交叉熵,这里采用交叉熵)。特别的,网络参数θ用梯度下降调整,损失函数是总均方误差加上交叉熵损失,见下式:

f_9b914fba86c89b4580aff3697e4aad4a.png

上式中c是一个用来控制L2正则程度的参数(为了防止过拟合),称为正则系数。

【阿尔法狗零中的经验分析】

我们用了强化学习流程来训练阿尔法狗零。整个训练过程大约用了3天,从完全随机行为开始,后续的过程中没有人类的干预。整个训练过程中,一共对弈了4.9百万局,每次MCTS用了1600次模拟,大约每步计算耗时0.4秒。每一代参数的更新用了七十万个mini-batch,每个mini-batch包含2048个盘面状态。所采用的神经网络用了20个残差模块(详见方法篇)。

f_e16fb6b81e0e56d6494620b7a9a93e47.png

图3a展示了阿尔法狗零在训练期间的Elo曲线。学习过程非常的平滑,没有之前文献中提到的振荡和严重遗忘的现象。令人惊奇的是,阿尔法狗零只用了36小时的训练,其表现就超过了阿尔法狗李。与之形成鲜明对比的是,阿尔法狗李的训练用了好几个月。

当训练了72小时后,我们用当时打败李世石的版本来做了评价验证,棋局时长限制为2小时,其他限制也跟当时一模一样(具体见方法篇)。阿尔法狗零只用了一台有4个TPU的机器,阿尔法狗李当时训练的时候用了很多机器分布式训练,用了48个TPU。最终结果是,阿尔法狗零100比0完胜阿尔法狗李(详见英文原版中扩展数据图1和补充信息)。

为了评价自弈学习相较从人类数据学习的优点,我们训练了第二个神经网络(用了同样的架构)在KGS服务器数据集上预测专家走棋;得出了相较于之前的工作(参看英文原版扩展数据表格1,2中之前和现在的结果)也位于世界前沿的成果。监督学习在初始表现中更好,而且更擅长预测人类专家的棋步(图3)。必须一提,尽管监督学习实现了更高的预测准确度,自弈学习出来的程序在总体上表现更好,在最初24小时的训练中就能打败用人类数据训练出来的程序。似乎可以得出这样一个假设,阿尔法狗零可能学习的是和人类截然不同的策略。

为了区分是架构的贡献还是算法的贡献,我们比较了阿尔法狗零架构和阿尔法狗李架构的表现(见图4)。我们创建了4个神经网络,每一个只用到阿尔法狗李中的策略网络或价值网络,或者像阿尔法狗零一样结合策略网络和价值网络;然后要么用阿尔法狗李的卷积网络架构,要么用阿尔法狗零的残差网络架构。

每个网络都按最小化同一个损失函数(式子(1))来训练,固定使用阿尔法狗零自弈训练72小时之后的自弈数据集。使用残差网络时,获得了更高的预测准确度,阿尔法狗获得了更小的误差以及提升了超过600Elo的表现。策略和价值网络结合得到的网络稍微降低了一点棋步预测准确度,但是降低了价值函数的误差同时又提升了阿尔法狗额外的600Elo表现。取得这些成果,一部分是因为提高了计算效率,但是更重要的是只用了一个神经网络来提取特征,然后都用这些特征来得出预测结果。

f_01234274a58a05944ebc272121166275.png

本篇文章我们从强化学习和经验分析的方面介绍阿尔法狗零,下篇文章我们将持续更深入地让您了解阿尔法狗零实现原理,请持续关注!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK