¿Importa la profundidad (número de capas) una vez que es lo suficientemente alta?

10

Esto no es real, solo imagina que esto sucede.

Computer Aes supercomputadora Puede calcular 30 capas de profundidad en 20 segundos.

Computer Bes supercomputadora Puede calcular 15 capas de profundidad en 20 segundos.

Juegan uno contra el otro ajedrez.

¿Estas 15 profundidades realmente importan? Supongo que dentro de estas 15 profundidades puede haber billones de formas de escapar de un jaque mate o capturar una pieza importante. Claro, Computer Asabe más. Pero Computer Bes capaz de predecir el futuro bastante lejos también, en mi opinión, lo suficientemente lejos como para defenderse realmente bien.

RikTelner
fuente
En este caso, por "profundidad" te refieres al número de capas? Salud.
Rauan Sagit
Sí, me refiero a capas.
RikTelner

Respuestas:

13

Sí, esas 15 profundidades son muy importantes.

Considere esta posición que ocurrió en el juego inmortal de Kasparov vs Topalov.

Kasparov - Topalov

Probé esta posición con varios motores. Algunos motores, en la profundidad 15, no pudieron detectar que 24 ... cxd4 es un movimiento perdedor y pensaron que estaba ganando. Esos mismos motores, a mayor profundidad, jugaron el movimiento correcto 24 ... Kb6!

Por ejemplo, incluso un motor tan potente como Stockfish 4 inicialmente en la profundidad 21 piensa que el movimiento perdedor 24 ... cxd4 es correcto.

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)

El mismo motor, cuando se mantiene encendido un poco más de profundidad, muestra 24 ... Kb6 en el movimiento correcto.

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)

Fritz 11 SE, en profundidad 15, también falló. ¡Pero encontró el movimiento correcto en la profundidad 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)

Considere también este problema increíble como la posición que encontré aquí .

Stockfish no pudo encontrar la línea ganadora 1. ¡Be2 +! hasta la profundidad 31 y hasta entonces pensó que era un mal movimiento. Demuestro la victoria aquí. El punto es que las negras están en zugswang debido a amenazas de pareja y tienen que renunciar a la reina o mover un peón que permitiría a las blancas crear un peón pasado y ganar.

NN - NN, 1-0
1. Be2 +! Rf5 2. Cd5! Dxe6 3. Ad3 + Kg4 4. Be4 !! Dh6
( 4 ... Dxe4 5. Cf6 + )
5. Cf4 Dg7 6. Cd3! Dxd4 7. c6! a5
( 7 ... Dxe4 8. NF2 + KF3 9. Cxe4 Kxe4 10. kg2 Rd4 11. g4 hxg4 12. h5 Re5 13. h6 Rf6 14. kg3 Rg6 15. Kxg4 Kxh6 16. Rf5 Rg7 17. Re6 Rf8 18. Rd7 Kf7 19. Kxc7 )
8. b5! a4 9. b6 cxb6 10. c7 Dxe4
( 10 ... Dc3 11. Cf2 # )
11. Cf2 + Kf3 12. Cxe4 1-0

Aquí está el registro del motor de Stockfish 4. Como puede ver, detecta que 1. Be2 + está ganando, ¡solo en la profundidad 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) 
Wes
fuente
Pero me refiero a 15 movimientos en cada movimiento. No solo al principio.
RikTelner
44
Sí, en cada movimiento. Si, en el primer movimiento, calcula a una profundidad de 15 y comete un error, entonces calcular 15 profundidades en cada movimiento posterior no lo salvará.
Wes
5

La relación entre las ganancias de rendimiento y la profundidad de búsqueda ha sido un área de investigación activa durante bastante tiempo en las comunidades de programación de ajedrez informático. Había una teoría de que los aumentos en la profundidad de búsqueda daban como resultado rendimientos decrecientes en la fuerza ... esto parecía ser verificado en resultados experimentales.

Desde mi perspectiva, hay una base intuitiva para esto. Imagine su combinación hipotética entre dos supercomputadoras, comenzando desde las posiciones de la tabla final del juego. La mayoría de las victorias forzadas en bases de tablas ocurren en un horizonte inferior a (por ejemplo) 50 capas. La mayoría de las posiciones restantes se dibujan, solo una pequeña fracción resuelve las victorias a mayor profundidad. Una computadora que busca a 100 capas tendría una ventaja limitada sobre una computadora de 50 capas, porque (como usted menciona) el programa más débil puede navegar a través de casi todas las líneas perdedoras, todo lo cual ocurre a una profundidad más limitada. Un programa de 50 capas en realidad tendría una ventaja mucho mayor sobre un programa de 25 capas ... al igual que un programa de 4 capas tendría una ventaja aún mayor sobre un programa de 2 capas.

