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.

Lánzate a empezar Reinforcement Learning: tu primer paso concreto hoy

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.

tl;dr
  • 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
~$ cat ./parcours.md # Comenzar Reinforcement Learning — 11 capítulos
01
Recursos del curso e Instalar el entorno
→ Recursos del Curso & Introducción→ Instalar Python, Anaconda y TensorFlow+ 3 otras lecciones
02
Introducción al Reinforcement Learning
→ ¿Qué es el Reinforcement Learning?→ Comparación Aprendizaje Supervisado, No Supervisado y RL+ 2 otras lecciones
03
Conceptos Fundamentales del RL
→ Interacción Agente-Entorno→ Exploración vs Explotación — El Gran Dilema+ 2 otras lecciones
04
MDP Parte 1 - Estados Acciones Recompensas
→ Definición de los MDP y Propiedad de Markov→ estados, Acciones y Recompensas en un MDP+ 2 otras lecciones
05
MDP Parte 2 - Política y Ecuaciones de Bellman
→ Política Óptima vs Subóptima→ Funciones de Valor V(s) y Q(s,a)+ 2 otras lecciones
06
Q-Learning
→ Fundamentos del Q-Learning→ Actualización de las Q-values y Convergencia+ 1 otras lecciones
07
Métodos de Monte Carlo
→ Introducción a los Métodos de Monte Carlo→ Monte Carlo vs TD Learning+ 1 otras lecciones
08
Programación Dinámica y TD Learning
→ Introducción a la Programación Dinámica→ Métodos TD(0) y TD(λ)+ 1 otras lecciones
🏁
Proyecto final (+ 3 capítulos en el camino)
→ Te vas con un proyecto concreto y demostrable

Capítulo 02 – Ficha de Terminología Completa

NOTEObjetivo de esta ficha — Tener en un solo lugar todas las definiciones fundamentales del RL, desde la noción de estado hasta los algoritmos. Esta ficha sirve de referencia durante todo el curso.

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.

TIPMecanismo :
  1. El agente observa el estado del entorno
  2. Elige una acción para ejecutarla
  3. Observa el resultado : nuevo estado + recompensa (positiva o negativa)
  4. 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
NOTEDiscreto vs Continuo : Un estado puede ser discreto (ej: casillas numeradas de un laberinto — se pueden contar) o continuo (ej: posición GPS en metros, ángulo en grados — valores numéricos infinitos).

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.

TIPAcciones discretas
Número finito de acciones enumerables.
Ejemplos : Arriba, Abajo, Izquierda, Derecha (laberinto) ; 0 o 1 (CartPole)
NOTEAcciones continuas
Valores numéricos dentro de un intervalo.
Ejemplos : Fuerza de 0 a 10 N ; ángulo del volante de −30° a +30°

Recompensa rtReward 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.

NOTERecompensa inmediata (3.6)
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
NOTERecompensa a largo plazo (3.7)
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.

NOTEγ cercano a 0
El agente es «cortoplacista» : solo piensa en la recompensa inmediata. Comportamiento a corto plazo.
TIPγ cercano a 1
El agente es «previsor» : considera las recompensas futuras con casi la misma importancia. Comportamiento a largo plazo.
NOTEValor típico : γ = 0.9 o 0.99 en la mayoría de las aplicaciones prácticas.

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.

TIPEn español sencillo : La utilidad = la suma de todas las recompensas futuras, con una ponderación que disminuye con el tiempo (gracias al discount γ). Una buena acción ahora Y buenas acciones en el futuro = utilidad elevada.
NOTESinónimos utilizados en el curso : Recompensa a largo plazo, Retorno, Return, Rendimiento acumulado, Gt

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

NOTEObjetivo — Comprender por qué se utilizan entornos virtuales, cómo instalar varias versiones de Python en paralelo y cómo crear un entorno aislado para cada proyecto — tanto en Windows como en Linux (Ubuntu).

¿Por qué entornos virtuales?

El problema sin venv

La solución con venv

EntornoPythonBibliotecasProyecto
myenv393.9TensorFlow 2.10, Gym 0.26Curso RL (anterior)
myenv3103.10Streamlit 1.28, pandas 2.0Dashboard
myenv3113.11TensorFlow 2.15, GymnasiumCurso RL (actual)
rl-env3.12Gymnasium, NumPy, MatplotlibEste curso

🪟 Windows   Instalar varias versiones de Python

NOTEAntes de empezar — PowerShell en modo administrador
Algunos comandos requieren derechos de administrador. Si aparece un error de permisos al activar un venv, ejecuta primero en PowerShell :
output
# 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.

TIPConsejo : Al instalar Python en Windows, el launcher py se instala automáticamente. Te permite llamar a cualquier versión instalada con py -3.10, py -3.11, etc.
output
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
output
# 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
output
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
output
# 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

NOTEContexto : Si trabajas con una máquina virtual Linux (VirtualBox, VMware...) o un servidor remoto, puedes conectarte desde Windows mediante SSH sin salir de tu terminal de Windows.

Paso 1 — Instalar SSH en la VM Linux

En el terminal de la VM Linux, como root :

output
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

TIP😌 No hay que asustarse — ¡solo estamos probando!
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!
NOTEObjetivo — Ejecutar tus primeros scripts con Gymnasium y confirmar que tu instalación funciona. Dos opciones : en local (Jupyter) o directamente en Google Colab sin instalar nada.

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 :

bash
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!)

TIP¿Todavía no has instalado Python en local? Ningún problema.
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 :

bash
# 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!

NOTEColab o local — los scripts son idénticos. La única diferencia es la celda de instalación anterior, que no necesitas ejecutar en local.

¿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

TIP📋 Copia y pega simplemente este código — no intentes entenderlo todo ahora. Verás qué información produce CartPole. Detallaremos cada término (observation_space, action_space, etc.) en el Capítulo 02.
output
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

TIP🎲 Un agente que juega al azar — nuestro punto de partida. Este script no hace nada inteligente : elige acciones aleatorias. Es nuestra baseline de referencia. Todo lo que aprenderás en este curso permitirá que un agente lo haga mucho mejor que esto. Ejecuta y observa las recompensas — ¡eso es todo!
output
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)

TIP🗺️ FrozenLake será tu terreno de juego principal en este curso. No te preocupes por el bucle o las acciones manuales por ahora : el objetivo es solo ver que el entorno se lanza y responde. El Capítulo 03 lo explicará todo en detalle.
output
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()
TIP¿Por qué FrozenLake? Este entorno es perfecto para empezar porque tiene un espacio de estados discreto (16 casillas). Puedes visualizar toda la Q-table. CartPole tiene estados continuos, lo que requiere técnicas más avanzadas.
va-plus-loin

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 Code

FAQ

¿Cuánto tiempo se necesita para aprender Comenzar Reinforcement Learning?
Con una progresión estructurada (12 capítulos, 42 lecciones cortas y prácticas), se alcanza un nivel operativo en unas semanas dedicando entre 30 y 60 minutos al día. Lo importante es practicar cada noción de inmediato.
¿Se necesitan requisitos previos?
Ningún requisito previo : el curso parte de cero y cada noción se introduce antes de utilizarse.
¿Por dónde empezar concretamente?
Reproduce los comandos de este artículo y luego sigue el curso completo Comenzar Reinforcement Learning : encadena las 42 lecciones en orden, con ejercicios y proyecto final.

📬 ¿Quieres recibir este tipo de guía cada semana? Suscríbete gratis — código real, cero palabrería.