AlphaGo对局李世石两周年纪:AI算法的秘密
扫描二维码
随时随地手机看文章
这篇文章的主角是AlphaGo,谷歌DeepMind团队开发出的围棋AI。其凭借着2016年击败全球顶尖棋手李世石的壮举而广受瞩目。围棋是一种古老的棋类游戏,每一步都存在诸多选择,因此接下来的落子位置很参议会预测——要求对弈棋手拥有强大的直觉与抽象思维能力。正因为如此,人们长久以来一直认为只有人类擅长下围棋。大多数研究人员甚至认定,还需要数十年才会出现真正具备这种思考能力的AI。但如今距离AlphaGo对李世石的比赛已经过去了两年(3月8日至3月15日),而本篇文章正是为了纪念这个伟大的日子!
不过更可怕的是,AlphaGo并没有停止自己的前进脚步。8个月之后,它在某围棋网站上以“Master”为名与全球各地的冠军棋手进行了60盘职业对弈,且拿下全胜成绩。
这当然是人工智能领域的一项巨大成就,并在全球引起了一股新的讨论热潮——我们到底该对人工智能的发展速度感到兴奋,还是担心?
今天,我们将以DeepMind在《自然》杂志上发表的原始研究论文作为基础,逐段对其内容进行简单清晰的解读,详细介绍AlphaGo是什么以及它的工作原理。我也希望大家能够在阅读本文之后,不再被媒体头条抛出的耸人听闻的标题所恐吓,而真正对关于人工智能的发展感到振奋。
当然,你不需要掌握围棋技巧,也同样可以理解本文的观点。事实上,我本人只读过网络百科上的一丁点围棋说明。相反,我其实会使用基础的国际象棋示例来解释相关算法。大家只需要了解双人棋类游戏的基本规则即可——每位选手轮流行动,最后将产生一位赢家。除此之外,你不需要了解任何物理学或高数知识。
这样尽可能降低入门门槛,是为了能让刚刚接触机器学习或者神经网络的朋友更容易接受。本文也刻意降低了表述复杂度,也是希望大家能把注意力尽量集中在内容本身。
众所周知,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”,其成功击败了李世石,并成为人工智能发展历史上最大的突破之一。
下面让我们回想一下本文的第一段内容。上述提到,深蓝计算机是如何在国际象棋的每一步当中构建起包含数以百万计盘面位置与棋步的决策树——计算机需要进行模拟、观察并比较每一种可能的落点——这是一种简单且非常直接的方法,如果一般的软件工程师必须要设计出一种棋类程序,那么他们很可能会选择类似的解决方案。
但让我们想想,人类是怎样下棋的?假设目前您身处比赛中的特定阶段。根据游戏规则,你可以作出十几种不同的选择——在此处移动棋子或者在那里移动皇后等等。然而,你真的会在脑袋里列出所有能走的棋步,并从这份长长的清单中作出选择吗?不不,你会“直观地”将可行范围缩小至少数几种关键性棋步(这里假定您提出了3种明智的棋步),而后思考如果选择其中某一种,那么棋盘上的局势将发生怎样的转变。对于其中每一种棋步,你可能需要15到20秒的时间进行考量——但请注意,在这15秒内,我们并不是在非常精确地推衍接下来的交锋与变化。事实上,人类往往会在未经太多思考的情况下“抛出”一些由直觉引导的选择结果(当然,优秀的选手会比普通选手想得更远更深)。之所以这样做,是因为你的时间有限,而且无法准确预测你的对手会勾勒出怎样的后续应对策略。因此,你只能让直觉引导自己。我将这一部分思考过程称为“铺展”,请大家在后文中注意这一点。
在完成了对几种明智棋步的“铺展”之后,你最终决定放弃这种令人头痛的思考,直接下出你认为最科学的一步。
在此之后,对手也会作出对应的回应。这一步可能早在你的预料当中,这意味着你对于下一步要做的事情更具信心——换言之,不必耗费太多时间进行后续“铺展”。或者,也可能你的对手下出了一手妙招,导致你被迫回防并不得不更谨慎地思考下一步选择。
游戏就这样持续进行,而随着局势的推进,你将能够更轻松地预测每步棋的结果,铺展耗时也将相应缩短。
之所以说了这么多,是希望以较为浅显的方式为大家讲述MCTS算法的作用——它通过反复构建棋步与位置“搜索树”以模拟上述思考过程。但其创新之处在于,MCTS算法不会在每个位置(与深蓝有所不同)都进行潜在棋步推衍; 相反,其会更智能地选择一小组合理棋步并加以探索。在探索过程中,它会“铺展”这些棋步引发的局势变化,并根据计算出的结果对其加以比较。
(好了,只要理解了以上内容,本文的阅读就算基本达标。)
现在,让我们回到论文本身。围棋是一种“完美信息游戏”。也就是说,从理论层面讲,无论您身处这类游戏的哪个阶段(即使刚刚走出一、两步),大家都有可能准确猜出最终谁输谁赢(假定两位选手都会以‘完美’的方式下完整盘)。我不知道是谁提出了这项基本理论,但作为本次研究项目的前提性假设,其确实非常重要。