martes, 15 de marzo de 2011

Actividad 3 –Q-Learning (Sarsa)/LMS

Diego García M. 1162205
Joaquín León M. 1162101
Enrique Peña A. 1162110

Instituto Tecnológico de Estudios Superiores Monterrey
Aprendizaje Automático

Actividad de programación 3 –Q-Learning (Sarsa)

a. Breve descripción del medio ambiente.
Es una pista de velocidad donde se simula una carrera de 100 metros. El agente puede controlar los movimientos del corredor de la cintura para abajo. Al coordinar de manera correcta los movimientos de los muslos y las pantorrillas se realiza un desplazamiento similar al de una persona mientras corre.
Ambiente desarrollado en C++ utilizando la librería de física Box2D.

b. Descripción detallada de la actividad o acción que va a aprender tu agente.
El agente va a aprender a correr sobre la pista. Al realizar los movimientos correctos que tiene a su disposición debe de lograr un movimiento similar a correr o al menos debe de aprender a desplazarse hacia adelante utilizando sus movimientos.

c. Solución planteada al problema utilizando el Algoritmos Q-Learning Sarsa. Describe con detalle cada elemento del planteamiento:

I. Selección de la experiencia de aprendizaje
Feedback: Indirecto, al realizar una acción, el agente recibe una recompensa con base en la distancia avanzada.
La selección de acciones la realiza el agente basándose en su tabla Q.
Todos los entrenamientos siguen la misma distribución que los ejemplos futuros.

II. Selección de las recompensas
Cada que el agente realiza una acción es recompensado inmediatamente con un número que representa la distancia que avanzó al realizar dicha acción.

III. Posibles acciones del agente en el medio
Mover sus muslos alternado con el hombro del otro lado del cuerpo.

Esperar.

IV. Estados posibles que puede sensar tu agente en el medio (descripción de los estados).
Nuestro agente no puede sensar muchas cosas de su ambiente más que la posición en la que se encuentra.
Los estados posibles se refieren más a las teclas que apretaría o no apretaría un usuario en el juego de QWOP. Esto es: Q apretada, W apretada, nada apretado.

V. Descripción de la estrategia de exploración/explotación para el aprendizaje.
La estrategia que usamos para balancear la exploración y la explotación del ambiente es una variable llamada temperatura (tomado del algoritmo “Simulated Annealing”). Ésta empieza con un valor alto lo cual hace poco probable que el algoritmo se vaya por la mejor opción. Conforme pasa el tiempo, la temperatura va bajando, obligando al algoritmo a elegir las mejores acciones.

VI. Ejemplo de tres estados distintos del medio ambiente, con las respectivas acciones que pueden ser realizadas desde dicho estado y las recompensas que se le otorgan al agente al tomar las acciones.
Estado 1: S (sleep) Posibles acciones: continuar en S, apretar Q, apretar W. La recompensa es igual a la cantidad avanzada por el agente al realizar la acción.
Estado 2: Q. Posibles acciones: continuar en Q, pasar a S, apretar W. La recompensa es igual a la cantidad avanzada por el agente al realizar la acción.
Estado 3: W. Posibles acciones: continuar en W, apretar Q, pasar a S. La recompensa es igual a la cantidad avanzada por el agente al realizar la acción.

VII. Explicar cuándo es que tu agente va aprendiendo y cuándo utiliza lo aprendido para tomar decisiones en el medio.
El agente empieza a aprender de una manera más eficaz en cuanto encuentra (random) una combinación de acciones que lo llevan a avanzar una distancia considerable. Esto hace que se de cuenta que esta combinación es favorable y la siga aplicando.
La diferencia entre Q-Learning y Sarsa es que en Q-Learning a la hora de actualizar la tabla se toma en cuenta el máximo valor de las posibles acciones del estado siguiente, sin tomar en cuenta la política que se está usando para escoger acciones. En Sarsa se usa la política para escoger la acción siguiente y esta misma acción es la que se toma en cuenta a la hora de actualizar el valor de la acción realizada actualmente en la tabla.

d. Conclusiones después de la programación.
En nuestro caso, la gran mayoría del tiempo lo invertimos en programar y adaptar el medio ambiente. Debido a que ninguno de nosotros estaba familiarizado con Box2D, nos costó tiempo y esfuerzo hacerlo. Una vez programado el medio ambiente procedimos a simular una elección de acciones para ver si se llevaban a cabo. La última parte fue implementar Q-Learning y Sarsa.

Nuestras conclusiones en cuanto a Q-Learning y Sarsa, además de lo ya planteado en el punto anterior es que, en el caso de QWOP, no hay tanta diferencia a la hora de comparar las corridas, al menos que se note. Es obvio que los valores de la tabla cambian de manera diferente. En Q-Learning, si tenemos algún valor grande en alguna posición, es bastante probable que los valores aledaños empiecen a crecer junto con este. En Sarsa, el crecimiento no es tan directo ya que no se escoge siempre el valor más alto, sino el que se escogió previamente de acuerdo a la estrategia. (La cual por cierto es algo similar a E-Greedy)


Actividad de programación 3 - LMS

a. Breve descripción del medio ambiente.
Es una pista de velocidad donde se simula una carrera de 100 metros. El agente puede controlar los movimientos del corredor de la cintura para abajo. Al coordinar de manera correcta los movimientos de los muslos y las pantorrillas se realiza un desplazamiento similar al de una persona mientras corre.
Ambiente desarrollado en C++ utilizando la librería de física Box2D.

b. Descripción detallada de la actividad o acción que va a aprender tu agente.
El agente va a aprender a correr sobre la pista. Al realizar los movimientos correctos que tiene a su disposición debe de lograr un movimiento similar a correr o al menos debe de aprender a desplazarse hacia adelante utilizando sus movimientos.

c. Solución planteada al problema utilizando el Algoritmo LMS. Describe con detalle cada elemento del planteamiento:

I. Selección de la experiencia de aprendizaje
Feedback: Indirecto, al realizar una acción, el agente recibe una recompensa con base en la distancia avanzada y la pendiente de su tronco. Todos los entrenamientos siguen la misma distribución que los ejemplos futuros.

II. Función objetivo
V : B -> |R

V(b) = 100000 si la distancia recorrida es 100

V(b) = 1 si se cayó

V(b) = n, donde n > 1 y <>

III. Selección de la representación de la función objetivo
Mover sus muslos alternado con el hombro del otro lado del cuerpo. Mover sus brazos y pantorrillas.

Esperar. V(b) = w0+(w1*x1)+(w2*x2)

Dónde x1 = la distancia recorrida

x2 = 10 si la pendiente es mayor que .7 y menor que 50

0 de lo contrario

IV. Selección del algoritmo de aproximación

i. Los valores iniciales de W1 y W2, pueden ser cuales quiera ya que el problema de que se llega a un estado final en el primer cálculo de estados, no causa un cambio.

d. Conclusiones después de la programación.
Nuestra implementación de LMS funciona en cuanto al logaritmo como tal, es decir, se hace la corrida, se termina el episodio, se actualizan los pesos y se repite otra vez. El problema es que esta corrida es (ridículamente) corta ya que el personaje es muy frágil y se cae muy fácilmente lo cual ocasiona un problema más o menos grave: desde la primera iteración de la corrida se llega a un estado final que es la caída. Esto ocasiona que se termine el episodio y se actualicen los pesos pero de tal manera que nunca aprende a avanzar.

En resumen, el algoritmo está bien hecho y “funciona” pero el problema en este caso es el ambiente que no lo deja evolucionar correctamente.



No hay comentarios:

Publicar un comentario