计算机下棋的思考模式
现在主流弈棋计算机的基本“思考模式”很简单,就是对当前局面下的每一种合法走法所直接导致的局面进行评估,然后选择“获胜概率”最高的局面所对应的那个走法。也就是说,“准确评估给定局面的胜率”是主流弈棋计算机的核心问题,同时也是主要难点所在。
可以说,计算机的基本策略是所有“人类有可能采用”的策略中最原始最简单的一种。毫无疑问,人类的思考模式中必然也包含“局面评估”的部分,然而人类至少还同时拥有另一个重要的思考模式—战略性思考,也就是把一个基本目标有效分解成一系列“子目标”。
以围棋为例,“获胜”是围棋的最终目的,而胜的定义是“结束比赛时拥有更多棋子和空”(中国规则)。但是人类棋手在对弈时显然并不是每时每刻都在基于这个“胜”的定义进行思考—通常我们只在棋局进入中后期时才经常性地“数目”。在对弈的大部分时间里我们是在思考诸如“如何借助右上角黑棋的毛病扩张”、“如何做活”、“如何侵消对手的模样”、“如何在劫争中转换”、“如何分断”等等一系列具体问题。
我们注意到,每一个这样的“具体问题”实际上是改变了思考的目标,把一个“求胜”的问题转化成了一系列“分断”或者“做活”之类的子问题。这样的一个“战略计划”,其背后的逻辑当然是,我们的大脑相信在当前情况下“分断对手大龙”是最有可能导致最终赢棋的子目标。一旦确立了子目标,人类棋手便集中精力考虑具体战术走法来完成这个子目标,而不是“赢棋”这个最终目标。与之不同的是,目前主流的弈棋计算机从基本思考模式上并不依赖于“生成并确定子目标”的战略能力。
在大多数时刻,这些弈棋计算机只关心一个问题,就是按照“胜”的基本定义来赢得比赛。“在当前局面下,我走在x点的话最终能赢几子”,计算机就是通过不停地重复问自己这个问题来完成对弈的。尽管这听起来很“原始”,但正如前面所说,这样思考的计算机却已经在很多棋类中达到了相当令人惊讶的水平!
弈棋计算机是人工智能吗?
弈棋是一种刺激性极强的直接对抗。计算机弈棋代表了一种机器对人类的“符号意义上”的挑战,因而备受关注。“人类弈棋大师在整体智力上超出常人”这一事实,也使得“计算机在弈棋上向人类高手发起的挑战”被很自然地认作是一种关乎“智力极限”的挑战。
那么,从人工智能的角度,我们应该如何看待计算机弈棋及其相关的研究活动呢?
首先我们应该意识到,被我们视为智力挑战的问题,机器做起来往往未必困难;反而是一些人类觉得稀松平常的脑力活动,机器实现起来却可能非常困难。比如速算曾经同样是智力超群的象征,但是现代计算机无论在计算速度还是准确率上都毫无争议地完胜人类。要理性衡量计算机弈棋与人工智能的关系,还要对照上期我们总结的人工智能的主要特征来分析。
根据人工智能的主要特征,虽然弈棋满足了智能行为的标准,但目前的所有计算机弈棋系统都不满足通用性要求,因此还不能算是完整的人工智能系统。考虑到国际象棋领域里一台“不算完整人工智能系统”的机器已经战胜了人类,那么当围棋机器战胜人类的那一天到来的时候,也未必就意味着什么人工智能新时代的开始。
然而,“弈棋系统本身不是人工智能系统”不代表“弈棋系统研究不是人工智能研究”。棋类运动被称为是人工智能领域的“果蝇”,我们对果蝇进行研究,根本目的并不是为了制造一个“更强壮的果蝇”,而是为了以此探索一些具有普遍性的生物系统规律,帮助我们认识和研究比果蝇更复杂的生物系统。在笔者看来,弈棋系统研究在人工智能方面的意义主要有两个,第一个是为相关的自动推理/规划、自动学习、知识表示等等人工智能技术提供实验场所,第二个就是为打败人类而发明的如“推演”和“规划”部分的相关技术在通用智能中的推广和应用。例如笔者所在研究团队已经开始尝试基于蒙特卡洛树搜索法对大规模云计算中心中一些目前只能由人类专家手工完成的复杂调度问题进行自动优化。
最后,一个经常被提及的话题是关于如何对待人类领域知识在弈棋系统中的作用。有些人认为,使用了“人类职业棋手”的知识的弈棋系统有“作弊”之嫌,认为弈棋系统只有“零知识”才算真本领。笔者认为没有必要苛求于此。所谓名师出高徒,有几个人类冠军是自学成才的?即使是职业棋手的知识也不一定是他自己想出来的,毕竟人类已经积累了上千年的领域知识。事实上,能够积累、运用和传授知识正是人类智能最厉害的地方之一,而“知识表示与管理”也是通用人工智能系统的必要组成部分。
另一方面,“人类领域知识能否被形式化表达”也并不是“显而易见”的事情。当然,“可以形式化表达人类在某领域的知识”是一件事,“可以用一种统一的方式形式化表达所有领域的知识”是另一件事。后者是人工智能的终极目标之一,而前者是实现这一目标的必要前提。AlphaGo此次的成功,代表着人工智能又一次成功的探索。