Apuntes / Aprendizaje Reforzado / Apunte 4 de 9

Read in English

Q-learning

Cómo un agente aprende los valores de la mejor conducta a partir de su propia experiencia, paso a paso, mientras sigue probando otras acciones.

El apunte anterior terminó con Sarsa en el acantilado. Sus valores cuentan lo que cuesta explorar, caídas incluidas, así que se asienta en la ruta una fila más arriba, de 9 movimientos: la mejor ruta para un agente que sigue explorando. Cuando deja de explorar, el borde es dos movimientos más corto y nunca cae.

acantilado una fila más arriba: 9 movimientos por el borde: 7 movimientos A B C D E F 4 3 2 1 inicio meta
La ruta más corta, por el borde, y la ruta de Sarsa, una fila más arriba.

Q-learning aprende los valores de la mejor ruta mientras su agente sigue explorando. Este apunte muestra cómo, y lo que eso cuesta mientras aprende. Luego vienen Expected Sarsa, que queda entre los dos; por qué el máximo en la regla de Q-learning es demasiado optimista, y cómo lo corrigen dos tablas; y un atajo para cuando se conoce el efecto inmediato de un movimiento.

En esta página, las rutas se dibujan con tinta azul, y el objetivo de una actualización, el valor hacia el que se mueve una estimación, con tinta roja.

1Los valores de la mejor conducta

Lo mejor que puede lograr una política da los valores de acción óptimos:

q*(s, a) = maxπ qπ(s, a)

Conocer q* basta para actuar bien: en cada estado, toma la acción de mayor valor. En el acantilado, con γ = 1, q* cuenta movimientos. Desde A2, la celda sobre el inicio, moverse a la derecha deja 6 movimientos hasta la meta por el borde, así que q*(A2, derecha) = −6, y subir cuesta dos más, q*(A2, arriba) = −8. Desde B2, un paso hacia abajo, al acantilado, cuesta 100, y desde el inicio el mejor viaje sigue costando 7: q*(B2, abajo) = −107.

Los valores óptimos están ligados entre sí, a un paso de distancia, por la ecuación de optimalidad de Bellman. El valor de una acción es la recompensa que trae más el valor descontado de actuar lo mejor posible desde el estado al que lleva:

q*(s, a) = E[Rt+1 + γ maxa′ q*(St+1, a′) | St = s, At = a]

Moverse a la derecha desde A2 lleva a B2, cuyos movimientos arriba, derecha, abajo e izquierda valen −7, −5, −107 y −7. Así, q*(A2, derecha) = −1 + max(−7, −5, −107, −7) = −6.

El agente no conoce de antemano las recompensas ni los estados siguientes, así que no puede resolver esta ecuación. Como Sarsa, lleva una estimación Q(s, a) para cada par y, después de cada paso, mueve la estimación del par que acaba de probar una fracción α del camino hacia un objetivo. Los métodos de esta página solo se diferencian en su objetivo.

2La actualización de Q-learning

Q(St, At) ← Q(St, At) + α[Rt+1 + γ maxa Q(St+1, a) − Q(St, At)]

Compárala con la de Sarsa. El objetivo de Sarsa, Rt+1 + γQ(St+1, At+1), usa el valor de la acción que el agente toma después. El objetivo de Q-learning usa la mejor acción en el estado siguiente, haga lo que haga el agente ahí.

¿Por qué este objetivo? Es el interior de la ecuación de optimalidad de Bellman, con sus dos incógnitas reemplazadas por lo que el agente tiene:

  • la esperanza sobre recompensas y estados siguientes pasa a ser la recompensa y el estado siguiente que acaba de observar;
  • q* pasa a ser la tabla actual Q.

A lo largo de muchos pasos, el azar de cada recompensa y cada estado siguiente se promedia, como un promedio muestral se acerca a una esperanza, mientras la tabla misma mejora.

Un ejemplo con números, con α = 0.5. A mitad del aprendizaje, la tabla tiene Q(A2, derecha) = −8, y en B2 arriba −7, derecha −5, abajo −60 e izquierda −7. El agente se mueve a la derecha de A2 a B2 y recibe −1. El objetivo es −1 + max(−7, −5, −60, −7) = −6, y la estimación recorre la mitad del camino hacia él:

Q(A2, derecha) ← −8 + 0.5(−6 − (−8)) = −7

El objetivo es el mismo haga lo que haga el agente después en B2, aunque su siguiente movimiento sea un paso al azar hacia abajo, al acantilado.

