整体而言,深蓝是一套专用于国际象棋的硬件,大部分逻辑是以“象棋芯片”(Chess Chip)的形式用电路实现的。在象棋芯片之上,有较少量的软件负责调度与一些高阶功能。 深蓝算法的核心是基于暴力穷举:生成所有可能的走法,然后执行尽可能深的搜索,并不断对局面进行评估,尝试找出最佳走法。深蓝的象棋芯片包含三个主要的组件:走棋模块(Move Generator),评估模块(Evaluation Function),以及搜索控制器(SearchController)。各个组件的设计都服务于“优化搜索速度”这一目标。 走棋模块负责生成可能的走法。走棋模块的核心是一个8*8的组合逻辑电路阵列,代表棋盘的64个格子。国际象棋的走棋规则以硬件电路的方式嵌入到阵列之中,因此走棋模块可以给出合法的走法。在核心之外还有附加的逻辑电路用于探测和生成特殊走法(例如“吃过路兵”和“王车易位”)。 评估模块是整个芯片中最主体的部分,占据了芯片上2/3的面积、超过半数的逻辑三极管和80%以上的存储三极管。评估模块又分为三个部分:棋子位置评估;残局评估;以及慢速评估。棋子位置评估对盘面上所有棋子当前所处的位置计分,不同棋子处于不同位置的分值由软件预先计算好后写入硬件。芯片中输入了大约8000种不同的“模式”,并针对每种模式赋予了一定的分值。残局评估也预存了一系列专门针对残局的估值规则,例如“王在棋盘中央有利”(Kingcentralization bonus)的规则。残局评估子模块还以8*8组合逻辑电路阵列的形式跟踪所有兵所处的位置,并计算兵是否越过了对方的王、是否能一路冲到对方底线晋级。由于逻辑嵌入在硬件中,棋子位置评估和残局评估都只需要一个时钟周期就可以完成计算。 慢速评估子模块是整个芯片上最复杂的元素,占据芯片上约一半的面积,并且完成计算需要10个时钟周期。大量国际象棋特有的逻辑都在慢速评估的过程中计算,包括:
搜索控制器实现了一个最小窗口alpha-beta搜索算法(minimum-windowalpha-beta search algorithm),也称为alpha-beta剪枝算法,能快速削减搜索的规模。 深蓝的软件也是专门设计用于与硬件协同工作的。软件部分负责调度最多32个象棋芯片并行搜索,并负责对大范围规划的局面进行软件评估。深蓝的软件还连接了“仅剩5子”的残局数据库,一旦出现仅剩5子的残局,就会直接从这个数据库中搜索最佳走法。软件中还包含了从30万局棋中抽取出来的开局书,并且工程师还不断优化其中记录的开局走法。 20年前,深蓝与卡斯帕罗夫的对弈使人工智能进入大众视野;20年后,AlphaGo 对李世乭的压倒性胜利再次使人工智能成为热议焦点。同样是战胜了棋类世界冠军,两代人工智能最重要的差别在于:深蓝仍然是专注于国际象棋的、以暴力穷举为基础的特定用途人工智能,而 AlphaGo 是几乎没有特定领域知识的、基于机器学习的、高度通用的人工智能。这一区别决定了深蓝只是一个象征性的里程碑,而 AlphaGo 则更具实用意义。 AlphaGo之父杰米斯·哈萨比斯(Demis Hassabis)近日在母校英国剑桥大学做了一场题为“超越人类认知的极限”的演讲。在演讲中,他说: IBM 发明的深蓝系统(Deep Blue)是一个很好的狭义人工智能的例子,他在上世纪90年代末期曾打败了国际象棋冠军加里·卡斯帕罗夫(Gary Kasporov) 。如今,我们到了人工智能的新的转折点,我们有着更加先进、更加匹配的技术。 1997年,IBM 的人工智能 DeepBlue(深蓝)打败了当时的象棋世界冠军GarryKasparov,围棋一直是人工智能领域的难解之谜。我们能否做出一个算法来与世界围棋冠军竞争呢?要做到这一点,有两个大的挑战: 一、搜索空间庞大(分支因数就有 200),一个很好的例子,就是在围棋中,平均每一个棋子有两百个可能的位置,而象棋仅仅是 20. 围棋的分支因数远大于象棋。 (责任编辑:本港台直播) |