网易体育5月23日报道:

在今天结束的人机对弈第一盘比赛中,柯洁执黑半目负于AlphaGo,由于胜负差距非常微小,许多网友认为AlphaGo领先人类并不多。这里我们从AlphaGo的原理与棋局的进程两方面谈一下AlphaGo只赢了半目的背后究竟意味着什么。

要了解AlphaGo的原理,首先要知道一个叫做蒙特卡洛模拟的东西,蒙特卡洛模拟的是一种在不了解背后规律的情况下,依据大样本的独立事件测量找出近似的最优解,而围棋是一种非常合适的使用蒙特卡洛模拟为基础原理进行程序设计的游戏,蒙特卡洛模拟出来的仍然是概率,所以AlphaGo下围棋的过程可以简单描述为在任一局面下寻找当前胜率最高的一点的过程。

回到比赛中,这盘棋柯洁的败局在左上的战斗结束后就确定了。白棋54花一手后手断的时候,阿尔法狗已经积累了巨大优势。虽然柯洁后半盘拼命追赶最后只输了1/4子。但这1/4子却让柯洁震惊,赛后他甚至说再也不想和机器下棋了,可见AlphaGo在这盘棋给了柯洁多大的震撼和阴影,所以至少从柯洁的口中,他深知自己确实是被吊打了。

而人类围棋理论可不是什么全局胜率,而是实打实的目数,棋盘上的一切得失最后都要量化成具体的目数来衡量,“这个局部白棋亏了2目棋”,“那个局部黑棋一个妙手便宜了1又1/3目”,这种描述在人类对局的讲评中是经常可以看到的。但是目数便宜的多不代表胜率就高,因为追求赢得更多有时候意味着局面的复杂化,复杂化意味着风险。举个通俗的例子:90%赢10目和100%赢1目,AlphaGo一定会选择赢1目的变化,因为胜率更高。

而优势局面下,胜率高往往和行棋简单化,减少变化划等号。换句话说,AlphaGo的算法决定了它在优势局面下,会选择一些简单的、甚至稍微亏损但变化较少,不确定性较少的变化,以求更快达到胜利的重点。

这盘棋左上战斗下完就是白棋明显优势的棋,54断以后白棋开始了稳步收兵,迈向胜利终点的故事,下面我们举几个例子从棋的内容上看一下AlphaGo具体是如何做的:

第一个例子是面对黑棋55点入,白棋下得极其厚实,特别60粘,简直是不给黑棋任何变化的余地,只能扳粘做活。局部黑棋最大限度掏掉了白角,可以说非常满意,但白棋也消除了局部任何的不确定因素,局面大大简化。

第二个例子是右上作战,面对黑棋91刺,白棋没有直接粘上和黑棋战斗,而是柔软的托过,弃掉四路一子,取得边空。这样右上彻底定型,也没有了不确定性。全局唯一的不确定的地方就是上边了。而上边过于宽广,黑棋想全围住是不可能的,后来白棋轻松做活也印证了这一点。

第三个例子是官子阶段,左边下到143的时候白棋第144手完全可以在145位拐把5颗棋子(价值10多目)救回来,可是这样下目数虽然便宜,黑棋会取得先手在中央骚扰白棋,增加局面不确定性。白棋实战果断把这5个卖死,取得先手后在中间进一步定型彻底简化局面。

以上三个例子是非常直观的,局部有更强硬或者目数更便宜的选择的时候,AlphaGo果断选择简单无变化的手法,最大限度减少局面变数,更快将局势导向终局的下法。在第二、三局中,只要AlphaGo开局取得优势,这样类似的下法会屡见不鲜,虽然柯洁坚持到最后也许只是以半目的微小差距落败,但这半目就是不可逾越的天堑,想要“胜天半子”恐怕是极其困难的事情。

但蒙特卡洛算法也有两个致命的缺陷:首先是围棋的总变化数量过于庞大(远超宇宙全部的粒子数量),所以你模拟个1000次甚至10000次这个样本相对于整体而言占比过于微小。蒙特卡洛模拟准确度的核心在于庞大的样本数量,所以要想用这个方法下出高水平的围棋,必须增大每个选点的后续模拟次数,这样就带来了第二个问题:计算资源不足,虽然人类的超级计算机已经发展到相当的水平,但要实现模拟足够样本的围棋变化那还是远远不够的。

要克服上述两个致命缺陷,就要引入先进的算法做一件事情:剪枝。从字面意思也很好理解,就是剪掉不必要的计算分支。其实人类高手下棋的时候也是很擅长剪枝的,人类高手通过常年累月的计算,对每个局面可以形成出色的第一感,这样就大幅度缩小了选点数量,然后对每个选点进行计算的时候也不用一直算到整盘棋下完,往后计算若干步,这个选点是不是成立也就清楚了。AlphaGo就是通过深度学习技术训练出了价值网络和策略网络,实现了和人类高手一样的第一感和出色的剪枝技术,再结合蒙特卡洛模拟那就如虎添翼了。

作者:周楠