一旦足够高,深度(层数)是否仍然重要?


10

这不是真实的,只需想象发生这种情况。

Computer A是超级计算机。它可以在20秒内计算出30层深。

Computer B是超级计算机。它可以在20秒内计算出15层深。

他们互相下棋。

这15个深度真的重要吗?我猜想在这15个深度之内,可能有数万亿种方法可以逃脱将死或捕获重要碎片。当然,Computer A了解更多。但Computer B在我看来,我也能够预测未来,足以捍卫自己。


在这种情况下,“深度”是指层数?干杯。
Rauan Sagit 2014年

是的,我是说
RikTelner 2014年

Answers:


13

是的,这15个深度非常重要。

考虑一下在卡斯帕罗夫的《不朽游戏》对托帕洛夫的比赛中出现的这个位置。

卡斯帕罗夫-托帕洛夫

我用几个引擎测试了这个位置。一些深度为15的引擎未能检测到24 ... cxd4失败的举动,并认为它是获胜的。那些相同的引擎在更深处发挥了正确的举动24 ... Kb6!

例如,即使是最初在深度21时像Stockfish 4一样强大的发动机也认为失败的动作24 ... cxd4是正确的。

Stockfish DD 64 SSE4.2: 24...cxd4 25. Re7+ Kb6 26. Qxd4+ Kxa5 27. Qc3+ Kb6 
28. Qd4+ Qc5 29. Qxf6+ Bc6 30.Qxc6+ Qxc6 31. dxc6 Rd1+ 32. Ka2 f5 33. c7 Rc8 
34. Rxh7 Rxc7 35. Rh6 Rc6 36. g4 f4 37. g5 Rd2 38. c3 Rxc3 39. Rxg6+ Kc5 
40. Bg4 Rcc2 41. Rxa6 Rxb2+ 42. Ka1 Rbc2 43. Kb1 
(-1.45/21)

当保持更深的深度时,同一台发动机会显示24 ... Kb6的正确运动。

Stockfish DD 64 SSE4.2: 24...Kb6 25. b4 Qxf4 26. Rxf4 Nxd5 27. Rxf7 cxb4 
28. axb4 Rhe8 29. Rxe8 Rxe8 30. Nb3 Re1+ 31. Kb2 Re2 32. Rxh7 Nxb4 
33. Kc3 Nd5+ 34. Kd3 Rxh2 35. Rh4 Ne7 36. Nd4 Nc6 37. Nxc6 Bxc6 38. f4 Kc5 
39. Be6 Rxh4 40. gxh4 Bd5 41. f5 gxf5 42. Bxf5 a5
(-0.78/26)

深度15的Fritz 11 SE也失败了。但是它在16深度发现了正确的移动!

Fritz 11 SE: 24... cxd4 25. Qxd4+ Qb6 26. Re7+ Nd7 27. Qe5 f6 28. Qc3 Qg1+ 
29. Ka2 Bxd5+ 30. Nb3 f5 31. Qc7+ Ka8 32. Rxd7 Rxd7 33. Qxd7 Bxf3 34. Qd6 Qa7  
(-1.44/15) 

Fritz 11 SE: 24... Kb6 25. b4 Qxf4 26. Rxf4 Nxd5 27. Rxf7 cxb4 28. axb4 Nxb4 
29. Nb3 Bd5 30. Rf6+ Nc6 31. Nd4 Rdf8 32. Rd6 Kc5 33. Rxc6+ Bxc6 34. Ne6+ Kd6 
35. Nxf8 
(-0.59/16)

还要考虑这个令人难以置信的问题,例如我在这里发现的职位。

Stockfish无法找到获胜线1. Be2 +!直到深度31为止,直到那时它才认为这是一个错误的举动。我在这里展示胜利。关键是黑方由于同伴的威胁而进入楚格旺,因此必须放弃女王或移动一个棋子,这将使白方创建一个经过的棋子并获胜。