El algoritmo

El ciclo es el de Sarsa, con un cambio: el objetivo no usa la acción siguiente, así que el agente no tiene que elegirla antes de actualizar. Elige cada acción al comienzo de su paso, con la tabla tal como está. Para un tamaño de paso α en (0, 1] y un ε > 0 pequeño:

  1. Parte con cualquier tabla Q(s, a), salvo Q(terminal, ·) = 0.
  2. Al comienzo de cada episodio, observa el primer estado S.
  3. Elige una acción A en S con una política derivada de Q, como ε-greedy.
  4. Toma A, y observa la recompensa R y el estado siguiente S′.
  5. Actualiza Q(S, A) ← Q(S, A) + α[R + γ maxa Q(S′, a) − Q(S, A)].
  6. Haz S ← S′, y vuelve al paso 3 hasta que S sea terminal.

La figura ejecuta Q-learning en el acantilado con los parámetros de la figura de Sarsa, α = 0.5, γ = 1 y ε = 0.1. Ahora el agente elige cada movimiento después de la última actualización, y el objetivo usa los mejores movimientos de la celda siguiente, con borde rojo, haga lo que haga ahí el agente.

Siguiente avanza, Atrás retrocede. Teclas: → y ←.

¿Cuándo funciona? Q converge a q* con probabilidad 1 siempre que:

  1. todos los pares se sigan actualizando, así que la política nunca debe dejar de probar todas las acciones;
  2. los tamaños de paso se achiquen de la forma habitual: su suma crece sin límite mientras la suma de sus cuadrados se mantiene finita.

La primera condición es lo mínimo que puede pedir cualquier método, porque el valor de una acción que nunca se prueba no se puede aprender.

3Aprender sobre una política mientras se sigue otra

El agente se comporta de forma ε-greedy, pero su objetivo usa maxa Q(St+1, a), el valor de la acción greedy en el estado siguiente, sin importar qué acción tome realmente ahí. Así, Q-learning aprende los valores de la política greedy, mientras su experiencia viene de la ε-greedy.

Política objetivo: la política sobre la que se aprende. Política de comportamiento: la que produce la conducta. Cuando las dos difieren, el método es off-policy.

La política de comportamiento igual importa en algo: decide qué pares se visitan, y así cuáles se actualizan.

Sarsa es on-policy: su objetivo usa la acción que toma después, así que cuando esa acción es un movimiento de exploración, el objetivo incluye lo que cuesta explorar. Sarsa aprende qπ de la política ε-greedy que sigue, y Q-learning aprende q*. Un diagrama de backup muestra la diferencia, en lo que mira cada actualización.

St, At St+1 At+1 Sarsa Q-learning Expected Sarsa
Arriba, el par que se actualiza. El círculo es el estado siguiente, al que se llega con la recompensa Rt+1. Abajo, en rojo, lo que usa el objetivo: la acción que se toma después (Sarsa), la mejor de todas las acciones siguientes (Q-learning; el arco marca un máximo), o todas, ponderadas por su probabilidad (Expected Sarsa, sección 4).

En el acantilado, la diferencia decide la ruta. Deja que ambos métodos aprendan el tiempo suficiente, con ε = 0.1 y tamaños de paso que se achican. Sarsa se asienta una fila más arriba, como en el apunte anterior. Los valores de Q-learning suponen el movimiento greedy desde el paso siguiente en adelante, así que se queda en el borde, y mientras sigue explorando, a veces se cae.

En el acantilado, ε = 0.1Q-learningSarsa
Q(A2, derecha), por el borde−6−12.01
Q(A2, arriba), una fila más arriba−8−9.39
Ruta de la política greedyel borde, 7 movimientosuna fila más arriba, 9 movimientos
Retorno promedio por episodio mientras explora−21.77−13.36

La tabla de Q-learning describe la mejor política, que vale −7 por viaje una vez que deja de explorar, pero a Sarsa le va mejor mientras aprende. La brecha depende de ε:

  • bajo ε ≈ 0.02, un movimiento al azar hacia abajo es lo bastante raro como para que Sarsa también se quede en el borde;
  • sobre ε ≈ 0.26, Sarsa sube a la fila de arriba;
  • si ε se achica hacia 0 con el tiempo, ambos terminan con la política óptima.

