为什么NN + MCTS和AB +手写的eval主导引擎象棋?


14

据我了解,引擎现在可以分为四类:使用Alpha-beta(AB)的引擎+使用蒙特卡洛树搜索(MCTS)的引擎,使用手写功能的引擎+使用神经网络的引擎评估。最强大的两个引擎是Leela和Stockfish。Leela使用MCTS + NN,而Stockfish使用AB +手写。

为什么这两种组合?为什么不使用NN + AB或MCTS +手写?如果MCTS比AB更好,为什么Komodo MCTS不比Komodo AB更强大?如果AB比MCTS更好,那么Leela为什么不使用AB呢?


只是推测:NN是模式识别器。由于MCTS投放了更广泛的网络,因此更有可能遇到被NN训练为识别好坏的模式。
约翰·科尔曼

Answers:


12

速度

神经网络的运行要比手工评估功能慢得多。在TCEC超级决赛中,Leela Chess Zero运行在两个具有专用张量核的GPU上,每秒可以搜索约6万个位置。相比之下,Stockfish在我PC上的单个内核上,每秒搜索超过200万个职位。

尽管现代引擎拥有大量的技术来切断不必要的分支,但alpha-beta树搜索仍然是一种蛮力技术,需要搜索大量位置才能确定良好的动作。

相比之下,MCTS的选择性要高得多,并且只会将其搜索树扩展到最有前途的举措,这使它可以充分利用有限数量的可搜索节点。

最坏的情况

基于alpha-beta搜索的引擎评估功能的关键要求之一是,它必须具有良好的最坏情况行为。这是因为评估中的任何大错误(无论多么罕见)都可以很容易地传播到根源,并导致进行极其错误的动作。

由于其复杂性,神经网络很容易过度拟合,只能与用于训练它们的数据一样好。例如,在TCEC第14季超级决赛的第80场比赛中,前进47 Lc0显然没有受到Stockfish的额外皇后的困扰,他的位置为酷+0.77,而Stockfish(和大多数其他引擎)的得分为+8.31。一个流行的解释是,Lc0可能没有在其训练组合中进行过很多具有多个皇后的游戏。

因此,神经网络的最坏情况行为不佳,因此在alpha beta搜索中可能表现不佳。相比之下,MCTS可以通过将分配给一个位置的不正确分数与分配给搜索附近位置的合理分数进行平均来抵消它。

静止

所有强大的alpha-beta引擎都使用一种称为“ 静态搜索”的技术,该技术是在叶子节点上应用的一种受限形式的alpha-beta搜索,以确认其手工制作的评估功能只能在“安静”位置(没有待处理的捕获或检查)很好地工作。 。

例如,在皇后交换的上半场之后,手工制作的评估函数可能会告诉您,刚取走皇后的那一侧已完全丢失,而神经网络可能能够理解女王将很快被重新夺回。

由于缺少静态搜索,这使得手工评估功能同样不适用于MCTS,从而导致手工功能在许多时间上的执行效果很差(尽管Komodo 12 MCTS仍然通过使用简短的alpha-beta搜索来克服此限制,从而获得静态位置和因此允许其手工评估返回合理的分数)


2

AB和MCTS不一定各有优点。只是它们是不同的搜索算法,可以在不同的基础上更好地工作。对于NN,MCTS效果很好,因为它允许引擎探索效果更好的分支。这使引擎有更多的自由来查看其“想要”的内容。

同时,对于AB,原则上必须检查所有分支。这是因为即使进行迭代加深,引擎在每次迭代中在每个分支上的查找也是如此。因此,即使分支在有限的深度似乎输了,也不知道一个分支实际上是否在为一方获胜。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.