为什么国际象棋引擎有时会错过好动作(或者永远花时间去发现)?


17

这不是我第一次发现比国际象棋引擎优越得多的举动,而是在做出这些举动后甚至需要一段时间来理解这些举动。

例如,15 ... Bf2以下游戏中的动作:

NN-NN,0-1
1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. OO Ng4 5. h3 h5 6. hxg4 hxg4 7. Bxc6 gxf3 8. Qxf3 Qh4 9. Qh3 Qxh3 10. gxh3 dxc6 11. Re1 Bxh3 12. f3 Bc5 + 13。 Kh2 Bf1 + 14. Kg3 Rh3 + 15. Kg4 Bf2 16. Rxf1 Rg3 + 17. Kf5 Rxf3 + 18. Kg4 Rg3 + 19. Kf5 f6 20. d3 Kf7 0-1

一段时间以来,引擎并没有注意到这一动作,直到我动手之后,它才开始看到其余的冰山。

我知道这全都取决于您给他们多少时间来进行分析,但是有时人类设法在比计算机短的时间内找到这些动作是不可接受的。

  • 为什么国际象棋引擎无法在某些位置发现良好的动作?(我曾经读过一些有关“水平效应”的文章,也许这是相关的吗?)
  • 还有其他值得注意的例子吗?(例如,这个著名的难题,计算机需要一段时间才能解决)

这些问题包含有用的信息,以部分解释可能导致此异常的某些因素:哪些算法和启发式方法在计算机国际象棋中很流行?在与计算机对手对抗时,我应该创造什么情况来给自己带来更大的获胜机会?计算机评估:它们的可信度如何?

