关注公众号

关注公众号

手机扫码查看

手机查看

喜欢作者

打赏方式

微信支付微信支付
支付宝支付支付宝支付
×

AI程序攻克围棋的算法秘密(二)

2020.10.05

但让我们想想,人类是怎样下棋的?假设目前您身处比赛中的特定阶段。根据游戏规则,你可以作出十几种不同的选择——在此处移动棋子或者在那里移动皇后等等。然而,你真的会在脑袋里列出所有能走的棋步,并从这份长长的清单中作出选择吗?不不,你会“直观地”将可行范围缩小至少数几种关键性棋步(这里假定您提出了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)”。接下来,当重新回到当前棋步时,你将能够得到各种选项所对应的平均估值结论,并据此找到最适合的落子位置。不过到这里,其在围棋水平方面仍然表现不佳——因为这两种函数的实际指导能力还比较孱弱。

不过没关系。

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

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

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


推荐
热点排行
一周推荐
关闭