Serie AI Architect Must Know: Aprendizaje por refuerzo

Autor: Zen y el arte de la programación informática

1. Introducción

1. ¿Qué es el aprendizaje por refuerzo?

El aprendizaje por refuerzo (RL) es un campo del aprendizaje automático que utiliza ciertas recompensas y castigos en el entorno para promover que los agentes exploren, descubran y utilicen continuamente el conocimiento y la experiencia en un entorno, con el fin de Un método de aprendizaje automático para maximizar las recompensas. Es adecuado para muchos escenarios de aplicaciones prácticas, incluidos juegos, finanzas, conducción autónoma, etc.

2. Ventajas del aprendizaje por refuerzo

  • 1. Planificación : RL puede permitir que los agentes resuelvan problemas complejos de una manera más eficiente, lo que les permite completar tareas complejas a través del aprendizaje.
  • 2. Mecanismo de retroalimentación : el sistema de aprendizaje de RL puede mejorar su estrategia basándose en la información de retroalimentación ambiental y así lograr una mejora sistemática.
  • 3. Escalabilidad : RL permite a los agentes actualizar gradualmente de tareas simples a tareas más difíciles y encontrar formas de resolverlas.
  • 4. Desacoplamiento : RL puede manejar eficazmente relaciones no lineales complejas y el agente no necesita comprender completamente todo el sistema.

    3. Clasificación del aprendizaje por refuerzo.

    (1) RL basado en modelos

    En la RL basada en modelos, el agente modela la relación de mapeo entre el espacio de estados y el espacio de acción, y modela una función de valor basada en esto. Luego, se utilizan métodos como la búsqueda de árboles de Monte Carlo para buscar en el espacio de estados y seleccionar comportamientos para maximizar los beneficios a largo plazo.

La ventaja de la RL basada en modelos es que puede considerar el impacto de los cambios ambientales, como la aparición de nuevas carreteras, enemigos, sensores, etc. Sin embargo, las desventajas también son obvias: requiere modelar una ecuación de transición de estado completa y consume recursos computacionales. Además, debido a que el espacio de estados es demasiado complejo, es propenso al problema de la "explosión del espacio de estados".

(2) Aprendizaje por refuerzo basado en modelos

Este enfoque de RL se caracteriza por la separación entre la toma de decisiones y el aprendizaje. Primero, el agente selecciona una acción, luego espera comentarios del entorno, actualiza su función de valor u otros parámetros del modelo en función de los comentarios y, finalmente, selecciona una acción nuevamente. Este método evita el problema de la explosión del espacio de estados durante el proceso de aprendizaje y puede integrar algunos factores importantes relacionados con el tiempo en el modelo. Pero también introduce costos de capacitación adicionales, como la recopilación de datos, la capacitación de modelos, etc.

(3) RL directo

Direct RL se diferencia de los dos primeros métodos en que intenta controlar directamente el entorno, lo que significa que el agente tiene que aprender a maximizar las recompensas.

La RL directa generalmente se implementa utilizando el algoritmo Q-learning o el algoritmo SARSA.

(4) Otros

Además de los cuatro tipos de métodos RL mencionados anteriormente, existen muchos otros tipos de métodos RL, como redes Monte Carlo reforzadas, métodos RL sin modelos, etc. Cada uno de estos métodos tiene sus propios méritos y cumple sus propias funciones. Por lo tanto, qué método elegir depende de los diferentes escenarios y necesidades de aplicación.

2. Explicación de conceptos y términos básicos

1. ¿Qué es el Estado?

En los problemas de aprendizaje por refuerzo, el estado proporcionado por el entorno al agente es el estado actual del agente. En cada iteración, el agente recibe el último estado del entorno. Por ejemplo, en el minijuego de Tetris, cada estado representa el estado de los bloques de Tetris cuando caen, que puede ser el estado inicial (es decir, el tablero en blanco) o el estado después de que algunos bloques hayan caído.

2. ¿Qué es la acción?

