1. Proyecto de Fin de Carrera
Implementación de redes neuronales artificiales en
sistemas empotrados para predicción de temperaturas
Universidad CEU Cardenal Herrera
Francisco José Marín Pino
Directores de proyecto:
Dr. D. Juan Pardo Albiach
Dr. D. Francisco Zamora Martínez
Moncada, Valencia 2013
2. Contenidos
• Contexto
• Propuesta de proyecto
• Definición de redes neuronales
• Usos de las redes neuronales
• Definición de las redes inalámbricas de sensores
• Usos de las redes inalámbricas de sensores
• Librería de redes neuronales para sistemas empotrados
• Experimentos realizados
• Conclusiones
• Trabajo futuro
2
3. Contexto
• Redes neuronales.
• Redes inalámbricas de sensores.
• Integración de ambos.
• Experimentos para comprobar eficiencia.
3
4. Propuesta de proyecto
• El propósito del proyecto es desarrollar una librería de redes
neuronales optimizada en tamaño y requisitos para poder ser
integrada en diferentes sistemas empotrados.
• También se busca integrar esta librería en una red inalámbrica
de sensores en la medida de lo posible, con el propósito de
predecir temperaturas.
• Realización de experimentos para comprobar el funcionamiento
correcto de la red neuronal y para optimizar los parámetros de
configuración de la red de medida de temperaturas.
4
5. Definición de redes neuronales
• Las redes neuronales artificiales son unos sistemas de
inteligencia artificial que implementan aprendizaje automático a
partir de patrones.
• Su nombre viene dado por su comparación con las neuronas del
sistema nervioso.
• Una red neuronal está compuesta por elementos llamados
neuronas y conexiones entre ellas llamados pesos.
5
6. Definición de redes neuronales
• Al fin y al cabo, una red neuronal es un grafo dirigido.
• Las neuronas de las redes neuronales se agrupan, para facilitar
su comprensión y estructura, en capas.
• Existen tres procedimientos pricipales en una red neuronal feedforward: procesamiento de entradas, propagación hacia atrás
del error, y entrenamiento.
6
8. Neurona
•
Las neuronas de una red neuronal toman su entrada del exterior si se
tratan de neuronas de entrada o de las salidas de otras neuronas si se
tratan de neuronas ocultas o de salida.
•
Cada neurona puede dividirse en dos partes. Durante el procesamiento
de una serie de entradas, la primera se encarga de sumar las entradas.
La segunda aplica la función de activación a dicho sumatorio. (Ver lado
derecho de cada parte)
8
9. Función de activación
• Cada neurona dispone de una función de activación, que
consiste en una función matemática, normalmente una función
sigmoidal, que evita que los valores de las neuronas excedan
los límites de un umbral.
9
10. Cálculo de errores y entrenamiento
• Para entrenar una red neuronal es necesario conocer la salida
deseada para una entrada.
• La red neuronal evalúa la entrada y genera una salida. Después
calcula un error producido mediante una función de error que
compara la salida obtenida y la deseada.
• Este error se propaga hacia atrás asignando un valor de error a
cada neurona. A partir de estos y de las entradas de cada
neurona, se calcula un gradiente que modifica los pesos para
realizar el aprendizaje.
10
11. Cálculo de errores y entrenamiento
• Dicho gradiente es multiplicado por un factor de aprendizaje que
regula la velocidad a la que aprende la red neuronal. Un factor
de aprendizaje demasiado pequeño puede causar que la red
neuronal necesite muchos casos o muchas iteraciones para
aprender, mientras que uno demasiado grande puede causar
desviaciones en los pesos demasiado grandes, aumentando el
resultado de la función de error en lugar de disminuirlo.
11
12. Neurona (continuación)
•
Durante la propagación hacia atrás del error, se aplica la derivada de la
función de activación a la entrada (que en este caso viene por la
derecha) y no es necesario aplicar ninguna otra operación por parte de
la parte de sumatorio, puesto que la derivada de la función de
sumatorio es 1 con respecto a cada una de las entradas.
•
De esta forma se calculan las derivadas del error para cada una de las
neuronas.
12
13. Tipos de redes neuronales
• Uno de los tipos más comunes de redes neuronales es el Feedforward o de alimentación hacia adelante. La librería creada en
este proyecto ha sido diseñada para generar este tipo de redes
neuronales.
• Existen también redes neuronales de tipo recurrente, en las
cuales las salidas de algunas capas se alimenta como entrada a
capas anteriores.
13
14. Usos de las redes neuronales
• Las redes neuronales artificiales se pueden utilizar para multitud
de tareas en las que se necesita la detección de patrones.
• Algunos ejemplos incluyen:
– Reconocimiento de voz
– Reconocimiento de caracteres escritos
– Detección de acciones fraudulentas en cuentas bancarias
– Guía de misiles
14
15. Definición de redes inalámbricas de sensores
• Las redes inalámbricas de sensores son, como su nombre
indica, redes de dispositivos con sensores de pequeño tamaño
que se comunican inalámbricamente y trabajan en conjunto para
realizar una tarea específica.
http://www.purelink.ca/
15
16. Red inalámbrica de sensores utilizada
• La red inalámbrica de sensores que se ha utilizado en este
proyecto consiste en una red con varios nodos capaces de
obtener temperaturas cada cierto intervalo de tiempo, y un
sumidero responsable de recoger los paquetes inalámbricos y
transmitirlos a un PC.
• Para las pruebas y experimentos se ha utilizado un único nodo
sensor de temperaturas.
16
18. Usos de las redes inalámbricas de sensores
• Las redes inalámbricas de sensores cuentan con la ventaja de
ser comúnmente fáciles de transportar y situar, debido a su
pequeño tamaño. Esto las hace útiles para una gran variedad
aplicaciones en diferentes campos.
• Algunos ejemplos:
– Monitorización médica de pacientes
– Aplicaciones militares
– Control de procesos industriales
– Seguridad y vigilancia
18
19. Librería de redes neuronales
• La librería de redes neuronales ha sido implementada en ANSI
C, para aumentar su compatibilidad con diferentes dispositivos y
por el tamaño reducido de sus ejecutables binarios respecto a
otros lenguajes de programación.
19
20. Librería de redes neuronales
• Consiste en una serie de estructuras de datos y funciones. Está
preparada para poder construir redes neuronales feed-forward a
partir de llamadas a funciones específicas para:
– Creación de capas
– Creación de conexiones entre capas
– Asignación de funciones de activación a capas
• También es capaz de generar redes a partir de topologías
descritas en ficheros, en formato April-ANN.
20
21. Pruebas de librería
• Para comprobar el funcionamiento correcto de la librería de
redes neuronales se implementaron una serie de pruebas
unitarias para comprobar diferentes funciones, y una prueba
final para comprobar el funcionamiento total.
21
22. Prueba de reconocimiento de dígitos
• Como prueba final para comprobar el funcionamiento general de
la red neuronal se ha realizado un experimento en el cual la red
neuronal aprende a reconocer dígitos en formato de imagen.
22
23. Prueba de reconocimiento de dígitos
• En este experimento se utilizan 100 dígitos. Los primeros 800 se
utilizan para entrenar la red neuronal. Cada imagen de dígito
tiene una dimensión de 16x16 píxeles con valores blancos o
negros. Esta es la entrada de la red neuronal, y la salida es un
vector de diez probabilidades: la de que sea cada uno de los
diez dígitos. Las 800 imágenes de dígitos se introducen en
orden aleatorio en la red neuronal y después se le proporciona
el vector de probabilidades correcto para su entrenamiento.
23
24. Prueba de reconocimiento de dígitos
• Después se utilizan los últimos 200 dígitos para comprobar que
el reconocimiento de dígitos funciona para casos con los que no
ha entrenado. Efectivamente, la red neuronal es capaz de
reconocer estos otros dígitos.
24
25. Experimentos
• La red neuronal para la predicción de temperaturas tiene la
siguiente topología:
– Capa de entrada de 24 neuronas
– Capa oculta de 8 neuronas
– Capa de salida de 8 neuronas
• Cada una de las 24 entradas es una media de 15 temperaturas,
una obtenida cada minuto, que se corresponden con los cuarto
de hora de reloj.
25
26. Experimentos
• El programa que entrena y utiliza la red neuronal es capaz de
interpolar valores de temperaturas en caso de realizarse
pérdidas de datos o desfases en las recepciones de las
temperaturas. Por ejemplo, un desfase de un segundo puede
causar que se obtengan temperaturas a las 12:01:59 y 12:03:00.
26
27. Experimentos
• Para comprobar qué tasa de aprendizaje es la mejor para este
entrenamiento se han realizado experimentos con temperaturas
obtenidas del SMLsystem durante un periodo de tiempo de un
mes. Se ha ejecutado la misma red neuronal con los mismos
datos y diferentes tasas de aprendizaje, y se han comparado los
resultados para averiguar cuál es la que más eficientemente
entrena la red neuronal.
27
28. Primer experimento
• En el primer experimento se ha buscado encontrar qué factor de
aprendizaje ha conseguido la menor media de errores. Para
esto se ha ejecutado el programa con diferentes factores de
aprendizaje y realizado una media aritmética de los errores.
28
31. Segundo experimento
• Este experimento se diseñó para averiguar qué tasa de
aprendizaje disminuye el error de la red neuronal con mayor
velocidad.
• La diferencia con el experimento anterior consiste en que la
media de errores que ha producido un factor de aprendizaje es
una medida significativa de cuán buena es esta, pero en este
experimento se mide la velocidad a la que se ha reducido ese
error en general. Es decir, el número de entrenamientos.
31
34. Experimentos
• En cuanto a la integración de la librería de redes neuronales con
la red inalámbrica de sensores, se ha logrado lo siguiente:
– Introducir una red neuronal simple (cálculo de XOR) en el
sumidero.
– Introducir la librería de redes neuronales en el sumidero,
generando datos falsos necesarios de temperaturas y
tiempos dentro del mismo.
• La generación de un prototipo final que obtenga las
temperaturas en tiempo real y se ejecute en el sumidero no ha
sido posible debido a no haber sido posible establecer envío de
datos necesarios (como la fecha y la inicialización de los pesos
de la red neuronal) desde el PC al sumidero.
34
35. Resultados
• La programación de una librería de redes neuronales artificiales
capaz de ser embebida en sistemas empotrados.
• La integración de esta librería en un dispositivo de la red
inalámbrica de sensores con una red neuronal simple, si bien
los datos no se obtuvieron en tiempo real.
• Experimentos para la obtención del mejor factor de aprendizaje
para la red neuronal con la topología indicada.
35
36. Trabajo futuro
• En cuanto a la librería de redes neuronales, sería posible añadir
dos parámetros más para dar más opciones a los usuarios de
esta:
– Weight decay (Decadencia de los pesos)
– Momentum (Inercia)
• En cuanto a la integración de esta con los dispositivos, el
siguiente paso sería establecer correctamente la conexión para
la recepción de datos desde el PC para poder general un
prototipo que se ejecute en el sumidero de la red inalámbrica de
sensores.
36
37. Agradecimientos
• A mis directores de proyecto:
– Dr. D. Juan Pardo Albiach
– Dr. D. Francisco Zamora Martínez
• A todos los profesores de Ingeniería Informática de la
Universidad CEU Cardenal Herrera.
37