Lánzate a empezar Reinforcement Learning: tu primer paso concreto hoy
Comenzar con el Aprendizaje por Refuerzo: lo esencial en un artículo — código real, diagramas y pasos concretos, extractos de un curso de 42 lecciones.
La mejor forma de aprender Comenzar Reinforcement Learning es practicando. Este artículo te pone en marcha con extractos prácticos extraídos de un curso de 42 lecciones: lo necesario para obtener un primer resultado ya mismo.
- Recursos del curso e Instalar el entorno
- Introducción al Reinforcement Learning
- Conceptos Fundamentales del RL
- MDP Parte 1 - Estados Acciones Recompensas
- MDP Parte 2 - Política y Ecuaciones de Bellman
Capítulo 02 – Ficha de Terminología Completa
Paradigma de aprendizaje automático en el que un agente aprende a comportarse en un entorno realizando acciones y recibiendo recompensas o penalizaciones a cambio.
- El agente observa el estado del entorno
- Elige una acción para ejecutarla
- Observa el resultado : nuevo estado + recompensa (positiva o negativa)
- Al repetir este ciclo, aprende qué acciones maximizan la recompensa a largo plazo
Estado — State st Componente fundamental
Descripción completa de la situación actual del entorno en el instante t. Es la información de la que dispone el agente para decidir qué acción emprender.
| Tipo de estado | Descripción | Ejemplo |
|---|---|---|
| Estado inicial | Posición inicial al comienzo de un episodio | Casilla (1,1) en un laberinto |
| Estado intermedio | Cualquier estado durante el episodio (no terminal) | Casillas recorridas en el laberinto |
| Estado terminal | Estado de fin de episodio (victoria o derrota) | Salida del laberinto o agujero |
Acción at Componente fundamental
Lo que el agente decide hacer en un estado dado. El conjunto de todas las acciones posibles forma el espacio de acciones.
Número finito de acciones enumerables.
Ejemplos : Arriba, Abajo, Izquierda, Derecha (laberinto) ; 0 o 1 (CartPole)
Valores numéricos dentro de un intervalo.
Ejemplos : Fuerza de 0 a 10 N ; ángulo del volante de −30° a +30°
Recompensa rt — Reward Señal de aprendizaje
Señal numérica recibida por el agente después de cada acción. Es el único medio que tiene el entorno para indicar al agente si su acción fue buena o mala.
Recompensa recibida directamente después de una acción en el paso t. Proporciona retroalimentación instantánea sobre la calidad de una sola acción.
Notación : rt+1
Suma de las recompensas acumuladas durante todo el episodio (o hasta el infinito). Es lo que el agente busca realmente maximizar.
Notación : Gt = rt+1 + rt+2 + rt+3 + …
Discount — Factor de descuento γ (gamma) Parámetro clave
Valor comprendido entre 0 y 1 que pondera las recompensas futuras. Cuanto más lejana esté una recompensa en el tiempo, más se «devalúa». Es la penalización aplicada a las recompensas futuras.
El agente es «cortoplacista» : solo piensa en la recompensa inmediata. Comportamiento a corto plazo.
El agente es «previsor» : considera las recompensas futuras con casi la misma importancia. Comportamiento a largo plazo.
Utilidad — Utility / Return Gt Objetivo final
La suma total de las recompensas descontadas obtenidas a partir del paso de tiempo t. Es EL valor que el agente busca maximizar. También llamada retorno o rendimiento acumulado.
Política — Policy π Núcleo del RL
La estrategia de decisión del agente : para cada estado, define qué acción emprender. Es el «cerebro» del agente, lo que busca aprender.
Entornos Virtuales Python
¿Por qué entornos virtuales?
El problema sin venv
La solución con venv
| Entorno | Python | Bibliotecas | Proyecto |
|---|---|---|---|
myenv39 | 3.9 | TensorFlow 2.10, Gym 0.26 | Curso RL (anterior) |
myenv310 | 3.10 | Streamlit 1.28, pandas 2.0 | Dashboard |
myenv311 | 3.11 | TensorFlow 2.15, Gymnasium | Curso RL (actual) |
rl-env | 3.12 | Gymnasium, NumPy, Matplotlib | Este curso |
🪟 Windows Instalar varias versiones de Python
Algunos comandos requieren derechos de administrador. Si aparece un error de permisos al activar un venv, ejecuta primero en PowerShell :
# Abrir PowerShell como administrador y luego : Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser # Responder O (Sí) a la confirmación
Descarga e instala cada versión desde python.org/downloads. Marca «Add to PATH» solo para la primera versión. Para las siguientes, desmárcalo para evitar conflictos.
py se instala automáticamente. Te permite llamar a cualquier versión instalada con py -3.10, py -3.11, etc.python --version # Python 3.x.x (la versión por defecto en el PATH) py -3.9 --version # Python 3.9.x py -3.10 --version # Python 3.10.x py -3.11 --version # Python 3.11.x py -3.12 --version # Python 3.12.x py -3.13 --version # Python 3.13.x
# Verificar la versión py -3.9 --version # Crear el entorno virtual py -3.9 -m venv myenv39 # Activar el entorno (PowerShell) .\myenv39\Scripts\activate # El prompt cambia : (myenv39) indica que el entorno está activo (myenv39) python --version # Python 3.9.x (myenv39) pip install streamlit (myenv39) pip show streamlit # Name: streamlit # Version: 1.x.x # ... # Desactivar el entorno (myenv39) deactivate
py -3.10 --version
py -3.10 -m venv myenv310
.\myenv310\Scripts\activate
(myenv310) python --version
# Python 3.10.x
(myenv310) pip install streamlit
(myenv310) pip show streamlit
(myenv310) deactivate# Python 3.11 py -3.11 -m venv myenv311 .\myenv311\Scripts\activate (myenv311) python --version (myenv311) pip install streamlit (myenv311) deactivate # Python 3.12 py -3.12 -m venv myenv312 .\myenv312\Scripts\activate (myenv312) python --version (myenv312) pip install streamlit (myenv312) deactivate # Python 3.13 py -3.13 -m venv myenv313 .\myenv313\Scripts\activate (myenv313) python --version (myenv313) pip install streamlit (myenv313) deactivate
🔗 SSH Conectarse a una VM Linux desde Windows
Paso 1 — Instalar SSH en la VM Linux
En el terminal de la VM Linux, como root :
su # o : sudo -s apt install openssh-server -y systemctl status ssh # verificar el estado systemctl start ssh # iniciar si es necesario systemctl enable ssh # iniciar automáticamente al arrancar # Encontrar la dirección IP de la VM ip -br addr # lo UNKNOWN 127.0.0.1/8 # eth0 UP 192.168.2.139/24 ← copiar esta IP
Primer script Gym – Probar la instalación
El objetivo de esta lección es únicamente verificar que tu entorno funciona. Vas a copiar y pegar scripts y observar los resultados. Aún no necesitas entenderlo todo — cada línea de código se explicará en detalle en los próximos capítulos. Respira, ¡es solo una prueba de arranque!
Opción A – Probar en local (Jupyter)
Si has seguido las lecciones 01 y 02 (instalación de Anaconda + configuración de Jupyter), activa tu entorno y lanza Jupyter :
conda activate rl-env jupyter notebook
Luego copia los scripts de más abajo en una celda y ejecútalos con Shift + Enter.
Opción B – Probar en Google Colab (¡no hay que instalar nada!)
Google Colab funciona directamente en tu navegador. No requiere ninguna instalación: ideal para probar ahora e instalar en local más tarde.
Abre un nuevo notebook en colab.research.google.com e instala Gymnasium en la primera celda :
# Celda 1 — Instalación (solo Colab, ya hecho si estás en local) !pip install gymnasium[toy-text] matplotlib --quiet
Luego copia los scripts siguientes en las celdas posteriores. ¡Eso es todo!
¿Qué es Gymnasium (antes OpenAI Gym)?
Gymnasium es la biblioteca de referencia para probar algoritmos de RL. Proporciona entornos estandarizados con una interfaz uniforme.
Entornos clásicos
Interfaz universal
Script 1 – Explorar el entorno CartPole
import gymnasium as gym
import numpy as np
# Crear el entorno
env = gym.make("CartPole-v1")
obs, info = env.reset(seed=42)
print("=== CartPole-v1 ===")
print(f"Espace d'états : {env.observation_space}")
print(f" Nombre de dimensions : {env.observation_space.shape[0]}")
print(f" Valeurs min : {env.observation_space.low}")
print(f" Valeurs max : {env.observation_space.high}")
print(f"\nEspace d'actions : {env.action_space}")
print(f" Nombre d'actions : {env.action_space.n}")
print(f" Actions : 0 (gauche), 1 (droite)")
print(f"\nObservation initiale : {obs}")
print(f" [position cart, vitesse cart, angle bâton, vitesse bâton]")
env.close()Script 2 – Agente aleatorio en CartPole
import gymnasium as gym
import numpy as np
import matplotlib.pyplot as plt
def run_random_agent(env_name, n_episodes=100):
"""Agent qui prend des actions aléatoires - notre baseline."""
env = gym.make(env_name)
total_rewards = []
for episode in range(n_episodes):
obs, info = env.reset()
episode_reward = 0
done = False
while not done:
# Action aléatoire (pas d'apprentissage)
action = env.action_space.sample()
obs, reward, terminated, truncated, info = env.step(action)
episode_reward += reward
done = terminated or truncated
total_rewards.append(episode_reward)
env.close()
return total_rewards
# Exécuter l'agent aléatoire
rewards = run_random_agent("CartPole-v1", n_episodes=100)
print(f"Récompense moyenne : {np.mean(rewards):.2f}")
print(f"Récompense maximale : {np.max(rewards):.0f}")
print(f"Récompense minimale : {np.min(rewards):.0f}")
# Visualiser
plt.figure(figsize=(10, 4))
plt.plot(rewards, alpha=0.6, label="Récompense par épisode")
plt.axhline(np.mean(rewards), color='red', linestyle='--', label=f"Moyenne: {np.mean(rewards):.1f}")
plt.xlabel("Épisode")
plt.ylabel("Récompense totale")
plt.title("Agent aléatoire - CartPole-v1")
plt.legend()
plt.tight_layout()
plt.savefig("agent_aleatoire_cartpole.png")
plt.show()Script 3 – Explorar FrozenLake (entorno discreto)
import gymnasium as gym
# FrozenLake : grille 4x4 avec états discrets
env = gym.make("FrozenLake-v1", is_slippery=False)
obs, info = env.reset()
print("=== FrozenLake-v1 ===")
print(f"Espace d'états : {env.observation_space.n} états (grille 4x4)")
print(f"Espace d'actions : {env.action_space.n} actions")
print(f" 0=gauche, 1=bas, 2=droite, 3=haut")
print(f"\nÉtat initial : {obs}")
print("\nVisualisez la grille :")
env.render()
# Boucle manuelle
actions_manuelles = [2, 2, 1, 1, 1, 2, 1, 2, 2] # chemin vers la sortie
total_reward = 0
print("\n--- Simulation manuelle ---")
obs, _ = env.reset()
for i, action in enumerate(actions_manuelles):
obs, reward, terminated, truncated, _ = env.step(action)
total_reward += reward
direction = ["←", "↓", "→", "↑"][action]
print(f"Étape {i+1}: {direction} État={obs} Récompense={reward}")
if terminated or truncated:
break
print(f"\nRécompense totale : {total_reward}")
env.close()Este artículo cubre los extractos más útiles — el curso completo Comenzar Reinforcement Learning (12 capítulos, 42 lecciones, ejercicios resueltos y proyecto final) te lleva hasta el final.
./acceder-au-cours-complet curso gratuito : Dominar Claude CodeFAQ
¿Cuánto tiempo se necesita para aprender Comenzar Reinforcement Learning?
¿Se necesitan requisitos previos?
¿Por dónde empezar concretamente?
📬 ¿Quieres recibir este tipo de guía cada semana? Suscríbete gratis — código real, cero palabrería.