En algunos artículos (históricos), el ajedrez ha sido referido como la drosófila de la inteligencia artificial. Si bien supongo que en la investigación actual, la mera aplicación de un algoritmo de búsqueda es, en el mejor de los casos, una ciencia informática avanzada , creo que todavía hay áreas donde se pueden aplicar (y practicar) técnicas de IA.
Un ejemplo simple sería el aprendizaje del libro de apertura, en el que se puede enseñar al programa si usar o no ciertos movimientos en la apertura porque el programa no es adecuado para ciertos tipos de posición. Podemos utilizar una forma de aprendizaje de refuerzo y automatizar esto: supongo que podría jugar el programa contra sí mismo y aumentar la probabilidad de ganar líneas y disminuir la probabilidad de perder líneas.
El ejemplo más complejo es usar un aprendizaje función de evaluación de (por ejemplo, uno podría ajustar los valores de las tablas de piezas cuadradas ). Sin embargo, estoy pensando:
- dado todo el ruido debido a que existe una enorme cantidad de posiciones realistas (en oposición a la cantidad de líneas de apertura realistas)
- y con el costo (duración) de un juego de ajedrez por computadora, y la necesidad de jugar mucho.
¿Cómo se puede hacer esto de manera efectiva? (o debería mirar otras técnicas, por ejemplo, redes neuronales).
Respuestas:
Todo el espacio estatal para el ajedrez es enorme: se puede estimar aproximadamente como 10 43 (número de Shannon (Shannon, 1950) , ( Wikipedia) )).
La idea que presentas - Agentes de aprendizaje por refuerzo que juegan entre sí para aprender el juego - se aplicó con éxito a Backgammon - TD-Gammon (Tesauro, 1995) , ( Capítulo en Aprendizaje por refuerzo de Sutton & Barto ). También usó Redes Neurales para estimar la función de valor del juego. Sin embargo, este problema es mucho más simple, ya que el número de estados en Backgammon es significativamente menor que en el ajedrez, a saber: 18,528,584,051,601,162,496 ( hilo del Archivo del Foro de Backgammon ).
Sin embargo, si usted termina el juego después de unos pocos movimientos iniciales y apunta solo a aprender "buenas aperturas", podría tener éxito con un enfoque análogo. El principal problema sería evaluar el juego después del juego de apertura, lo que parece difícil. Solo una medida de similitud con las posiciones establecidas después de aperturas bien conocidas no es suficiente, porque la posición puede estar lejos de ellas si el oponente haría un movimiento estúpido (por lo que no sería debido al error del agente de aprendizaje, por lo que la posición incluso si es "incorrecta" "debe evaluarse como un buen resultado).
Referencias
SHANNON, Claude E. "Programando una computadora para jugar ajedrez". En Philosophical Magazine, 7ma serie, 41, no. 314 (marzo de 1950): 256-75.
Gerald Tesauro. 1995. Aprendizaje de diferencia temporal y TD-Gammon. Commun. ACM 38, 3 (marzo de 1995), 58-68
fuente
Estoy bastante seguro de que cualquier método posible (o extraño) de IA o ML en los libros de texto ha sido probado y falló en comparación con la fuerza bruta simple.
Mi perspectiva personal es que el ajedrez per se ya no es de interés para la IA moderna ... Simplemente, porque se resuelve : simplemente usando una computadora moderna y la fuerza bruta. Por lo tanto, no creo que sea necesario crear un sistema "inteligente" para resolverlo de manera más eficiente (funciona bien en mi teléfono celular), y creo que ni siquiera existe la necesidad de algo desconocido y más enfoque "inteligente" para existir.
fuente
Creo que vale la pena señalar que para determinar cómo abordar un problema de IA debes definirlo. Si es totalmente observable o parcialmente observable , y si es determinista o estocástico / azar.
El ajedrez es totalmente observable (a diferencia del Backgammon, Monopoly o Poker, por ejemplo) También es determinista (como Checkers y Go, por ejemplo) Por último, existen adversarios y por eso, al determinar el próximo mejor movimiento, es útil usar el tipo de Adversarial Search de algoritmos como MiniMax. Clasificar un problema puede ayudarnos a determinar qué tipo de algoritmo de búsqueda nos gustaría aplicar. Y en el caso del ajedrez, la Búsqueda Adversarial sería adecuada.
Minimax en particular tiene un
Entonces, en el caso del ajedrez, b sería 35 ym sería 100. Hay formas de evitarlo o estrategias para hacerlo más eficiente, como el corte alfa-beta.
fuente