¿Cómo aprenden los algoritmos de aprendizaje de refuerzo del juego de ajedrez a jugar bien, dado que cada movimiento no está etiquetado como bueno o malo, a diferencia del aprendizaje supervisado donde cada dato está etiquetado como bueno o malo?

Muchos algoritmos de aprendizaje de refuerzo son en realidad un aprendizaje semi-supervisado. De Wikipedia

El aprendizaje de refuerzo ( RL ) es un área de aprendizaje automático inspirada en la psicología conductista, preocupada por la forma en que los agentes de software deben tomar medidas en un entorno para maximizar alguna noción de recompensa acumulativa.

El aprendizaje de refuerzo difiere del aprendizaje supervisado estándar en que los pares de entrada / salida correctos nunca se presentan, ni se corrigen explícitamente las acciones subóptimas. En cambio, la atención se centra en el rendimiento en línea, lo que implica encontrar un equilibrio entre la exploración (del territorio desconocido) y la explotación (del conocimiento actual).

En un esquema de aprendizaje de refuerzo típico, el agente observa un estado S , y elige una acción A basada en la política P , y luego el entorno retroalimenta la recompensa R de la acción A, y el entorno cambia al siguiente estado S ‘. Y el proceso continúa hasta que alcanzas el estado HECHO. los objetivo final del aprendizaje por refuerzo? Tal como dice Wikipedia, para maximizar la recompensa total, es decir, la suma de recompensas a largo plazo .

¿Todavía demasiado abstracto? Veamos cómo el aprendizaje por refuerzo juega el juego de ajedrez. En cada turno para el agente, el agente observa el tablero de ajedrez ( estado S ) y elige un movimiento ( acción A ) en función de su algoritmo de juego de ajedrez aprendido ( política P). Luego, el juego (entorno) retroalimenta el resultado del movimiento (tal vez solo el cambio de posición de una pieza, o más tomar una pieza del rival, etc.), que corresponde a la recompensa R, un valor predefinido (generalmente positivo para “Bueno”, negativo para “malo”, cero para “neutral” o “no sabemos si es bueno o malo”, pero definir una función de recompensa es difícil …). Luego el juego continúa y el movimiento resulta en un nuevo estado de tablero de ajedrez ( estado S ‘ ).

Entonces aún puede preguntar, ¿cómo aprende el agente el algoritmo de juego de ajedrez ( política P) ? Bueno, ahí es donde entran en juego todo tipo de técnicas de aprendizaje por refuerzo. Es un gran tema. Básicamente hay dos clases principales: basadas en valores y basadas en políticas. Para obtener más información, consulte Aprendizaje por refuerzo: Wikipedia.

En el ajedrez, hay una buena función de evaluación , conocida como “material”.

P: 1 B / K: 3 R: 5 Q: 9 describe la primera aproximación humana.

Una máquina puede descubrir una heurística de evaluación posicional aún mejor con esto como punto de partida (utilizando estas técnicas de aprendizaje sofisticadas hoy en día). El programador puede incluir información sobre otras características como, por ejemplo, peones pasados ​​(promoción cercana) y peones duplicados, de mayor o menor valor, u obispos bloqueados.

Tenga en cuenta que esta es una evaluación estática sobre una posición, solo haciendo algunas sumas para obtener una fuerte suposición sobre quién está adelante, según el material. La simplicidad de la función de evaluación básica es lo que distingue el ajedrez y el progreso del motor de juego de la computadora durante tantos años (y segundo, atención).

Creo que no he podido abordar la pregunta. El aprendizaje de refuerzo del resultado del juego podría implementarse en combinación con las técnicas tradicionales.

Los algoritmos de aprendizaje de refuerzo (como Q-learning) esencialmente esperarán hasta el final del juego y luego asignarán todos los movimientos de ese juego como “malos” o “buenos”. Estos algoritmos a menudo usarán algo de peso para que las acciones más cercanas a La fuente del refuerzo (el resultado bueno o malo del juego) obtendrá un refuerzo positivo o negativo más fuerte que las acciones más distantes. Entonces, en este caso, los movimientos durante el final del juego obtendrán más refuerzo que los del comienzo del juego.

Algunas veces se pueden usar otras fuentes de información para etiquetar más allá del resultado del juego. Por ejemplo, tomar o soltar piezas también podría usarse para refuerzo positivo y negativo.

