Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Manos a la obra: identificando objetos con MobileNetV2

Se presenta el siguiente desarollo:

Si usas Google Colab, ejecuta una sola vez:

!pip install gymnasium

import numpy as np
import gymnasium as gym

1. Configurar el entorno

env = gym.make("FrozenLake-v1", is_slippery=True)

2. Definir los hiperparámetros

alpha = 0.8
gamma = 0.95
epsilon = 1.0
epsilon_decay = 0.9995
epsilon_min = 0.01
num_episodes = 20000

Inicializar la Q-Table

q_table = np.zeros((env.observation_space.n, env.action_space.n))

3. Entrenamiento con Q-Learning

for episode in range(num_episodes):
state, _ = env.reset()
done = False

while not done:
    if np.random.random() < epsilon:
        action = env.action_space.sample()
    else:
        action = np.argmax(q_table[state])

    next_state, reward, terminated, truncated, _ = env.step(action)
    done = terminated or truncated

    q_table[state, action] += alpha * (
        reward + gamma * np.max(q_table[next_state]) - q_table[state, action]
    )

    state = next_state

epsilon = max(epsilon_min, epsilon * epsilon_decay)

4. Evaluación

successes = 0
test_episodes = 1000

for _ in range(test_episodes):
state, _ = env.reset()
done = False

while not done:
    action = np.argmax(q_table[state])
    state, reward, terminated, truncated, _ = env.step(action)
    done = terminated or truncated

    if done and reward == 1:
        successes += 1

print(f"Éxitos: {successes} de {test_episodes}")
print(f"Tasa de éxito: {successes/test_episodes*100:.2f}%")

Explicación

**1. Configuración: ** Se crea el entorno FrozenLake-v1 con gymnasium, donde el agente debe llegar a la meta evitando los agujeros.

**2. Hiperparámetros: ** Se inicializa la Q-Table con ceros y se definen:

alpha = 0.8: velocidad de aprendizaje.
gamma = 0.95: importancia de recompensas futuras.
epsilon = 1.0: exploración inicial.
epsilon_decay = 0.9995: reduce la exploración gradualmente.
epsilon_min = 0.01: mantiene una exploración mínima.
num_episodes = 20000: episodios de entrenamiento.

3. Entrenamiento: El agente utiliza la estrategia epsilon-greedy, actualiza la Q-Table mediante la ecuación de Q-Learning y reduce epsilon después de cada episodio.

**4. Evaluación: **Se ejecutan 1000 episodios sin exploración, eligiendo siempre la mejor acción aprendida y contabilizando los éxitos.

5. Experimentación: Se pueden modificar alpha, gamma, epsilon y num_episodes para observar cómo cambia el rendimiento. Un mayor número de episodios o un gamma más alto suelen mejorar el aprendizaje, mientras que ajustar epsilon controla el equilibrio entre exploración y explotación.

1 respuesta

Hola George! ¿Cómo estás?

Gracias por compartir tu código con nosotros. Sigue así y no dudes en volver al foro si tienes alguna pregunta o dificultad.

¡Gracias nuevamente!

Saludos,

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!