传统的象棋引擎就像是一个大杂烩,包含了数十年来人们反复试验得到的经验和教训。全球最出色的引擎Stockfish是开源的。它的优化是基于一种达尔文式的选择:有人提出了一个想法,之后便会进行上万局游戏来验证这个想法是否有效。优胜劣汰。因此,这并非是十分简明的范式,程序员也许都很难理解。程序员对Stockfish进行的最佳调整都是源于国际象棋本身,而不是计算机科学,他们关心的是如何评定棋盘上的某一种情况:骑士值2.1分还是2.2分?如果这是第三横线,对手却有一个相反颜色的主教呢?为了说明这一点,DeepMind的研究主管大卫·西尔弗(David Silver)曾经在Stockfish上列出了对应的解决方案。结果需要五十多步,每一步移动都需要大量编程运算,而每一步运算也都包含了来之不易的国际象棋奥秘:反移动启发式(Counter Move Heuristic)、已知残局的数据库、叠兵(Doubled Pawns)、陷阱(Trapped Pieces)、半开放线(Semi Open Files)等的评估模块,还要搜索可能移动棋子的策略,例如“迭代加深”(iterative deepening)等。
相比之下,AlphaZero只有两个部分:一个神经网络以及一个被称作为Monte Carlo Tree Search(MCTS)的算法。(出于对于游戏的认可,数学家将这种基于随机数的方法称作是蒙特卡洛树。)MCTS背后的理念就是指像国际象棋这类的游戏实际上是一棵拥有诸多可能性的树,如果我将车移到d8位置,你可以抓住它或是选择按兵不动,而此时我可以移动兵或移动主教或保护我的王后……问题在于,这棵树会以惊人的速度长大。没有一种计算力能够足以彻底进行搜索。专业的人类棋手之所以是专家,原因在于他们的大脑能够自动识别出这棵树的基本部分并能聚焦注意力。而计算机如果要想参与游戏的话,它们也需要这样做。