10 · Aprendizaje por diferencias temporales
TD(0) es la idea central del RL: actualiza V(s) tras CADA paso usando un bootstrap de un paso V(s) ← V(s) + α(r + γV(s′) − V(s)). Aprende en línea, sin esperar a que termine el episodio.
TD(0) actualiza V(s) tras un solo paso usando un objetivo con bootstrap: V(s) ← V(s) + α·(r + γ·V(s′) − V(s)). El paréntesis es el error TD — la brecha entre lo que predijiste y lo que dicen un paso de realidad más tu propia estimación del siguiente estado.
Sin esto:
Sin TD debes esperar episodios completos (MC), no puedes aprender de tareas continuas y no puedes fusionar la experiencia con tus propias estimaciones de valor — el motor detrás de Q-learning, Sarsa y la cabeza de valor de todo agente de RL profundo.
Monte Carlo espera pacientemente a que termine un episodio y entonces usa el retorno completo G_t como objetivo de aprendizaje. El aprendizaje por diferencias temporales (TD) es impaciente — y esa impaciencia es la idea más importante del RL.
El truco es el bootstrapping: en lugar de esperar el retorno completo, TD reemplaza la cola no vista del episodio con su propia estimación actual del valor del siguiente estado. Parte de la identidad estilo Bellman V(s) = E[r + γ·V(s′)]. La cantidad r + γ·V(s′) — una sola recompensa observada más la estimación de valor descontada del estado donde realmente caíste — es el objetivo TD. Tras cada paso el agente empuja V(s) hacia ese objetivo:
V(s) ← V(s) + α · ( r + γ·V(s′) − V(s) )
La cantidad entre paréntesis δ = r + γ·V(s′) − V(s) es el error TD: cuán sorprendido estás al comparar tu predicción vieja V(s) contra un paso de recompensa real más tu estimación del siguiente estado. α es la tasa de aprendizaje (tamaño de paso).
Esto se llama TD(0) (mirada de un paso). Es en línea (actualiza a mitad del episodio, tras cada transición), funciona en tareas continuas sin terminación y es sin modelo como MC — sigue llamando solo a step(), nunca a P ni R. El precio es el sesgo: al principio V(s′) está mal, así que el objetivo está sesgado hacia tus propios errores. La ganancia es una varianza mucho menor: una recompensa más una estimación de valor es mucho menos ruidosa que un episodio entero de recompensas aleatorias. Este balance sesgo-varianza es el corazón de por qué TD suele aprender más rápido que MC en la práctica.
Python (in browser)
TD(0): tras cada paso, V(s) ← V(s) + α(r + γV(s′) − V(s)). Toda la tabla de valores se desliza hacia los valores verdaderos 1/6…5/6 mientras los episodios aún corren.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Para sentir la diferencia, compara MC y TD frente a frente en la misma caminata con el mismo tamaño de paso constante α. MC actualiza cada estado visitado hacia el retorno completo del episodio; TD actualiza cada estado hacia un bootstrap de un paso. Observa cómo las estimaciones de MC saltan más entre corridas (varianza alta) mientras las de TD se asientan más suavemente — aunque las primeras estimaciones de TD estén ligeramente sesgadas por sus propias malas conjeturas.
En una frase: MC tiene sesgo cero pero varianza alta; TD añade un poco de sesgo (bootstrapping sobre sus propias estimaciones) pero recorta la varianza y aprende en línea. Ese intercambio es por qué las actualizaciones tipo TD impulsan Sarsa, Q-learning y las cabezas de valor de los agentes de RL profundo que verás a continuación.
Python (in browser)
MC vs TD(0) frente a frente: mismo α y presupuesto de episodios. La menor dispersión (std) de TD entre semillas ilustra sus actualizaciones en línea de menor varianza.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
La misma idea de TD(0) con una red neuronal: minimizar el error TD al cuadrado r + γV(s′) − V(s). La actualización tabular es un paso de gradiente sobre esta pérdida.
¿Cuál es el objetivo de TD(0) usado para actualizar V(s) tras observar la recompensa r y el siguiente estado s′?
- TD(0) actualiza V(s) tras cada paso hacia un objetivo con bootstrap: V(s) ← V(s) + α(r + γV(s′) − V(s)); el paréntesis es el error TD.
- TD es en línea y funciona en tareas continuas (sin necesidad de fin de episodio); MC es episódico y usa el retorno completo — ambos son sin modelo (solo step()).
- Balance sesgo-varianza: MC es insesgado pero de varianza alta; TD añade sesgo al hacer bootstrap sobre sus propias estimaciones pero tiene mucha menor varianza y suele aprender más rápido.
El error TD impulsa Sarsa, Q-learning y las redes de valor/crítico en DQN, A2C y PPO — minimizar el error TD al cuadrado es la pérdida de aprendizaje de valor de prácticamente todo agente de RL profundo.
Si lo quitas: Sin bootstrapping te quedas con Monte Carlo de episodio completo: sin aprendizaje en línea, sin tareas continuas y con estimaciones de valor mucho más ruidosas.