阅读关于谷歌如何解决翻译问题的内容让我开始思考。是否有可能通过分析数百万场比赛,并主要(甚至完全?)基于统计数据来确定最佳移动,从而构建一个强大的国际象棋引擎?有几个这样的国际象棋数据库(这个数据库包含450万场比赛),人们可以根据涉及的棋手等级、比赛的年代(考虑到国际象棋理论的改进)等因素,对相同(或镜像或反射)的位置进行加权移动。有哪些理由表明这种方法不可行来构建一个国际象棋引擎?
回答:
类似的事情已经在做了:这是开局书的基本概念。
由于游戏的性质,计算机AI在游戏开始时表现得非常糟糕,因为那时有太多的可能性,而且最终目标还很遥远。到了中局,当战术可能性开始形成时,AI的表现开始改善,而在残局阶段,AI可以完美地进行比赛,远远超过大多数人类的能力。
为了帮助AI在开局时做出好的移动,许多引擎依赖于开局书:这基本上是一个基于统计数据得出的移动流程图。分析了许多高水平棋手之间的比赛,并将推荐的移动硬编码进“书”中,当位置还在“书”中时,AI甚至不需要“思考”,只需按照“书”中说的做即可。
有些人也可以记住开局书(这也是为什么菲舍尔发明了他的随机国际象棋变体的一个原因,这样开局的记忆就变得远没有那么有效)。部分由于这个原因,有时在开局时会做出非常规的移动,不是因为根据历史统计这是最佳移动,而是恰恰相反:这是一个“未知”的位置,可以让你的对手(无论是人类还是计算机)“脱离书本”。
在光谱的另一端,有一种被称为残局数据库的东西,这基本上是一个之前分析过的残局位置的数据库。由于这些位置之前已经进行了详尽的搜索,人们可以使用它来实现完美的比赛:对于任何位置,人们可以立即决定它是赢、输还是平局,以及实现/避免结果的最佳方式是什么。
然而,在国际象棋中,像这样的方法只在开局和残局阶段是可行的。中局的复杂性正是让游戏变得有趣的原因。如果人们可以通过查表来下棋,那么游戏就不会像现在这样令人兴奋、有趣和深奥了。