Imagine una modificación extremadamente simple del ajedrez, donde es un juego de 1 jugador, tiene una torre y el objetivo es ir de a1 a h8. Te puntúan de la siguiente manera: 10 puntos por llevar la torre a h8 y -1 puntos por jugada.

Inicialmente tomarás acciones aleatorias (bueno, no tú, tu algoritmo), explorarás el espacio de estado y eventualmente terminarás un episodio de este juego. A medida que lo haga, actualizará el “valor” (como se estima actualmente) de realizar cualquier acción desde un estado determinado.

Entonces, al principio, básicamente estarás tomando nota de la penalización de -1 por jugada, hasta que realmente consigas en la torre el objetivo de h8. Luego actualizará de donde sea que venga, digamos que es d8, con un mayor valor porque allí fue donde pudo obtener la recompensa de los +10 puntos.

Esto es subóptimo. Por un tiempo, desde allí puedes entrenar a tu agente para que pase de a1 a d1, desde el cual recuerda que d8 es excelente y termina con un puntaje de +7 para los tres movimientos y alcanzar el estado objetivo.

Pero, si lo deja explorar lo suficiente, eventualmente descubrirá el camino desde a8 o h1 hasta el objetivo de h8. Entonces, cualquier acción que lo lleve a uno de esos dos estados tendrá una calificación más alta, porque esas dos posiciones le permiten ganar en 1 movimiento más. Afortunadamente, dado que a1 te permite golpear cualquiera de esos cuadrados, podrás aprender el juego óptimo rápidamente en ese punto.

Si haces esto mucho más complicado, tienes un aprendizaje de refuerzo para el ajedrez o cualquier otra cosa. La analogía de las “etiquetas” en este contexto es la asignación de recompensa, incluso si la recompensa es 0 hasta llegar a un estado terminal. Pero cuando alcanza ese estado terminal, puede actualizar los valores del estado que lo alcanza. Y luego, cuando este penúltimo estado es visible como una posible acción, puede actualizar el valor para otro estado más alejado. Y así.

(Una complicación es que generalmente no podemos simplemente mantener una tabla para estos “valores” porque el espacio de estado es muy grande, por lo que aprendemos una función que asigna el estado al valor, y eso ciertamente sería una arruga para el ajedrez. Otra complicación es que el ajedrez es un juego de dos jugadores, pero hay modificaciones para el contexto de los juegos de dos jugadores).

Digamos que por cada juego de ajedrez que ganaste, te pagaron $ 1000.

Un movimiento que lo llevó a jaque mate valdría $ 1000. Sin embargo, cualquiera de los movimientos que lo llevan a la posición antes del jaque mate también vale mucho, tal vez un poco menos de $ 1000 ya que existe la posibilidad de que no pueda jaque mate.

Del mismo modo, todos los movimientos hasta el comienzo del juego valen “algo”.

El aprendizaje por refuerzo utiliza estos mismos principios. Los movimientos que te llevan un paso más cerca del jaque mate terminan siendo “valiosos”, desde el inicio del juego.

More Interesting

¿Cuáles son algunos de los diferentes casos que debería considerar usar matrices bidimensionales sobre matrices unidimensionales en Java?

En robótica, ¿cuáles son algunos algoritmos de planificación de rutas fáciles de implementar en un Turtlebot en ROS?

Actualmente estoy en USACO Gold, pero apenas puedo resolver nada. ¿Qué debo hacer para ser más competente? ¿Dominar el oro es solo una cuestión de aprender toneladas de algoritmos, o necesita más que eso?

Cómo hacer un sistema de filtrado colaborativo con Django como back-end

¿Cuáles son algunos libros excelentes sobre la programación de algoritmos ARM?

¿Cómo debería resolver mejor los problemas de programación?

¿Cuál es la lógica detrás de los algoritmos de ajuste de aprendizaje automático?

¿Cuál es el mejor algoritmo de procesamiento de imágenes para comparar una pintura recibida como entrada contra la base de datos y seleccionar la coincidencia más cercana?

¿Cuál es la necesidad de determinar la complejidad temporal de un algoritmo o código?

¿Cuál ha sido el desarrollo reciente en algoritmos de búsqueda en tiempo real?

¿Cuáles son las ventajas de una matriz?

¿Cómo es inventar tu propio algoritmo?

¿Qué algoritmo de compresión de imagen se usa en WhatsApp?

¿Existe un algoritmo para contar el número de subsecuencias divisibles por 8?

Dada una lista de cadenas, ¿cómo puedo determinar si existe un orden de caracteres para el cual las cadenas están ordenadas en orden lexicográfico?