¿Cómo entrenar una red neuronal para un juego de mesa redondo?

11

Me pregunto cómo entrenar una red neuronal para un juego de mesa basado en la ronda como el tic-tac-toe, el ajedrez, el riesgo o cualquier otro juego basado en la ronda. Obtener el siguiente movimiento por inferencia parece ser bastante sencillo, al alimentar el estado del juego como entrada y usar la salida como el movimiento para el jugador actual. Sin embargo, entrenar una IA para ese propósito no parece ser tan sencillo, porque:

  1. Es posible que no haya una calificación si un solo movimiento es bueno o no, por lo que el entrenamiento de movimientos individuales no parece ser la opción correcta
  2. El uso de todos los estados del juego (entradas) y movimientos (salidas) de todo el juego para entrenar la red neuronal no parece ser la opción correcta, ya que no todos los movimientos dentro de un juego perdido pueden ser malos

¿Entonces me pregunto cómo entrenar una red neuronal para un juego de mesa basado en una ronda? Me gustaría crear una red neuronal para tic-tac-toe usando tensorflow.

soriak
fuente

Respuestas:

10

Gran pregunta! NN es muy prometedor para este tipo de problema: Giraffe Chess . El logro de Lai se consideró un gran problema , pero desafortunadamente se produjo solo unos meses antes de que AlphaGo fuera el centro de atención. (Todo salió bien, ya que Lai fue posteriormente contratada por DeepMind, aunque no tan bien para el motor Giraffe ;)

He encontrado que el enfoque de Lai es bastante útil, y está respaldado por resultados sólidos.


Es posible que desee utilizar " secuencial " en lugar de "basado en ronda", ya que secuencial es el término preferido en Teoría de juegos y Teoría de juegos combinatoria , y estos son los campos que aplican el análisis matemático a los juegos.

Los juegos que enumeras se denominan " abstractos " para distinguirlos de los juegos de estrategia modernos, o juegos en general, que utilizan un tema fuerte y generalmente son menos compactos que los juegos abstractos en términos de mecánica y elementos. Esto conlleva la advertencia de que los juegos abstractos no están restringidos a juegos secuenciales o juegos de mesa, o incluso juegos específicamente, como en el caso de rompecabezas como Sudoku.

El nombre formal para este grupo de juegos es generalmente "información partidista , secuencial, determinista y perfecta " con la categorización adicional de Tic-Tac-Toe como "trivial" (resuelto y fácilmente solucionable) y no trivial (intratable y no resuelto) para juegos como Ajedrez y Go.

DukeZhou
fuente
7

Soy un jugador de ajedrez y mi respuesta será solo sobre ajedrez.

La capacitación de una red neutral con aprendizaje de refuerzo no es nueva, se ha hecho muchas veces en la literatura.

Explicaré brevemente las estrategias comunes.

  • El propósito de una red es aprender la evaluación de posición. Todos sabemos que una reina es más fuerte que un obispo, pero ¿podemos hacer que la red lo sepa sin programar explícitamente? ¿Qué pasa con la estructura de peones? ¿Entiende la red cómo evaluar si una posición está ganando o no?

  • Ahora, sabemos por qué necesitamos la red, tendremos que diseñarla. El diseño difiere radicalmente entre los estudios. Antes de que el aprendizaje profundo fuera popular, las personas usaban redes poco profundas. Hoy en día, se destaca una red con muchas capas.

  • Una vez que tengamos la red, necesitarás hacer un motor de ajedrez. La red neuronal no puede jugar ajedrez mágicamente por sí misma, necesita conectarse a un motor de ajedrez. Afortunadamente, no necesitamos escribir código de evaluación de posición porque la red puede hacer eso por nosotros.

  • Ahora, tenemos que jugar juegos. Podríamos comenzar con algunas bases de datos de ajedrez de alta calidad o, en su lugar, hacer que nuestro agente de IA juegue con otro jugador (por ejemplo, otro agente de IA o un humano). Esto se conoce como aprendizaje de refuerzo .

  • Mientras jugamos juegos, actualizamos el parámetro de red. Esto se puede hacer por descenso de gradiente estocástico (u otras técnicas similares). Repetimos nuestro entrenamiento todo el tiempo que queramos, generalmente durante millones de iteraciones.

  • ¡Finalmente, tenemos un modelo de red neutral entrenado para el ajedrez!

Mira los siguientes recursos para más detalles:

https://chessprogramming.wikispaces.com/Learning

Hola Mundo
fuente
Solo Smallchess lo tiene aquí
quintumnia
Este es un ejemplo de cómo proporcionar un enlace externo, sin resumir, puede ser perjudicial en el futuro. Como el enlace proporcionado ahora está muerto
Greg Hilston
4

Creo que deberías familiarizarte con el aprendizaje por refuerzo. En este campo de aprendizaje automático, el agente interactúa con su entorno y después de eso, el agente obtiene alguna recompensa. Ahora, el agente es la red neuronal, el entorno es el juego y el agente puede obtener una recompensa +1 si gana o -1 si pierde. Puede usar este estado, acción, experiencia de recompensa para entrenar al agente. Puedo recomendar las conferencias de David Silver en youtube y el libro de Sutton también.

Molnár István
fuente