Phase 09: Reinforcement Learning

MDPs, Estados, Acciones y Recompensas

Un proceso de decisión de Markov es de cinco cosas: estados, acciones, transiciones, recompensas, un descuento. Todo en RL Q-learning, PPO, DPO, GRPO optimiza sobre esta forma. Aprenda una vez, lea el resto del aprendizaje de refuerzo de forma gratuita.

Type: Learn

Languages: Python

Prerequisites: Phase 1 · 06 (Probability & Distributions), Phase 2 · 01 (ML Taxonomy)

Time: ~45 minutes

El problema

Es un bot de ajedrez, un planificador de inventario, un agente de comercio, o un ciclo de PPO que entrena un modelo de razonamiento, cuatro dominios diferentes, un hecho sorprendente: los cuatro se desmoronan en el mismo objeto matemático.

El aprendizaje supervisado te da (x, y)¿El aprendizaje de refuerzo no le da etiquetas, sólo un flujo de estados, las acciones que tomó y una recompensa escalar? ¿Ganó el juego el movimiento? ¿La decisión de reabastecimiento ahorró dinero? ¿Ha hecho un beneficio el comercio? ¿El token que acaba de producir el LLM llevó a una recompensa mayor del juez?

No puedes aprender de esta corriente hasta que no la formalizes. "Lo que vi", "lo que hice", "lo que pasó después", "qué tan bueno fue" cada uno tiene que convertirse en un objeto sobre el que puedes razonar. Esa formalización es un Proceso de Decisión Markov. Cada algoritmo RL en esta fase, incluidos los bucles RLHF y GRPO al final, optimiza sobre esta forma.

El concepto

!Markov decision process: states, actions, transitions, rewards, discount