注意:陷阱被称为钓鱼竿,我知道我错过了3个队友(和7个队友):(,每次移动的时间限制是几天(对应国际象棋),但是我花了大约5-10分钟完成所有的计算。


1
很有意思。15... Bf25分钟后,我的平均强度PC上的鳕鱼根本找不到。
托尼·恩尼斯

...接下来的7分钟时间里,他找到了一个类似的7副伴侣。
托尼·恩尼斯

20 d3是错误。尝试20 d4。
dcaswell 2014年

1
为什么您使用“无法接受”的语言来让人类在比计算机更短的时间内找到动作?您能对此发表看法吗?
Xonatron

它错过了很多更好的举动。为什么要特别挑出那一个?
yobamamama

Answers:


33

为什么国际象棋引擎无法在某些位置发现良好的动作?

原因被称为第一行中的ProbCut 正向修剪技术(请参阅http://chessprogramming.wikispaces.com/Pruning)。

动作15 ... Bf2被修剪在较浅的深处,因为它包括牺牲16.Rxf1而没有在事后立即重新获得具体证据。该辅助对象也很难看到,因为它包括一些进一步的“无声”动作,例如17 ... Ke7,是的,还有引擎,不仅人类很难看到经常被修剪的远距离无声动作。

在这种具体情况下,您甚至不能说引擎无法发现良好的动作,因为延续15 ... Rh3h1也是非常好的动作,并且会导致绝对获胜的位置。

最后但并非最不重要的一点是,您必须记住,引擎的力量始终是根据能力来衡量的,而不是根据找到绝对最短捷径的能力来衡量的。没关系,无论引擎以8步还是25步获胜。为最短的胜利争取很多,将意味着浪费时间,因为大多数时间根本没有这样的秘密好举动。浪费时间会损害发动机的ELO评级。


1
很好的答案,欢迎光临本站!
安德鲁

+1表示修剪和完全搜索之间的权衡。毫不奇怪,很快就找不到13+ PLY组合。与计算该深度的每种可能性相比,引擎“要做的事情更好”。
丹尼尔·B

2
总体来说很好的答案。+1表示“最后但并非最不重要的一点,您必须记住,引擎的力量始终是根据力量来衡量的,而不是根据找到绝对最短的获胜方式的能力来
衡量的

极好的答案。
Xonatron

12

我正在使用Houdini 1.5(免费版本)尝试此操作。起初15 ... Bf2没有出现在前5个动作中,然后当它到达深度15时,它出现在#1处。在我四岁的计算机上花费大约19秒,不那么长。

因此,它不会发现它,而是仅在到达深度15时才认为是最佳移动。显然,只要看起来只有14层深,其他举动就会更好(例如也赢得15 ... f5 +)。

显然15 ... Bf2是8的搭档,即15层(8个由黑色移动,7个由白色移动)。但是起初它只考虑+10左右,然后+20,然后匹配为10,然后匹配为8。

8行中的配合为:

NN-NN
1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. OO Ng4 5. h3 h5 6. hxg4 hxg4 7. Bxc6 gxf3 8. Qxf3 Qh4 9. Qh3 Qxh3 10. gxh3 dxc6 11. Re1 Bxh3 12. f3 Bc5 + 13。 Kh2 Bf1 + 14. Kg3 Rh3 + 15. Kg4 Bf2 16. Rxf1 Rh4 + 17. Kg5 Ke7 18. Rh1 Rxh1 19. Nc3 Rah8 20. Nd5 + cxd5 21. d3 R8h5 + 22. Kg4 R1h4#。

显然,当Houdini 1.5认为深15层时,它不会考虑深15层的所有可能的线,否则它将在完成15层深度搜索的那一刻看到对方8。

我认为这是由于修剪,当它认为它们前景不佳时,它会停止查看某些行。这样,它可以将更多的时间花在有前途的产品上,并且程序员认为利弊大于利弊。但是我现在对它在这里修剪的决定还没有答案(它可能在深度15做出数百万个单独的修剪决定)。

它可能与无声的动作... Ke7和... Rah8有关,这两个动作是黑色的一段直线上的两个非检查非捕获。很可能它决定某个地方,继续关注此行是无用的。直到后来,当它确实继续该行并在最后找到对方时,才会出现其他延长游戏(例如18.Rh1 Rxh1等)的行。

无论如何,众所周知,仅当您想深入研究某件事时,让计算机思考几秒钟并不能很好地工作,几分钟会更好。


我猜为什么要修剪,是因为16。Rxf1看起来“启发式”并不是说怀特·怀特的国王是公开的,但没有立即将死的人,而布莱克则在骑士的身上作了典当。直到进行了更深入的分析(如您所说)后,这种“牺牲”的价值才变得清晰。
乔K

请注意,“ 15层”意味着它是针对深度15的一些动作,而不是所有动作。这将需要WAAY时间超过4秒,甚至超级计算机上。
BlueRaja-Danny Pflughoeft

2

阅读完所有答案和其他资料后,我现在了解到他们并不会“错过”或选择错过这些举动,因此人们对它们进行了编程,以使其遵循特定的搜索方式(从何处/如何/何时+)更重要的是何时暂停搜索并寻找更有前景的广告行以节省资源。

但是如果有足够的时间,计算机将以某种深度查找每种可能的组合。

TL; DR

  • 问题1:他们从未错过过动作,只是还没有找到他们
  • 问题2:它们之所以花时间,是因为它们经过编程以节省资源,并且它们将优先于某些其他生产线(例如,那些没有被动移动或在接下来的几个移动中不恢复物料的生产线)。

-1

我认为每个人都缺少一个更快的伴侣。当用Houdini 3检查位置时,黑色实际上在第13步有3个队友。黑色应该代替Bf1 +,而应该打Bf2,并且继续14。d3 bf1 +15。Bh6 Rxh6#。因此,在对您的问题的不寻常回答中,也许某些引擎没有立即看到您的举动,但就Houdini 3而言,它找到了更快的伴侣。


5
如果您阅读了整个问题,您将发现他知道3中的配对。所有合理的新引擎都将立即在3中找到该配对,这不是此处要求的一部分。
哈佛
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.