Nuestro medio ambiente será como un tipo calabozo con forma de laberinto (el cuál será dinámico), constará de una entrada y dos tipos de agentes principales: buscador y guardián
El objetivo del buscador será evitar a los guardias el mayor tiempo posible y a la vez, donde los callejones sin salida influirán a veces si es atrapado o no.
En cuanto el agente buscador es atrapado por alguno de los guardianes, este regresa al inicio.
Actividad que aprende:
En este caso el agente aprenderá a moverse dentro del medio ambiente intentando no ser atrapado por los guardianes. Para esto se utiliza una red neuronal que se entrena.
Patrones de Entrada:
Los patrones de entrada en este caso, se generan mediante iteraciones.
Los patrones cuentan con los siguientes datos:
a) [0, 1] Un valor booleano de si hay o no centinelas en su rango de visión.
b) [1 ,2, 3, 4] El valor de la dirección tomada para el movimiento.
c) [0, 1] Un valor booleano que determina si encontró un callejón sin salida o no en su camino.
d) [0, 1] Una evaluación de si la acción fue buena o mala.
Se escogieron estos valores ya que son los más importantes en este ambiente para poder moverse en el medio y cumplir la meta que se quiere aprender.
Patrones de Salida:
La salida que se genera es un arreglo de 4 atributos cuyo valor es 0 o 1, de tal forma que el siguiente movimiento del buscador será decidido por el índice o “bandera” que este prendida en el patrón de salida.
Ejemplo de patrón de salida:
[0, 0, 1, 0] -> El cual indicaría que el movimiento deberá tomar un valor de 3 (“Muévete a la derecha”)
Red Neuronal:
En este caso, dado que lo que se quiere evaluar es algo complejo, se decidió utilizar una red neuronal multicapas utilizando un algoritmo de Backpropagation.
La red cuenta con 3 capas
• Entrada: Esta capa cuenta con 4 neuronas, de las cuales cada una toma uno de los atributos de los patrones de entrada.
• Secreta: Esta capa consta de 2 neuronas, se decidió de esta forma para facilitar un poco la implementación y reducir un poco los cálculos.
• Salida: Esta capa cuenta con 4 neuronas, para las cuales cada una sirve como bandera para elegir el siguiente movimiento, dependiendo de que neurona se active es el movimiento elegido.
En la red se utiliza un factor de aprendizaje de 0.3 ya que es un valor pequeño y un tanto “estándar”: ya que queremos que el aprendizaje sea preciso en cuanto a las salidas.
En este caso no se utilizo momento.
El número de iteraciones elegido para entrenar a la red fue de 1500 ya que al ser movimientos aleatorios al principio, es de interés que tenga una exploración del ambiente bastante grande para poder hacer la red neuronal más precisa
Ejemplos de corridas:

En la imagen se puede observar del lado izquierdo las entradas que va generando, y del lado derecho la salida que se debería dar, pero dado a que solo se está entrenando apenas la red, los valores de salida no son realmente acertados. Si se ven por ejemplo la primera línea:
Patrón de entrada: [0, 0, 4, 1]
Salida: [0, 0, 1, 0] Mientras que la salida esperada sería [0, 0, 0, 1]

Después de que ha terminado las iteraciones de entrenamiento podemos ver, que de acuerdo al patrón de entrada, ahora si nos envía la salida esperada:
Ejemplo de la primera línea:
Entrada: [0, 0, 4, 1]
Valor esperado: [0, 0, 0, 1]
Como se observa en la imagen, el valor obtenido es igual al esperado, por lo que la red aprendió efectivamente.
Conclusiones:
Las redes neuronales son bastante útiles para problemas como el presentado ya que sus cálculos y división en las salidas nos permite una evaluación y un aprendizaje más preciso asignando una dirección a cada salida. También es importante notar que la velocidad de los cálculos es importante, y en este caso es lo suficientemente rápida para un programa que se actualiza en tiempo real, lo que hace una red neuronal muy viable para este tipo de problemas.
La parte más difícil para este proyecto se podría considerar la codificación de entradas y salidas del medio ambiente, ya que todos los cálculos internos son automáticos del algoritmo.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.