围棋,作为古老而复杂的策略游戏,其变化数对目前的计算机资源而言,仍是一个无穷无尽的挑战。尽管AlphaGo能够击败人类顶尖棋手,但它距离“最优解”尚有距离。AlphaGo的出现无疑为棋界带来了一场革命,棋手们开始探讨那些被称为“狗招”的新奇下法及其后续策略。
这篇文章通过多个比喻,试图帮助读者理解AlphaGo和围棋人工智能的发展。许多朋友或许听说过国际象棋程序——深蓝。1997年,深蓝击败了国际象棋特级大师卡斯帕罗夫。当时,围棋程序的水平仅为k级,即不到业余初段。直到2015年,全世界6000多种完全信息博弈游戏中,只有围棋程序无法抗衡相关领域的职业选手。
那么,什么是完全信息博弈游戏呢?完全信息博弈游戏是指每一参与者都拥有所有其他参与者的特征、策略及得益函数等方面的准确信息的博弈。围棋和象棋便是如此,没有隐藏的牌和变化的规则,胜负取决于面对人脑近乎无穷的变化时,做出优化的策略、合理聚焦和深度速算。
从1997年到2015年,近20年的时间里,各类硬件经历了质的飞跃。然而,为什么人机对抗仍然需要调用非常夸张的计算资源呢?这主要是因为围棋人工智能的难度主要体现在两方面:一是搜索空间巨大,合法的围棋变化(10^170)远大于宇宙中原子数(10^80);二是局面判断难,没有一个很好的静态局面评估函数。
围棋人工智能的发展可以分为三个阶段:第一阶段以模式识别和人工启发式算法为主,水平低于业余初段;第二阶段以蒙特卡洛搜索树算法为代表,水平最高达到业余5段;第三阶段则以机器学习算法为突破,成功战胜人类职业棋手。
第一代围棋人工智能的代表是1968年由美国人Albert L. Zobrist完成的围棋程序。然而,在接下来的20年里,围棋AI即使对阵刚入门的初学者也难以取胜。直到1987年,应氏围棋基金会悬赏百万美元寻求能战胜职业棋手的围棋AI。这一悬赏激发了陈志行教授的兴趣,他在退休后编写了名为“手谈”的程序。手谈问世后实力快速增长,最终在1997年达到了受让十子战胜业余高手的水平。
手谈的秘密武器是“势力函数”,通过量化棋子的影响力来判断棋局的形势。然而,这个势力函数并非万能,围棋有太多复杂的局部棋型,手谈对于识别更多的棋型无能为力。同时,基于势力函数的形势判断也并不是很准确,这限制了手谈的进一步提升。
第二代围棋人工智能的代表是蒙特卡洛搜索树算法(MCTS)。MCTS通过模拟大量棋局来评估未完成的局面,从而决定最优的走法。这种算法充分利用了电脑的计算能力,并天然支持并行计算。然而,MCTS也有其缺点,如招法缺乏前后逻辑关联、打劫问题以及平均值和最大值的差异等。为了改进MCTS,研究者们引入了上限置信区间算法(UCT),该算法能够动态分配资源并更好地处理不同深度的搜索。
在AlphaGo出现之前,最成功的围棋人工智能是Zen(天顶围棋)。它结合了MCTS和深度神经网络(DNN),在多个比赛中取得了优异成绩。然而,围棋AI的发展在2012-2015年间陷入停滞。直到2015年末,在北京三里屯举行的世界围棋人工智能大会上,程序石子旋风力挫Zen夺冠。随后的人机对抗中,中国的连笑七段让六子才败于石子旋风。这表明围棋AI已经具备了相当的实力。
AlphaGo的成功在于其结合了深度卷积神经网络(DCNN)、蒙特卡洛搜索树和强化学习策略网络等先进技术。DCNN模拟人类给出候选招法和形势判断的过程;快速走子网络则负责模拟大量的变化;强化学习策略网络则通过自我对弈不断提升;而价值网络则进行精确的形势判断。这些网络通过蒙特卡洛搜索树结合到一起形成了一个强大的团队最终战胜了职业棋手。
AlphaGo的出现不仅提升了棋界对围棋的理解还展示了人工智能在复杂策略游戏中的巨大潜力。