CNET科技行者AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

  • 分享文章到微信

    扫一扫
    分享文章到微信

  • 关注官方公众号-科技行者

    扫一扫
    关注官方公众号
    科技行者

我们将详细介绍AlphaGo是什么以及它的工作原理。

来源:科技行者 2018年3月16日

关键字:AlphaGo 谷歌 围棋 人工智能

这篇文章的主角是AlphaGo,谷歌DeepMind团队开发出的围棋AI。其凭借着2016年击败全球顶尖棋手李世石的壮举而广受瞩目。围棋是一种古老的棋类游戏,每一步都存在诸多选择,因此接下来的落子位置很参议会预测——要求对弈棋手拥有强大的直觉与抽象思维能力。正因为如此,人们长久以来一直认为只有人类擅长下围棋。大多数研究人员甚至认定,还需要数十年才会出现真正具备这种思考能力的AI。但如今距离AlphaGo对李世石的比赛已经过去了两年(3月8日至3月15日),而本篇文章正是为了纪念这个伟大的日子!

不过更可怕的是,AlphaGo并没有停止自己的前进脚步。8个月之后,它在某围棋网站上以“Master”为名与全球各地的冠军棋手进行了60盘职业对弈,且拿下全胜成绩。

这当然是人工智能领域的一项巨大成就,并在全球引起了一股新的讨论热潮——我们到底该对人工智能的发展速度感到兴奋,还是担心?

今天,我们将以DeepMind在《自然》杂志上发表的原始研究论文作为基础,逐段对其内容进行简单清晰的解读,详细介绍AlphaGo是什么以及它的工作原理。我也希望大家能够在阅读本文之后,不再被媒体头条抛出的耸人听闻的标题所恐吓,而真正对关于人工智能的发展感到振奋。

当然,你不需要掌握围棋技巧,也同样可以理解本文的观点。事实上,我本人只读过网络百科上的一丁点围棋说明。相反,我其实会使用基础的国际象棋示例来解释相关算法。大家只需要了解双人棋类游戏的基本规则即可——每位选手轮流行动,最后将产生一位赢家。除此之外,你不需要了解任何物理学或高数知识。

这样尽可能降低入门门槛,是为了能让刚刚接触机器学习或者神经网络的朋友更容易接受。本文也刻意降低了表述复杂度,也是希望大家能把注意力尽量集中在内容本身。

内容摘要

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

众所周知,AlphaGo项目的目标在于建立一款AI程序,并保证其能够与世界顶级人类选手在围棋领域一较高下。

为了理解围棋带来的挑战,我们首先聊聊与之类似的另一种棋类运动——国际象棋。早在上世纪九十年代初,IBM公司出打造出深蓝计算机,其在国际象棋比赛中击败了伟大的世界冠军加里·卡斯帕罗夫。那么,深蓝是如何做到这一点的?

事实上,深蓝使用了一种非常“暴力”的作法。在游戏的每一步,深蓝都会对所有可能作出的合理棋步作出考量,并沿着每种棋步探索以分析未来的局势变化。在这样的前瞻性分析之下,计算结果很快形成一种千变万化的巨大决策树。在此之后,深蓝会沿着树状结构返回原点,观察哪些棋步最可能带来积极的结果。然而,何谓“积极的结果”?事实上,众多优秀的国际象棋棋手为深蓝精心设计出了国际象棋策略,旨在帮助其作出更好的决策——举例来说,是决定保护国王,还是在盘面的其它位置获得优势?他们针对此类目的构建起特定的“评估算法”,从而比较不同盘面位置的优势或劣势权重(IBM公司将专家们的象棋策略以硬编码形式引入该评估函数)。最终,深蓝会据此选择出经过精心计算的棋步。在接下来的回合中,整个过程再次重复。

