当前位置: 华文问答 > 数码

AlphaGo「理解」围棋吗?

2017-05-24数码

好问题。时隔一年再来答这个题,也许大家看这个问题会更客观。

还是先上结论。我认为 AlphaGo理解围棋,而且AlphaGo比人类对围棋的理解高一个层次。

这个问题下面, @SIY.Z 的答案对我很有启发,推荐大家可以看看。

这位答主提到,

你或许还是不能接受AlphaGo这个样子,我想这是因为,人们下围棋,一定要先理解「围棋」什么东西,下面才可以操作。但是AlphaGo却是在不知道(或者没有被提供数据)「围棋是一种2个人的,而且两个人面对面做的,对抗的,零和的,棋盘19*19的,棋盘是方的,上面是打格子的,格子也是方的,有黑白两个子的,黑子先下的,两个轮流下的,要下在格点而不是格子中间的,有限时要求的,棋子数量足够的,一个棋子不会占超过一格的,棋子是圆的,两边凸起的,中国古代发明的,一种博弈游戏」中的任何一点的时候,可以战胜人类。

说得好。不过,AlphaGo眼里其实是有「围棋」这个概念的。计算机围棋界有基于中国规则的Tromp-Taylor规则(Tromp-Taylor Rules)。详细的条文就不在这里贴了,我简单转述一下。Tromp-Taylor规则定义,围棋是一个在19*19格点上进行,两个玩家「小黑」、「小白」,轮流分别把棋盘上的某一个格点染成黑色或白色的游戏。再加上提子和禁循环的规则,以及终局判断,就是完整的Tromp-Taylor规则。请各位想一想,这样的围棋,和我们眼中的围棋,有什么本质区别吗?如果不考虑围棋文化,那么我可以肯定地说,没有区别。

既然对于AlphaGo,「围棋」这个概念本身,和人类理解的「围棋」这个概念没有区别,那我们就先聊聊我们人类,特别是职业棋手,是怎么理解围棋的。

这里引用一段我去年写的文章。

围棋是世界上最复杂的游戏之一。所谓「一着不慎,满盘皆输」,每一步棋都可能左右全局的结果。一般来说,一手棋的决策分两步。第一步,「选点」:凭经验或感觉给出几个候选的点;第二步,「判断」:分别对这几个点做形式判断,并进行比较。这两步,说来容易,但要做到笑傲众生的水平,对于天赋和勤勉的要求,不亚于一个优秀数学家所需要的。

从初学者成长为大师,棋手需要先学会基本的布局理论、掌握基本的死活、对杀常识,然后熟记数百个定式及掌握其主要分支(飞刀)、练习数万死活题,同时在大量对局中磨练。有些外行据此认为,围棋只是复杂一点的「体力劳动」。对于这一观点,下图古力同学白1这一招抵得上千言万语。


图中右上的形状,在任何一本死活题的书中都不曾出现。实战白棋这一招的位置,也属于一般「选点」思路下的盲点。但古力同学在短时间内看到了这一招,一举扭转乾坤。

「体力劳动」让天赋平平者能够成为业余高手,但山巅最美的风景只属于天才

我们再说「判断」。判断很难吗?在中国象棋或者国际象棋中,形势判断对于程序来说并非难事:只需观察双方子力的差距就可以大致判断出形式的好坏。当年战胜卡斯帕罗夫的「深蓝」,其形式判断算法大致就是如此,非常简洁。而围棋的形势判断是个真正的难题。围棋的胜负由终局时双方控制地盘的多寡决定。然而棋局进行到一半,双方的地盘都尚未封闭,怎么判断形势呢?

职业棋手采用的算法是估算双方的目数(地盘大小)差距。那如果地盘的边界没有完全确定怎么办呢?如果有先手官子就判给先手方,如果是双方后手官子就算一人一半。如果有一些模糊的地方,比如说一块厚势折算成几目呢?这时候就只能凭经验感觉了。职业棋手之间微妙的水平差异,很多时候也体现在模糊判断能力上。


对于如图所示的中盘阶段末期的局面,职业棋手一般能在一到两分钟内大致判断出双方地盘的差距,并据此决定接下来的策略是保守或是激进。这样的判断速度和准确度,和「搜索」能力的训练一样,背后也是数千盘对局积累下来的经验。

——————

小结一下,对于高手来说,除了十几年日复一日训练的积累以外,灵感和天赋也是必不可少的。在复杂局面下,棋手的选点需要灵光一现,而模糊判断的准确性,离不开棋手的天赋。