NN-NN,1-0
1. Be2 +! Kf5 2. Nd5! Qxe6 3. Bd3 + Kg4 4. Be4 !! Qh6
4 ... Qxe4 5. Nf6 +
5. Nf4 Qg7 6. Nd3! Qxd4 7. c6! a5
7 ... Qxe4 8. Nf2 + Kf3 9. Nxe4 Kxe4 10. Kg2 Kd4 11. g4 hxg4 12. h5 Ke5 13. h6 Kf6 14. Kg3 Kg6 15. Kxg4 Kxh6 16. Kf5 Kg7 17. Ke6 Kf8 18. Kd7 Kf7 19. Kxc7
8. b5! a4 9. b6 cxb6 10. c7 Qxe4
10 ... Qc3 11. Nf2#
11. Nf2 + Kf3 12. Nxe4 1-0

这是Stockfish 4的引擎日志。您可以看到,它检测到1. Be2 +获胜,仅在深度31处!

Stockfish DD 64 SSE4.2: 1. Be2+ Kf5 2.Bc4 c6 3. Ne2 Qf6 4. Kg2 Kg4 5. Nf4 Qxd4 
6. Bd3 Qe3 7. Be2+ Kf5 8. Bf3 Qd2+ 9. Kh3 Qxb4 10. e7 Qe1 11. Ne2 Qf1+ 12. Kh2 Qf2+
13. Kh3 Qe3 (-1.05/22) 

Stockfish DD 64 SSE4.2: 1. Be2+ Kf5 2. Bc4 Qf6 3. Ne2 c6 4. Bxa6 Qxe6 5. Bd3+ Kf6 
6. Nf4 Qe1 7. d5 Qxb4 8. dxc6 Qxc5 9. Be4 Ke7 10. c7 Kd7 11. Nd5 Kd6 12. Kh3 Qc4 
13. Bg2 Qg4+ 14. Kh2 Qc8 15. Be4 (-1.15/26) 

Stockfish DD 64 SSE4.2: 1. Be2+ Kf5 2. Bc4 Qf6 3. Ne2 c6 4. d5 cxd5 5. Bxd5 Qb2 
6. Bc4 Kf6 (-1.01/28) 

Stockfish DD 64 SSE4.2:  1. Be2+ Kf5 2. Nd5 Qxe6 3. Bd3+ Kg4 4. Be4 Qh6 5. Nf4 Qf6 
6. Nd3 Qxd4 7. c6 Qxe4 8. Nf2+ Kf3 9. Nxe4 Kxe4 10. Kg2 Ke5 11. Kf3 Kf5 12. g4+ Kf6
13. gxh5 Kg7 14. Kf4 Kf6 15. h6 Kg6 16. h5+ Kh7 17. Kg5 Kg8 18. h7+ Kxh7 19. Kf5 Kg7
20. Ke6 Kh6 21. Kd7 Kxh5 22. Kxc7 Kg5 23. Kd7 (6.06/31) 

但是我的意思是每移动15步。不只是开始。
RikTelner 2014年

4
是的,一举一动。如果在第一次移动时计算深度为15并犯了一个错误,那么在随后的每次移动中计算15个深度将无法保存。
2014年

5

实际上,在计算机国际象棋编程社区中,性能提升与搜索深度之间的关系实际上一直是研究的活跃领域。有一种理论认为,搜索深度的增加会导致强度回报的减少 ……这似乎在实验结果中得到了证实。

在我看来,这有一个直观的基础。想象一下,从终端游戏桌面位置开始,假设您在两台超级计算机之间进行了匹配。在表层中,大多数强制性获胜发生在少于(例如)50层的地平线上。剩下的大多数位置都是平局,只有一小部分决心赢得更高深度的胜利。一台以100层搜索的计算机比50层计算机具有有限的优势,因为(如您所提到的)较弱的程序能够浏览几乎所有丢失的行,所有行都出现在更有限的深度。实际上,50层程序比25层程序具有更大的优势... 4层程序比2层程序具有更大的优势。