The five objects.

  • States STodo lo que el agente necesita decidir en el GridWorld, la célula, en el ajedrez, la tabla, en un LLM, la ventana de contexto más cualquier memoria.
  • Actions ALas opciones, subir/bajar/izquierda/derecha, jugar un movimiento, emitir un token.
  • Transitions P(s' | s, a)- Dado el estado .sy la acción aDeterminista en ajedrez, estocástico en inventario, casi determinista en decodificación LLM.
  • Rewards R(s, a, s')La señal escalar. ganancia = +1, pérdida = -1. ingresos menos costo. El término de la relación log-probabilidad en GRPO.
  • Discount γ ∈ [0, 1)¿Cuánto cuentan las recompensas futuras frente al presente?γ = 0.99compra un horizonte de ~ 100 pasos; γ = 0.9Comprará ~10.

The Markov property P(s_{t+1} | s_t, a_t) = P(s_{t+1} | s_0, a_0, …, s_t, a_t)El futuro depende sólo del estado presente. Si no lo hace, la representación del estado es incompleta.

Policies and returns.Una políticaπ(a | s)Los estados de mapas a las distribuciones de acción.G_t = r_t + γ r_{t+1} + γ² r_{t+2} + …Es la suma descuentada de las recompensas futuras.V^π(s) = E[G_t | s_t = s]es el rendimiento esperado a partir de sen el marco de la política πEl valor QQ^π(s, a) = E[G_t | s_t = s, a_t = a]El algoritmo RL estima uno de estos dos, y luego mejora πEn consecuencia.

The Bellman equations.Las ecuaciones de punto fijo que todo en esta fase utiliza:

V^π(s) = Σ_a π(a|s) Σ_{s', r} P(s', r | s, a) [r + γ V^π(s')]

Q^π(s, a) = Σ_{s', r} P(s', r | s, a) [r + γ Σ_{a'} π(a'|s') Q^π(s', a')]

Estos divididos esperados regresan a "la recompensa de este paso" más "valor descuento de donde aterrizas". Recursivo. Cada algoritmo en la Fase 9 o bien repite esta ecuación a convergencia (programación dinámica), muestras de ella (Monte Carlo), o arranca un paso (diferencia temporal).

Construye el mismo

Paso 1: un pequeño MDP determinista

Un 4x4 GridWorld. El agente comienza en la parte superior izquierda, la terminal en la parte inferior derecha, recompensa de -1 por paso, acciones.{up, down, left, right}- ¿ Qué ?code/main.py¿ Qué ?

pythonGRID = 4
TERMINAL = (3, 3)
ACTIONS = {"up": (-1, 0), "down": (1, 0), "left": (0, -1), "right": (0, 1)}

def step(state, action):
    if state == TERMINAL:
        return state, 0.0, True
    dr, dc = ACTIONS[action]
    r, c = state
    nr = min(max(r + dr, 0), GRID - 1)
    nc = min(max(c + dc, 0), GRID - 1)
    return (nr, nc), -1.0, (nr, nc) == TERMINAL

Cinco líneas, todo el entorno, transiciones deterministas, penas de paso constantes, estado terminal de absorción.

Paso 2: elaborar una política

Una política es una función de la distribución del estado a la acción.

pythondef uniform_policy(state):
    return {a: 0.25 for a in ACTIONS}

def rollout(policy, max_steps=200):
    s, total, steps = (0, 0), 0.0, 0
    for _ in range(max_steps):
        a = sample(policy(s))
        s, r, done = step(s, a)
        total += r
        steps += 1
        if done:
            break
    return total, steps

ejecuta la política aleatoria 1000 veces. el retorno promedio es de alrededor de -60 a -80 para esta tabla 4×4. el retorno óptimo es -6 (camino de línea recta hacia abajo a la derecha). cerrar esa brecha es todo en la Fase 9.

Paso 3: computación V^πexactamente a través de la ecuación de Bellman

Para MDPs pequeños la ecuación de Bellman es un sistema lineal. Enumera estados, aplica la expectativa, itera hasta que los valores dejan de cambiar.

pythondef policy_evaluation(policy, gamma=0.99, tol=1e-6):
    V = {s: 0.0 for s in all_states()}
    while True:
        delta = 0.0
        for s in all_states():
            if s == TERMINAL:
                continue
            v = 0.0
            for a, pi_a in policy(s).items():
                s_next, r, _ = step(s, a)
                v += pi_a * (r + gamma * V[s_next])
            delta = max(delta, abs(v - V[s]))
            V[s] = v
        if delta < tol:
            return V

Este es el primer algoritmo en Sutton & Barto y la base teórica de cada método RL que sigue.

Paso 4:γes un hiperparámetro con significado físico

El horizonte efectivo es aproximadamente 1 / (1 - γ)- ¿ Qué ?γ = 0.9→ 10 pasos. γ = 0.99→ 100 pasos. γ = 0.999→ 1000 pasos.

El agente actúa de manera miope y la asignación de créditos se vuelve ruidosa, ya que muchos pasos iniciales comparten la responsabilidad de la recompensa de un futuro lejano.γ = 1Los controles de las tareas de control utilizan0.95–0.99Los juegos de estrategia de largo horizonte usan0.999¿ Qué ?

Las trampas

  • Non-Markovian state.Si necesita las últimas tres observaciones para decidir, el "estado" no es solo la observación actual.
  • Sparse rewards.Las recompensas sólo para ganar hacen que el aprendizaje sea casi imposible en grandes espacios de estado.
  • Reward hacking.Optimizar una recompensa por proxy a menudo produce comportamiento patológico. El agente de carreras de barcos de OpenAI gira en círculos recogiendo powerups para siempre en lugar de terminar la carrera. Siempre define la recompensa por el resultado objetivo, no por el proxy.
  • Discount mis-spec. γ = 1En una tarea de horizonte infinito hace que cada valor sea infinito.γ < 1¿ Qué ?
  • Reward scale.Las recompensas de {+100, -100} vs {+1, -1} dan políticas óptimas idénticas pero magnitudes de gradiente muy diferentes.[-1, 1]- antes de conectarse a PPO/DQN.

Usalo

La pila 2026 reduce cada tubería RL a un MDP antes de tocar el código:

SituationStateActionRewardγ
Control (locomotion, manipulation)Joint angles + velocitiesContinuous torquesTask-specific shaped0.99
Games (chess, Go, poker)Board + historyLegal moveWin=+1 / loss=-11.0 (finite)
Inventory / pricingStock + demandOrder qtyRevenue - cost0.95
RLHF for LLMsContext tokensNext tokenReward-model score at end1.0 (episode ~200 tokens)
GRPO for reasoningPrompt + partial responseNext tokenVerifier 0/1 at end1.0

Escriba los cinco tuples antes de escribir cualquier bucle de entrenamiento. La mayoría de los informes de errores "RL no funciona" se remontan a una formulación MDP que se rompió en papel.

Envío

Salvo comooutputs/skill-mdp-modeler.md¿Qué es esto ?

markdown---
name: mdp-modeler
description: Given a task description, produce a Markov Decision Process spec and flag formulation risks before training.
version: 1.0.0
phase: 9
lesson: 1
tags: [rl, mdp, modeling]
---

Given a task (control / game / recommendation / LLM fine-tuning), output:

1. State. Exact feature vector or tensor spec. Justify Markov property.
2. Action. Discrete set or continuous range. Dimensionality.
3. Transition. Deterministic, stochastic-with-known-model, or sample-only.
4. Reward. Function and source. Sparse vs shaped. Terminal vs per-step.
5. Discount. Value and horizon justification.

Refuse to ship any MDP where the state is non-Markovian without explicit mention of frame-stacking or recurrent state. Refuse any reward that was not defined in terms of the target outcome. Flag any `γ ≥ 1.0` on an infinite-horizon task. Flag any reward range >100x the typical step reward as a likely gradient-explosion source.

Los ejercicios

  1. Easy.Implementar el 4×4 GridWorld y el despliegue de políticas aleatorias en code/main.py- Cancelar 10.000 episodios. Informar el promedio y el std de retorno. Comparar con el retorno óptimo (-6).
  2. Medium.- ¿ Qué ?policy_evaluationconγ ∈ {0.5, 0.9, 0.99}para la política uniforme aleatoria.VExplique por qué los valores de estado cerca de la terminal crecen más rápido con mayor tamaño.γ¿ Qué ?
  3. Hard.Vuelve la GridWorld estocástica: cada acción se desliza hacia una dirección adyacente con probabilidad p = 0.1Reevaluar la política de uniforme.V[start]¿Mejor o peor?

Términos clave

TermWhat people sayWhat it actually means
MDP"Reinforcement learning setup"Tuple (S, A, P, R, γ) satisfying the Markov property.
State"What the agent sees"Sufficient statistic for future dynamics under the chosen policy class.
Policy"Agent's behavior"Conditional distribution π(a | s) or deterministic map s → a.
Return"Total reward"Discounted sum Σ γ^t r_t from the current step.
Value"How good a state is"Expected return under π starting from s.
Q-value"How good an action is"Expected return under π starting from s with first action a.
Bellman equation"Dynamic programming recursion"Fixed-point decomposition of value / Q into one-step reward plus discounted successor value.
Discount γ"Future vs present"Geometric weight on far-future reward; effective horizon ~1/(1-γ).

Leer más

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.