这听上去有点像艺术创作。确实,围棋自古以来与琴、书、画并称君子四艺,现在我们仍然这么提。但是,围棋终究是一个游戏。如果你对博弈论有所涉猎,大概会知道,围棋是一种「完全信息」博弈。更懂行一点的读者知道,根据 策梅洛定理 ,像围棋这样的二人、完全信息、无运气成分、有限回合、且不存在和棋的游戏,对局的其中一方是有必胜策略的。(这里有必要解释一下「有限回合」和「不存在和棋」。围棋的中国规则中,有「禁循环」一条,这就杜绝了棋局无限制进行下去的可能。另外,如果严格执行「禁循环」规则,三劫循环、长生等特殊棋型,相当于打一个普通的劫争,不必判和棋。现实中将三劫循环判和,只是一种权宜之计,相信未来可能会改变。)

那么,既然必胜策略一定存在,为什么围棋手不去研究必胜策略,搞什么选点、判断?为什么围棋手不能踏踏实实用逻辑推理解决战斗,是不是他们在故弄玄虚,或者说装逼?

当然不是。

因为围棋太难了。

1950年,「信息论之父」克劳德·香农在论文「Programming a Computer for Playing Chess」 中给出了国际象棋复杂度的一个下限。香农写道,一盘象棋一般有40个回合,平均每回合的变化总量大约在10^3这个数量级,那么国际象棋的变化总数至少是10^120这个数量级。后人把10^120这个数称作「香农数(Shannon Number)」。香农用此计算说明,利用纯暴力搜索破解国际象棋是不现实的。

如果我们估计一下围棋的香农数呢?19路围棋盘上,一盘棋大约是120个回合(240手),平均每回合的变化数总量在10^5以上,这样算下来,围棋的变化总数不少于10^600。可观测宇宙的原子总量10^80,相形之下,真是小巫见大巫。刘慈欣的小说【诗云】中写道,就算把宇宙中的每一个原子都做成储存器,而且技术先进到一个原子能储存一比特信息,也只能存下很小一部分的棋局。

诚然,计算,或者说单纯的逻辑推理,是围棋技艺的基础。不过,当计算量远远超出人脑的能力之时,减少计算量的技巧,选点、判断,就必须出场了。经验性的选点,让棋手快速将有限的计算力集中到几个重要分支上;而准确的判断,能够让棋手在优势局面下鸣金收兵,避免复杂计算,减小风险;或者在劣势局面下放弃幻想,奋力一搏。当然,选点、判断时的模糊性,在逻辑上难免不严谨,有一定风险,这就要求棋手权衡利弊,合理分配时间。

-----------------

讲了很多人类棋手的事,是时候让AlphaGo出场了。事实上,摆在AlphaGo面前的最大问题,和人类棋手是一样的: 围棋太难了,计算力不够 。「深蓝」战胜卡斯帕罗夫那一套,对国际象棋还行,套用到围棋上根本不可能,毕竟围棋的复杂度远超国际象棋。想要战胜人类,只能把有限的计算力用在刀刃上。怎么办?AlphaGo团队的做法是, 像人类棋手一样,去选点和判断

深度卷积神经网络,是AlphaGo采用的一项先进技术。我们可以把神经网络看成一个黑箱。

如上图。给定一个输入,神经网络经过一系列处理后输出结果。具体到AlphaGo的架构,可以用下图粗略地解释。

请看上图。人类棋手的思维方式,是根据输入的局面,输出候选招法和形势判断,综合以后给出最终输出。AlphaGo的大框架与此非常相似。AlphaGo的策略网络,大致对应人类「选点」的决策;AlphaGo的价值网络,大致对应人类「判断」的决策。



在此基础上,蒙特卡洛搜索树算法将策略网络和价值网络串联起来,形成完整的决策系统。

AlphaGo基于蒙特卡洛搜索树的单次决策过程,附有我的诠释。进行此循环多次以后,AlphaGo选择在过程中 重复次数最多 的分支为最终落子点。

以上我对AlphaGo的解读为了方便大家理解,有不严谨之处。关于AlphaGo原理的深度解读,推荐 @袁行远 的答案DeepMind 研发的围棋 AI AlphaGo 是如何下棋的?。轻松一点的解读,也可以看围棋 AI(人工智能)的发展历程是怎么样的?,我和 @Haochen Liu 以及 @云天外 一起做的Live的逐字稿。

前面的内容讲到,AlphaGo下棋时决策的方式和人类相似,因此可以说AlphaGo「理解」围棋。接下来进入我要论证的主题, AlphaGo比人类更懂围棋

