martes, 20 de noviembre de 2012

[RNA] Reporte Final

Descripción del Proyecto


El proyecto a desarrollar en ésta materia consistio en crear una librería basada en redes neuronales que permita realizar predicciones de datos.

La entrada de datos era indistinta, poder ingresar información de diversos tipos, normalizada previamente, y obtener como salida un valor nuevo o pronóstico de acuerdo al análisis de la serie de tiempo de entrada.

Mas concretamente, el objetivo de la red neuronal es detectar patrones de delincuencia basandonos en los historiales de eventos pasados para así poder predecir el posible aumento o disminución de actividad delictiva en ciertas zonas. El objetivo adicional es realizar un análisis más profundo que nos permita predecir en cuáles zonas es mas probable que aumente la actividad delictiva y en cuales sea probable que disminuya.



Contribuciones al proyecto


Mis contribuciones al proyecto fueron siempre más orientadas a la programación de la red neuronal. Por lo que mis contribuciones consistieron en lo siguiente:
  • Programación del perceptrón
    • Se programo una neurona simple binaria
    • Actualización a neurona simple multidimensional
    • Implementación de capas
    • Red neuronal multicapa
    • Aprendizaje persistente simple

Arquitectura de la red


A base de un poco de investigación establecimos la arquitectura de nuestra red neurona. Tomamos 6 valores de entrada, para ellos nos basamos en dividir nuestro periodo de observación de 1 año en 12 meses, y de ahí tomar muestras de 6 meses para predecir un séptimo mes. 




Esté fue el enfoque principal, sin embargo, también es posible tomar en cuenta periodos de observación en diferentes escalas, ya sea 6 días, 6 semanas o 6 años.




Obviamente es necesario utilizar una red multicapa, ya que las redes multicapa tiene la particularidad de aproximar problemas no lineales. Gracias a la lectura científica que realicé en dias anteriores, concluí que las redes neuronales multicapa con una capa oculta y una capa de salida son muy recomendadas para problemas de pronóstico y análisis de series de tiempo, entonces, se decidio utilizar una red neuronal de 3 capas, una de entrada, una oculta y una de salida.
La cantidad total de nodos establecida fue 15.

Proceso de aprendizaje


Los métodos de predicción utilzan el algoritmo de backpropagation. Sin embargo, no se pudo implementar el algoritmo de backpropagation.

El proceso de aprendizaje que se había establecido fue:

  • Normalizar los datos de entrada entre 0 y 1
  • Generar los pesos de cada neurona, valores entre -1 y 1
  • Procesar entrada y pesos (producto punto), y calcular activación
  • Aplicación de función sigmoidal
  • Realizar el proceso feedfoward (capa por capa)
  • Una vez obtenida la salida, calcular el error final
  • Aplicar backpropagation y modificar los pesos de acuerdo al error de cada capa.
  • Procesar la siguiente entrada con los nuevos pesos

Aprendizaje persistente

Simplemente consistió en almacenar los pesos de cada neurona en un archivo de texto y posteriormente cargar los mismos cuando se desee utilizar la neurona para procesar otras entradas

Red Multicapa


La red multicapa fue muy sencilla, una red completamente conectada hacia adelante, capa por capa (feedfoward). Regla delta como función de aprendizaje y función sigmoidal para procesar la activación y calcular la respuesta de la neurona.



Repositorio


La liga al repositorio es: https://github.com/rafaellopezgtz/neurored
Ahí se puede ver el avance del código y los commits realizados por los miembros del equipo.


Referencias
http://www4.rgu.ac.uk/files/chapter3%20-%20bp.pdf
http://www.karlbranting.net/papers/plummer/Paper_7_12_00.htm


Concluye el reporte.

1 comentario: