Tema 5 · Sutton & Barto, capítulos 9, 10 y 11 (y §16.5)
Aproximación de la función de valor
Mil estados y diez pesos: a partir de aquí no hay una casilla por estado, y acertar en un estado obliga a fallar en otro. Esta página responde las preguntas que las diapositivas del tema dejan abiertas: qué se está minimizando exactamente cuando ya no se puede acertar en todos, qué es \(x(s)\) y qué cambia al pasar de one-hot a tile coding, a dónde converge Monte Carlo y a dónde converge TD —que no es al mismo sitio—, por qué pueden divergir los pesos y qué justifica cada casilla de las dos tablas de convergencia que se proyectan como hechos.
Cubre la baraja 5_Tema_5_1 completa, de la primera diapositiva a la última, DQN
incluido. El orden está reagrupado respecto a clase: mira el primer bloque para ver
qué se ha movido y por qué.
Los dos entornos de esta página —el paseo aleatorio de 1000 estados y Mountain Car— son del libro, no de clase: en las diapositivas del tema no hay ningún entorno ni ningún ejemplo numérico. Se introducen aquí porque sin un problema concreto no se puede ver qué hace la aproximación.
Donde hay simulación, cada gráfica dice sobre cuántas ejecuciones independientes promedia. Los puntos a los que converge cada método, en cambio, no se simulan: se calculan exactamente, así que no dependen de la semilla.
Seis paradas manipulables. Las trazas de elegibilidad con aproximación —lo que el examen pide junto a \(x(s,a)\)— no son una parada aparte: se explican y se resuelven en el bloque de apuntes que va detrás del control, y se pueden encender desde el módulo 5.
Mapa del tema
| Concepto | De dónde sale | A dónde lleva |
|---|---|---|
| Por qué aproximar | No es solo que la tabla no quepa: es el tiempo y los datos para rellenarla, y que casi ningún estado se repite | \(\hat v(s,w)\) con \(d \ll |\mathcal S|\) |
| Generalizar | Cambiar un peso cambia el valor de muchos estados | Es la ventaja y el problema a la vez |
| \(\overline{VE}\) y \(\mu\) | Si no se puede acertar en todos, hay que decir qué estados importan | El objetivo ponderado → módulo 1 |
| Gradiente | Bajar por \(-\nabla_w \overline{VE}\), un ejemplo a la vez | La regla \(w \leftarrow w + \alpha[U_t - \hat v]\nabla\hat v\) |
| Semi-gradiente | Con bootstrapping el objetivo también depende de \(w\), y ese trozo del gradiente se tira | No es descenso del gradiente de nada → B4 |
| \(x(s)\) | Cómo se convierte un estado en números | one-hot, agregación, tile coding → módulo 2 |
| El caso tabular | Es aproximación lineal con \(x(s)\) one-hot: \(\min_w \overline{VE} = 0\) | No hay aproximación que reparta → módulo 2 |
| MC y TD(0) | Los dos objetivos \(U_t\): el retorno y el retorno con bootstrap | Convergen a puntos distintos → módulo 3 |
| Los tres inductores | Aproximación + bootstrapping + off-policy | Con los tres a la vez los pesos pueden irse a infinito → módulos 4 y 6 |
| Control | \(v \to q\), \(\hat q(s,a,w) = w^\top x(s,a)\), SARSA y Q-learning | Mountain Car → módulo 5, y de ahí a DQN → B16 |
| Trazas de elegibilidad | El «1» de la traza tabular es el gradiente con one-hot | \(z_t\) tiene dimensión \(d\), no \(|\mathcal S|\times|\mathcal A|\) → B14b y el control de traza del módulo 5 |
Antes de empezar: qué se ha movido de sitio
Reagrupación del orden de 5_Tema_5_1; el contenido es el mismo
Esta página cubre las 37 diapositivas del tema, pero no en el orden en que se
proyectan. Se ha movido una sola cosa, y por una razón: en clase, tile coding
(#slide-23 y #slide-24) va detrás del control, porque lo que lo justifica es la
tarea de la práctica 3 de #slide-22. Aquí sube al bloque de la representación del
estado, junto a la aproximación lineal y al caso tabular, porque es la respuesta a dos
preguntas que quedan abiertas arriba: «¿qué alternativas tenemos para construir la
señal de estado?» (#slide-9) y «¿hay algún tipo de aproximación en el caso tabular?»
(#slide-11). Con tile coding al final, esas dos preguntas se quedan catorce
diapositivas sin responder.
| Bloque de esta página | Diapositivas de clase |
|---|---|
| Por qué aproximar; qué se aproxima y con qué | #slide-3 a #slide-6 |
| El objetivo: \(\overline{VE}\) y \(\mu\) → módulo 1 | #slide-4 (y Tema5_1_Aproximacion#slide-7, de Lucía) |
| Descenso del gradiente y semi-gradiente | #slide-7, #slide-8 |
| Representación del estado; lineal; caso tabular; tile coding → módulo 2 | #slide-9 a #slide-11 y #slide-22 a #slide-24 ← movidas |
| Predicción con MC y TD(0); a dónde converge cada uno → módulo 3 | #slide-12 a #slide-14 |
| Cuándo divergen los pesos → módulo 4 | #slide-15 |
| Los inductores y las dos tablas → módulo 6 | #slide-16 y #slide-21 |
| Control: \(v\to q\), SARSA, Q-learning → módulo 5 | #slide-17 a #slide-21 |
| Batch RL y mínimos cuadrados | #slide-25 a #slide-29 |
| DQN | #slide-30 a #slide-36 |
Cuando el problema es grande
5_Tema_5_1#slide-3 · Sutton & Barto, introducción de la parte II y §9.1
La diapositiva pone los ejemplos: ajedrez, Go, conducción autónoma, finanzas. El libro añade el argumento que suele faltar: el problema de un espacio de estados grande no es solo la memoria que ocupa la tabla, sino el tiempo y los datos que hacen falta para rellenarla con precisión. En muchas tareas, casi todos los estados que el agente se encuentra no los ha visto nunca antes, y una tabla no tiene nada que decir sobre un estado nuevo. Aproximar no es una concesión a la memoria: es la única forma de decir algo sobre lo que no se ha visto.
Qué se aproxima, y con qué
5_Tema_5_1#slide-4, #slide-5, #slide-6 · Sutton & Barto, §9.1 y §9.7
Se sustituye la tabla por una forma funcional con parámetros: \(\hat v(s,w)\) o
\(\hat q(s,a,w)\), con \(w \in \mathbb R^d\) y \(d\) mucho menor que el número de
estados. Tres arquitecturas posibles, que son las de #slide-5: una que recibe \(s\) y
devuelve \(\hat v(s,w)\); otra que recibe el par \((s,a)\) y devuelve
\(\hat q(s,a,w)\); y una tercera que recibe \(s\) y devuelve una salida por acción,
\(\hat q(s,a_1,w)\dots\hat q(s,a_{|\mathcal A|},w)\) —que es exactamente la de DQN, y es la
que hace que el \(\max_a\) cueste una sola pasada—.
El curso se centra en aproximadores diferenciables (#slide-6), y el libro explica
por qué no vale cualquier método de aprendizaje supervisado: hay que aprender en
línea, con datos que llegan de uno en uno, y con objetivos no estacionarios —el
objetivo cambia porque los propios pesos cambian, y porque la política mejora—. Un método
que no tolere esa no estacionariedad no sirve aquí.
\[ \hat v(s,w) \approx v_\pi(s) \qquad\text{o}\qquad \hat q(s,a,w) \approx q_\pi(s,a), \qquad w \in \mathbb R^d,\; d \ll |\mathcal S| \]
El objetivo: \(\overline{VE}\) y \(\mu\)
5_Tema_5_1#slide-4 · el objetivo ponderado solo está en Lucía, Tema5_1_Aproximacion#slide-7 · Sutton & Barto, §9.2, ecuaciones (9.1) a (9.3)
En el caso tabular no hacía falta ninguna medida de calidad: los valores aprendidos podían acabar siendo exactamente los verdaderos, y estaban desacoplados —actualizar un estado no afectaba a ningún otro—. Con aproximación de verdad, actualizar un estado afecta a muchos, y como hay muchos más estados que pesos, hacer más preciso un estado significa inevitablemente hacer menos precisos otros. Estamos obligados, entonces, a decir qué estados nos importan más.
Eso es \(\mu(s)\): una distribución sobre los estados, \(\mu(s)\ge 0\) y \(\sum_s \mu(s) = 1\), que casi siempre se toma como la fracción del tiempo que se pasa en \(s\). Con ella se escribe el objetivo del tema, el error cuadrático medio de valor. La baraja de Álvaro escribe \(J(w) = \mathbb E_\pi[(v_\pi(S) - \hat v(S,w))^2]\) y no dice bajo qué distribución se toma esa esperanza: es la misma cosa cuando la esperanza se toma bajo \(\mu\), y es Lucía quien lo escribe explícitamente.
\[ \overline{VE}(w) \;\doteq\; \sum_{s\in\mathcal S} \mu(s)\big[v_\pi(s) - \hat v(s,w)\big]^2 \]
Para tareas episódicas, \(\mu\) se calcula contando visitas: si \(h(s)\) es la probabilidad de que un episodio empiece en \(s\), el número esperado de visitas a \(s\) por episodio cumple \(\eta(s) = h(s) + \sum_{\bar s}\eta(\bar s)\sum_a \pi(a\mid\bar s)p(s\mid\bar s,a)\), y \(\mu(s) = \eta(s)/\sum_{s'}\eta(s')\). En el módulo 1 se resuelve ese sistema para el paseo de 1000 estados y se ve la forma de \(\mu\): un triángulo con el pico en el estado de inicio.
MÓDULO 1
El objetivo: qué estados importan
5_Tema_5_1#slide-4, #slide-8, #slide-11 · el objetivo ponderado, solo en Lucía: Tema5_1_Aproximacion#slide-7 · Sutton & Barto, §9.2 y Example 9.1
Descenso del gradiente, y por qué esto es solo semi-gradiente
5_Tema_5_1#slide-7, #slide-8 · Sutton & Barto, §9.3, ecuaciones (9.4) a (9.7)
Si el valor verdadero estuviera disponible, cada estado visitado sería un ejemplo de aprendizaje supervisado \(S_t \mapsto v_\pi(S_t)\) y bastaría con bajar por el gradiente del error cuadrático de ese ejemplo. Al derivar \([v_\pi(S_t)-\hat v(S_t,w_t)]^2\) sale un 2 que se cancela con el \(\tfrac12\), y queda la regla que se usa en todo el tema.
\[ w_{t+1} \doteq w_t - \tfrac12\,\alpha\,\nabla\big[v_\pi(S_t)-\hat v(S_t,w_t)\big]^2 \;=\; w_t + \alpha\big[v_\pi(S_t)-\hat v(S_t,w_t)\big]\nabla\hat v(S_t,w_t) \]
Como no se conoce \(v_\pi\), se pone en su lugar un objetivo \(U_t\), y la regla vale para cualquiera de ellos: \(U_t = G_t\) da Monte Carlo, \(U_t = R_{t+1} + \gamma\hat v(S_{t+1},w_t)\) da TD(0). Si \(U_t\) es un estimador no sesgado de \(v_\pi(S_t)\), \(w_t\) converge a un óptimo local con las condiciones habituales de \(\alpha\).
\[ w_{t+1} \;\doteq\; w_t + \alpha\big[U_t - \hat v(S_t,w_t)\big]\,\nabla\hat v(S_t,w_t) \]
Con un objetivo que hace bootstrapping —el de TD, el de \(n\) pasos, el de DP— el objetivo depende del propio \(w_t\), y ahí se rompe el paso de la primera fórmula a la segunda, que suponía un objetivo independiente de \(w\). La actualización tiene en cuenta el efecto de cambiar \(w\) sobre la estimación, pero ignora su efecto sobre el objetivo: incluye solo una parte del gradiente. Por eso se llaman métodos semi-gradiente, y por eso no son el gradiente de ninguna función objetivo: no se pueden apoyar en los resultados clásicos de convergencia del descenso estocástico.
La contrapartida es la de siempre: los métodos semi-gradiente no convergen tan
robustamente, pero convergen con fiabilidad en los casos importantes —el lineal, entre
ellos—, aprenden mucho más rápido y permiten aprender en línea sin esperar al final
del episodio. En la baraja de Álvaro la palabra «semi-gradiente» solo aparece dentro del
título en inglés de la caja de #slide-19 y en la anotación manuscrita de clase; el
concepto está desarrollado en Lucía, Tema5_1_Aproximacion#slide-14.
#slide-7: \(J(w)\) es una función escalar de un vector, no una
«función vectorial»; y el \(\tfrac12\) del \(\Delta w = -\tfrac12\alpha\nabla_w J(w)\) no
pertenece al descenso del gradiente en general —está solo para cancelar el 2 de derivar un
cuadrado—, así que aparece una diapositiva antes de que haya ningún
cuadrado que cancelar.
¿Qué es el estado? Las cuatro preguntas de clase, respondidas
5_Tema_5_1#slide-9 (las respuestas están manuscritas en 5_Tema_5_1_completo#slide-9) · Sutton & Barto, §9.5
La diapositiva lanza cuatro preguntas y no responde ninguna en pantalla. Se responden en clase, a mano. Son estas:
Pregunta (literal de #slide-9) | Respuesta |
|---|---|
| «¿Qué es el estado?» | Una señal que transmite toda la información que hace falta para actuar de forma óptima en el entorno; no es el entorno, es lo que el agente recibe de él |
| «¿Qué tiene que cumplir una señal que nos trasmita información sobre el estado?» | La propiedad de Markov: que el futuro dependa del presente y no del camino por el que se ha llegado |
| «¿Qué alternativas tenemos para “construir” esa señal?» | Elegir características, y a veces apilar muestras del pasado —es lo que hace DQN con cuatro fotogramas—. Las alternativas concretas son el bloque siguiente: one-hot, agregación, coarse coding, tile coding |
| «¿Cómo vamos a llamarla? (Ejemplos)» | Observación. Es el nombre que se usa desde aquí hasta #slide-32, donde el modelo de DQN empieza con «observación del estado» |
Tema5_1_Aproximacion#slide-17. Nada importante; se anota para que nadie piense que la
transcripción está mal.
El libro añade un matiz que conviene tener a mano: la aproximación de funciones hace el RL aplicable a problemas parcialmente observables, pero lo que no puede hacer es aumentar la representación del estado con memoria del pasado. Apilar cuatro fotogramas, como en DQN, es exactamente eso: ampliar la señal a mano para que se parezca más a un estado de Markov.
Aproximación lineal: \(\hat v = w^\top x(s)\) y \(\nabla\hat v = x(s)\)
5_Tema_5_1#slide-10 · la regla que la diapositiva anuncia y no escribe está manuscrita en 5_Tema_5_1_completo#slide-10 y proyectada en Lucía, Tema5_1_Aproximacion#slide-16 · Sutton & Barto, §9.4, ecuación (9.8)
A cada estado se le asocia un vector de características \(x(s) = (x_1(s),\dots, x_d(s))^\top\), con tantas componentes como pesos, y el valor aproximado es el producto escalar. Cada \(x_i\) es una función \(x_i:\mathcal S\to\mathbb R\); en el caso lineal las características son funciones base, porque forman una base lineal del conjunto de funciones aproximables.
\[ \hat v(s,w) \doteq w^\top x(s) = \sum_{i=1}^{d} w_i\,x_i(s), \qquad \nabla\hat v(s,w) = x(s) \]
Que el gradiente sea el propio vector de características es lo que hace tan simple
el caso lineal, y es el paso que #slide-10 deja en blanco. Sustituyéndolo en la regla
genérica queda la regla que se usa en todo el tema:
\[ w_{t+1} \;\doteq\; w_t + \alpha\big[U_t - \hat v(S_t,w_t)\big]\,x(S_t) \]
En el caso lineal hay un solo óptimo (o, en casos degenerados, un conjunto de óptimos
igual de buenos), así que cualquier método con garantía de converger a un óptimo local
queda automáticamente garantizado a converger al global. Es la razón por la que casi
todos los resultados de convergencia útiles del RL son para aproximación lineal o más
simple, y es la razón por la que la columna «Lineal» de las tablas de #slide-16 tiene
tantos «SÍ».
#slide-10 termina con la viñeta «Regla de actualización de pesos:» y debajo no hay
nada: la fórmula se escribe a mano en clase. Es
\(\Delta w = \alpha\big(v_\pi(s) - x(s)^\top w\big)\,x(s)\), y es el resultado central del
bloque lineal.
El caso tabular, por dentro
5_Tema_5_1#slide-11 (la respuesta a su pregunta está manuscrita en 5_Tema_5_1_completo#slide-11) · Sutton & Barto, Exercise 9.1 y §9.3 (agregación de estados)
Tómese \(x(s) = e_s\), el vector con un 1 en la posición de \(s\) y ceros en el resto —one-hot—. Entonces \(\hat v(s,w) = w_s\), \(\nabla\hat v(s,w) = e_s\), y la regla lineal se convierte en \(w_s \leftarrow w_s + \alpha[U_t - w_s]\): literalmente la actualización tabular de los temas 3 y 4. El caso tabular no es otra cosa: es aproximación lineal con \(d = |\mathcal S|\).
#slide-11 pregunta: «¿Consideras que hay algún tipo de aproximación?». No la hay:
con one-hot los pesos pueden reproducir \(v_\pi\) exactamente, así que
\(\min_w \overline{VE} = 0\) y no hay ningún error que repartir entre estados. La
aproximación aparece en el momento en que se agrupan estados —que es la respuesta que
se da en clase—: eso es la agregación de estados, un peso por grupo, y es el primer
aproximador de verdad del tema.
\[ x(s) = e_s \;\Longrightarrow\; \hat v(s,w) = w_s,\quad \nabla\hat v(s,w) = e_s,\quad w_s \leftarrow w_s + \alpha\big[U_t - w_s\big] \]
La agregación de estados es un caso particular de la regla general en el que el gradiente vale 1 en la componente del grupo de \(S_t\) y 0 en las demás. Es decir: es one-hot, pero sobre grupos en lugar de sobre estados.
4_Tema4_2#slide-16 dice que ese 1 no es un valor arbitrario, es el
gradiente de la función de valor en el caso de aproximación lineal con codificación
one-hot de los estados. Es la misma frase, leída en la otra dirección. Está en la
segunda página del tema 4.
Tile coding: mosaicos solapados
5_Tema_5_1#slide-23, #slide-24 (dos figuras del libro, sin una palabra de texto) y la tarea de #slide-22 · el texto que las explica está en Lucía, Tema5_1_Aproximacion#slide-21, #slide-23, #slide-25 · Sutton & Barto, §9.5.3 y §9.5.4, figuras 9.9, 9.10 y 9.11
#slide-22: «Leer sección 9.5.4 (tile coding) del Sutton & Barto» y «realizar los
ejercicios con el código que os vamos a entregar la semana que viene», para la
práctica 3. Al subirlas de sitio en esta página sube con ellas la tarea: lo que viene
a continuación es el resumen de §9.5.4, no un sustituto de leerla.
Antes de los mosaicos, la idea general: la codificación gruesa (coarse coding) usa características binarias asociadas a campos receptivos solapados. Dado un estado, las características que valen 1 dicen dentro de qué campos cae, y eso codifica su posición. Cuánto generaliza una actualización de \(s\) a \(s'\) depende de cuántos campos receptivos comparten. El tamaño y la forma de los campos controlan la generalización inicial; la precisión final —la discriminación más fina posible— la controla más el número total de características, no su anchura.
Tile coding es la forma de codificación gruesa para espacios continuos multidimensionales que resulta práctica de calcular. Los campos receptivos se agrupan en particiones del espacio de estados: cada partición se llama un mosaicado (tiling) y cada elemento de la partición, un mosaico (tile). Con \(m\) mosaicados desplazados entre sí, cada estado cae en exactamente un mosaico de cada mosaicado, así que hay exactamente \(m\) características activas, siempre, para cualquier estado.
Que el número de características activas sea siempre el mismo permite fijar \(\alpha\) de forma intuitiva. Con \(\alpha = 1/m\) se consigue aprendizaje exacto en un solo ensayo: si se entrena el ejemplo \(s\mapsto u\), sea cual fuera la estimación previa, la nueva es exactamente \(u\). Normalmente se quiere ir más despacio, para dejar sitio a la generalización y al ruido de los objetivos: con \(\alpha = 1/(10m)\) la estimación del estado entrenado se mueve exactamente una décima parte del camino hacia el objetivo, y los estados vecinos se mueven menos, en proporción al número de mosaicos que comparten.
\[ \alpha \;\doteq\; \big(\tau\,\mathbb E[x^\top x]\big)^{-1} \;\stackrel{\text{tile coding}}{=}\; \frac{1}{\tau\,m} \]
La primera igualdad es la regla general del libro para métodos lineales, con \(\tau\) = el número de experiencias con el mismo vector de características en las que se quiere aprender. La segunda vale porque con tile coding las características son binarias y hay exactamente \(m\) activas, luego \(x^\top x = m\) es constante. De ahí salen el \(1/m\) y el \(1/(10m)\) de arriba, con \(\tau=1\) y \(\tau=10\). Y de ahí sale también que las figuras del libro escriban \(\alpha\) como \(0{,}5/8\) o rotulen el eje «\(\alpha\times\) número de mosaicados (8)»: están normalizando por \(m\).
Los mosaicados se desplazan entre sí una fracción del ancho de mosaico. Si \(\ell\) es el
ancho y \(m\) el número de mosaicados, \(\ell/m\) es la unidad fundamental: dentro de
un cuadrado de lado \(\ell/m\) todos los estados activan los mismos mosaicos y tienen el
mismo valor aproximado. Si todos los mosaicados se desplazan por igual en cada dimensión
—vector de desplazamiento \((1,1)\)— la generalización sale con artefactos diagonales
y varía mucho de un punto a otro; ésa es la mitad superior de la figura de #slide-24. Con
desplazamientos asimétricos la generalización sale más esférica y homogénea: es la
mitad inferior. La receta del libro para un espacio de dimensión \(k\) es usar los
primeros enteros impares \((1,3,5,\dots,2k-1)\) con \(m\) igual a una potencia de 2
mayor o igual que \(4k\); para \(k=2\), eso es \(m=8\) y el vector \((1,3)\), que es
exactamente lo que usa Mountain Car en el módulo 5.
Dos cosas más que la figura no dice. Una: la ventaja de cálculo. Como las características son 0 o 1, el producto escalar no cuesta \(d\) multiplicaciones: se calculan los índices de las \(m \ll d\) características activas y se suman \(m\) pesos. Dos: el hashing, un colapso pseudoaleatorio y consistente de un mosaicado grande en un conjunto pequeño de mosaicos; produce mosaicos formados por trozos dispersos, pero sigue siendo una partición, y reduce la memoria mucho con poca pérdida. Es lo que libera a tile coding de la maldición de la dimensionalidad: la memoria no tiene que ser exponencial en el número de dimensiones, solo tiene que ajustarse a lo que la tarea pide de verdad.
MÓDULO 2
Qué es \(x(s)\)
5_Tema_5_1#slide-9, #slide-11, #slide-22 a #slide-24 · el texto de las dos figuras, solo en Lucía: Tema5_1_Aproximacion#slide-21, #slide-23, #slide-25 · Sutton & Barto, Exercise 9.1, §9.5.3 y §9.5.4, figuras 9.9 a 9.11
Las dos reglas de la práctica: MC y TD(0)
5_Tema_5_1#slide-12, #slide-13, #slide-14 (las dos reglas se escriben a mano en 5_Tema_5_1_completo#slide-12, #slide-13, #slide-14) · las cajas de pseudocódigo están en Lucía, Tema5_1_Aproximacion#slide-13, #slide-14 · Sutton & Barto, §9.3
#slide-12 avisa de lo que cambia: hasta aquí las fórmulas contenían el valor real al que
hay que aproximarse, pero RL no es aprendizaje supervisado —solo se dispone de la
recompensa—. Así que en \(U_t\) se pone lo que sí se tiene. Con Monte Carlo, el retorno
observado; con TD(0), la recompensa más el valor estimado del estado siguiente.
\[ \text{MC gradiente:}\quad \Delta w = \alpha\big[G_t - x(S_t)^\top w\big]\,x(S_t) \] \[ \text{TD(0) semi-gradiente:}\quad \Delta w = \alpha\big[R_{t+1} + \gamma\,x(S_{t+1})^\top w - x(S_t)^\top w\big]\,x(S_t) \]
Las listas de muestras de entrenamiento de #slide-13 y #slide-14 son exactamente esto,
escrito como pares entrada-objetivo: \(\langle S_0,G_0\rangle,\dots,\langle
S_{T-1},G_{T-1}\rangle\) para MC, y \(\langle S_0, R_1+\gamma\hat v(S_1,w)\rangle,\dots,
\langle S_{T-1},R_T\rangle\) para TD(0). Fíjate en el último par de la lista de TD: no
lleva bootstrapping. La razón es que \(\hat v(\text{terminal},w) = 0\) por
definición, algo que la caja del libro exige explícitamente y que la baraja no dice en
ninguna parte.
\[ \hat v(\text{terminal},w) \;=\; 0 \quad\text{siempre, para todo } w \]
#slide-13 dice que MC converge al óptimo global en el caso lineal, y es cierto: el
retorno es un estimador no sesgado de \(v_\pi(S_t)\), la regla es descenso del
gradiente de verdad, y en el caso lineal el óptimo local es el global. #slide-14 dice
que TD(0) converge a un punto cercano al óptimo global; eso es una simplificación
didáctica de algo más preciso, y es el bloque siguiente.
#slide-13 acaba en \(\langle S_T, G_T\rangle\): \(S_T\) es
terminal, no se actualiza, y \(G_T\) no está definido. Debe acabar en \(\langle S_{T-1},
G_{T-1}\rangle\), como sí hace la de TD. Y arranca en \(S_1\), mientras la caja del libro
recorre \(t = 0,1,\dots,T-1\).
→ módulo 3: las dos reglas sobre el mismo entorno, con los mismos episodios y la misma semilla.
El punto fijo TD y la cota \(1/(1-\gamma)\)
5_Tema_5_1#slide-13, #slide-14 · Sutton & Barto, §9.4, ecuaciones (9.11), (9.12) y (9.14)
«Cercano» tiene una medida exacta, y no está en la baraja. En el caso lineal continuo, la actualización de TD(0) en esperanza se escribe con dos objetos: una matriz \(A\) y un vector \(b\). TD(0) lineal converge al punto donde \(b - Aw = 0\), que se llama punto fijo TD.
\[ A \doteq \mathbb E\big[x_t(x_t - \gamma x_{t+1})^\top\big], \qquad b \doteq \mathbb E\big[R_{t+1}\,x_t\big], \qquad w_{TD} \doteq A^{-1}b \]
Ese punto no es el óptimo global de \(\overline{VE}\), y el libro acota cuánto peor puede ser: el error asintótico de TD no pasa de \(1/(1-\gamma)\) veces el error mínimo posible, que es el que alcanza Monte Carlo en el límite.
\[ \overline{VE}(w_{TD}) \;\le\; \frac{1}{1-\gamma}\,\min_w \overline{VE}(w) \]
Tres cosas más que el libro añade y que sirven para leer las tablas del módulo 6: la misma cota vale para DP semi-gradiente cuando las actualizaciones siguen la distribución on-policy; vale, con una cota análoga, para SARSA(0) semi-gradiente —con política constante—; y es crítico que las actualizaciones sigan la distribución on-policy: con otras distribuciones, los métodos con bootstrapping y aproximación pueden divergir a infinito. Ése es el bloque siguiente.
MÓDULO 3
A dónde converge cada uno
5_Tema_5_1#slide-12 a #slide-14 · Sutton & Barto, §9.3 y §9.4, ecuaciones (9.12) y (9.14); Example 9.1, figura 9.1; Example 9.2, figura 9.2
Los pesos pueden irse a infinito
5_Tema_5_1#slide-15 · Sutton & Barto, §11.2: el ejemplo \(w\to 2w\) (p. 282) y el contraejemplo de Baird (figuras 11.1 y 11.2)
#slide-15 proyecta una figura del libro con los pesos disparándose y una línea de
texto: «Evolución de los pesos en el contraejemplo de Baird (predicción TD)». No dice
qué MDP es el de Baird, ni que el entrenamiento es off-policy, ni por qué
divergen los pesos. Es la afirmación más fuerte del tema apoyada en la figura más muda,
así que empezamos por el ejemplo más pequeño que existe, que sí se sigue a mano.
Dos estados y un solo peso. El primer estado tiene valor estimado \(w\) y el segundo \(2w\) —es decir, características escalares \(x=1\) y \(x=2\)—. Del primero sale una única acción, que lleva determinísticamente al segundo con recompensa 0. El error TD de esa transición es \(\delta = 0 + \gamma\cdot 2w - w = (2\gamma-1)w\), y la actualización semi-gradiente deja:
\[ w_{t+1} \;=\; w_t + \alpha\,\delta_t\,\nabla\hat v(S_t,w_t) \;=\; w_t + \alpha(2\gamma-1)w_t\cdot 1 \;=\; \big(1 + \alpha(2\gamma-1)\big)\,w_t \]
Si ese factor pasa de 1, el sistema es inestable y \(w\) se va a \(+\infty\) o a \(-\infty\) según su valor inicial. Y pasa de 1 exactamente cuando \(\gamma > 0{,}5\). Lo importante: la estabilidad no depende del tamaño de paso, mientras \(\alpha > 0\). Un \(\alpha\) más pequeño cambia la velocidad a la que \(w\) se va a infinito, no si se va.
La clave del ejemplo es que esa transición ocurre repetidamente sin que \(w\) se actualice en las demás transiciones. Eso es posible off-policy, porque la política de comportamiento puede elegir, en esas otras transiciones, acciones que la política objetivo nunca elegiría: para ellas la razón de importancia es cero y no se actualiza nada. On-policy, esa razón vale siempre uno. Como lo dice el libro: al final, al gaitero hay que pagarle. On-policy, la promesa de recompensa futura hay que cumplirla y el sistema se mantiene a raya; off-policy se puede prometer y luego, tras tomar una acción que la política objetivo nunca tomaría, olvidar y perdonar.
El contraejemplo de Baird es este mismo mecanismo, completo y sin trucos. Un MDP episódico de siete estados y dos acciones; la acción de trazo discontinuo lleva a uno de los seis estados superiores con igual probabilidad, la de trazo continuo lleva al séptimo. La política de comportamiento elige la discontinua 6 de cada 7 veces, de modo que la distribución del estado siguiente es uniforme; la política objetivo elige siempre la continua, y su distribución está concentrada en el séptimo estado. La recompensa es cero en todas las transiciones, \(\gamma = 0{,}99\), y hay ocho pesos para siete estados no terminales, con características linealmente independientes: el valor verdadero es \(v_\pi(s)=0\) para todo \(s\) y se puede representar exactamente con \(w=0\). Todo favorable. Y aun así, con \(\alpha = 0{,}01\) y \(w_0 = (1,1,1,1,1,1,10,1)^\top\), los pesos divergen.
Dos cosas que suelen sorprender. No es cuestión del tamaño de paso: la inestabilidad ocurre para cualquier \(\alpha>0\), por pequeño que sea. Y no es cuestión de muestreo ni de asincronía: con actualizaciones de DP semi-gradiente —que barren todos los estados, sin nada de azar, exactamente como una barrida clásica de programación dinámica— el sistema sigue siendo inestable. Lo que lo arregla no es el algoritmo: es la distribución. Si en el contraejemplo de Baird se cambia solo la distribución de las actualizaciones, de uniforme a la distribución on-policy, la convergencia queda garantizada con el error acotado por la cota del bloque anterior.
#slide-15 es la figura 11.2 del libro y rotula el eje «Parameter values,
\(\theta_k(i)\)»: usa \(\theta\) para los pesos, cuando toda la baraja usa \(w\) y en
este curso \(\theta\) son los parámetros de la política (tema 6). Aquí todo va con
\(w\). El mismo cambio, sin avisar, está en #slide-34 con \(\theta\) y \(\theta^-\) de
DQN. Y la figura proyectada no incluye el MDP de Baird: solo la gráfica de la
divergencia, que es lo que la hace difícil de leer.
MÓDULO 4
Cuándo divergen los pesos
5_Tema_5_1#slide-15 · Sutton & Barto, §11.2, el ejemplo \(w\to 2w\) (p. 282) y el contraejemplo de Baird, figuras 11.1 y 11.2
Los tres inductores de inestabilidad
5_Tema_5_1#slide-16 y #slide-21 · las tablas son de las diapositivas de David Silver (UCL), que #slide-2 declara como fuente · la evidencia está dispersa en Sutton & Barto, §9.4, §10.1, §11.2 y §11.3
El peligro de inestabilidad y divergencia aparece cuando se combinan los tres elementos siguientes, y no antes:
| Inductor | Qué es |
|---|---|
| Aproximación de la función de valor | Una forma potente y escalable de generalizar desde un espacio de estados mucho mayor que la memoria y el cómputo disponibles (por ejemplo, aproximación lineal o redes neuronales) |
| Bootstrapping | Objetivos de actualización que incluyen estimaciones ya existentes —como en DP o en TD— en lugar de basarse solo en recompensas reales y retornos completos, como en MC |
| Entrenamiento off-policy | Entrenar sobre una distribución de transiciones distinta de la que produce la política objetivo. Barrer el espacio de estados actualizando todos los estados por igual, como en DP, no respeta la política objetivo y es un caso de entrenamiento off-policy |
Si están presentes dos cualesquiera de los tres, pero no los tres, la inestabilidad se
puede evitar. Así que lo natural es preguntarse cuál se puede soltar. La aproximación,
no: hace falta escalar, y la agregación o los métodos no paramétricos son demasiado
débiles o demasiado caros —los de mínimos cuadrados, como LSTD, son de complejidad
cuadrática y por tanto demasiado caros para problemas grandes—. El bootstrapping se
puede soltar, pero se paga en eficiencia de cálculo y de datos, y es demasiado valioso.
Queda el off-policy, y ahí el libro da la receta concreta para el RL sin
modelo: usar SARSA en lugar de Q-learning. Que es exactamente lo que dice la tabla de
control de #slide-21, donde SARSA lineal es «(SÍ)» y Q-learning lineal es «NO».
Álvaro llama a estos tres «inductores de inestabilidad», y es el nombre que usa esta página. En el libro y en las diapositivas de Lucía se llaman «la tríada mortal» (deadly triad); es el mismo trío, y conviene reconocer las dos etiquetas porque el examen y la bibliografía pueden usar cualquiera de ellas.
#slide-2. Lo que sí hay en el libro es la evidencia de cada casilla, dispersa por
cuatro capítulos, y es lo que el módulo 6 recompone.
MÓDULO 6
Las dos tablas, casilla por casilla
5_Tema_5_1#slide-16, #slide-21 (idénticas en Lucía: Tema5_1_Aproximacion#slide-15 y Tema5_2_Aproximacion#slide-8) · las tablas son de las diapositivas de David Silver (UCL), no de Sutton & Barto · la evidencia, en Sutton & Barto §§9.2-9.4, §10.1, §11.2 y §11.3
Control: de \(v\) a \(q\)
5_Tema_5_1#slide-17, #slide-18 (mejor presentado en Lucía, Tema5_2_Aproximacion#slide-4) · Sutton & Barto, §10.1, ecuaciones (10.1) a (10.3)
La extensión a valores de acción es directa: donde antes había ejemplos \(S_t \mapsto
U_t\), ahora hay ejemplos \(S_t,A_t \mapsto U_t\), y el objetivo \(U_t\) puede ser
cualquier aproximación de \(q_\pi(S_t,A_t)\) —el retorno completo de Monte Carlo, o
cualquiera de los retornos de SARSA a \(n\) pasos—. La respuesta al ejercicio de
#slide-18 son estas cuatro líneas:
\[ \hat q(S,A,w) \approx q_\pi(S,A), \qquad J(w) = \mathbb E_\pi\big[\big(q_\pi(S,A)-\hat q(S,A,w)\big)^2\big] \] \[ -\tfrac12\nabla_w J(w) = \mathbb E_\pi\big[\big(q_\pi(S,A)-\hat q(S,A,w)\big)\nabla_w \hat q(S,A,w)\big] \] \[ \Delta w = \alpha\big(q_\pi(S,A)-\hat q(S,A,w)\big)\,\nabla_w \hat q(S,A,w) \qquad\text{(la versión muestral)} \]
#slide-18 la tercera línea aparece sin la \(\mathbb E_\pi\), mientras la línea
homóloga de #slide-8 sí la lleva. Tal como está escrita, iguala el gradiente exacto con
su estimación muestral, que son dos cosas distintas: la última línea es la muestral, y por
eso lleva \(\alpha\) y no lleva esperanza.
En el caso lineal, \(\hat q(s,a,w) \doteq w^\top x(s,a)\), con un vector de características por cada par estado-acción. Y para hacer control hace falta acoplar esto con la mejora de la política: si el conjunto de acciones es discreto y no demasiado grande, se calcula \(\hat q(S_t,a,w_t)\) para cada acción disponible, se toma \(A^*_t = \arg\max_a \hat q(S_t,a,w_t)\) y se hace la política \(\varepsilon\)-greedy sobre eso.
\[ \hat q(s,a,w) \doteq w^\top x(s,a) = \sum_{i=1}^{d} w_i\,x_i(s,a) \]
SARSA semi-gradiente, y la línea que cambia para Q-learning
5_Tema_5_1#slide-19 (caja del libro, en inglés) y #slide-20 (el ejercicio; la solución se escribe a mano en 5_Tema_5_1_completo#slide-20 y está impresa en Lucía, Tema5_2_Aproximacion#slide-7) · Sutton & Barto, §10.1 (caja) y §16.5, ecuación (16.3)
SARSA semi-gradiente episódico, para estimar q̂ ≈ q_*
Entrada: una parametrización derivable q̂ : S × A × R^d → R
Parámetros: paso α > 0, exploración ε > 0 pequeña
Inicializar los pesos w ∈ R^d arbitrariamente (p. ej. w = 0)
Repetir para cada episodio:
S, A ← estado y acción iniciales del episodio (p. ej. ε-greedy)
Repetir para cada paso del episodio:
Tomar la acción A; observar R, S′
Si S′ es terminal:
w ← w + α[R − q̂(S,A,w)] ∇q̂(S,A,w)
pasar al episodio siguiente
Elegir A′ en función de q̂(S′,·,w) (p. ej. ε-greedy)
w ← w + α[R + γ q̂(S′,A′,w) − q̂(S,A,w)] ∇q̂(S,A,w)
S ← S′
A ← A′
Detalle que se pierde al resumir y que hay que respetar al implementar: el caso terminal tiene su propia línea, sin el término \(\gamma\hat q(S',A',w)\). Es la misma condición de \(\hat v(\text{terminal},w)=0\) del bloque de predicción, escrita para \(q\).
#slide-20 es una diapositiva con el enunciado y la pantalla vacía: «Identifica las
líneas que difieren de SARSA y define cómo serían para Q-learning». Difieren dos, y en
realidad es una sola idea. La línea «Elegir \(A'\)» deja de existir como elección de la
acción a ejecutar: en Q-learning esa acción no se toma, solo se usa para el objetivo. Y
el objetivo pasa de \(\hat q(S',A',w)\) —la acción realmente elegida por la política de
comportamiento— a \(\max_a \hat q(S',a,w)\).
\[ \text{SARSA:}\quad w \leftarrow w + \alpha\big[R + \gamma\,\hat q(S',A',w) - \hat q(S,A,w)\big]\nabla\hat q(S,A,w) \] \[ \text{Q-learning:}\quad w \leftarrow w + \alpha\big[R + \gamma\,\max_a \hat q(S',a,w) - \hat q(S,A,w)\big]\nabla\hat q(S,A,w) \]
Ese \(\max\) es lo que convierte el método en off-policy, y por tanto lo que le añade el tercer inductor de B12. En el caso lineal, con \(\nabla\hat q(S,A,w) = x(S,A)\), las dos reglas se escriben \(\Delta w = \alpha\,\delta\,x(S,A)\), con el \(\delta\) que corresponda.
#slide-19 tiene dos imágenes: la caja de pseudocódigo y, debajo de ella en el
orden de apilado, la fórmula \(\Delta w = \alpha[r+\gamma\hat q(s',a',w)-\hat
q(s,a,w)]\,x(s,a)\), que la caja tapa por completo. En proyección esa fórmula no se ve
nunca, y es la única aparición de \(x(s,a)\) en toda la baraja de Álvaro. La versión
visible está en las diapositivas de Lucía, Tema5_2_Aproximacion#slide-5. Es notación
examinable: apréndela de aquí.
#slide-21 resume con un paréntesis:
con política constante, SARSA(0) semi-gradiente lineal converge igual que TD(0) y con
el mismo tipo de cota. Con selección \(\varepsilon\)-greedy —o sea, con la política
cambiando— no converge en el sentido habitual, pero entra en una región acotada cerca de
la mejor solución. Eso es exactamente el «(SÍ) ➜ cerca, pero no quieto» de la
diapositiva, y la referencia es Gordon (1996a, 2001), en la nota bibliográfica 10.1 del
libro.
Trazas de elegibilidad con aproximación: \(z_t\) tiene dimensión \(d\)
4_Tema4_2#slide-16, #slide-17 (tema 4.3) y 5_Tema_5_1#slide-11 · Sutton & Barto, capítulo 12 — materia del tema 4.3, no del tema 5
4_Tema4_2#slide-16, #slide-17) y del capítulo 12 del libro, que
queda fuera de este tema. Están aquí por una razón concreta: el problema práctico del
examen final pide \(x(s,a)\) y las trazas en el mismo enunciado, y \(x(s,a)\) sí es
de este tema. El desarrollo completo —el dilema frecuencia/recencia, el retorno
\(\lambda\), TD(λ) hacia adelante y la equivalencia de las dos vistas— está en la
segunda página del tema 4 y no se repite aquí.
En el caso tabular, la traza se incrementaba en 1 en la casilla del par visitado y se
desvanecía en las demás. Ese 1 no es un valor arbitrario: 4_Tema4_2#slide-16 dice que
es el gradiente de la función de valor en el caso de aproximación lineal con codificación
one-hot de los estados. Es exactamente el argumento de #slide-11 —el caso tabular
es aproximación lineal con one-hot— contado del revés. Y leído así, la
generalización es inmediata: donde había un 1, va el gradiente.
\[ z_{-1} \doteq 0, \qquad z_t \doteq \gamma\lambda\,z_{t-1} + \nabla\hat q(S_t,A_t,w_t) \;=\; \gamma\lambda\,z_{t-1} + x(S_t,A_t), \qquad w_{t+1} \doteq w_t + \alpha\,\delta_t\,z_t \]
De ahí sale lo único que hay que memorizar de este bloque: \(z_t\) vive en el espacio de los pesos. Tiene la misma dimensión que \(w\), es decir \(d\), y no \(|\mathcal S|\times|\mathcal A|\). Con aproximación no hay una casilla por par estado-acción: hay \(d\) pesos, y la traza lleva un número por peso, que dice cuánto ha contribuido ese peso a lo que se acaba de vivir. Si en el examen escribes una traza del tamaño de la tabla, has vuelto al tema 4.
Dos formas de acumular la visita, las mismas que en el caso tabular. La acumulativa suma el gradiente, \(z_t = \gamma\lambda z_{t-1} + x(S_t,A_t)\): si una componente se repite, su traza pasa de \(1\) a \(1+\gamma\lambda\). La de reemplazo desvanece primero y después pone a 1 las componentes activas, así que una componente repetida se queda en 1. La de reemplazo está definida para características binarias —el caso de tile coding— y es la que se usa con mosaicos; con características de valor real, como las del ejemplo de abajo, la que aplica es la acumulativa.
Dos detalles de implementación que son también detalles conceptuales. Uno: la traza se reinicia a cero al empezar cada episodio; no arrastra crédito de un episodio al siguiente, porque el anterior ya terminó. Dos: con \(\lambda = 0\) la recurrencia se queda en \(z_t = x(S_t,A_t)\) y la actualización de pesos es \(w \leftarrow w + \alpha\delta_t\,x(S_t,A_t)\), que es exactamente el algoritmo de un paso de B14. No parecido: el mismo, peso a peso.
Resuelto al estilo del examen
Un robot que navega hacia un objetivo. La observación son seis variables —posición en \(x\), posición en \(y\), distancia mínima a un obstáculo, demora del obstáculo, distancia al objetivo y demora del objetivo— y hay tres acciones: avanzar (\(A_0\)), girar 90° a la izquierda (\(A_1\)) y girar 90° a la derecha (\(A_2\)). Ésta es la evolución de la observación, y no hay más datos que éstos:
| Variable | \(t=0\) | \(t=1\) | \(t=2\) | \(t=3\) |
|---|---|---|---|---|
| \(x_0\) (posición en \(x\)) | 2 | 3 | 3 | 3 |
| \(x_1\) (posición en \(y\)) | 2 | 2 | 2 | 3 |
| \(x_2\) (distancia al obstáculo) | 2 | 2 | 2 | 1 |
| \(x_3\) (demora del obstáculo) | 0 | 0 | 0 | 0 |
| \(x_4\) (distancia al objetivo) | 4,2 | 3,6 | 3,6 | 2,8 |
| \(x_5\) (demora del objetivo) | 45 | 33,7 | 33,7 | 45 |
Paso 1: construir \(x(s,a)\). Las seis variables van al bloque de la acción tomada y los otros dos bloques van a cero. Tres acciones × seis variables ⟹ \(d = 18\) pesos, que se almacenan como un vector de 18 o como una matriz \(3\times 6\), una fila por acción. Y las trazas, exactamente igual: 18. Ésa es la respuesta a los dos apartados que preguntan por dimensiones y almacenamiento.
Paso 2: leer las acciones de la tabla. De \(t=0\) a \(t=1\) la posición cambia (\(x_0: 2\to 3\)) y la distancia al objetivo baja: el robot avanzó, \(A_0\). De \(t=1\) a \(t=2\) no cambia ni una de las seis variables: las demoras son respecto al norte en un sistema de referencia estático, así que girar no cambia ninguna ⟹ fue un giro. De \(t=2\) a \(t=3\) la posición vuelve a cambiar: avanzó otra vez, \(A_0\).
Paso 3: la recurrencia. Con \(\gamma = 0{,}9\) y \(\lambda = 0{,}5\),
\(\gamma\lambda = 0{,}45\). Traza acumulativa —las características son de valor
real— y \(z = 0\) antes de empezar.
Primera actualización (la que el enunciado llama \(t=1\)):
\(z = 0{,}45\cdot 0 + x(S_0,A_0) = x(S_0,A_0)\), es decir el bloque de \(A_0\) con la
columna \(t=0\), \((2,\,2,\,2,\,0,\,4{,}2,\,45)\), y cero en los bloques de
\(A_1\) y \(A_2\).
Segunda actualización (\(t=2\)):
\(z = 0{,}45\cdot z_{\text{anterior}} + x(S_1,A_1)\). El primer término desvanece el
bloque de \(A_0\): \(0{,}45\cdot(2,\,2,\,2,\,0,\,4{,}2,\,45) =
(0{,}9,\,0{,}9,\,0{,}9,\,0,\,1{,}89,\,20{,}25)\). El segundo suma la columna
\(t=1\) en el bloque del giro: \((3,\,2,\,2,\,0,\,3{,}6,\,33{,}7)\).
| Bloque | \(x_0\) | \(x_1\) | \(x_2\) | \(x_3\) | \(x_4\) | \(x_5\) |
|---|---|---|---|---|---|---|
| \(A_0\) — avanzar, tomada en \(t=0\) | 0,9 | 0,9 | 0,9 | 0 | 1,89 | 20,25 |
| \(A_1\) — el giro tomado en \(t=1\) | 3 | 2 | 2 | 0 | 3,6 | 33,7 |
| \(A_2\) — no tomada | 0 | 0 | 0 | 0 | 0 | 0 |
Dieciocho números, diez de ellos no nulos, y ni uno solo indexado por estado. Dos comprobaciones más del mismo enunciado, que salen gratis: el gradiente en \(t=2\) es \(\nabla_w\hat q(S_2,A_2,w) = x(S_2,A_2)\), donde \(A_2\) es la acción tomada en \(t=2\) —avanzar, porque la posición cambia en \(t=3\)—, o sea la columna \(t=2\) escrita en el bloque de avanzar; y con todos los pesos inicializados a 2, \(\hat q(S_2,A_2,w) = 2\cdot(3+2+2+0+3{,}6+33{,}7) = 2\cdot 44{,}3 = \mathbf{88{,}6}\).
MÓDULO 5
El algoritmo de la caja, corriendo
5_Tema_5_1#slide-17 a #slide-21 · la \(x(s,a)\) visible y el pseudocódigo de Q-learning, solo en Lucía: Tema5_2_Aproximacion#slide-5, #slide-7 · Sutton & Barto, §10.1, Example 10.1, figuras 10.1 y 10.2; §16.5, ecuación (16.3)
Batch RL: reutilizar la experiencia
5_Tema_5_1#slide-25 a #slide-29 · la cadena de razonamiento es de las diapositivas de David Silver · Sutton & Barto, §6.3 (actualización por lotes, caso tabular) y §9.8 (LSTD)
#slide-26 pregunta: «¿Cómo es el ciclo de vida de la experiencia que nos llega?». La
respuesta —que en la baraja de Álvaro no está, y sí en Lucía— es breve: cada dato se usa
una sola vez. Se genera una transición, se hace una actualización, y se tira. De ahí las
dos motivaciones del bloque: eficiencia de datos —reutilizar lo ya vivido— y
correlaciones, porque las muestras consecutivas de una trayectoria no son
independientes.
La idea de la predicción por mínimos cuadrados es: guardar un conjunto de experiencia \(\mathcal D\) y buscar los pesos que minimizan el error sobre todo \(\mathcal D\), no sobre la última muestra. Y la repetición de experiencia (experience replay) es la forma incremental de hacerlo: muestrear al azar de \(\mathcal D\) y aplicar la regla de siempre; en el límite, eso converge a la solución de mínimos cuadrados.
\[ \mathcal D = \big\{\langle s_1, v_1^\pi\rangle, \dots, \langle s_T, v_T^\pi\rangle\big\}, \qquad LS(w) = \sum_{t=1}^{T}\big(v_t^\pi - \hat v(s_t,w)\big)^2, \qquad w^\pi = \arg\min_w LS(w) \]
En el caso lineal la condición de óptimo es que el incremento esperado sea cero, y de ahí sale la ecuación normal. Las dos colecciones llegan hasta aquí y se paran, aunque el texto prometa que «podemos calcular directamente el valor de \(w\)». La solución cerrada es ésta:
\[ \mathbb E_{\mathcal D}[\Delta w] = 0 \;\Longleftrightarrow\; \alpha\sum_{t=1}^{T} x(s_t)\big(v_t^\pi - x(s_t)^\top w\big) = 0 \;\Longrightarrow\; w = \Big(\sum_{t=1}^{T} x(s_t)x(s_t)^\top\Big)^{-1}\sum_{t=1}^{T} x(s_t)\,v_t^\pi \]
Invertir esa matriz cuesta \(O(d^3)\) en general, con \(d\) el número de pesos. Pero es una suma de productos externos, y su inversa se puede actualizar de forma incremental con la fórmula de Sherman-Morrison, que solo tiene productos matriz-vector y vector-vector: \(O(d^2)\). Compárese con el \(O(d)\) por paso de TD(0) semi-gradiente.
#slide-29 escribe «Shermann-Morrison» con dos «n»: es Sherman-Morrison. Y llama
\(N\) a lo que en el resto de esta página y en el libro es \(d\), el número de pesos.
Lo que el libro tiene de esto se llama LSTD (Least-Squares TD, §9.8): estimar \(A\) y \(b\) con las sumas muestrales y calcular directamente el punto fijo TD, \(w_t = \hat A_t^{-1}\hat b_t\). Es la forma más eficiente en datos de TD(0) lineal, y es más caro de calcular. Y tiene tres peros que suelen omitirse: no necesita \(\alpha\), pero sí necesita un \(\varepsilon\) de regularización —si es demasiado pequeño la sucesión de inversas oscila salvajemente, si es demasiado grande el aprendizaje se frena—; nunca olvida, lo que es un problema cuando la política objetivo cambia, como pasa en control; y por eso, en aplicaciones de control, LSTD suele necesitar algún mecanismo añadido que induzca olvido, con lo que la ventaja inicial de no tener paso se desvanece.
DQN: Q-learning semi-gradiente más tres piezas de ingeniería
5_Tema_5_1#slide-30 a #slide-36 · Sutton & Barto, §16.5 (caso de estudio, sin pseudocódigo) · Mnih et al., Nature 518, 529-533 (2015) · el pseudocódigo completo está en Lucía, Tema5_2_Aproximacion#slide-18
Lo primero, para no perderse: DQN no es un algoritmo nuevo. Es Q-learning semi-gradiente con una red convolucional profunda como aproximador, más tres añadidos de ingeniería. La actualización base es la del bloque B14, con la red calculando \(\hat q\) y el gradiente por retropropagación:
\[ w_{t+1} = w_t + \alpha\big[R_{t+1} + \gamma\max_a \hat q(S_{t+1},a,w_t) - \hat q(S_t,A_t,w_t)\big]\nabla\hat q(S_t,A_t,w_t) \]
Y hay una razón concreta para que sea Q-learning y no SARSA: la repetición de experiencia exige un algoritmo off-policy. Al muestrear transiciones sueltas de un búfer, ya no se está siguiendo una trayectoria conectada con la política actual, y solo un método off-policy puede aprender de eso. Ser sin modelo y off-policy hacía de Q-learning la elección natural.
| Pieza | Qué problema resuelve |
|---|---|
| Repetición de experiencia: cada transición \((S_t,A_t,R_{t+1},S_{t+1})\) va a un búfer, y cada paso se hace un minilote de actualizaciones con transiciones muestreadas uniformemente de él | Tres cosas: eficiencia de datos (cada experiencia se reutiliza muchas veces), varianza (las actualizaciones sucesivas dejan de estar correlacionadas entre sí) y una fuente de inestabilidad (se rompe la dependencia de las experiencias sucesivas respecto de los pesos actuales) |
| Red objetivo: cada \(C\) actualizaciones se copian los pesos a una red duplicada, que se mantiene congelada durante las \(C\) siguientes y es la que produce el objetivo. Con \(\tilde q\) la salida de la red congelada, el objetivo es \(R_{t+1} + \gamma\max_a \tilde q(S_{t+1},a,w^-)\) | Que el objetivo dependa de los mismos parámetros que se están actualizando, que es el problema del bootstrapping con aproximación —el de B4 y B11— y lo que puede llevar a oscilaciones o divergencia |
| Recorte del error al intervalo \([-1,1]\), y señal de recompensa normalizada a \(+1\) / \(0\) / \(-1\) según si la puntuación del juego sube, se queda o baja | Que un solo \(\alpha\) funcione en 49 juegos con rangos de puntuación distintos, y que un error enorme no reviente la actualización |
#slide-31 atribuye a la repetición de experiencia los
dos beneficios —romper la correlación entre muestras y la correlación entre objetivo y
valor estimado— y no menciona la red objetivo. El libro las separa: la repetición arregla
la correlación entre muestras sucesivas y la eficiencia de datos; que el objetivo
dependa de \(w\) lo arregla la red objetivo. Son dos problemas y dos soluciones.
La red: tres capas convolucionales ocultas, después una capa oculta totalmente conectada, después la capa de salida. Las tres convolucionales producen 32 mapas de características de 20×20, 64 de 9×9 y 64 de 7×7, con rectificador \(\max(0,x)\) como activación; las 3.136 unidades de la tercera (64×7×7) se conectan a 512 unidades totalmente conectadas, y ésas a 18 unidades de salida, una por acción posible en un juego de Atari. La entrada son los cuatro últimos fotogramas preprocesados a 84×84 valores de luminancia, es decir 84×84×4: los fotogramas se apilan porque el estado completo de muchos juegos no es observable en una sola imagen, y apilar cuatro los hace más markovianos —que es exactamente la respuesta a la tercera pregunta de B5—.
Cada salida es el valor de acción estimado del par correspondiente; como el número de acciones válidas iba de 4 a 18 según el juego, no todas las salidas tenían función en todos los juegos. Ayuda pensar en la red como 18 redes separadas que comparten las primeras capas: la retropropagación de una actualización se aplica solo a la salida de la acción que se tomó.
DQN aprendió una política distinta para cada uno de 49 juegos de Atari 2600 —los pesos se reinicializaban en cada juego— pero con la misma entrada, la misma arquitectura y los mismos hiperparámetros en todos. Cada juego, 50 millones de fotogramas de interacción, unos 38 días de experiencia. Jugó mejor que el mejor sistema de RL anterior en todos menos 6, y mejor que el jugador humano profesional en 22; tomando como «nivel humano» el 75 % de la puntuación humana, alcanzó o superó ese nivel en 29 juegos. Y en la ablación —repetición de experiencia y red objetivo, con las cuatro combinaciones de estar o no estar, sobre 5 de los juegos— cada una de las dos por separado mejoró significativamente el rendimiento, y juntas lo mejoraron de forma espectacular.
#slide-35 tampoco están en §16.5: son la
figura 2 del artículo, donde el indicador estable es el valor de acción medio estimado
sobre un conjunto fijo de estados retenidos, no la puntuación media por episodio. Si se
citan, la fuente es Mnih et al. (2015).
DQN demostró que un solo agente puede aprender las características específicas de cada problema y alcanzar habilidad competitiva con la humana en un rango de tareas. No produjo un agente que destacara en todas a la vez —el aprendizaje era separado para cada juego—, y en algunos juegos se quedó muy por debajo del nivel humano: los más difíciles para DQN, como Montezuma's Revenge —donde aprendió a jugar más o menos como el jugador aleatorio—, exigen planificación profunda, que es algo para lo que DQN no está diseñado.
El ítem examinable, y de dónde viene cada mitad
4_Tema4_2#slide-16, #slide-17 (tema 4.3) · Sutton & Barto, capítulo 12 (fuera del alcance del tema 5)
Aviso práctico, porque esto sale en el examen final y está a caballo entre dos temas. El problema práctico del final pide, sobre un robot con tres acciones y aproximación lineal: cuántos pesos hacen falta y cómo se almacenan, las acciones que tomó el agente, \(\nabla_w \hat q(S,A,w)\) y \(\hat q(S,A,w)\) en un instante dado, las dimensiones y el almacenamiento de las trazas de elegibilidad, y los pesos y las trazas en el paso siguiente. La construcción de \(x(s,a)\) es de este tema —B13 y B14—; las trazas con aproximación son del tema 4.3, y están resueltas en B14b, con el ejemplo numérico completo.
Los apartados, y dónde está cada respuesta. Cuántos pesos y cómo se almacenan: B13 y B14, y resuelto con \(d=18\) en B14b. Qué acciones tomó el agente: se leen de la tabla de la observación, B14b. \(\nabla_w\hat q(S,A,w)\): es \(x(S,A)\), B6 y B14. \(\hat q(S,A,w)\): el producto escalar, con el número hecho en B14b. Dimensiones y almacenamiento de las trazas: B14b, y la respuesta es \(d\). Las trazas en el paso siguiente: la recurrencia de B14b, resuelta paso a paso.
Lo que no entra en esta página, y está publicado: el dilema frecuencia/recencia de las trazas, el retorno \(\lambda\), TD(λ) hacia adelante y la equivalencia entre las dos vistas. Todo eso es la segunda página del tema 4 y el capítulo 12 del libro. Aquí entra exactamente lo que el examen pide con aproximación, y nada más.
Qué queda para el tema 6
Sutton & Barto, §10.1 (final) y capítulo 13
El tema se cierra donde el libro pone el límite: con acciones continuas o conjuntos de acciones muy grandes, el \(\arg\max_a \hat q(s,a,w)\) deja de ser calculable y no hay solución cerrada. La salida es dejar de aproximar el valor y aproximar directamente la política, con su propio vector de parámetros —que es \(\theta\), el símbolo que este tema ha estado protegiendo—. Ése es el tema 6.
Ecuaciones clave del tema
| Ecuación | Qué dice | Dónde se usa |
|---|---|---|
| \(\overline{VE}(w) = \sum_s \mu(s)[v_\pi(s)-\hat v(s,w)]^2\) | El error que se minimiza, ponderado por cuánto importa cada estado | B3, módulos 1 y 3 |
| \(\mu(s) = \eta(s)/\sum_{s'}\eta(s')\) | Cuánto importa un estado = la fracción del tiempo que se pasa en él | B3, módulo 1 |
| \(w_{t+1} = w_t + \alpha[U_t - \hat v(S_t,w_t)]\nabla\hat v(S_t,w_t)\) | La regla única del tema: un objetivo, un error, un gradiente | B4, todos los módulos |
| \(\hat v(s,w) = w^\top x(s)\), \(\nabla\hat v(s,w) = x(s)\) | En el caso lineal el gradiente es el vector de características | B6, módulos 2 y 3 |
| \(x(s)=e_s \Rightarrow w_s \leftarrow w_s + \alpha[U_t-w_s]\) | El caso tabular es aproximación lineal con one-hot | B7, módulo 2 |
| \(\alpha = 1/(\tau m)\) | Con \(m\) mosaicados hay \(m\) características activas: \(\alpha\) se divide por \(m\) | B8, módulos 2 y 5 |
| \(w_{TD} = A^{-1}b\) | TD(0) lineal converge a un punto fijo que no es el óptimo global | B10, módulo 3 |
| \(\overline{VE}(w_{TD}) \le \frac{1}{1-\gamma}\min_w\overline{VE}(w)\) | Cuánto peor puede ser TD que MC, asintóticamente | B10, módulo 3 |
| \(w_{t+1} = (1+\alpha(2\gamma-1))w_t\) | Off-policy, los pesos pueden crecer geométricamente para cualquier \(\alpha>0\) | B11, módulo 4 |
| \(\hat q(s,a,w)=w^\top x(s,a)\), y \(\max_a\) en lugar de \(\hat q(S',A',w)\) | Control: una característica por par estado-acción; el \(\max\) es lo que hace Q-learning off-policy | B13, B14, módulo 5 |
| \(z_t = \gamma\lambda z_{t-1} + x(S_t,A_t)\), \(w \leftarrow w + \alpha\delta_t z_t\) | La traza lleva un número por peso: dimensión \(d\), no \(|\mathcal S|\times|\mathcal A|\) | B14b, y el control de traza del módulo 5 |
Errores frecuentes
| Lo que se suele decir | Lo que pasa de verdad |
|---|---|
| «Con más pesos acabaré acertando en todos los estados» | Con aproximación de verdad no es posible acertar en todos: hacer más preciso un estado hace inevitablemente menos precisos otros. Por eso hace falta \(\mu\) (§9.2). Compruébalo en el módulo 1 |
| «La actualización de TD es descenso del gradiente del error TD» | No lo es. Tiene en cuenta el efecto de \(w\) sobre la estimación pero ignora su efecto sobre el objetivo: incluye solo una parte del gradiente. De ahí el nombre semi-gradiente (§9.3) |
| «TD(0) lineal converge al mismo sitio que MC, solo más despacio» | Converge al punto fijo TD, que no es el óptimo global; el error puede ser hasta \(1/(1-\gamma)\) veces el mínimo (§9.4). Mira las dos líneas horizontales del módulo 3 |
| «Un mosaicado ya es tile coding» | Con un solo mosaicado no hay codificación gruesa: hay agregación de estados (§9.5.4). Ponlo a \(m=1\) en el módulo 2 |
| «Campos receptivos anchos ⟹ no puedo aproximar bien» | La anchura controla la generalización inicial; la precisión final la controla más el número total de características (§9.5.3) |
| «Si bajo \(\alpha\) lo suficiente, dejará de divergir» | No. La inestabilidad ocurre para cualquier \(\alpha>0\), por pequeño que sea; \(\alpha\) cambia la velocidad, no el destino (§11.2). Es el control secundario del módulo 4 |
| «Con lotes o mínimos cuadrados se arregla la divergencia» | No. Aun tomando en cada paso el \(w\) que minimiza \(\overline{VE}\) exactamente, la sucesión diverge (Example 11.1). Y LSTD es \(O(d^2)\), que es la razón por la que el libro lo descarta como solución general |
| «La traza de elegibilidad tiene una casilla por par estado-acción» | No. Con aproximación, \(z_t\) vive en el espacio de los pesos: dimensión \(d\). Es el apartado del examen que más falla, y el ejemplo resuelto de B14b lo enseña con \(d=18\) |
Qué hay que llevarse
- Con \(d\) pesos y \(|\mathcal S|\) estados no se puede acertar en todos: el módulo 1 lo enseña con 1000 estados y 10 pesos, y el valor de cada grupo resulta ser la media de los valores verdaderos ponderada por \(\mu\), no la media sin más.
- El caso tabular es aproximación lineal con \(x(s)\) one-hot, y ahí \(\min_w\overline{VE}=0\): en el módulo 2, con un grupo por estado, el error baja exactamente a cero.
- Con \(m\) mosaicados hay exactamente \(m\) características activas para cualquier estado, y por eso \(\alpha\) se divide por \(m\): con \(\alpha=1/m\) el estado entrenado alcanza el objetivo en un solo paso.
- Monte Carlo y TD(0) no convergen al mismo sitio: en el módulo 3 las dos asíntotas se calculan exactas y se dibujan, y la de TD queda por encima.
- Los pesos pueden divergir, y no es culpa de \(\alpha\): en el módulo 4, con \(\gamma>0{,}5\) el factor de crecimiento pasa de 1 para cualquier \(\alpha>0\), y mover \(\alpha\) solo cambia la pendiente.
- La inestabilidad necesita los tres inductores a la vez; con dos, no. En el módulo 6 se apaga uno cualquiera y la casilla cambia de veredicto.
- En control, la única línea que separa SARSA de Q-learning es el objetivo (\(\hat q(S',A',w)\) frente a \(\max_a\hat q(S',a,w)\)), y eso es lo que le añade el tercer inductor: en el módulo 5 se conmutan las dos sobre el mismo Mountain Car y la misma semilla.
- La traza de elegibilidad con aproximación tiene la dimensión de \(w\), no la de la tabla: en el ejemplo resuelto de B14b son 18 números para tres acciones y seis variables, y en el módulo 5 son 1944, los mismos que pesos. Y con \(\lambda = 0\) el algoritmo es exactamente el de un paso.
Glosario de notación del tema
| Símbolo | Significado | Nota |
|---|---|---|
| \(w\) | vector de pesos de la aproximación de valor | Redonda, nunca negrita, como fija notacion.md. La baraja mezcla \(w\) y \(\mathbf w\) sin criterio: redonda en #slide-4,7,8,10,13, negrita en #slide-5,14,18,19,27,28,29 |
| \(d\) | dimensión de \(w\): número de pesos | El libro y las diapositivas de Lucía usan \(d\); Álvaro escribe \(n\) en #slide-7 y \(N\) en #slide-29. Aquí siempre \(d\) |
| \(x(s)\), \(x(s,a)\) | vector de características del estado / del par estado-acción | notacion.md. \(x(s,a)\) no se ve nunca en la baraja de Álvaro: está tapado en #slide-19. Sí se proyecta en Lucía, Tema5_2_Aproximacion#slide-5 |
| \(x_i(s)\) | componente \(i\)-ésima de \(x(s)\) | La suma se indexa con \(i\); #slide-10 la indexa con \(j\) |
| \(\hat v(s,w)\), \(\hat q(s,a,w)\) | valor de estado / de acción aproximado | notacion.md. \(\hat v(\text{terminal},w)=0\) siempre |
| \(v_\pi\), \(q_\pi\), \(v_*\), \(q_*\) | valores verdaderos | Sin sombrero = verdadero; con sombrero = aproximado. No se mezclan |
| \(U_t\) | objetivo genérico de la actualización | De Lucía (Tema5_1_Aproximacion#slide-14) y del libro. Álvaro no lo tiene; hace falta para escribir MC y TD con una sola fórmula |
| \(\mu(s)\) | distribución de estados on-policy | De Lucía (Tema5_1_Aproximacion#slide-7) y del libro (9.2)-(9.3). Álvaro nunca define el objetivo ponderado |
| \(\eta(s)\) | número esperado de visitas a \(s\) por episodio | Solo aparece en el cálculo de \(\mu\), (9.2) |
| \(\overline{VE}(w)\) | error cuadrático medio de valor, ponderado por \(\mu\) | En los ejes de las gráficas va \(\sqrt{\overline{VE}}\), como en el libro. Álvaro escribe \(J(w)\), que es lo mismo si la esperanza se toma bajo \(\mu\) |
| \(w^*\) | pesos que minimizan \(\overline{VE}\) (óptimo global) | En el caso lineal es único salvo degeneración |
| \(A\), \(b\), \(w_{TD}\) | matriz, vector y punto fijo de TD(0) lineal, (9.11)-(9.12) | No están en ninguna de las dos barajas |
| \(m\) | número de mosaicados (tilings) | Símbolo nuevo de esta página. El libro lo evita y escribe «number of tilings (8)» en palabras, porque \(n\) ya son los pasos de los métodos de \(n\) pasos del tema 4 |
| \(\ell\) | ancho de un mosaico (tile) | Símbolo nuevo de esta página. El libro escribe «if \(w\) denotes the tile width», que choca con el vector de pesos en la misma sección |
| \(\tau\) | número de experiencias con el mismo \(x\) en las que se quiere aprender, (9.19) | En el libro \(\tau\) también es el instante que se actualiza en los métodos de \(n\) pasos, y el periodo de la base de Fourier: tres usos distintos |
| \(p\), \(\dot p\) | posición y velocidad del coche de Mountain Car | El libro escribe \(x_t\) y \(\dot x_t\) (p. 267), que choca con \(x_t\) = abreviatura de \(x(S_t)\) (p. 21). Aquí se renombra |
| \(w^-\) | pesos congelados de la red objetivo de DQN | El artículo y #slide-34 escriben \(\theta\) y \(\theta^-\); en este curso \(\theta\) son los parámetros de la política (tema 6), así que se traduce a \(w\) y \(w^-\) |
| \(z_t\) | vector de trazas de elegibilidad en el instante \(t\) | Tiene la dimensión de \(w\), es decir \(d\), y no \(|\mathcal S|\times|\mathcal A|\). Es materia del tema 4.3 y del capítulo 12; entra en esta página por el ítem examinable (B14b). notacion.md no lo recoge: la redacción propuesta está en §0.2 del guion |
| \(\lambda\) | parámetro de las trazas de elegibilidad | Ya está en notacion.md («parámetro de TD(λ) y trazas de elegibilidad»). En esta página \(\lambda = 0\) por omisión, y \(\lambda = 0\) es exactamente el algoritmo de un paso |
| \(\theta\) | reservado: parámetros de la política (tema 6) | No se usa en esta página. La figura de Baird de #slide-15 lo usa para los pesos, y aquí se reescribe con \(w\) |