AlphaGo以4:1战胜李世乭,又化名Master在快棋中横扫职业棋手,实力无疑超过所有人类棋手。然而,还有更恐怖的事情。棋手们在这一年多以来,一直在向AlphaGo学习。在具体招法上,也有了不少心得。 但是,AlphaGo的判断力是人类永远没法学习或者模仿的。 下面这一段,我将人类与AlphaGo的判断能力做个简单比较。

——————

人类「数地盘」式的判断常有失灵之时。除了模糊判断可能带来的误差以外,对于某一块地盘归属的错判也是经常发生的。李世乭-AlphaGo五番棋第一局中,职业棋手们就在局中集体给我们演示了一次这样的错判。


这是棋局进行到第101手时的局面。李世乭在棋盘上落下的这一手确保了右上黑棋的安全。由于AlphaGo在左下步伐紊乱,黑棋收获颇丰。沉浸在乐观情绪中的职业棋手们一致判断黑棋明显优势。直观来看,此局面的判断并不复杂:黑方下边一块确定的目数,基本可以和白方全局确定的目数+厚味抗衡;黑方额外多出右边红框里的地盘,意味着黑棋盘面(即不计贴目)领先15目左右。然而,当时没有人想到,右边红框范围内看上去已经万无一失属于黑棋的地盘,即将被AlphaGo掏空。

敏锐如柯洁者,第一时间看到了白棋在R10(图中绿圈)打入的手段。不过,柯洁当时的说法是,这是落后一方孤注一掷的手法。局后回顾,才发现此处黑棋已无法全身而退,而AlphaGo对此早已成竹在胸。从DeepMind公布的数据来看,AlphaGo认为此局面下白方的胜率超过75%,这意味着AlphaGo对R10打入之后的变化充满信心。棋局的走向证明了AlphaGo判断的正确,而职业棋手的直觉在此处集体失灵。

————

AlphaGo在复杂局面下的形势判断,比职业棋手的判断更精准。

更重要的是,AlphaGo基于概率的形势判断,比人类棋手比较地盘多寡的判断,更接近围棋的本质。学棋的时候,老师常说,赢半目和赢一百目没有区别。围棋十诀第一条就是「不得贪胜」。说明人类棋手都认同,保住胜利果实,比拿到更多地盘更重要(也许藤泽秀行棋圣是个例外)。然而,具体操作中,人类的形势判断算法并不能实现这一目标。

为了帮助理解,我举个例子。

在某一盘棋的后半盘,黑方确定目数70目,没有潜力。白方确定目数40目,有一块40目潜力的大空。如果黑方立即打入(选项A)并活出(结局A1),则40目的潜力只能转化成10目的实地,黑方获胜。如果黑方打入失败(结局A2),则白棋40目大空围成,白方获胜。黑棋也可以选择保守的浅消(选项B),则白方的40目潜力 大约 能转换为25目实地

这个局面下,如果选择浅消(选项B),虽然最后差距会缩小,然而其实胜机也很少。很遗憾,这种局面下,职业棋手很难准确估算打入成活的概率,然而AlphaGo可以。于是心存幻想的人类棋手觉得落后不多,而打入无成算,选择浅消白棋大空,结果白方40目的潜力转化成25目实地,黑棋盘面仅多5目,从而落败。阿尔法狗估算出选择打入(选项A)的胜率是40%,而选择浅消胜率仅为25%,于是毅然选择打入。不论最后胜负如何,选择打入显然是更好的策略。

换句话说,只「领先两目」而胜率80%,和「领先五目」而胜率70%,其实是前者优势更大,然而人类会认为后者优势更大。

AlphaGo有能力精确地估算胜率,人类棋手不能。因此我说,AlphaGo对围棋的理解,比人类高一个境界。

我们可以进一步想象,假如有一天,人类造出了一台能够做无限快计算,且储存能力无限大的机器。那么这台机器判断一个围棋局面,不会输出胜率,而是会输出「此局面黑棋(白棋)必胜」。这就又比AlphaGo对围棋的理解高一个境界,是真正破解了围棋。

不过,由于围棋的复杂度,我不认为这样的机器能够在一百年(原来写千年,有人批评,我也觉得不谨慎)以内被发明出来。 换句话说,AlphaGo的算法,是目前我们能做到的对围棋问题的最好解决方案。 此后的围棋AI,大概只需要在这个框架的基础上修修补补了吧。

而人类也没必要为此感到悲哀。AlphaGo是个好老师。虽然学不了她的判断方法,但是具体招法可以借鉴。将来AlphaGo或者其他AI的形势判断,也可供参考。将来十年,围棋技术一定会快速发展变化,我等棋迷有好戏可以看了。

相关文章:AlphaGo与人类的恩怨情仇(一):世纪难题 - 知乎专栏