¿Cómo aprende AlphaZero a evaluar una posición que nunca ha visto?


12

Seguimiento de respuestas a:

Entendiendo AlphaZero

Mi pregunta sería cómo la red neuronal "aprende" qué hacer en una posición que no ha encontrado. Decir que el AZ real ejecuta un MCTS usando el sesgo + pesos de la red neuronal entrenada simplemente lo empuja un paso hacia atrás a cómo la red neuronal calcula estos valores. Si fue a través de un juego aleatorio, sin conocimiento humano, ¿cómo decide cómo ponderar una posición que nunca ha visto?

Respuestas:


6

La función de evaluación de un motor de ajedrez, ya sea instanciada como una red neuronal o un código explícito, siempre puede asignar un valor a cualquier posición del tablero. Si le das una posición en el tablero, incluso las absurdas que nunca ocurrirían en un juego, podrá escupir un número que representa lo favorable que es para un jugador u otro. Dado que el número de posiciones de tablero en el ajedrez es inmanejablemente gigantesco, el entrenamiento solo puede ocurrir en una muestra infinitesimal del árbol del juego. El motor no solo recuerda los valores calculados previamente de las posiciones del tablero, sino que realiza cálculos basados ​​en la disposición de las piezas. Para un ejemplo de red no neural, parte de la evaluación de un motor de ajedrez podría ser sumar el valor de cada pieza de su lado y restar el valor total de las piezas del oponente. Entonces,

Cuando el motor no está entrenado, los valores asignados a una posición también podrían ser aleatorios, ya que los parámetros de la función de evaluación comienzan con valores (generalmente) aleatorios. El objetivo de una fase de entrenamiento es ajustar los parámetros del motor para que asigne puntajes altos a las posiciones del tablero que son estados ganadores probables para el jugador.

Del documento sobre AlphaZero (página 3):

Los parámetros de la red neuronal profunda en AlphaZero se entrenan mediante el aprendizaje de refuerzo de auto-juego, comenzando desde parámetros inicializados aleatoriamente. Los juegos se juegan seleccionando movimientos para ambos jugadores por MCTS. Al final del juego, la posición final se puntúa de acuerdo con las reglas del juego para calcular el resultado del juego: -1 para una pérdida, 0 para un empate y +1 para una victoria. Los parámetros de la red neuronal se actualizan para minimizar el error entre el resultado predicho y el resultado del juego, y maximizar la similitud del vector de políticas con las probabilidades de búsqueda.

[símbolos matemáticos eliminados de la cita]

En resumen, durante el entrenamiento, AlphaZero jugó un juego contra sí mismo. Cuando termina el juego, el resultado del juego y la precisión de sus predicciones sobre cómo procedería el juego se utilizaron para ajustar la red neuronal para que fuera más precisa durante el próximo juego. AlphaZero no mantiene un registro de cada posición que ha visto, pero se está ajustando para poder evaluar con mayor precisión cualquier tablero que vea en el futuro.


Entiendo completamente su explicación a nivel algorítmico, pero todavía estoy asombrado de que funcione. Pensé que los primeros juegos serían tan aleatorios que no tendrían ningún valor de aprendizaje. Parece imposible evaluar el resultado de un movimiento en esa etapa, excepto jugarlo con jaque mate, porque eso es lo único que te han dicho. Pero ese jaque mate solo sucederá después de que haya sucedido una gran cantidad de otras cosas esencialmente al azar. Mi intuición es que simplemente no hay suficientes datos significativos para sacar conclusiones. ¿Por qué me equivoco?
Philip Roe

@PhilipRoe Tienes razón, cada juego solo proporciona un poco de información. De hecho, he escrito mi propio motor de ajedrez que aprende mediante un algoritmo evolutivo. Copias modificadas al azar del motor juegan entre sí; los perdedores se eliminan y los ganadores producen más copias modificadas. Por lo general, se necesitan entre 10,000 y 20,000 juegos para determinar el orden correcto de los valores de las piezas (reina, torre, alfil / caballero, peón). AlphaZero necesitó 44 millones de juegos para lograr su habilidad (tabla en la página 15 del documento vinculado).
Mark H

¡Gracias por responder! Pero todavía estoy asombrado. Existe un gran espacio de posibles posiciones para evaluar. Pero también existe el enorme espacio de posibles preguntas para hacer. Antropomórficamente, me imagino con cero conocimiento previo, excepto las reglas, y una enorme base de datos de juegos que se juegan a un nivel de incompetencia casi inconcebible (aunque no supongo que me recuerden). En qué momento se me ocurre "Oye, tal vez debería contar las piezas "Entonces, ¿cuánto tiempo antes de contar las piezas parece una buena idea?
Philip Roe

1
Me resulta muy difícil de imaginar, incluso si se proporcionaron algunos consejos fuertes sobre "¿Qué constituye una buena pregunta?" Pero sin eso, estoy impresionado de que se pueda establecer una jerarquía de piezas en 20,000 juegos. Así que me resulta muy difícil aceptar que la tabula es realmente rasa. Algunas instrucciones mínimas sobre el proceso de generar y revisar sus reglas (¿cuántas, con qué frecuencia?) Todavía parece esencial.
Philip Roe

1
@PhilipRoe En mi programa, le digo al motor que cuente las piezas, pero no cuánto vale cada pieza. Entonces, le digo al motor qué mirar, pero no cómo pesar lo que ve. AlphaZero es mucho más tabula rasa. Si tienes curiosidad: github.com/MarkZH/Genetic_Chess
Mark H
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.