Conocí este concepto por primera vez hace unos 15 años, en la serie de documentos sobre Pensamiento oscuro , experimentando en búsquedas profundas. Esta es una gran lectura si estás interesado en el ajedrez informático.

Aunque no pude encontrar una referencia en línea, hay un artículo del año pasado sobre este tema ...

Diogo R. Ferreira (2013). El impacto de la profundidad de búsqueda en la fuerza del juego de ajedrez. ICGA Journal, vol. 36, N ° 2

Tbischel
fuente
2

La pregunta es: ¿Te refieres a 15/30 capas de búsqueda exhaustiva, o una profundidad nominal / iteración de 15/30 de un motor de ajedrez moderno como Stockfish?

Si te referías a esto último, 15 capas no significa necesariamente mucho. Los motores de ajedrez modernos podan mucho y reducen los movimientos que supuestamente son malos, por lo que podría ser que un sacrificio que parece ser malo a primera vista, a una profundidad nominal / iteración de 15, en realidad solo se busque a una profundidad de, por ejemplo, 5-10. En la profundidad / iteración 30, el movimiento probablemente todavía se busca solo a una profundidad reducida, pero entonces podría ser una profundidad efectiva de 15-20, que podría ser suficiente para encontrar que el sacrificio es realmente bueno, y tan pronto como el motor descubre que el movimiento es prometedor, disminuirá la reducción, por lo que el movimiento se busca a una profundidad más cercana a 30 capas (o incluso más profundo debido a las extensiones y la búsqueda de reposo). Entonces, sí, creo que puede marcar la diferencia, incluso si la combinación está dentro del horizonte nominal de 15 capas.

Si te refieres a una búsqueda exhaustiva, entonces creo que un motor con una profundidad de 15 sería muy fuerte siempre que tenga una buena función de evaluación y algún tipo de búsqueda de reposo (después de dejar los nodos en la profundidad 15). Debido a los rendimientos decrecientes, creo que la ganancia al duplicar la profundidad sería mucho menor que la que obtendría por una combinación entre dos motores modernos con profundidad 15 frente a profundidad 30. Pero eso es, por supuesto, solo teórico, ya que una búsqueda exhaustiva para la profundidad 15 tomaría varios órdenes de magnitud más de lo que los motores suelen tomar para alcanzar la profundidad / iteración 15, por lo que tal experimento solo sería factible a profundidades más bajas.

Fabian Fichter
fuente
0

FWIW Cuando el ARM era nuevo, escribí un programa de búsqueda exhaustiva ARM optimizado con una evaluación de posición solo material después de la capa 1.

Utilicé trucos con código de máquina optimizado, profundización iterativa, ventanas alfa-beta en movimientos ordenados (casi todas las posiciones tenían valor 0, por lo que obtuve una poda alfa-beta casi óptima), y tablas de hash que redujeron el factor de ramificación a mucho menos que el raíz cuadrada teórica para alfa-beta, típicamente alrededor de 4 en la peor parte del juego.

En una competencia contra los programas estándar en ese momento, mi programa E6P se colocó en posiciones terribles, pero con una búsqueda adicional o dos búsquedas exhaustivas en comparación con el software profesional en ese momento (es decir, típicamente búsqueda exhaustiva de 6 capas + inactiva en la peor etapa, con hasta 12 capas a medida que el juego se simplificaba), seguía escapándose de perder, a pesar de la confianza de sus oponentes. Casi todos los juegos fueron adjudicados después de muchas horas porque los programas opuestos en realidad no podían ganar.

Más tarde lo optimicé para StrongARM, donde se movió a 10 capas. Esta versión podría vencer fácilmente a todos los jugadores que no son ajedrecistas, aunque obviamente carecía de conocimiento de la estrategia, por lo que se aplica el famoso comentario: sí, son movimientos de ajedrez, ¡pero no es ajedrez!

Esto fue hace unos años, pero estoy tentado de intentar exhaustivamente nuevamente con una evaluación de posición más estratégica en la capa 1, y con un Intel XEON teóricamente 10,000-100,000x más rápido (y con 30k veces más memoria de tabla hash) que un 4MIPS ARM2 Bellota Arquímedes.

Es cierto que no es convencional, pero divertido de jugar.

Stephen Streater
fuente
-2

+1 capa se estima + 55..70 ganancia de ELO (muchas investigaciones sobre este tema)

Supongo que dentro de estas 15 profundidades puede haber billones de formas de escapar de un jaque mate o capturar una pieza importante.

La cuestión es que todos estos "trillones" fueron calculados por A @ D = 30, y si A elige el movimiento con la evaluación ganadora, significa que calculó todos estos "trillones" y no importa cuál de los "trillones" se mueva. sigue ganando

Yuriy Pylypenko
fuente
Bienvenido a la discusión. ¿Tienes algo que demuestre tu declaración? No creo que haya ninguna relación concreta.
SmallChess