Breve descripción del medio ambiente.
El medio consiste en el interior de un cuerpo de un ser vivo en el que un virus debe aprender a reconocer células a partir de la observación de sus características. Existen tres zonas diferentes de clasificación de células, unas de ellas son comestibles o de tipo Food, otras son aquellas que pueden atacar al virus o Enemy, por último nos encontramos con las células objetivo o de tipo Target. El virus deberá aprender, después de una muestra de 15 células, a determinar el tipo de las células que irán apareciendo, actuar en consecuencia y así poder sobrevivir dentro del cuerpo del ser vivo.
Descripción detallada de la actividad o acción que va a aprender tu agente.
El virus debe aprender a reconocer las células que irá encontrando dentro del cuerpo, para esto se basa en sus características físicas, es decir, su color, su forma, la dirección en la que rota, la figura que tiene la célula en su interior y el color de esta figura interna. Como ya se mencionó en un principio, se cuenta con 15 células que formarán parte del entrenamiento, que el usuario puede acomodar en cualquiera de las tres categorías: Target, Enemy o Food. Es muy importante mencionar que dependiendo como el usuario haga esta clasificación, será la forma en que la neurona aprenderá a clasificar las diferentes células que irán apareciendo en el ambiente, ya que el usuario crea interactivamente el training set.
Solución planteada al problema utilizando Redes Neuronales. Describe con detalle cada elemento del planteamiento:
Cada célula tiene 5 propiedades: Forma exterior color exterior, forma y color interior y rotación. De cada una se tiene un arreglo de bits que indican el tipo de característica que representa a cada célula, que se codifica concatenando los 5 arreglos de bits en un arreglo más grande que los contiene a todos. Cada bit alimenta a un nodo diferente en la capa de entrada. Dependiendo de la clasificación del usuario, es la forma en la que se entrena la red.
Se utilizó la biblioteca PyBrain para la construcción de las redes neuronales.
i. Patrones de aprendizaje para alimentar a la red.
OuterShape: ["Simple","CircleStroke","CircleFill","Square","DoubleSquare"]
InnerShape: ["None","CircleStroke","CircleFill","SquareStroke","SquareFill"]
OuterColor: ["Red","Green","Blue"]
InnerColor: ["Red", "Green", "Blue", "Black"]
Rotation: ["Left", "Right"]
OuterShape= [0,0,0,0,1]
InnerShape= [0,0,0,0,1]
OuterColor= [0,1,0]
InnerColor= [1,0,0,0]
Rotation= [1,0]
Clasificación (elegida por el usuario): ["Target","Enemy","Food"]
Clasificación = [0,1,0]
---------------------------------------------------------------------------------
Patrón de aprendizaje: ([0,0,0,0,1,0,0,0,0,1,0,1,0,1,0,0,0,1,0] , [0,1,0])
---------------------------------------------------------------------------------
Se alimentarán tantos patrones como células iniciales existan en el medio ambiente, seleccionando el 25% de ellas para pruebas durante el entrenamiento.
ii. Codificación de la salida de la red.
La red devuelve un arreglo de 3 datos que representan la probabilidad de ser clasificado como cada uno de los posibles tipos: objetivo enemigo y comida.
Se elige el tipo que tenga el número más alto de los tres para clasificar.
Ejemplo, la salida:
[0.0032896,0.2387263,0.87382436]
Clasifica a la célula como "Comida" pues el elemento más alto es el tercero, que representa la posibilidad de ser "Comida".
iii. Tipo de red neuronal a ser utilizada.
La red neuronal está formada por 3 capas, la primera es una capa lineal, la segunda sigmoidal y la tercera lineal, de tal forma que existe una conexión completa de los nodos entre cada capa llevando de los 19 parámetros de entrada originales a las 3 salidas deseadas.
iv. Numero de capas (entrada, intermedias, salida) y número de neuronas en cada capa.
v. Parámetros de la red (tasa de aprendizaje, momento, iteraciones).
Se utilizó una tasa de aprendizaje de 0.3 y un momento de 0.1.
Se realizan iteraciones hasta que converge la red o hasta que se cumplan 1000 iteraciones.
Video
Conclusiones
Una de las características observadas a lo largo de la programación del problema fue la importancia que tiene el training set para la solución del mismo. En particular, las redes neuronales requieren de mucho entrenamiento, lo cual implica tener un training set muy grande y diverso. Si no existiera suficiente entrenamiento la red sería muy suceptible al ruido, por lo que funcionan mejor learning rates más bajos, de tal forma que aprenda detalles más finos del training set. La red neuronal, sin embargo, requiere mucho más tiempo de entrenamiento que otros algoritmos como el ID3, por lo que su implementación no sería adecuada para generarse en un ambiente que requiera de cambios en tiempo real.
Blog para documentar el trabajo de programación realizado en la clase de Aprendizaje Automático del Tec de Monterrey, Campus Estado de México. Enero-Mayo 2010.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.