Con una conducta puramente greedy, ε = 0, los dos métodos casi coinciden: ambos actúan de forma greedy, y sus objetivos son iguales, porque la acción que Sarsa toma después es la greedy. La única diferencia es el momento. Sarsa elige su acción siguiente antes de actualizar la tabla, y Q-learning después, así que cuando el estado siguiente es el mismo estado, la actualización puede cambiar qué acción toma luego Q-learning. En la figura de Sarsa, elegir primero le costó al agente una segunda caída desde el inicio.

Muchos métodos off-policy tienen que corregir la diferencia entre las dos políticas. Q-learning de un paso no necesita esa corrección: dado el par que actualiza, la recompensa y el estado siguiente no dependen de ninguna de las dos políticas, y el objetivo usa un máximo en vez de la acción que la política de comportamiento toma después.

4Expected Sarsa

Q(St, At) ← Q(St, At) + α[Rt+1 + γ Σa π(a|St+1) Q(St+1, a) − Q(St, At)]

Donde el objetivo de Sarsa usa la acción siguiente que la política elige y el de Q-learning la mejor, el objetivo de Expected Sarsa promedia los valores de todas las acciones siguientes, cada uno ponderado por la probabilidad de que π la tome. Este promedio, V(St+1), es el valor del estado siguiente que la tabla implica bajo π. Es también lo que vale en promedio el objetivo de Sarsa, así que Expected Sarsa se mueve cada vez como Sarsa se mueve en promedio, sin el azar que agrega la elección de At+1. El precio es una suma sobre las acciones en cada paso.

La tabla toma el paso de A2 a B2 de la sección 2, ahora con los valores de B2 en q* y ε = 0.1; las filas de Sarsa dan la probabilidad de cada caso. La última columna parte de Q(A2, derecha) = −6, con α = 0.5:

MétodoObjetivoValor nuevo
Q-learning−1 + max(−7, −5, −107, −7) = −6−6
Sarsa, si luego va a la derecha (0.925)−1 + (−5) = −6−6
Sarsa, si luego va arriba o a la izquierda (0.025 cada uno)−1 + (−7) = −8−7
Sarsa, si luego da un paso hacia abajo, al acantilado (0.025)−1 + (−107) = −108−57
Expected Sarsa−1 + 0.925(−5) + 0.05(−7) + 0.025(−107) = −8.65≈ −7.33

Los objetivos posibles de Sarsa promedian 0.925(−6) + 0.05(−8) + 0.025(−108) = −8.65, el objetivo de Expected Sarsa. Pero el valor nuevo de Sarsa depende del movimiento que toque a continuación, mientras que el de Expected Sarsa es siempre el mismo. Con menos ruido en sus actualizaciones, Expected Sarsa tolera un tamaño de paso mayor. En el acantilado los movimientos mismos son seguros y todo el azar viene de la política, así que Expected Sarsa puede usar incluso α = 1 y reemplazar cada estimación por su objetivo, mientras que Sarsa necesita un α pequeño para promediar sus objetivos aleatorios.

Expected Sarsa también puede aprender off-policy, e incluye a Q-learning como caso particular:

  1. los pesos π pueden venir de una política objetivo distinta de la de comportamiento;
  2. si π es greedy, el promedio pone todo su peso en la mejor acción, y el objetivo es el de Q-learning.

5Sesgo de maximización y aprendizaje doble

El objetivo de Q-learning toma la mayor de varias estimaciones.

Sesgo de maximización: la mayor de varias estimaciones ruidosas tiende a ser demasiado grande, aunque cada una acierte en promedio.

Toma un estado con seis acciones que valen exactamente 0: cada una paga +1 o −1 con igual probabilidad. Estima cada acción con el promedio de tres pagos, de modo que una estimación es 1, 1/3, −1/3 o −1. Cada estimación acierta en promedio, pero la mayor de las seis es 1 con probabilidad 0.55, 1/3 con probabilidad 0.43, y queda bajo 0 menos del 2% de las veces. En promedio es +0.69.

1 0 −1 valor real la mayor: 1 Q2: −1/3
Una muestra de las seis estimaciones, todas de acciones que valen 0. El objetivo con una sola tabla toma la mayor, 1. Con dos tablas, la primera elige la misma acción, pero su valor se lee en la segunda: −1/3 aquí, y 0 en promedio.

Un objetivo de Q-learning que termina en un estado así recibe este optimismo, y los estados que llevan ahí parecen mejores de lo que son. El agente se ve atraído hacia estados cuyas acciones son inciertas, sin ninguna buena razón.