大约15年前,我在有关“ 黑暗思想”的系列文章中首次尝试了这种概念,并进行了深入搜索。如果您对计算机国际象棋感兴趣,那么这是一本很好的读物。

尽管我找不到在线参考,但去年有一篇有关该主题的论文...

Diogo R.Ferreira(2013年)。搜索深度对下棋实力的影响。ICGA Journal,第一卷 36号2号


2

问题是:您指的是详尽搜索的15/30层,还是像Stockfish这样的现代国际象棋引擎的标称深度/迭代为15/30?

如果您指的是后者,那么15层不一定意味着太多。现代国际象棋引擎会大量修剪并减少本来很差的动作,因此可能是乍一看似乎是不好的牺牲,名义深度/迭代次数为15,实际上仅搜索到5-10的深度。在深度/迭代次数30处,可能仍仅搜索到减小的深度,但随后可能是有效深度15-20,这足以发现牺牲确实是好的,并且在引擎一发现发现移动是有希望的,它将减少减少,因此移动被搜索到更接近30层的深度(由于扩展和静态搜索,甚至更深)。因此,是的,即使组合在15层的标称范围内,我也可以有所作为。

如果您指的是穷举搜索,那么我认为深度为15的引擎将非常强大,只要它具有良好的评估功能和某种静态搜索(在深度为15的离开节点之后)。由于收益递减,我认为将深度增加一倍所获得的收益将远小于将两个深度为15的现代引擎与深度为30的现代引擎进行匹配所获得的收益。但这当然仅是理论上的,因为对深度15所花费的时间要比引擎通常达到深度/迭代15所花费的时间长几个数量级,因此,这样的实验仅在较低的深度才可行。


0

FWIW当ARM是新的时,我编写了一个经过优化的ARM穷举搜索程序,该程序在第1层之后仅进行了实质性的位置评估。

我使用了技巧,包括优化的机器代码,迭代加深,排序移动上的alpha-beta窗口化(几乎所有位置的值为0,因此得到了接近最优的alpha-beta修剪)和哈希表,这些分支表将分支因子减小到小于alpha-beta的理论平方根,在游戏最糟糕的部分通常约为4。

在当时与标准程序的竞争中,我的E6P程序陷入了可怕的境地,但与当时的Pro软件相比,额外搜索了一层或两遍详尽的搜索(例如,最糟糕的阶段通常是六层详尽+静态搜索,比赛简化后最多可达到12层),尽管对手对其抱有信心,但它仍然避免了实际的失败。经过数小时的努力,几乎所有游戏都进入了裁定阶段,因为相反的程序实际上无法获胜。

后来,我针对StrongARM进行了优化,将其移动到10层。这个版本很容易击败所有非国际象棋玩家,尽管显然它缺乏任何战略意识,所以著名的评论适用:是的,它们是国际象棋棋子,但不是国际象棋!

这是几年前的事,但是我很想再次尝试穷举起来,在第1层进行更具战略意义的位置评估-理论上,Intel XEON比4MIPS快10,000-100,000x(并且哈希表内存增加30k倍) ARM2橡子阿基米德。

公认不是主流,而是玩的开心。


-2

+1层估计+ 55..70 ELO增益(有关此主题的很多研究)

我猜想在这15个深度之内,可能有数万亿种方法可以逃脱将死或捕获重要的碎片。

事实是,所有这些“万亿美元”都是由A @ D = 30计算得出的,如果A选择获胜的选举获胜,则意味着它计算了所有这些“万亿美元”,无论哪个“万亿美元”都移动了对手的回复-移动仍在赢


欢迎参加讨论。您有什么证据可以证明您的说法吗?我认为没有任何具体的关系。
SmallChess 2014年
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.