En los problemas de aprendizaje por refuerzo, las acciones se refieren a instrucciones de comportamiento utilizadas por el agente para cambiar el estado del entorno. En cada iteración, el agente decide qué acciones tomar para cambiar el estado del medio ambiente.

Por ejemplo, en el minijuego de Tetris, cada acción válida es mover el bloque, rotarlo o arreglarlo de alguna forma.

3. ¿Qué es la recompensa?

En los problemas de aprendizaje por refuerzo, la recompensa es una señal de recompensa que representa el impacto de la acción realizada por el agente en el medio ambiente. En cada iteración, el agente es recompensado e intenta encontrar una estrategia que maximice la recompensa acumulada.

Por ejemplo, en el juego Tetris, cada vez que el jugador completa una operación, recibirá una puntuación determinada, lo que se denomina recompensa. Si el jugador falla, perderá algunos puntos.

4. ¿Qué es la trayectoria?

En los problemas de aprendizaje por refuerzo, una trayectoria es la secuencia de acción de un agente en una determinada secuencia de estados, también llamada política. Cada trayectoria corresponde a un rendimiento general, que puede utilizarse como estándar para juzgar la eficacia de la estrategia del agente.

Por ejemplo, en el juego Tetris, una trayectoria representa la estrategia del agente. Una trayectoria puede estar compuesta de muchos estados, pero sólo hay una secuencia de acción final, que constituye una estrategia.

5. ¿Qué es el proceso de decisión de Markov?

Los procesos de decisión de Markov (MDP) son la base de los problemas de aprendizaje por refuerzo. Describe una serie de estados, acciones y recompensas correspondientes, donde los cambios en los estados y acciones solo están relacionados con el estado actual, no con el estado anterior. El espacio de estado y el espacio de acción de MDP son limitados. El agente solo puede pasar del estado S_t al estado S_{t+1}. Según su definición, esta probabilidad de transición depende del estado actual S_t y de la acción A_t.

6. ¿Qué es la política?

La política se refiere a las acciones tomadas por un agente en un estado determinado, se puede generar una trayectoria al ejecutar la política, es decir, una secuencia de acciones bajo una secuencia de estado.

7. ¿Qué es la función de valor?

La función de valor se refiere al rendimiento esperado que un agente puede obtener dado un estado determinado. Describe la expectativa de recompensa acumulada máxima obtenida al adoptar la política en cada estado.

8. ¿Qué es la Meta?

El objetivo representa la tarea que se espera que complete el agente. En los problemas de aprendizaje por refuerzo, el objetivo puede ser maximizar el rendimiento acumulado esperado o maximizar la recompensa de un solo paso.

3. Explicación de los principios básicos del algoritmo, pasos operativos específicos y fórmulas matemáticas.

(1) Cómo establecer un entorno de aprendizaje por refuerzo

Primero, es necesario crear un proceso de decisión de Markov (MDP) que describa estados, acciones y recompensas. El MDP necesita tener un espacio de estado S y un espacio de acción A limitados, y el número de estados y acciones suele ser relativamente grande, por lo que se requiere un algoritmo distribuido para optimizar la búsqueda y la solución. Luego, defina un estado inicial s_initial en el MDP para inicializar el agente.

(2) Cómo diseñar algoritmos de aprendizaje por refuerzo

Existen varios algoritmos de aprendizaje por refuerzo, que incluyen:

  1. Q-Learning: Q-Learning es uno de los algoritmos de aprendizaje por refuerzo más simples, que utiliza la función Q para estimar el valor de la acción estatal y puede aprender la política óptima.
  2. Sarsa (lambda): el algoritmo Sarsa (lambda) se basa en Q-Learning y agrega un término λ, que puede descontar las recompensas a corto plazo prestando más atención a las recompensas a largo plazo.
  3. Actor-Crítico: el método Actor-Crítico combina principalmente el gradiente de políticas y la iteración de valores para actualizar las políticas y las funciones de valor para formar un marco de aprendizaje general.

