“拨开迷雾看人工智能”-MasterGo中的蒙特卡洛算法

“拨开迷雾看人工智能”-MasterGo中的蒙特卡洛算法

作者:杨左使

2017年初,升级版的Google AlphaGo Master连胜围棋60盘,战败了全世界的所有顶尖围棋选手,各大互联网媒体的头条争相报道。


除了神经网络外,MasterGo中还使用了蒙特卡洛算法。接下来,我们为你简单介绍一下这个“神奇”的算法。


什么是蒙特卡洛算法?

通俗的解释:

假设你需要从1000个苹果中挑出最大的一个苹果,你可以闭着眼睛每次只拿一个,不限制挑选次数。于是,你开始随机的逐一比较,每次比较后留下大的苹果,如此循环往复,拿的次数越多,挑出最大苹果的可能性也就越大。但除非你把1000个苹果都挑一遍,否则你无法确定最终挑出来的就是最大的苹果。

简而言之,在蒙特卡洛算法中,样本越多越能找到最佳的解决办法,不过不能保证是最好的方法,因为如果不是1000个苹果里挑选而是有10000个苹果的话,或许能找到更大的。

与蒙特卡洛算法相对是拉斯维加斯算法:

举例来说:假设你需要开一把锁,有1000把钥匙可供选择,但只有1把能把锁打开。于是你每次随机拿1把钥匙去尝试,直到打开为止。尝试的次数越多,打开锁的机会就越大,但在打开之前,那些错的钥匙都是没有用的。

所以,拉斯维加斯算法要求尽量找到最好的解决办法,但是未必能找到。假设1000把钥匙中,不能有任何一把打开锁,真正的钥匙是第1001把,但是在样本中并没有第1001把,于是拉斯维加斯算法就不能找到打开锁的钥匙。


MasterGo中的蒙特卡洛算法

“机器人”与围棋高手的对决,曾被称为人工智能的“阿波罗计划”,因为围棋有19×19=361个方格,棋手的每一步棋都有361种选择,一局150个回合出现的选择多达10170种。难度对于人工智能来说非常大。

传统的棋类软件,包括IBM战胜世界国际象棋冠军的深蓝计算机,一般都是采用暴力搜索,对所有可能的结果进行搜索。这种方法在象棋、跳棋等方面具有一定可实现性,但对于围棋就无法实现。

MasterGo则通过蒙特卡洛树搜索算法和策略网络、估值网络这两个深度神经网络合作来完成下棋。策略网络主要用于生成落子策略,在下棋的过程中,它不是考虑自己应该怎么下,而是学习人类的高手会怎么下。也就是说,它会根据输入棋盘当前的一个状态,预测人类下一步棋会下在哪儿,提出最符合人类思维的几种可行的下法然而,策略网络并不知道落子的这步棋到底下得好还是不好,这时候就需要估值网络来发挥作用了。估值网络会为各个可行的下法评估整个盘面的情况,然后给出一个“胜率”,这些值会反馈到蒙特卡洛树搜索算法中,通过反复如上过程推演出“胜率”最高的走法。蒙特卡洛树搜索算法决定了策略网络仅会在“胜率”较高的地方继续推演,这样就可以抛弃某些路线,不用一条道算到黑。

利用这两个工具来分析局面,MasterGo就能判断每种落子策略的优劣,就像人类棋手会判断当前局面以及推断未来的局面一样;在利用蒙特卡洛树搜索算法分析了比如未来20步的情况下,就能判断在哪里下子赢的概率会高。

这就是MasterGo中的蒙特卡洛算法,你看懂了吗?


小结:

蒙特卡洛树搜索算法,是在海量样本中找到最佳解决方案(而非唯一解决方案)的算法;它是Google AlphaGo(Master)的核心之一,其价值在于能够让人工智能的神经网络持续地在“胜率”较高的地方推演棋局(而非暴力搜索),以此大幅降低运算量,并判断在哪里下子赢的概率会高。

杨左使-上海谷歌社区人工智能系列沙龙组织者,资深产品经理

编辑于 2017-04-02

文章被以下专栏收录

    第一时间介绍最新谷歌技术和创新及中国谷歌开发者社区的活动动态。同时欢迎广大开发者、技术爱好者踊跃投稿。日更不偷懒。