这意味着,深蓝在每一步之前都会考量数百万个理论位置。因此,深蓝最令人印象深刻的表现并不在于人工智能软件层面,而体现在其硬件之上——IBM公司宣称,深蓝是当时市场上最为强大的计算机之一。其每秒能够计算2亿个盘面位置。

现在让我们回到围棋方面。围棋显然更为开放,因此如果在这里重复深蓝的战略,将根本无法获得理想效果。由于每个棋步都拥有过多可选择的位置,因此计算机根本无法涵盖这么多潜在的可能性。举例来说,在国际象棋的开局当中,只有20种可能的下法; 但在围棋方面,先手选手将拥有361个可能的落子点——而且这种选择范围在整个对弈过程中一直非常广泛。

这就是所谓“巨大搜索空间”。而且在围棋当中,判断某个特定盘面位置的有利或不利权重并没那么容易——在官子阶段,双方甚至还需要再排布一阵才能最终确定谁才是胜利者。但有没有一种神奇的方法能够让计算机在围棋领域有所建树?答案是肯定的,深度学习能够完成这项艰巨的任务!

因此在本次研究当中,DeepMind方面利用神经网络来完成以下两项任务。他们训练了一套“策略神经网络(policy neural network)”以决定哪些才是特定盘面位置当中最为明智的选项(这类似于遵循某种直观策略选择移动位置)。此外,他们还训练了一套“估值神经网络(value neural network)”以估算特定盘面布局对选手的有利程度(或者说,下在这个位置对赢得游戏这一目标的实际影响)。他们首先使用人类棋谱对这些神经网络进行训练(也就是最传统但也非常有效的监督式学习方法)。经历了这样的训练,我们的人工智能已经可以在一定程度上模仿人类的下棋方式——这时的它,就像一位菜鸟级人类选手。而后,为了进一步训练神经网络,DeepMind方面让AI与自己进行数百万次对弈(也就是“强化学习”的部分)。如此一来,凭借着更为充分的练习,AI的棋力得到了极大提升。

凭借这两套网络,DeepMind的人工智能方案就足以拥有等同于此前最先进的围棋程序的棋艺水平。二者的区别在于,原有程序使用了此前更为流行的预置游戏算法,即“蒙特卡洛树搜索(Monte Carlo Tree Search,简称MCTS)”,我们将在稍后具体进行介绍。

不过很明显,到这里我们还没有谈到真正的核心。DeepMind的人工智能方案绝不仅仅依赖于策略与估值网络——其并非利用这两套网络来替代蒙特卡洛树搜索; 相反,其使用神经网络以进一步提升MCTS算法的成效。实际结果也确实令人满意——MCTS的表现达到了超人的高度。这种经过改进的MCTS变种正是“AlphaGo”,其成功击败了李世石,并成为人工智能发展历史上最大的突破之一。

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

下面我们真正开始对论文内容的理解,首先是其中使用的游戏策略——蒙特卡洛树搜索算法。其实说到这里,大家对其已经拥有了基本认识,足以顺利理解本篇文章的内容。但如果你希望深入了解更多细节,请参阅以下优秀的视频与博客文章:

1. Udacity提供的系列短片(https://www.youtube.com/watch?v=onBYsen2_eA)

2. Jeff Bradberry的MCTS解读 (https://jeffbradberry.com/posts/2015/09/intro-to-monte-carlo-tree-search/)

3. Fullstack Academy提供的MCTS教程(https://www.youtube.com/watch?v=Fbs4lnGLS8M)

下面让我们回想一下本文的第一段内容。上述提到,深蓝计算机是如何在国际象棋的每一步当中构建起包含数以百万计盘面位置与棋步的决策树——计算机需要进行模拟、观察并比较每一种可能的落点——这是一种简单且非常直接的方法,如果一般的软件工程师必须要设计出一种棋类程序,那么他们很可能会选择类似的解决方案。

但让我们想想,人类是怎样下棋的?假设目前您身处比赛中的特定阶段。根据游戏规则,你可以作出十几种不同的选择——在此处移动棋子或者在那里移动皇后等等。然而,你真的会在脑袋里列出所有能走的棋步,并从这份长长的清单中作出选择吗?不不,你会“直观地”将可行范围缩小至少数几种关键性棋步(这里假定您提出了3种明智的棋步),而后思考如果选择其中某一种,那么棋盘上的局势将发生怎样的转变。对于其中每一种棋步,你可能需要15到20秒的时间进行考量——但请注意,在这15秒内,我们并不是在非常精确地推衍接下来的交锋与变化。事实上,人类往往会在未经太多思考的情况下“抛出”一些由直觉引导的选择结果(当然,优秀的选手会比普通选手想得更远更深)。之所以这样做,是因为你的时间有限,而且无法准确预测你的对手会勾勒出怎样的后续应对策略。因此,你只能让直觉引导自己。我将这一部分思考过程称为“铺展”,请大家在后文中注意这一点。

在完成了对几种明智棋步的“铺展”之后,你最终决定放弃这种令人头痛的思考,直接下出你认为最科学的一步。

在此之后,对手也会作出对应的回应。这一步可能早在你的预料当中,这意味着你对于下一步要做的事情更具信心——换言之,不必耗费太多时间进行后续“铺展”。或者,也可能你的对手下出了一手妙招,导致你被迫回防并不得不更谨慎地思考下一步选择。

游戏就这样持续进行,而随着局势的推进,你将能够更轻松地预测每步棋的结果,铺展耗时也将相应缩短。

之所以说了这么多,是希望以较为浅显的方式为大家讲述MCTS算法的作用——它通过反复构建棋步与位置“搜索树”以模拟上述思考过程。但其创新之处在于,MCTS算法不会在每个位置(与深蓝有所不同)都进行潜在棋步推衍; 相反,其会更智能地选择一小组合理棋步并加以探索。在探索过程中,它会“铺展”这些棋步引发的局势变化,并根据计算出的结果对其加以比较。

(好了,只要理解了以上内容,本文的阅读就算基本达标。)

现在,让我们回到论文本身。围棋是一种“完美信息游戏”。也就是说,从理论层面讲,无论您身处这类游戏的哪个阶段(即使刚刚走出一、两步),大家都有可能准确猜出最终谁输谁赢(假定两位选手都会以‘完美’的方式下完整盘)。我不知道是谁提出了这项基本理论,但作为本次研究项目的前提性假设,其确实非常重要。

换句话来说,在游戏状态下,我们将可通过一条函数v*(s)来预测最终结果——例如你赢得这盘对弈的概率,区间为0到1。DeepMind的研究人员将其称为“最优估值函数”。由于某些盘面位置比其它盘面位置更有可能带来获胜结果,因此前者可能比其它位置拥有“更高估值”。让我再强调一次,估值=赢得比赛的0到1间概率值。

但先别急——假设一位名叫Foma的女孩坐在您的身边,在每下一步棋时,她都会告诉您这次决定会导致您胜利还是失败。“你赢了……你办理了……不,还是办理了……”我认为这样的提示对您的棋步选择并没有多大帮助,而且非常烦人。相反,真正能够帮得上忙的其实应该是勾勒出所有可能的棋步树,以及这些棋步将会引发的状态——而后,Foma会告诉你在整个树状结构中,哪些状态会将你推向胜利,而哪些会招致失败。突然之间,Foma就成了您的完美伙伴——而非讨厌的插嘴者。在这里,Foma将作为您的最优估值函数v*(s)。此前,人们一直认为像围棋这样的游戏,不可能拥有Foma这样的准确估值函数——因为其中存在着太多不确定性。

然而,即使您真的拥有了Foma,她对所有可能盘面位置的估算在现实对弈当中恐怕也无法奏效。因为在国际象棋或围棋这样的游戏当中,正如之前所提到,即使是想要预测七到八步之后的整体局势,过多的可能性选择也会令Foma需要耗费大量时间才能得出分析结果。

也就是说,单凭Foma还远远不够。大家还需要进一步缩小明智棋步的具体范围,并据此推衍接下来的局势走向。那么我们的程序该如何做到这一点?Lusha在这里闪亮登场。Lusha是一位拥有相当技巧的国际象棋选手加热心人,她曾花费数十年时间观看国际象棋大师赛。她可以观看你的盘面位置,快速思考您所能做出的全部合理选择,并告诉你专业选手作出各种判断的可能性。因此,如果您在某一特定时间点上拥有50种可能的棋步选项,Lusha会告诉你职业棋手选择每种选项的具体概率。当然,其中一些明智的棋步会拥有更高的概率,而其它无意义的棋步则概率极低。她就是你的策略函数,p(as)。对于给定状态s,她能够为您提供专业选手可能作出的全部选择的对应概率。

接下来,你可以在Lusha的帮助下寻找更为合理的棋步选项,而Foma则会告诉我们这些棋步对对弈结果的实际影响。在这种情况下,大家可以选择由Foma与Lusha协商给出落子建议,或者也可以先由Lusha提供建议,再由Foma对结果作出评估。接下来,挑选其中一些选项进行后续影响分析,再由Foma与Lusha继续进行预测指导——通过这种方式,我们将能够更为高效地掌握盘面局势走向。而这,正是所谓“减少搜索空间”的实际意义所在。利用估值函数(Foma)预测结果,利用策略函数(Lusha)提供棋艺层面的概率取舍以缩小值得进一步探索的落子范围。这套体系就是所谓“蒙特卡洛铺展(Monte Carlo rollouts)”。接下来,当重新回到当前棋步时,你将能够得到各种选项所对应的平均估值结论,并据此找到最适合的落子位置。不过到这里,其在围棋水平方面仍然表现不佳——因为这两种函数的实际指导能力还比较孱弱。

不过没关系。

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

首先进行具体解释。在MCTS当中,起步阶段的Foma与Lusha的功能还不够精熟。但对弈数量越多,二者在预测可靠结果与落子位置方面就越强大。论文指出,“缩小高可能性棋步的具体范围”其实是种较为复杂的表达,“Lusha实际上是通过提供专业棋手的落子概率帮助缩小需要考量的选项。以往的工作主要利用这种技术在策略函数较为简单的情况下,提供强大且成熟的AI选手解决方案。

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

是的,卷积神经网络非常适合图像处理类任务。而且由于神经网络需要特定输入内容并给出对应的输出结果,所以其在本质上其实也相当于一条函数。这意味着大家可以利用神经网络来充当一种高度复杂的函数。从这个思路出发,大家可以将其传递一份盘面位置图像,并由神经网络自行判断当前局势。如此一来,创建出的神经网络将拥有非常准确的策略与估值能力。

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

下面,我们将讨论Foma与Luha的具体训练方式。为了训练策略网络(负责预测专业棋手的落子位置判断),我们只需要将人类对弈棋谱作为素材,并利用其进行传统的监督式学习即可。

另外,我们还希望能够构建起一套略有不同的策略网络版本; 其应该更小巧且速度更快。可以想象,如果Lusha的经验非常丰富,那么其用于处理每个位置的时间也将相应延长。在这种情况下,虽然她能够更好地缩小合理落子范围,但由于整个过程会不断重复,因此耗费时间可能会过长。所以,我们需要为这项工作训练出一套速度更快的策略网络(我们将其称为……Lusha的弟弟,Jerry?姑且就这么称呼吧)。接下来,一旦利用人类选手的数据训练出满足需求的策略网络,我们就可以让Lusha在围棋棋盘上进行自我对抗以获得更多练习机会。这正是强化学习的体现——构建起更强大的策略网络版本。

此后,我们需要训练Foma进行估值:确定获胜的概率。人工智能将在模拟环境当中反复进行自我练习,每一次观察其最终綶,并从错误当中学习到更好、更先进的经验。

受到篇幅所限,这里我就不具体介绍网络的训练方式了。您可以在本文末尾提供的论文链接中(参阅‘方法’部分)了解更多细节信息。事实上,这篇论文的主要目的并非说明研究人员如何在这些神经网络之上进行强化学习。DeepMind在之前发表的一篇文章中,已经谈到过他们如何利用强化学习技术教会AI掌握雅达利游戏。因此在本文当中,我只在内容摘要部分稍微提到一点相关内容。这里再次强调,AlphaGo的最大创新在于DeepMind研究人员们利用强化学习加神经网络来改进已经广泛流行的游戏算法MCTS。强化学习确实是一种很酷的工具,研究人员们在常规监督式训练之后利用强化学习实现策略与估值函数神经网络的微调。但是,这篇研究论文的主要作用在于证明这款工具的功能多样性与优秀性,而非教导大家如何实际使用。

好了,现在大家对AlphaGo应该已经建立起比较完整的印象。下面,我们会进一步深入探讨之前提到的各个议题。当然,其中不可避免要涉及一些看似“危险”的数学公式及表达式,但相信我,它们都很简单(我会作出详尽解释)。因此,请放松心态。

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

所以,第一步就是训练我们的策略神经网络(Lusha),其负责预测专业棋手可能作出的判断。神经网络的目标是让人工智能发挥类似于人类专家的作用。这套卷积神经网络(正如之前提到,这种特殊的神经网络非常擅长图像处理)采用电路板式布局以简化图像内容。我们可以向该网络架构的各个层中添加“整流器非线性”,其将赋予整体网络学习更复杂技能的能力。如果大家以前曾经训练过神经网络,可能对“ReLU”层不会感到陌生。这里我们同样使用ReLU层。

这里的训练数据以随机盘面位置对的形式存在,而标签则为人类所作出的落子选择。这部分训练采用常规的监督式学习。

在这里,DeepMind使用了“随机梯度ASCENT”。这是一种反向传播算法。通过这种方式,我们希望最大程度发挥奖励函数的作用。奖励函数代表的是人类专家作出不同行动预测的概率; 我们的目标则是尽可能提升这一概率。但是,在实际网络训练当中,我们一般只需要让丢失函数尽可能降低即可——这在实质上是缩小预测结果与实际标签之间的误差/差异,也就是所谓梯度下降。在研究论文的实际实现部分,他们确实使用了常规的梯度下降方法。大家可以轻松找到与奖励函数相对的丢失函数,并通过尽可能降低后者最大程度提升前者。

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

这套策略网络拥有13层,我们将其称为“SL策略(SL policy)”网络(SL代表监督式学习)。其使用的数据来自某个高人气网站,有数百万用户在这里进行围棋对弈。那么,SL策略网络的实际表现如何?

首先,其围棋水平要高于其他研究人员的早期开发成果。至于“铺展策略”方面,大家可能还记得之前我们曾提到,研究人员们训练出一套速度更快的Lusha版本——我们称其为Jerry。在这里,Jerry负责发挥作用。如大家所看到,Jerry的准确度只有Lusha的一半,但速度却快了数千倍!当我们应用MCTS算法时,Jerry将帮助我们更快地完成对后续局势变化的模拟。

要理解下一节的内容,大家可以不了解强化学习,但需要认同一项前提——即我所作出的阐述真实有效。如果您希望探究更多细节并加以尝试,可能需要首先阅读一些关于强化学习的背景信息。

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密 

一旦拥有了这套SL网络,接下来要做的就是利用人类选手的判断数据以监督式方式对其进行训练。在此之后,就是由其自我对弈以不断磨练判断能力。具体实现方法也很简单——选择SL策略网络,将其保存在一个文件中,而后再复制一份副本。

然后,你可以利用强化学习对其进行微调。如此一来,这套网络就能够自我对抗并从结果中学习经验。

不过这样的训练方式其实存在一个问题。

如果其只在练习中对抗同一个对手,且该对手也一直贯穿训练始终,那么可能无法获得新的学习经验。换言之,该网络所学到的只是如何击败对方,而非真正掌握围棋的奥秘。没错,这就是过度拟合问题:你在对抗某一特定对手时表现出色,但却未必拥有对付各类选手的能力。那么,我们该如何解决这个问题?

答案很简单,当我们对一套神经网络进行微调时,其就会变成另一个风格上略有不同的选手。如此一来,我们可以将各个版本的神经网络保存在一份“选手”列表当中,并确保每位选手的表现都有所区别。很好,在接下来的神经网络训练过程中,我们可以从列表中随机选择不同的版本作为对抗对象。它们虽然源自同一套神经网络,但表现却略有区别。而且训练得越多,选手的版本也就越多。问题就此解决!

在这样的训练过程中,惟一指导训练过程的只有最终目标 ——即赢得比赛。到这里,我们已经不再需要对网络进行针对性训练,例如捕捉盘面上的更多位置等。我们只需要为其提供所有可能的合理选项,并下面目标“你必须获胜”。也正因为如此,强化学习才如此强大——其能够被用于训练任何游戏策略或估值网络,而绝不仅限于围棋。

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

到这里,DeepMind的研究人员们测试了这套RL策略网络的准确性——不使用任何MCTS算法。之前我们曾经提到,这套网络能够直接获取盘面位置并思考专业棋手的判断概率。到这里,它已经能够独立进行对弈了。结果是,强化学习微调后的网络战胜了仅利用人类棋谱进行训练的监督学习网络。不仅如此,它还能够战胜其它强大的围棋程序。

必须强调的是,即使是在训练这套强化学习策略网络之前,监督学习策略网络也已经拥有了超越现有技术的对弈水平——而如今我们又更进一步!更重要的是,我们甚至不需要使用估值网络这类其它辅助方案。

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

到这里,我们终于完成了对Lusha的训练。接下来重新回到Foma这边,它代表的是最优估值函数v*(s)——即只有两位选手皆完美执行其预期内的落子判断时,她才能提供在目前盘面局势下获得优胜的可能性。很明显,为了训练神经网络充当我们的估值函数,这里需要一位完美的对手……遗憾的是,目前我们还没有这样一位对手。因此,我们派出了最强大的选手——RL策略网络。

其会提取当前盘面状态state_s,而后输出您赢得本场对弈的概率。每一项游戏状态都将充当数据样本,并以标签的形式用于注释游戏结果。因此,在经过 50次落子之后,我们就获得了50份估值预测样本。

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

但这种作法实际上非常幼稚——毕竟我们不可能也不应该将对弈中的全部50次落子全部添加到数据集当中。

换言之,我们必须认真选择训练数据集以避免过度拟合的发生。由于每次落子都会与一个新位置对应,因此围棋中的每一次落子都非常相似。如果将所有落子选择的状态都添加到具有相同标签的训练数据当中,那么其内容将存在大量“重复”,并必然导致过度拟合。为了防止这种情况的发生,我们只能选择那些更具代表性的游戏状态。举例来说,我们可以只选择对弈过程中的五个状态——而非全部50个状态——添加到训练数据集内。DeepMind从3000万盘不同对弈过程中提取了3000万种状态,从而减少重复数据的出现可能性。事实证明,这种作法效果极佳!

现在,我们谈谈概念: 我们可以通过两种方法评估盘面位置的价值。第一是选择最佳估值函数(即之前训练完成的函数)。另一种则是使用现有策略(Lusha)直接推导盘面局势,并预测本次落子带来的最终结果。很明显,真正的对弈很少会完全按照我们的计划推进。但DeepMind仍然比较了这两种方法的实际效果。此外,大家也可以将这两种选项混合使用。稍后,我们将了解这一“混合参数”,请各位记住这个重要概念。

在这里,我们的一套神经网络会尝试给出最近似的最优估值函数,其效果甚至优于经过数千次模拟而得出的铺展策略!Foma在这里的表现真的超赞。在另一方面,DeepMind方面也尝试使用了准确度翻倍但速度极慢的Lusha RL策略,其需要进行成千上万次模拟以得出结论——最终效果略好于Foma。但也只是略好,而速度却慢了太多。因此,Foma在这场比拼中胜出,她证明自己拥有着不可替代的价值。

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

现在,我们已经完成了策略与估值函数的训练,接下来可以将其与MCTS结合起来,从而带来我们的前任世界冠军、大师中的大量、一个世代的突破、体重268磅的……Alphaaaa GO!

在本节中,大家应该对MCTS算法的工作原理拥有更为深入的理解。请别担心,迄今为止提到的全部内容应该足以支持您顺利掌握相关内容。惟一需要注意的是我们如何使用策略概率与估值方法。我们在铺展过程中将二者结合在一起,从而缩小每次落子时需要探索的具体范围。Q(s,a)表示估值函数,u(s,a)则代表该位置的已保存概率。下面我将具体作出解释。

另外需要注意的是,策略网络是使用监督学习来预测专业棋手落子判断的。其不仅能够提供概率最高的落子选项,同时也会提供各个选项的具体概率。这一概率可被存储在各个落子判断当中。在这里,DeepMind方面将其称为“先验概率”,并利用其选择有必要进行探索的落子选项。基本上,要决定是否需要对某一特定落子选项进行探索,我们需要考虑以下两点:首先,通过这步棋,我们有多大概率获胜?是的,我们已经拥有了能够回答这个问题的“估值网络”。第二个问题是,专业棋手有多大概率会考虑这一棋步?(如果专业棋手不太可能考虑这步棋,那么我们为什么要浪费时间进行探索?这部分结论由策略网络负责提供。)

接下来,让我们聊聊“混合参数”。如前文所述,为了评估各个盘面位置,我们有两种选择:其一,直接利用一直用于评估盘面状态的估值网络。第二,我们也可以使用现有策略网络快速推导对弈情况(假定对方选手也采取符合预测的下法),从而判断我们是输还是赢。一般来讲,估值函数的效果要比常规铺展更好。在这里,将二者结合将能够提供每项预测的权重估值,例如五五开、四六开等等。如果大家以百分比形式对估值X进行处理,则另一项就是(100-X)%。这就是混合参数的意义所在。后文中将对其实际效果进行说明。

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

在每一次铺展之后,大家都可以利用在模拟当中获得的任何信息对搜索树进行更新,从而进一步提升未来模拟的明智度。在所有模拟结束之后,您从中选择最佳落子选项即可。

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

下面来看有趣的结论!

大家应该还记得,RL微调策略神经网络拥有比SL人力训练策略神经网络更好的判断效果。但在将其添加至AlphaGo的MCTS算法中时,使用人工训练的神经网络反过来超越了微调神经网络。与此同时,在估值函数(可以理解成以无限趋近方式提供完美判断)方面,利用RL策略进行Foma训练能够带来超越使用SL策略的实际效果。

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

“执行上述评估需要耗费大量计算资源,我们必须拿出压箱底的硬货才能搞定这些该死的程序。”

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

但DeepMind的言下之意其实是……

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

“吼吼,跟我们的程序相比,以前的那些围棋程序简直就是唐氏儿童级别。”

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

这里再说回“混合参数(mixing parameter)”。在评估位置时,对估值函数及铺展二者的重视程度要高于其中任意一者。其余部分是DeepMind方面的深入解释,可以看到其中昭示了一项有趣的结论!

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密

请再读一次标有红色下划线的句子。相信大家已经能够理解,这句话基本就是对整个研究项目的全面总结。

AlphaGo对局李世石两周年纪:AI程序攻克围棋的算法秘密


最新文章
热门标签