El sesgo viene de usar las mismas muestras dos veces: para elegir la acción que parece mejor, y para decir cuán buena es. El aprendizaje doble separa las dos tareas. Lleva dos estimaciones independientes, Q1 y Q2, cada una aprendida con su propia mitad de la experiencia:

  • una elige la acción, A* = argmaxa Q1(a);
  • la otra dice cuánto vale, Q2(A*).

Las muestras detrás de Q2 no participaron en la elección, así que E[Q2(A*)] = q(A*), sin sesgo. En el ejemplo, A* es la acción que por azar pareció mejor, pero su valor viene de tres pagos nuevos, que promedian 0.

Double Q-learning aplica esto a Q-learning. En cada paso, una moneda decide qué tabla aprende. Si sale cara,

Q1(St, At) ← Q1(St, At) + α[Rt+1 + γQ2(St+1, argmaxa Q1(St+1, a)) − Q1(St, At)]

y si sale sello, la misma actualización con Q1 y Q2 intercambiadas, de modo que aprende Q2. Las dos tablas cumplen papeles simétricos. La conducta puede usar ambas, por ejemplo ε-greedy con respecto a Q1 + Q2. El aprendizaje doble duplica la memoria, pero no el trabajo por paso, porque cada paso actualiza una sola tabla. La misma idea da versiones dobles de Sarsa y de Expected Sarsa.

6Afterstates

A veces el efecto inmediato de una acción se conoce, y solo lo que sigue es incierto. En un juego de tablero sabes qué posición deja tu jugada, pero no la respuesta de tu rival. Entonces conviene aprender los valores de los afterstates en vez de los valores de los pares estado–acción.

Afterstate: la situación justo después de que el agente actúa.

En el Nim, dos jugadores se turnan para sacar cualquier cantidad de palitos de una pila, y gana quien saca el último. Desde pilas de 3 y 2, sacar un palito de la primera pila deja pilas de 2 y 2. Desde pilas de 2 y 3, sacar uno de la segunda deja la misma posición.

3 y 2 2 y 3 2 y 2
Dos posiciones y jugadas distintas, un solo afterstate. El palito punteado es el que se saca.
Valores de acciónValores de afterstates
Números que guardados, uno por posición y jugadauno, por dejar pilas de 2 y 2
Aprendizajecada uno por su cuentacompartido por toda jugada que lleve ahí

Dejar pilas de 2 y 2 resulta ser ganador: saque lo que saque tu rival de una pila, tú sacas lo mismo de la otra, y te llevas el último palito.

Los métodos de aprendizaje no cambian; solo cambia de qué trata la tabla. Los afterstates también aparecen fuera de los juegos, cada vez que una acción se define por su efecto inmediato, como cargar un paquete en un camión determinado: el camión cargado se conoce, el tráfico de su ruta no.

7Resumen

Las ideas clave junto a sus equivalentes en NumPy. La tabla q se indexa por estado y acción, y g guarda un retorno o un objetivo, que es una estimación del retorno.

Retorno
Gt = Rt+1 + γGt+1
g = r + gamma * g_next
Acción greedy
argmaxa Q(s, a)
a = np.argmax(q[s])
Acción ε-greedy
al azar con probabilidad ε, greedy si no
a = np.argmax(q[s])
if rng.random() < eps:
    a = rng.integers(len(q[s]))
Actualizar hacia un objetivo
Q(S, A) ← Q(S, A) + α[objetivo − Q(S, A)]
q[s, a] += alpha * (g - q[s, a])
Objetivo de Q-learning
R + γ maxa Q(S′, a)
g = r + gamma * np.max(q[s_next])
Objetivo de Sarsa
R + γQ(S′, A′)
g = r + gamma * q[s_next, a_next]
Objetivo de Expected Sarsa
R + γV(S′), con V(s) = Σa π(a|s) Q(s, a)
v_bar = pi[s_next] @ q[s_next]
g = r + gamma * v_bar
Probabilidades ε-greedy
ε/|𝒜| cada una, más 1 − ε para la acción greedy
n = len(q[s])
pi_s = np.full(n, eps / n)
pi_s[np.argmax(q[s])] += 1 - eps
Fin de un episodio
Q(terminal, ·) = 0, así que el objetivo es R
g = r  # s_next es terminal
Objetivo de Double Q-learning
R + γQ2(S′, argmaxa Q1(S′, a))
a_star = np.argmax(q1[s_next])
g = r + gamma * q2[s_next, a_star]