Diferencia temporal Q-Learning y SARSA
Type: Build
Languages: Python
Prerequisites: Phase 9 · 01 (MDPs), Phase 9 · 02 (Dynamic Programming), Phase 9 · 03 (Monte Carlo)
Time: ~75 minutes
El problema
Monte Carlo funciona pero tiene dos demandas caras. Necesita episodios que terminen, y sólo se actualiza después de que el regreso final está en. Si tu episodio es de 1.000 pasos, MC espera 1.000 pasos para actualizar cualquier cosa. Es de alta variación, baja prejuicio, y lento en la práctica.
La programación dinámica tiene el perfil opuesto copias de seguridad de boot de varianza cero pero requiere un modelo conocido.
El aprendizaje de la diferencia temporal (TD) divide la diferencia.(s, a, r, s'), formar un objetivo de un paso .r + γ V(s')y empujar .V(s)No hay modelo, no hay episodios completos, ni sesgo de usar una aproximación.Ven el RHS, pero con una variación dramáticamente menor que MC y actualizaciones en línea desde el primer paso.
Este es el pivote en el que se giran todas las modernas RL DQN, A2C, PPO, SAC . El resto de la Fase 9 son capas de aproximación de funciones y trucos construidos sobre la actualización TD de un paso que escribirás en esta lección.
El concepto
!Q-learning vs SARSA: off-policy max vs on-policy Q(s', a')
The TD(0) update for V:
V(s) ← V(s) + α [r + γ V(s') - V(s)]
La cantidad entre paréntesis es el error TD δ = r + γ V(s') - V(s)Es el análogo en línea de G_t - V(s_t)en MC. La convergencia requiereαsatisfacer a Robbins-Monro (Σ α = ∞¿ Qué ?Σ α² < ∞) y todos los estados visitados con infinita frecuencia.
Q-learning.Un método de control TD fuera de la política:
Q(s, a) ← Q(s, a) + α [r + γ max_{a'} Q(s', a') - Q(s, a)]
El maxLa política de la "compromisora" se seguirá desdes'El desacoplamiento hace que el aprendizaje Q aprenda.Q*Mnih et al. (2015) convirtió esto en aprendizaje profundo de Q en Atari (Ley 05).
SARSA.Un método de TD en política:
Q(s, a) ← Q(s, a) + α [r + γ Q(s', a') - Q(s, a)]
El nombre es el tuple(s, a, r, s', a'). SARSA utiliza la acción a'El agente toma el siguiente, no el codicioso.argmax- Converge aQ^πPor lo que sea que sea avaro.πestá funcionando, que en el límite ε → 0Se convierte enQ*¿ Qué ?
The cliff-walking difference.En la tarea clásica de caminar por acantilados (caída-descance-acantilado = recompensa -100), el aprendizaje Q aprende el camino óptimo a lo largo del borde del acantilado, pero ocasionalmente toma la penalidad durante la exploración. SARSA aprende un camino más seguro a un paso del acantilado porque tiene en cuenta el ruido de exploración en su valor Q.ε → 0En la práctica importa: cuando la exploración se realiza en realidad en el despliegue, el comportamiento de SARSA es más conservador.
Expected SARSA.ReemplazarQ(s', a')con su valor esperado inferior a π¿Qué es esto ?
Q(s, a) ← Q(s, a) + α [r + γ Σ_{a'} π(a'|s') Q(s', a') - Q(s, a)]
Varianza menor que la SARSA (no hay muestra de a'), el mismo objetivo en materia de política.
n-step TD and TD(λ).Interpolar entre TD(0) y MC esperando npasos antes de arrancar. n=1es TD, n=∞es MC. TD(λ) promedios sobre todos ncon pesos geométricos (1-λ)λ^{n-1}La mayoría de los usos de RL profundosnentre 3 y 20.
Construye el mismo
Paso 1: SARSA sobre la política de avaricia
pythondef sarsa(env, episodes, alpha=0.1, gamma=0.99, epsilon=0.1):
Q = defaultdict(lambda: {a: 0.0 for a in ACTIONS})
def choose(s):
if random() < epsilon:
return choice(ACTIONS)
return max(Q[s], key=Q[s].get)
for _ in range(episodes):
s = env.reset()
a = choose(s)
while True:
s_next, r, done = env.step(s, a)
a_next = choose(s_next) if not done else None
target = r + (gamma * Q[s_next][a_next] if not done else 0.0)
Q[s][a] += alpha * (target - Q[s][a])
if done:
break
s, a = s_next, a_next
return QLa única diferencia con el aprendizaje Q es la línea de objetivo.
Paso 2: Aprendizaje de Q
pythondef q_learning(env, episodes, alpha=0.1, gamma=0.99, epsilon=0.1):
Q = defaultdict(lambda: {a: 0.0 for a in ACTIONS})
for _ in range(episodes):
s = env.reset()
while True:
a = choose(s, Q, epsilon)
s_next, r, done = env.step(s, a)
target = r + (gamma * max(Q[s_next].values()) if not done else 0.0)
Q[s][a] += alpha * (target - Q[s][a])
if done:
break
s = s_next
return QEl maxEl símbolo es la diferencia entre la política y la política.
Paso 3: Curvas de aprendizaje
El estudio de la C.A.R.S.A. se ha desarrollado en el campo de la C.A.R.S.A. en el campo de la C.A.R.S.A.R.S.A. en el campo de la C.A.R.S.A.R.S.A. en el campo de la C.A.R.S.A.R.S.A. en el campo de la C.A.R.S.A.R.S.A.R.S.A. en el campo de la C.A.R.S.A.R.S.A. en el campo de la C.A.R.S.A.R.S.A. en el campo de la C.A.R.S.A.R.S.A. en el campo de la C.A.R.S.A.R.S.A.R.S.A. en el campo de la C.A.R.S.R.S.A.R.S.R.S.A.R.R.S.R.S.R.R.S.R.R.R.R.S.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.Rcode/main.py, ambos son casi óptimos después de ~ 2.000 episodios con α=0.1, ε=0.1¿ Qué ?
Paso 4: comparación con la verdad de DP
Ejecutar la iteración del valor (lección 02) para obtener Q- ¿ Qué ?max_{s,a} |Q_learned(s,a) - Q(s,a)|Un agente TD saludable tabulear aterriza dentro de la~0.5en el 4×4 GridWorld después de 10.000 episodios.
Las trampas
- Initial Q values matter.Inicialmente optimista (
Q = 0El principio pesimista puede atrapar una política codiciosa para siempre. - α schedule.Constantemente .
αEs bueno para problemas no estacionarios.α_n = 1/nda convergencia en teoría pero es demasiado lento en la práctica pinαEn el[0.05, 0.3]y monitorear la curva de aprendizaje. - ε schedule.Comienza con alto (
ε=1.0), la descomposición aε=0.05. "GLIE" (compulsivo en el límite con una exploración infinita) es la condición de convergencia. - Max bias in Q-learning.El
maxel operador está sesgado hacia arriba cuandoQEl doble aprendizaje Q de Hasselt (utilizado por DDQN en la Lección 05) corrige esto con dos tablas de Q. - Non-terminating episodes.TD puede aprender sin terminales, pero debe captar los pasos o manejar correctamente la banda de arranque en la banda.
- State hashing.Si los estados son tuples/tensores, utilice una clave hashable (tuplo, no lista; tuple de flotantes redondeados, no crudo).
Usalo
El panorama de la TD para 2026:
| Task | Method | Reason |
|---|---|---|
| Small tabular environments | Q-learning | Learns optimal policy directly. |
| On-policy safety-critical | SARSA / Expected SARSA | Conservative during exploration. |
| High-dimensional state | DQN (Phase 9 · 05) | Neural-net Q-function with replay and target net. |
| Continuous actions | SAC / TD3 (Phase 9 · 07) | TD update on a Q-network; policy net emits actions. |
| LLM RL (reward-model-based) | PPO / GRPO (Phase 9 · 08, 12) | Actor-critic with TD-style advantage via GAE. |
| Offline RL | CQL / IQL (Phase 9 · 08) | Q-learning with conservative regularization. |
El 90% de la "RL" que se lee en los artículos 2026 es una elaboración de Q-learning o SARSA.
Envío
Salvo comooutputs/skill-td-agent.md¿Qué es esto ?
markdown---
name: td-agent
description: Pick between Q-learning, SARSA, Expected SARSA for a tabular or small-feature RL task.
version: 1.0.0
phase: 9
lesson: 4
tags: [rl, td-learning, q-learning, sarsa]
---
Given a tabular or small-feature environment, output:
1. Algorithm. Q-learning / SARSA / Expected SARSA / n-step variant. One-sentence reason tied to on-policy vs off-policy and variance.
2. Hyperparameters. α, γ, ε, decay schedule.
3. Initialization. Q_0 value (optimistic vs zero) and justification.
4. Convergence diagnostic. Target learning curve, `|Q - Q*|` check if DP is possible.
5. Deployment caveat. How will exploration behave at inference? Is SARSA's conservatism needed?
Refuse to apply tabular TD to state spaces > 10⁶. Refuse to ship a Q-learning agent without a max-bias caveat. Flag any agent trained with ε held at 1.0 throughout (no exploitation phase).Los ejercicios
- Easy.Implemente Q-learning y SARSA en el GridWorld 4×4. Plot de curvas de aprendizaje (retorno medio por 100 episodios) para 2.000 episodios. ¿Quién converge más rápido?
- Medium.Construir un entorno de caminar en acantilados (4×12, la última fila es el acantilado con recompensa -100 y restablecer para comenzar). Comparar las políticas finales de Q-learning y SARSA.
- Hard.Implementar doble aprendizaje Q. En un GridWorld de recompensas ruidosas (ruido gaussiano σ=5 añadido a la recompensa por paso), muestra sobrevaloraciones de Q-learning
V*(0,0)En el caso de los estudiantes de doble Q, el aprendizaje no es un aprendizaje de doble Q.
Términos clave
| Term | What people say | What it actually means |
|---|---|---|
| TD error | "The update signal" | δ = r + γ V(s') - V(s), the bootstrapped residual. |
| TD(0) | "One-step TD" | Update after every transition using only the next state's estimate. |
| Q-learning | "Off-policy RL 101" | TD update with max over next-state actions; learns Q* regardless of behavior policy. |
| SARSA | "On-policy Q-learning" | TD update using the actual next action; learns Q^π for current ε-greedy π. |
| Expected SARSA | "The low-variance SARSA" | Replace sampled a' with its expectation under π. |
| GLIE | "Correct exploration schedule" | Greedy in the Limit with Infinite Exploration; needed for Q-learning convergence. |
| Bootstrapping | "Using current estimate in the target" | What distinguishes TD from MC. Source of bias but massive variance reduction. |
| Maximization bias | "Q-learning overestimates" | max over noisy estimates is upward-biased; fixed by Double Q-learning. |
Leer más
- Watkins & Dayan (1992). Q-learning el papel original y la prueba de convergencia.
- Sutton & Barto (2018). Ch. 6 — Temporal-Difference Learning TD(0), SARSA, aprendizaje Q, SARSA esperada.
- Hasselt (2010). Double Q-learning fijar el sesgo de maximización.
- Seijen, Hasselt, Whiteson, Wiering (2009). A Theoretical and Empirical Analysis of Expected SARSA la motivación esperada por SARSA.
- Rummery & Niranjan (1994). On-line Q-learning using connectionist systems el documento que acuñó SARSA (entonces llamado "aprendizaje Q-conexionista modificado").
- Sutton & Barto (2018). Ch. 7 — n-step Bootstrapping generaliza TD(0) a TD(n), el camino desde el aprendizaje Q hasta los rastros de elegibilidad y, más tarde, GAE en PPO.
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.