Inteligencia Artificial “Aprendizaje por refuerzo” Ing. Sup. en Informática, 4º Curso académico: 2011/2012 Profesores: Ramón Hermoso y Matteo Vasirani Aprendizaje Resumen: 3. Aprendizaje automático 3.1 Introducción al aprendizaje automático 3.2 Árboles de decisión 3.3 Redes neuronales 3.4 Algoritmos genéticos 3.5 Aprendizaje por refuerzo Aprendizaje por refuerzo • Problema: – ¿Cómo puede un agente autónomo, que percibe su entorno y actúa en ello, aprender a seleccionar las acciones óptimas que hay que ejecutar en cada estado para alcanzar sus objetivos? – Ejemplo 1: un robot que aprende a navegar en su entorno – El robot tiene sensores para observar las características de su entorno (estado) – El robot puede moverse, coger objetos, etc., modificando así el estado de su entorno (acciones) – El robot quiere aprender un mapeado estado → acción para alcanzar sus objetivos (política de control) – Ejemplo 2: un agente software que aprende a jugar al tres en raya – El agente percibe la configuración del tablero (estado) – El agente puede colocar sus fichas (acciones) – El agente quiere aprender, para cada configuración del tablero, donde colocar su próxima ficha (política de control) Aprendizaje por refuerzo • Suposición: – Los objetivos se pueden expresar a través de una función (reward) que asigna un valor numérico para cada acción que el agente ejecuta en cada estado – Valores numéricos positivos informan al agente que la acción que acaba de ejecutar ha sido buena, mientras que valores negativos informan al agente que la acción que acaba de ejecutar ha sido mala Aprendizaje por refuerzo El entorno transita en un nuevo estado y devuelve un valor que define cómo de buena fue la última acción El agente ejecuta acciones en su entorno El agente utiliza esta información para aprender la política de control, que determina la siguiente acción a ejecutar Aprendizaje por refuerzo s0 a0 s1 r0 a1 s2 a2 r1 r2 … Objetivo: aprender a seleccionar las acciones que maximizan r0 + γ · r1 + γ2 · r2 + … 0 ≤ γ <1 Aprendizaje por refuerzo • Proceso de Markov – El agente percibe un conjunto S de estados de su entorno y posee un conjunto A de acciones disponibles – En cada tiempo t, el agente percibe el estado actual st, selecciona la acción at y la ejecuta – El entorno proporciona el reward rt = r(st, at) y transita en el estado st+1 = δ(st, at). • Suposición: – Las funciones r y δ dependen solo del estado actual y del acción actual (proceso sin memoria) – En general, el agente no conoce la forma funcional de r y δ, sólo “descubre” posibles valores interactuando con el entorno – Las funciones r y δ pueden ser no deterministas. – Ej: P(δ(s, a) = s’) = 0.7 , P(δ(s, a) = s’’) = 0.2, P(δ(s, a) = s’’’) = 0.1 – Las funciones r y δ tienen que ser estacionarias. – Las probabilidades no varían a lo largo del aprendizaje Aprendizaje por refuerzo • Formalización del problema: – El agente quiere aprender la política π : S → A que produzca el mayor reward acumulado en el tiempo, a partir de cualquier estado st ∞ ir π(s ) rt+ γ rt+1 + γ2 rt+2 + … = Σ γ = V t+i t i=0 – V π( st ): reward acumulado que se consigue siguiendo la política π a partir de un estado inicial st (i.e., “utilidad” de st) – γ es una constante (0 ≤ γ < 1) que determina la importancia relativa de los reward inmediatos respecto a los rewards futuros. – Si γ = 0, el agente es “miope” y solo maximiza los rewards inmediatos – Si γ → 1 el agente es más precavido Aprendizaje por refuerzo • Similitudes respecto a aprendizaje supervisado: – Se trata de aproximar una función π:S→A donde S es el conjunto de estados y A es el conjunto de acciones • Diferencias respecto a aprendizaje supervisado: – El agente no dispone de información de entrenamiento tipo < s, π*(s) > , donde π*(s) es la política óptima que se quiere aprender, sino de información del tipo <s, a, r>, donde r es el reward inmediato que se recibe al ejecutar a en s – El entorno no dice al agente “en el estado s6 deberías haber ejecutado la acción a3 en vez que la acción a9”, sino le dice “en el estado s6 la ejecución de la acción a9 vale 34.5” – El problema de la exploración: la información disponible depende de las acciones ejecutadas, por lo tanto el agente tiene que explorar el espacio de acciones, balanceando la ejecución de acciones que se sabe ser buenas y de acciones que nunca se han probado Aprendizaje por refuerzo • Ejemplo: -1 -1 -1 -1 -1 Estados = cuadrados Transiciones = flechas (con reward) Estado arriba-derecha = objetivo -1 -1 -1 -1 -1 +100 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 Aprendizaje por refuerzo • Ejemplo: valores de V*(s) -1 -1 55 48.5 -1 γ = 0.9 62.2 -1 -1 -1 V*(3,1) -1 -1 -1 -1 55 70.2 62.2 -1 -1 +100 100 -1 -1 -1 -1 48.5 -1 -1 79.1 -1 42.6 -1 V*(3,2) -1 -1 -1 -1 -1 42.6 -1 37.3 -1 -1 V*(3,3) -1 -1 32.6 Podemos ver como V*(st) = max[ r(st,a) + γ· V*(δ(st+1,a)) ] aЄA 89 -1 -1 V*(3,1)=100+γ·0+…=100 V*(3,2)=-1+γ·100+…=89 V*(3,3)=-1+γ·(-1)+γ2·100+…=79.1 79.1 Aprendizaje por refuerzo • El objetivo del agente es aprender una función de evaluación numérica que implemente la política óptima. • Entonces, vamos a aprender V*(s), de manera que el agente siempre preferirá s1 a s2 si V*(s1) > V*(s2) • El problema es que el agente puede elegir entre acciones y no entre estados π* (s) = argmax[ r(s,a) + γ ·V*(δ(s,a)) ] = a *(s, a) = argmax Q a argmax [r(s,a) + γ · max(Q*(δ(s,a),a’)] a a’ • La acción óptima en el estado s es la acción a que maximiza la suma del reward inmediato r(s, a) con el reward acumulado del estado sucesor, V*(δ(s, a)) , descontado por el factor γ Aprendizaje por refuerzo • Aprender la función Q*(s, a) corresponde a aprender la política óptima π∗, sin necesidad de conocer r y δ • La política óptima consistirá en evaluar las posibles acciones disponibles en el estado s y seleccionar la acción a que maximiza Q* (s, a) • En un determinado estado s, el valor de Q* (s, a), para cada a, resume en un único valor toda la información necesaria para determinar el reward acumulado que el agente ganará en el futuro si selecciona el acción a. -1 10 st -1 43 -1 50 -1 41 -1 36 at = D Q(st, at) = 41 -1 30 st -1 44 -1 43 st+1 -1 50 -1 36 Q(st, at) = -1 + 0.9 · max(Q(st+1, at+1))= = -1+ 45 = 44 Sólo si δ(s,a) es determinista ! Aprendizaje por refuerzo • Ejemplo: valores de Q*(s,a) -1 42.6 -1 48.5 55 48.5 -1 -1 -1 48.5 48.5 55 -1 62.2 -1 -1 55 55 -1 42.6 42.6 -1 -1 37.3 -1 32.6 37.3 -1 -1 37.3 37.3 42.6 -1 32.6 37.3 -1 28.3 -1 79.1 -1 -1 70.2 89 -1 62.2 48.5 Q*(3,1,U)=100+γ·0=100 Q*(3,2,U)=-1+γ·100=89 Q*(3,2,L)=-1+γ·79.1=70.2 100 -1 70.2 62.2 -1 42.6 +100 100 70.2 62.2 -1 -1 -1 55 42.6 -1 48.5 62.2 -1 -1 55 55 48.5 γ = 0.9 79.1 -1 89 -1 70.2 79.1 -1 79.1 -1 32.6 32.6 79.1 Recordamos que Q*(st,a) = r(st,a) + γ· V*(δ(st+1,a)) Aprendizaje por refuerzo • Ejemplo: política óptima π∗(s) Aprendizaje por refuerzo: algoritmo general 01: for all (s, a) do 02: Q(s, a) ← inicializar // Q(s,a) es la estimación inicial de Q*(s,a) 03: end for 04: s ← observar estado entorno 05: a ← seleccionar acción // Política de selección de acciones 06: while s != estado terminal do 07: ejecutar a 08: r ← reward 09: s’ ← nuevo estado 10: a’ ← seleccionar siguiente acción 11: Q(s, a) ← actualizar // Varias maneras de actualizar Q(s, a) 12: s ← s’ 13: a ← a’ 14: end while Q-learning para entornos deterministas 01: for all (s, a) do 02: Q(s, a) ← inicializar // Q(s,a) es la estimación inicial de Q*(s,a) 03: end for 04: s ← observar estado entorno 05: a ← seleccionar acción // Política de selección de acciones 06: while s != estado terminal do 07: ejecutar a 08: r ← reward 09: s’ ← nuevo estado 10: a’ ← seleccionar siguiente acción 11: Q(s, a) ← r + γ · max Q(s’, b) b 12: s ← s’ 13: a ← a’ 14: end while Aprendizaje por refuerzo: Q-learning • ¿Que pasa si el entorno no es determinista? • No puedo actualizar Q(s,a) con r + max(Q(s’,a’)), por que sería como confiar que ejecutando la acción a en el estado s siempre se transita en el estado s’ • Hay que actualizar Q(s,a) con una parte de esta información nueva que acabo de descubrir Q-learning para entornos no deterministas 01: for all (s, a) do 02: Q(s, a) ← inicializar // Q(s,a) es la estimación inicial de Q*(s,a) 03: end for 04: s ← observar estado entorno 05: a ← seleccionar acción // Política de selección de acciones 06: while s != estado terminal do 07: ejecutar a 08: r ← reward 09: s’ ← nuevo estado 10: a’ ← seleccionar siguiente acción 11: Q(s, a) ← Q(s, a) + α · [r + γ · max Q(s’, b) – Q(s,a)] b 12: s ← s’ // 0<α <1: learning step 13: a ← a’ 14: end while Aprendizaje por refuerzo: Q-learning • La formula Q(s, a) ← Q(s, a) + α · [ r + γ · max Q(s’, b) - Q(s, a) ] b estimación actualizada vieja estimación nueva informaciónvieja estimación es muy recurrente en el aprendizaje por refuerzo • α representa la porción de la diferencia entre la nueva información y la vieja estimación que se añade a la vieja estimación Aprendizaje por refuerzo: Q-learning • Q-learning garantiza la convergencia de Q(s, a) a Q*(s, a) si • El entorno se puede modelar como un MDP • En cada actualización i de Q(s,a) el learning step α es tal que ∞ ∞ ∑ αi = ∞ y ∑ αi2 < ∞ i=0 i=0 • Ejemplo: α = 1/n(s,a), donde n(s,a) es el número de veces que se ha actualizado el valor Q(s,a) • Cada pareja (s, a) es visitada un número infinito de veces • El entorno es estacionario (es decir, la probabilidad de transitar de s a s’ ejecutando la acción a no varía en el tiempo) Aprendizaje por refuerzo: Q-learning • El agente necesita una política para seleccionar las acciones a ejecutar en un determinado estado s • Política greedy 1 si a=argmax Q(s, b) 0 en caso contrario P(s, a) = b • Hay riesgo de explotar demasiado acciones buenas, descubiertas al principio del aprendizaje, y no considerar acciones potencialmente mejores Aprendizaje por refuerzo: Q-learning • Política ε-greedy 1−ε P(s, a) = si a=argmax Q(s, b) b ε/(|Α|−1) en caso contrario • Explora más que una política greedy • Si Q(s, a1) >> Q(s, a2), las acciones a1 y a2 tienen la misma probabilidad de ser seleccionadas. Aprendizaje por refuerzo: Q-learning • Política soft-max P(s, a) = eQ(s, a)/T ∑eQ(s, b)/T bЄA • El parámetro Τ (temperatura) determina el grado de exploración • Si Τ → ∞, todas las acciones son equiprobables • Si Τ → 0, la política soft-max se convierte en la política greedy • Generalmente se reduce Τ con el tiempo, para garantizar la convergencia • No siempre es fácil definir Τ, porque depende del orden de magnitud de Q(s, a) Aprendizaje por refuerzo: Q-learning • Q(s, a) se puede inicializar de manera pesimista (todo a 0) o de manera optimista, es decir, con valores mayores a los rewards esperados • La inicialización optimista favorece la exploración (¿porque?) -1 10 st -1 10 -1 10 -1 10 -1 10 -1 10 at = D Q(st, at) = 10 -1 10 st -1 8 -1 10 -1 10 st+1 -1 10 -1 10 Q(st, at) = -1 + 0.9 · max(Q(st+1, at+1))= = -1+ 9 = 8 SARSA para entornos no deterministas 01: for all (s, a) do 02: Q(s, a) ← inicializar // Q(s,a) es la estimación inicial de Q*(s,a) 03: end for 04: s ← observar estado entorno 05: a ← seleccionar acción // Política de selección de acciones 06: while s != estado terminal do 07: ejecutar a 08: r ← reward 09: s’ ← nuevo estado 10: a’ ← seleccionar siguiente acción 11: Q(s, a) ← Q(s, a) + α · [r + γ · Q(s’, a’) – Q(s,a)] 12: s ← s’ // 0<α <1: learning step 13: a ← a’ 14: end while Aprendizaje por refuerzo: SARSA • La actualización de Q(s, a) depende de la quíntupla <s, a, r, s’, a’>, que da origen al nombre SARSA • SARSA es un algoritmo on-policy, porque sigue y aprende la política de selección de acciones (que se basa en los valores Q(s, a) ) al mismo tiempo • El valor Q(s, a) se actualiza usando el valor Q(s’, a’) de la acción a’ que el agente ejecutará en la siguiente iteración. • Q-learning es un algoritmo off-policy, porque aprende la política de selección de acciones independientemente de las acciones que el agente ejecuta • El valor Q(s, a) se actualiza usando el valor max Q(s’, b), aunque el b agente puede que ejecute una acción diferente de max Q(s’, b) en la b siguiente iteración. Q-learning vs SARSA Camino aprendido por SARSA Camino aprendido por Q-learning Q-learning vs SARSA Conclusión • El aprendizaje puede ocurrir tanto de manera online como de manera offline. A ser posible, aprender la política óptima de manera offline y aplicarla en el problema real http://heli.stanford.edu/ Conclusión • Uno de los mejores resultados: TD-Gammon [Tesauro 1995] • Aprender a jugar al Backgammon • Rewards: • +100 si la acción que se ejecuta gana la partida • -100 si la acción que se ejecuta pierde la partida • 0 para todas las otras acciones • Proceso de aprendizaje: 1.5 millones de partidas jugadas contra sí mismo (!!!) Conclusión • Un algoritmo de aprendizaje por refuerzo, en su versión más simple, tiene que almacenar (por ejemplo en una tabla) un valor Q(s,a) para cada pareja estado-acción • El ajedrez tiene 1043 estados !!!!! • Representación compacta de los estados (p.e., red neuronal) • Problemas con estados parcialmente observables • Extensiones para espacios de estados y acciones continuos • Aprender también la función de transición δ: SxA → S (aprender el modelo del entorno) • Reutilizar la función Q(s,a), que se ha aprendido para un determinado problema, para otro problema similar