Aprendizaje por refuerzo SARSA

Prerrequisitos: Técnica Q-Learning
El algoritmo SARSA es una ligera variación del popular algoritmo Q-Learning. Para un agente de aprendizaje en cualquier algoritmo de aprendizaje por refuerzo, su política puede ser de dos tipos: 
 

  1. Sobre Política: En este, el agente de aprendizaje aprende la función de valor de acuerdo con la acción actual derivada de la política que se está utilizando actualmente.
  2. Off Policy: En este, el agente de aprendizaje aprende la función de valor de acuerdo a la acción derivada de otra política.

La técnica Q-Learning es una técnica Off Policy y utiliza el enfoque codicioso para aprender el valor Q. La técnica SARSA, por otro lado, es una política On y utiliza la acción realizada por la política actual para conocer el valor Q.
Esta diferencia es visible en la diferencia de las declaraciones de actualización para cada técnica:- 
 

  1. Aprendizaje Q: Q(s_{t},a_{t}) = Q(s_{t},a_{t}) + \alpha (r_{t+1}+\gamma max_{a}Q(s_{t+1},a)-Q(s_{t},a_{t}))
  2. SARAS: Q(s_{t},a_{t}) = Q(s_{t},a_{t}) + \alpha (r_{t+1}+\gamma Q(s_{t+1},a_{t+1})-Q(s_{t},a_{t}))

Aquí, la ecuación de actualización de SARSA depende del estado actual, la acción actual, la recompensa obtenida, el estado siguiente y la acción siguiente. Esta observación condujo a la denominación de la técnica de aprendizaje como SARSA significa Estado Acción Recompensa Estado Acción que simboliza la tupla (s, a, r, s’, a’).
El siguiente código de Python demuestra cómo implementar el algoritmo SARSA utilizando el módulo de gimnasio de OpenAI para cargar el entorno.
Paso 1: Importación de las bibliotecas requeridas
 

Python3

import numpy as np
import gym

Paso 2: Crear el entorno
Aquí, usaremos el entorno ‘FrozenLake-v0’ que está precargado en el gimnasio. Puede leer sobre la descripción del entorno aquí .
 

Python3

#Building the environment
env = gym.make('FrozenLake-v0')

Paso 3: inicialización de diferentes parámetros
 

Python3

#Defining the different parameters
epsilon = 0.9
total_episodes = 10000
max_steps = 100
alpha = 0.85
gamma = 0.95
 
#Initializing the Q-matrix
Q = np.zeros((env.observation_space.n, env.action_space.n))

Paso 4: Definición de las funciones de utilidad que se utilizarán en el proceso de aprendizaje
 

Python3

#Function to choose the next action
def choose_action(state):
    action=0
    if np.random.uniform(0, 1) < epsilon:
        action = env.action_space.sample()
    else:
        action = np.argmax(Q[state, :])
    return action
 
#Function to learn the Q-value
def update(state, state2, reward, action, action2):
    predict = Q[state, action]
    target = reward + gamma * Q[state2, action2]
    Q[state, action] = Q[state, action] + alpha * (target - predict)

Paso 5: Capacitación del agente de aprendizaje
 

Python3

#Initializing the reward
reward=0
 
# Starting the SARSA learning
for episode in range(total_episodes):
    t = 0
    state1 = env.reset()
    action1 = choose_action(state1)
 
    while t < max_steps:
        #Visualizing the training
        env.render()
         
        #Getting the next state
        state2, reward, done, info = env.step(action1)
 
        #Choosing the next action
        action2 = choose_action(state2)
         
        #Learning the Q-value
        update(state1, state2, reward, action1, action2)
 
        state1 = state2
        action1 = action2
         
        #Updating the respective vaLues
        t += 1
        reward += 1
         
        #If at the end of learning process
        if done:
            break

En el resultado anterior, la marca roja determina la posición actual del agente en el entorno, mientras que la dirección entre paréntesis indica la dirección de movimiento que el agente realizará a continuación. Tenga en cuenta que el agente permanece en su posición si se sale de los límites.
Paso 6: Evaluación del desempeño
 

Python3

#Evaluating the performance
print ("Performance : ", reward/total_episodes)
 
#Visualizing the Q-matrix
print(Q)

Publicación traducida automáticamente

Artículo escrito por AlindGupta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *