lunes, 28 de febrero de 2011

Actividad Programación 2 Algoritmo LMS

Breve descripción del medio ambiente:

Nuestro medio ambiente es un patio de una escuela simulada, en donde nuestro agente principal será un niño de esa escuela. En ese ambiente se transmiten mensajes o chismes entre los alumnos. El problema es que estos chismes no siempre son transmitidos de manera fiel por lo que es necesario aprender a rastrearlos para saber quien ha dicho el chisme.

Descripción detallada de la actividad o acción que va a aprender el agente:
En esta actividad nuestro objetivo es que el agente, utilizando el algoritmo LMS, aprenda a rastrear el chisme que se ha propagado entre todos los alumnos. En primer lugar aparecen los niños en posición aleatoria, nuestro agente y finalmente hay uno solo que tiene un chisme. Ese niño chismoso comienza a caminar por el paisaje y conforme se va encontrando niños les transmite el chisme. Estos niños portadores del chisme, a su vez, lo transmiten a los niños que se encuentran en su camino, el problema es que el chisme ya ha sido modificado por cada uno de los transmisores. El objetivo de la primera etapa es que todos los niños posean información, ya sea falsa o verdadera, del chisme La siguiente etapa comienza con nuestro agente investigando sobre ese chisme que fue propagado, y es en esta etapa donde utilizamos el LMS.

Solución planteada al problema utilizando el Algoritmos LMS:

i. Selección de la experiencia de aprendizaje:
Las instancias del problema se generarán de manera aleatoria por la computadora.
ii. Selección de la función objetivo:
Es una función que recibe un estado en el que las variables a evaluar son el chisme, el rango de visión, la fuente del chisme, la posición de la misma (esto puede o no ser verdad) y el número de personas a las que les ha preguntado.
iii. Selección de la representación de la función objetivo:

La representación se dará en forma de un polinomio de la forma

V = W0 + W1X1 + W2X2 + W3X3 + W4X4 + W5X5

iv. Selección del algoritmo de aproximación – LMS para este caso:

Decidimos utilizar tres constantes de aprendizaje diferentes que afectarán a nuestro algoritmo.:

X1:El inverso de la distancia en X entre el agente y la fuente “inmediata” del chisme.
X2: El inverso de la distancia en Y entre el agente y la fuente “inmediata” del chisme.
X3: El número de personas en el rango de visión del agente y que no les ha preguntado.
X4: El número de personas a las que se les ha preguntado.
X5: El número de personas que se encuentran en su rango de visión y que están repetidas (ya les preguntó)

v. Los pesos comienzan en 1 y utilizamos los 4 correspondientes a w0, w1, w2, w3, w4 y w5.

2. Describir los patrones utilizados para el aprendizaje (al menos 3 ejemplos).

Para nuestro ambiente no se utilizan patrones ya que se genera de manera aleatoria la posición de cada niño y las decisiones que ellos toman para moverse también son generadas sin un orden específico. Sin embargo las corridas se inician con un chisme que por ahora se inicia en {1,1,1} pero que en un futuro podría generarse al azar.

Conclusiones:

Al estar programando nuestro proyecto notamos que lo más difícil para lograr un aprendizaje óptimo es crear una función objetivo adecuada. Esto se debe a que de ella dependen los pasos siguientes, y si está mal diseñada aunque el agente tenga una buena experiencia de entrenamiento no aprenderá con facilidad.
A demás, el valor que nos regresa la función determina qué tanto le dejamos aprender a nuestro agente; en este caso nuestra retroalimentación fue excesivamente negativa desviando el aprendizaje hasta llevarlo a pesos negativos, alejándolo de aprender algo.
Por esta razón es necesario tomar en consideración las variables para darle una pista de que el camino no era tan malo.

También aprendimos sobre la importancia que tienen los pesos en el algoritmo, ya que al irse modificando toman importancia las diferentes características a las que éstos modifican, y también es importante su correcta configuración inicial para que el algoritmo funcione más rápido.

En el video podemos observar diversas iteraciones del algoritmo, al principio se enfoca en preguntar, sin embargo conforme va avanzando el programa vemos que se desvía un poco de lo que queríamos que aprendiera ya que la retroalimentación de la función objetivo no era la adecuada.

No hay comentarios:

Publicar un comentario