Este artículo utiliza el algoritmo Q-Learning. El siguiente es el flujo del algoritmo de Q-Learning:

  1. Inicialice la tabla Q y use -inf para indicar que todas las acciones en los estados restantes no son factibles.
  2. Al comienzo de la t-ésima iteración, el agente ingresa al estado st;
  3. Ejecute la acción t-ésima en y obtenga el estado st' y la recompensa rt;
  4. Actualice la tabla Q según la ecuación de Bellman, Q(st,at) += alpha * (rt + gamma * max(Q(st',a)) - Q(st,at));
  5. Actualice st a st' y continúe ejecutando la iteración t+1 hasta que se alcance el número máximo de iteraciones N o se cumplan otras condiciones de detención.

(3) Cómo resolver el problema de la explosión del espacio de estados.

Cuando el espacio de estados es grande, la cantidad de memoria ocupada por la tabla Q también aumentará exponencialmente. Por lo tanto, el problema de la explosión del espacio de estados se puede mitigar utilizando:

  1. Utilice un esquema de codificación de estado bien diseñado para representar estados como vectores o tensores;
  2. Cuando utilice Q-Learning, diseñe múltiples conjuntos de tablas Q para posibles combinaciones de acciones estatales para reducir su número;
  3. Utilice el método de muestreo de importancia para muestrear pares estado-acción para reducir la contribución de pares estado-acción no óptimos, reduciendo así el tamaño de la tabla Q.

4. Ejemplos de código específicos y explicaciones.

(1) Código de muestra de Python

import numpy as np

# define the state space and action space
state_space = ['s0','s1']
action_space = ['a0', 'a1']

# initialize q table with zeros
q_table = np.zeros((len(state_space), len(action_space)))

# set hyperparameters
alpha = 0.1
gamma = 0.9

# training loop
for i in range(1000):
    # sample a random state from state space
    current_state = np.random.choice(state_space)

    # choose an action based on epsilon greedy policy
    if np.random.uniform() < 0.1:
        next_action = np.random.choice(action_space)
    else:
        next_action = np.argmax(q_table[state_space.index(current_state)])

    # take action and observe reward
    new_state = None
    reward = 0
    if next_action == 'a0':
        new_state ='s0'
        reward = -1
    elif next_action == 'a1':
        new_state ='s1'
        reward = 1

    # update q value
    q_table[state_space.index(current_state)][action_space.index(next_action)] += \
        alpha * (reward + gamma * np.max(q_table[state_space.index(new_state)]) -
                 q_table[state_space.index(current_state)][action_space.index(next_action)])

    print('Episode:', i,'Current State:', current_state,
          'Next Action:', next_action, 'New State:', new_state, 'Reward:', reward)

print('\nFinal Q Table:\n', q_table)

(2) Cómo configurar hiperparámetros

Los hiperparámetros se refieren a parámetros establecidos para adaptarse al entorno y al algoritmo durante el proceso de entrenamiento, y su propósito es ajustar el rendimiento del entrenamiento. A continuación se muestran algunos hiperparámetros comunes:

  1. tasa de aprendizaje (α): cuanto mayor es α, más probable es que el algoritmo elija la acción con la mayor recompensa en el estado actual;
  2. factor de descuento (γ): cuanto mayor es γ, más sesgado está el algoritmo hacia recompensas a largo plazo;
  3. tasa de exploración (ε): cuanto menor es ε, más probable es que el algoritmo seleccione acciones aleatoriamente para explorar más combinaciones de estado-acción;
  4. número de episodios (N): cuanto mayor sea N, mayor será la eficiencia del entrenamiento del algoritmo, pero también provocará problemas de sobreajuste;
  5. iteraciones máximas por episodio (T): cuanto mayor es T, mayor es el tiempo de entrenamiento del algoritmo.

En términos generales, los hiperparámetros apropiados deben determinarse en función de las características del entorno y las tareas, combinados con la experiencia, los profesores, los trabajos, etc.

Supongo que te gusta

Origin blog.csdn.net/universsky2015/article/details/133446788
Recomendado
Clasificación