scieee AI-readable full text Open interactive document viewer

Algoritmos de aprendizaje neurocomputacionales para su implementación hardware

Ortega-Zamorano, Francisco

Abstract

Las redes de neuronas artificiales son un paradigma de aprendizaje y procesamiento automático inspirado en el funcionamiento del sistema nervioso, se emplean en toda tipo de aplicaciones, con lo que van apareciendo nuevas aplicaciones donde la utilización de ordenadores no da una solución de manera. Los sistemas en tiempo real y las redes de sensores son dos de las tecnologías más extendidas donde la utilización de modelos neurocomputacionales requiere un desarrollo en dispositivos y el empleo de técnicas de programación diferente a las convencionales. En este tipo de aplicaciones otros dispositivos hardware como las FPGAs o microcontroladores son más adecuados a la hora de la implementación de redes neuronales artificiales. Los sistemas en tiempo real están sujetos a unas limitaciones temporales y la estructura de las FPGAs permite implementar este tipo de diseños debido a que se diseña el dispositivo a nivel hardware, consiguiendo unos tiempos de respuesta muy acotados, exigidos en una aplicación en tiempo real. En esta línea de investigación existen dos posibles alternativas para este tipo de sistemas: (i) implementaciones específicas de algoritmos conocidos adaptados a los dispositivos hardware; (ii) implementaciones de nuevos algoritmos que se adapten mejor a este dispositivo. Otra tecnología muy importante es las redes de sensores inalámbricas, debido a los avances tecnológicos registrados en la última década sobre la capacidad de los microcontroladores usados en este tipo de aplicaciones. Una motivación de esta tesis es de dotar de inteligencia a las redes de sensores en este tipo de escenarios para proporcionar de una cierta lógica a la toma de decisiones Se busca alcanzar los siguientes objetivos: (i) analizar el algoritmo Backpropagation, desarrollando y evaluando diferentes técnicas de optimización para cada dispositivo; (ii) evaluar una alternativa al algoritmo Backpropagation para poder realizar una implementación hardware maximizando el uso de recursos; (iii) realizar una implementación hardware eficiente del algoritmo C-Mantec para evaluar su posible utilización en aplicaciones de sistemas en tiempo real; y (iv) evaluar una implementación del algoritmo constructivo C-Mantec sobre microcontroladores para su utilización en redes de sensores. Se implementa el algoritmo Backpropagation una FPGA y un microcontrolador. La implementación en FPGA se precisa diseñar con diferentes modificaciones, que se centran en introducir una nueva neurona ``Primera Capa'', incorporar la multiplexación por división en el tiempo del bloque multiplicador, así como tabular e interpolar los valores de la función sigmoidea, permitiendo un reducción de recursos, en media, de un 25,8\% de celdas lógicas y un 50'3\% de bloques específicos. En el caso específico del microcontrolador la modificación del tipo de representación de los datos permite un incremento en la velocidad de cómputo de entre 8 a 18 veces más rápido, además de una reducción importante en la cantidad de memoria utilizada. La implementación ``on-chip'' del algoritmo C-Mantec ha sido realizada de forma específica para su implantación en una placa FPGA, haciendo un análisis del tiempo de cómputo se observa una disminución del tiempo empleado en las implementaciones sobre FPGA en relación a las realizadas sobre PC. Esto es debido a que el tiempo de cómputo en un ordenador crece de forma exponencial y de manera lineal en una FPGA, dando lugar a implementaciones hasta 47 veces más rápidas. La implementación hardware del algoritmo C-Mantec es un 15\% más eficientes en recursos hardware utilizados en comparación a la del algoritmo Backpropagation, permitiendo mayor número de neuronas en la arquitectura. Para finalizar es importante mencionar que el tiempo de aprendizaje de las implementaciones FPGAs en ambos algoritmos es notablemente menor que el tiempo empleado por un PC, siendo la del C-Mantec sustancialmente inferior al del Backpropagation. Además el tiempo de ejecución del modelo es considerablemente inferior para el C-Mantec, lo que supone una ventaja en la fase de explotación del modelo. El algoritmo C-Mantec se ha implementado en la placa Arduino, para lo que se ha modificado el paradigma de representación de datos reduciendo considerablemente la memoria utilizada para el almacenamiento de variables y aumentando la velocidad de procesamiento, debido a que la unidad aritmético lógica en este tipo de representación son más simples. El algoritmo implementado se ha empleado como una red de sensor/actuador en tres casos de estudios con el fin de demostrar la eficiencia y la versatilidad de la aplicación resultante. Los tres casos de estudios seleccionados son problemas definidos en entornos cambiantes, y por lo tanto la toma de decisiones del sensor/actuador ha de adaptarse en consecuencia a los cambios observados, por lo que requieren una reconversión del modelo de red neuronal que controla el proceso de decisión. Los tiempos de reprogramación observados son significativamente bajos en los tres casos de estudio, siendo en consecuencia el consumo de energía del dispositivo también bastante pequeño. Incluso sin una comparación exhaustiva con el caso tradicional en el que el nuevo código tiene que ser transmitido desde una unidad de control central, los resultados hacen evidente una reducción en el gasto energético, cualidad muy importante en este tipo de tecnología debida a la corta duración de las baterías que lo alimentan. Como resultado, se ha demostrado la idoneidad del algoritmo C-Mantec para su aplicación en una tarea compleja utilizando un microcontrolador Arduino UNO. Hoy en día, dada la existencia de dispositivos con mucho más poder de cómputo y recursos que la placa considerada, el presente estudio permite confirmar la potencial aplicación del algoritmo propuesto en tareas reales que necesitan sensores/actuadores. Las futuras líneas de investigación pueden ser muy variadas, algunas de los iniciados son evolucionar la implementación hardware del algoritmo Backpropagation; o analizar la posibilidad de emplear las FPGAs como aceleradoras hardware para simulaciones de sistemas complejos. Además de estudiar otros modelos computacionales con otras reglas de; o analizar la posibilidad de aplicar los sistemas neurocomputacionales en tiempo real en tareas complejas.

Full text

Algoritmos de aprendizaje neurocomputacionales para su implementación hardware Tesis Doctoral D. Francisco Ortega Zamorano Departamento de Lenguajes y Ciencias de la Computación Escuela Técnica Superior de Ingeniería Informática Universidad de Málaga Junio de 2015 AUTOR: Francisco Ortega Zamorano EDITA: Publicaciones y Divulgación Científica. Universidad de Málaga Esta obra está sujeta a una licencia Creative Commons: Reconocimiento - No comercial - SinObraDerivada (cc-by-nc-nd): Http://creativecommons.org/licences/by-nc-nd/3.0/es Cualquier parte de esta obra se puede reproducir sin autorización pero con el reconocimiento y atribución de los autores. No se puede hacer uso comercial de la obra y no se puede alterar, transformar o hacer obras derivadas. Esta Tesis Doctoral está depositada en el Repositorio Institucional de la Universidad de Málaga (RIUMA): riuma.uma.es Algoritmos de aprendizaje neurocomputacionales para su implementación hardware Memoria que presenta para optar al título de Doctor por la Universidad de Málaga D. Francisco Ortega Zamorano Dirigida por los Doctores Dr. Leonardo Franco y Dr. José Manuel Jerez Aragonés Departamento de Lenguajes y Ciencias de la Computación Escuela Técnica Superior de Ingeniería Informática Universidad de Málaga Junio de 2015 Departamento de Lenguajes y Ciencias de la Computación Escuela Técnica Superior de Ingeniera Informática Universidad de Málaga El Dr. D. Leonardo Franco, Profesor Titular de Universidad, y el Dr. D. José Manuel Jerez Aragonés, Profesor Titular de Universidad, ambos pertecientes al área de Ciencias de la Computación e Inteligencia Articial de la E.T.S. Ingeniera Informática de la Universidad de Málaga, Certican que, D. Francisco Ortega Zamorano, Ingeniero en Telecomunicaciones, ha realizado en el Departamento de Lenguajes y Ciencias de la Computación de la Universidad de Málaga, bajo su dirección, el trabajo de investigación correspondiente a su Tesis Doctoral titulada: Algoritmos de aprendizaje neurocomputacionales para su implementación hardware Revisado el presente trabajo, estimamos que puede ser presentado al tribunal que ha de juzgarlo. Y para que conste a efectos de lo establecido en la legislación vigente, autorizamos la presentación de este trabajo en la Universidad de Málaga. Málaga, Junio de 2015 Fdo.: Dr. Leonardo Franco Fdo.: Dr. José Manuel Jerez Aragonés A toda mi familia por conar en mí. Sin ellos nada de esto hubiera sido posible. Agradecimientos Me gustaría expresar mi más sincero agradecimiento a los directores de mi Tesis Doctoral, Leonardo Franco y José Manuel Jerez Aragonés, por su inestimable colaboración tanto en mi tesis doctoral como en mi carrera investigadora, gracias a su ayuda he podido afrontar todos los retos que han ido surgiendo y he podido iniciar una etapa profesional en la que espero seguir contando con su apoyo y amistad. Quiero hacer una mención especial a Ignacio Molina por conar en mí y darme la oportunidad de conocer el mundo de la investigación; a Marcelo Montemurro por su acogida durante mi estancia de investigación en Manchester, ofreciéndome la oportunidad de disfrutar de una gran experiencia que espero repercutan en futuros lazos de colaboración y a Paula Monasterio por ofrecerme de forma totalmente desinteresada su ayuda y sus conocimientos en los inicios de mi etapa doctoral. Me gustaría también expresar mi más profunda gratitud a mis compañeros de laboratorio de Inteligencia Computacional en Biomedicina (ICB): Subi, Dani, Rafa, Esteban, Héctor y Julio; por echarme una mano cada vez que lo he necesitado, por acogerme con la mejor de las sonrisas y por su amistad que espero perdure en el tiempo. No podía faltar en estos agradecimientos una mención especial para todos mis amigos que han soportado estoicamente mis comentarios e historias sobre mi tesis, Nio, Cristi (ella sabe lo duro que es una tesis), Pablo Tabo, Moni, Pipe, Rake, Nico, Arturo,... y a los que me dejo seguro en el tintero. Para terminar, agradecer de una forma muy especial a Sandra el apoyo incondicional, con ella todos los agobios y problemas son más fáciles de llevar. A mis padres por su cariño y porque siempre han demostrado que puedo contar con ellos. También a mi Hermana que siempre está en los malos momentos y espero que siempre este en los buenos; y a mis niñas porque su alegría siempre me contagia. Gracias a todos. ix xvi Resumen sináptico sea mínimo entonces la arquitectura añade una neurona y se resetean todas las temperaturas. Una de las principales ventajas de utilizar este nuevo algoritmo es el hecho de que evita el problema de seleccionar la arquitectura adecuada, ya que este proceso se realiza automáticamente de acuerdo con la complejidad de la los datos de entrada, siendo una ventaja adicional su robustez respecto al ajustes de los parámetros. La implementación de este algoritmo se ha diseñado buscando la reducción en el uso de recursos y simplicando los procesos complejos, prestando especial atención a los procedimientos del cálculo de la función mayoría, del valor de la temperatura especíca en cada neurona y de las multiplicaciones del algoritmo. El cálculo de la función mayoría se realiza comparando la suma de la salida de todas las neuronas con salida activas con respecto a la mitad de las neuronas disponibles en ese momento en la arquitectura. Este proceso puede realizarse en sólo un ciclo de reloj puesto que la división entre dos del número de neuronas activas se puede implementar con un registro de desplazamiento. El cálculo de la temperatura especíca ( Tfac ) involucra dos procedimientos; el primero el cálculo del propio valor del Tfac , que a su vez requiere de una función exponencial que se implementa mediante la interpolación de los valores tabulados, procedimiento similar al descrito para la función sigmoidea; el segundo procedimiento es especicar qué neurona con posibilidades de aprender tiene el mayor valor de Tfac , para lo que se realizan una serie de comparaciones en grupos de 16 neuronas con el n de maximizar las comparaciones sin extra dimensionar el comparador. Las multiplicaciones necesarias en el desarrollo del algoritmo se realizan con un solo bloque multiplicador con estructura de división en el tiempo para cada neurona. Se puede implementar con un solo bloque especíco o mediante lógica combinacional. En este caso se optó por la lógica combinacional debido a la posibilidad de exportar dicha implementación a otras placas de diferentes familias y marcas en detrimento del rendimiento en cuanto a velocidad de procesamiento. Se realizaron diversas pruebas sobre diferentes conjuntos de datos de referencia estudiados en múltiples trabajos, demostrando que la generalización obtenida en la implementación hardware es muy similar a la que se obtiene con una implementación realizada en el lenguaje de programación C sobre PC. Además se observa un claro incremento en la velocidad de cálculo en comparación con las implementaciones estándares realizadas mediante el PC. Para funciones complejas, que requieren una mayor arquitectura de red para su aprendizaje, los tiempos de cómputo en un PC tienen una tasa de crecimiento muy superior a los de la implementación en FPGA, lo que las hace más idóneas para implementaciones de problemas complejos. Un estudio pormenorizado en la velocidad de cómputo revela que en la implementación en PC el tiempo empleado en añadir otra nueva neurona crece exponencialmente conforme el algoritmo va añadiendo neuronas a la capa oculta , mientras que en una FPGA el tiempo en añadir una nueva neurona crece linealmente; esto es debido principalmente al carácter paralelo de cómputo de la FPGA, haciéndola más eciente en términos de velocidad cuanto mayor es la complejidad de la arquitectura a simular (más neuronas en la capa oculta). Redes de sensores inteligentes basados en modelos neurocomputacionales En el capítulo 4 se introduce un nuevo concepto en la reprogramación de nodos sensores. Las técnicas desarrolladas hasta la actualidad como método para la actualización Resumen xvii de los nodos en una red de sensores requieren generalmente del uso de reprogramación. Si los sensores se encuentran en entornos cambiantes dicha reprogramación puede llegar a ser habitual, incrementando de forma sustancial los costes en términos de tiempo y energía. Se presenta una alternativa al enfoque tradicional para la reprogramación de nodos sensores/actuadores en entornos cambiantes, basada en un esquema de aprendizaje en el propio sensor (on-chip) para que de forma automática adapte el comportamiento a las condiciones del entorno. El modelo de aprendizaje propuesto se basa en el C-Mantec, ya mencionado anteriormente, que al generar arquitecturas de tamaño muy compacto lo hacen especialmente adecuado para las implementaciones del microcontrolador al reducir signicativamente el uso de memoria. La placa microcontroladora utilizada ha sido el Arduino UNO, se trata de una placa muy popular de código abierto, económico y eciente. Las ventajas de utilizar esta familia de placas es diverso pero cabe destacar que al ser de código abierto dispone de documentación y tutoriales muy completos que la hacen fácil de programar, además de presentar una comunidad de usuarios muy extensa que facilita el acceso a nuevos prototipos. Con el objetivo de realizar la implementación íntegra del algoritmo C-Mantec en la placa Arduino se ha cambiado el paradigma de representación de datos del tradicional punto otante usado en este tipo de algoritmos a la representación en punto jo. Una vez realizada la implementación, su correcta ejecución se verica con una comparación de los resultados obtenidos y los valores teóricos en generalización de una serie de conjuntos de datos de entrada. El sistema neurocomputacional implementado se ha validado en una red de sensor/actuador en tres casos de estudios con el n de demostrar la eciencia y la versatilidad de la aplicación resultante. Los tres casos seleccionados son problemas denidos en entornos cambiantes y por lo tanto la toma de decisiones se debe adaptar acorde a los cambios observados, requiriendo una adaptación del modelo de red neuronal que controla el proceso de decisión. El primer caso de estudio es una alarma de incendios. Generalmente las alarmas incorporan un proceso de toma de decisiones en función de los valores medidos, si dichos valores pasan un determinado umbral la alarma se activa. Para generar las reglas de decisión se realiza un estudio en un ambiente genérico, pero si las condiciones en la estancia a controlar no son los estándares la alarma sonará. Para no realizar un estudio de cada estancia a medir se ha diseñado un sensor con una red neuronal para tomar la decisión de activación, teniendo en cuenta que si toma una decisión incorrecta el propio sistema modica su red neuronal para adecuarla a la estancia a sensar. El segundo caso de estudio es la predicción meteorológica para decidir si activar el sistema de riego de un campo de regadío. Existen multitud de estudios relacionado con las variables climáticas y muchos de ellos utilizan modelos computacionales. El problema surge cuando se quiere realizar una acción sin tener en cuenta las variables microclimáticas de la zona. En este caso los estudios generalistas pueden no resultar adecuados y los estudios especícos pueden resultar muy costosos, por lo que se ha decidido la implementación de un modelo de red neuronal en el propio sensor para que capte las variables climáticas con el n de modicar la red conforme se tengan datos de la zona sensada. Con el n de maximizar la memoria disponible se ha discretizado las variables sensadas debido a que almacenar los datos reales es muy costoso en cuanto a memoria utilizada. xviii Resumen Por último se ha estudiado un sistema de detección de caídas en personas mayores. El sensor viene equipado con un acelerómetro que indica la posición en el eje x, y, z del individuo. El conjunto de datos del problema viene denido por medidas de una serie de caídas simuladas y otras medidas de acciones habituales que no son caídas. La dicultad surge cuando el sistema de caídas se coloca en diferentes tipos de personas con diferente morfología, comportamiento y hábitos de vida, en ese momento el sistema puede conducir a decisiones incorrectas. Si los sensores van equipados con un modelo neurocomputacional adaptarán su toma de decisiones en función de las variables anteriormente mencionadas dando lugar a un sensor especíco para cada usuario. Conclusiones y líneas de trabajos futuros En conclusión, se puede decir que el algoritmo Backpropagation se implementó correctamente en dos dispositivos hardware, una FPGA y un microcontrolador, realizándose dichas implementaciones bajo un paradigma de aprendizaje que incluye un sistema de validación para evitar el sobreajuste. La implementación FPGA precisó de diferentes actuaciones sobre la estructura del algoritmo para minimizar los recursos utilizados. Las modicaciones diseñadas, que se centran en Introducir el paradigma de una nueva neurona de la Primera Capa, incorporar la multiplexación por división en el tiempo del bloque multiplicador, así como tabular e interpolar los valores de la función sigmoidea, han permitido un reducción de recursos, en media, de un 25,8% de celdas lógicas y un 50'3% de bloques especícos en una serie de arquitecturas de diferente tamaño en comparación con implementaciones hardware tradicionales sin mejoras. Al analizar las limitaciones impuestas por la cantidad de recursos disponibles, se observa que la limitación principal es el número de bloques especícos DSP de la placa FPGA, limitando el número de neuronas disponibles puesto que cada neurona precisara de un bloque especíco DSP. Al comparar los resultados con las publicaciones de trabajos previos se observa una reducción en términos de recursos de bloques especí- cos y celdas lógicas, lo que permite un incremento sustancial en el número máximo de neuronas que dispondría una arquitectura de red neuronal. Sin embargo, el aumento de dicho tamaño, para casos particulares, dependerá de la combinación de los valores de la arquitectura de red neural y recursos de la placa FPGA a utilizar. En el caso especíco del microcontrolador la modicación del tipo de representación de los datos permite un incremento en la velocidad de cómputo de entre 8 a 18 veces más rápido, además de una reducción importante en la cantidad de memoria utilizada. Estos resultados avalan el empleo de sistemas neurocompuacionales en el propio microcontrolador con estructura de aprendizaje on-chip. El estudio del algoritmo Backpropagation muestra que las implementaciones especícas de dispositivos hardware diferentes al PC deben diseñarse con modicaciones que las hagan más adecuadas a cada dispositivo en los que se desarrolla. De esta forma se consigue maximizar los recursos disponibles y reducir drásticamente los tiempos de cómputo en los dispositivos FPGAs y microcontroladores. La implementación íntegra (con estructura de aprendizaje on-chip) del algoritmo C-Mantec ha sido realizada de forma especíca para su implantación en una placa FPGA y la ecacia del diseño se ha demostrado mediante una comparación frente a los valores teóricos de los resultados obtenidos de la generalización de una serie de conjunto de datos conocidos. Resumen xix Además, haciendo un análisis del tiempo de cómputo de cada conjunto de datos se observa una disminución del tiempo empleado en las implementaciones sobre FPGA en relación a las realizadas sobre PC, señalando que dicho aumento de velocidad es proporcional al tamaño de la arquitectura de la red. Esto es debido a que el tiempo de cómputo en un ordenador crece de forma exponencial conforme se añaden neuronas a la capa oculta y de manera lineal en una FPGA, dando lugar a implementaciones hasta 47 veces más rápidas en arquitecturas más complejas. Las pruebas anteriormente mencionadas muestran que la representación de datos utilizada (representación en punto jo) es suciente para lograr resultados comparables en cuanto generalización y tamaño de la arquitectura a los ejecutados en un PC con representación en punto otante, siendo este algoritmo muy robusto en cuanto al tamaño de palabra utilizado en la representación de los datos. La implementación hardware del algoritmo C-Mantec es un 15% más ecientes en recursos hardware utilizados en comparación a la del algoritmo Backpropagation. El análisis de los resultados conrma que las arquitecturas implementadas en una misma placa FPGA del algoritmo C-Mantec permiten mayor número de neuronas que las realizadas para el algoritmo Backpropagation. Además, las ejecuciones del algoritmo C-Mantec precisan de menor tamaño de representación de datos para que sean precisas, por lo que se constata que dicha implementación es menos sensible a la longitud de palabra utilizada, lo que permite un ahorro de recursos al reducir la complejidad de la implementación. Para nalizar es importante mencionar que el tiempo de aprendizaje de las implementaciones FPGAs en ambos algoritmos es notablemente menor que el tiempo empleado por un PC, siendo la del C-Mantec sustancialmente inferior al del Backpropagation. Además el tiempo de ejecución del modelo es considerablemente inferior para el C-Mantec, lo que supone una ventaja en la fase de explotación del modelo. A la luz de los resultados observados se puede concluir que el presente análisis demuestra la idoneidad del algoritmo C-Mantec para su aplicación en problemas industriales del mundo real en las que se precise de modelos neurocomputacionales en tiempo real. El algoritmo C-Mantec se ha implementado en la placa Arduino, para lo que se ha modicado el paradigma de representación de datos reduciendo considerablemente la memoria utilizada para el almacenamiento de variables y aumentando el número de neuronas máximas disponible por la arquitectura. Además, un estudio de la velocidad de procesamiento revela que las implementaciones del mismo algoritmo en punto jo (8 bits en parte decimal) son hasta cinco veces más rápidas que las de punto otante para las arquitecturas más grandes, debido principalmente a que el tamaño de la arquitectura repercute negativamente de forma severa en la velocidad de cómputo para las representaciones de punto otante ya que el manejo de memoria y el uso de una unidad aritmético lógica en este tipo de representación son más complejos. La correcta implementación del algoritmo ha sido vericada con la comparación de los resultados obtenidos para una serie de conjuntos de datos. Se ha comparado la generalización y tamaño de las arquitecturas con los valores teóricos para dichos conjuntos, obteniendo como resultado que el tamaño de las arquitecturas en el microcontrolador es ligeramente superior a las teóricas conforme crece el número de entradas del conjunto de datos a entrenar, observándose también una pequeña reducción de la precisión. Si bien se aprecia una degradación del modelo debido principalmente a los efectos producidos por el redondeo de la representación del tipo de datos, esto no condiciona la eciencia del sistema resultante ya que la generalización se mantiene en unos valores xx Resumen cercanos a los óptimos. El algoritmo implementado se ha empleado como una red de sensor/actuador en tres casos de estudios con el n de demostrar la eciencia y la versatilidad de la aplicación resultante. Los tres casos de estudios seleccionados son problemas denidos en entornos cambiantes, y por lo tanto la toma de decisiones del sensor/actuador ha de adaptarse en consecuencia a los cambios observados, por lo que requieren una reconversión del modelo de red neuronal que controla el proceso de decisión. Los tiempos de reprogramación observados son signicativamente bajos en los tres casos de estudio, siendo en consecuencia el consumo de energía del dispositivo también bastante pequeño. Incluso sin una comparación exhaustiva con el caso tradicional en el que el nuevo código tiene que ser transmitido desde una unidad de control central, los resultados hacen evidente una reducción en el gasto energético, cualidad muy importante en este tipo de tecnología debida a la corta duración de las baterías que lo alimentan. Como resultado, se ha demostrado la idoneidad del algoritmo C-Mantec para su aplicación en una tarea compleja utilizando un microcontrolador Arduino UNO. Hoy en día, dada la existencia de dispositivos con mucho más poder de cómputo y recursos que la placa considerada, el presente estudio permite conrmar la potencial aplicación del algoritmo propuesto en tareas reales que necesitan sensores/actuadores. Finalmente, como conclusión global se puede decir que esta tesis doctoral profundiza en el estudio de implementaciones neurocompuacionales para dispositivos diferentes a los tradicionales (FPGA y microcontroladores) en tecnologías y aplicaciones que así lo requieran. Además demuestra las ventajas potenciales de las FPGAs como dispositivos usados a modo de aceleradores hardware para aplicaciones de neurocomputación dada sus capacidades intrínsecamente paralelas, mientras que en relación con el uso de las redes neuronales en microcontroladores destacamos la estructura de aprendizaje onchip que permiten su uso en sensores remotos utilizando un modo de funcionamiento autónomo. Después de un análisis exhaustivo se puede determinar que las implementaciones de estos dispositivos deben diseñarse de acuerdo a sus particularidades de composición y conguración, consiguiendo unos resultados en términos de eciencia de recursos hardware y velocidad de cómputo muy superiores a los modelos neurocomputacionales desarrollados en un PC. Además, se ratica que existen otros modelos de red neuronal más adecuados a los tradicionales, con los que se consiguen arquitecturas superiores en tamaño y tiempo de respuesta inferiores. Las futuras líneas de investigación que puede seguir el estudio realizado en esta tesis es muy variado, alguno de los iniciados son evolucionar la implementación hardware del algoritmo Backpropagation para disponer de arquitecturas más grandes gracias a la reutilización de una sola capa que permite simular diferentes capas ocultas de la arquitectura de red; o analizar la posibilidad de emplear las FPGAs como aceleradoras hardware para simulaciones de sistemas complejos con una necesidad de cómputo elevado como el modelo Ising, usado para estudiar el comportamiento de los materiales ferromagnéticos. Además existen otras posibilidades de futuros trabajos que necesitan ser explorados como son estudiar otros modelos computacionales con otras reglas de decisión para su uso en redes de sensores inteligentes con el n de ahorrar recursos al no necesitar guardar una cantidad ingente de datos; o analizar la posibilidad de aplicar los sistemas neurocomputacionales en tiempo real en tareas complejas como un sistema de estabilización de un cuadricóptero. Abstract Articial neural networks are a paradigm of learning inspired by the automatic processing and functioning of the central nervous system of animals. They have had a great evolution since 1943 when Warren McCulloch and Walter Pitts introduced the concept of articial neuron, thanks largely to the introduction of more complex models and algorithms such as the Hopeld model and the Backpropagation algorithm in the 80s. These two models produced a neural network renaissance, and nowadays neurocomputational systems are used in a variety of applications in key sectors such as nance, medical, energy, industrial, robotics or science. In most of these elds the use of neurocomputational algorithms have been extended and expanded, and in almost all of them new applications are appearing where the use of traditional programming on computers cannot provide an ecient solution, partly due to the high computation needs for complex problems or factors like energy consumption and dimensions for the case of the implementation of models in embedded systems. Real-time systems and sensor networks are two of the most widespread technologies in which neurocomputational applications may require the use of alternative devices with dierent programming techniques. In these kinds of applications hardware devices such as FPGA (Field Programmable Gate Array) or microcontrollers might be more adequate for the implementation of articial neural networks. FPGAs are semiconductor integrated circuits based on an array of congurable logic blocks interconnected between them and with input/output signals. The programmable interconnections generate a routing matrix, modiable by the user according to the needed functionality. They can be programmed to generate a broad range of processes from very simple function, like those carried out by a logic gate to very complex combinational systems like functions needed for the operation of real time systems. On the other hand, a microcontroller is an integrated programmable circuit able to execute orders etched into its memory. It consists of several functional blocks that execute a specic task as the processing unit, memory, input/output, etc. Due to its versatility, microcontrollers are found in several applications, ranging from everyday life devices to the most advanced aerospace technology. In computer science, real-time systems are hardware and software systems subject to tight time restrictions determined by the nature of the application. They control or act according to environmental conditions by receiving information, processing it and returning a response quickly enough. Real-time responses are often on the order of milliseconds, even microseconds sometimes. By contrast, a non-real time system is not constrained to respond within a predetermined time period. The structure and eectiveness of FPGAs oer the possibility for the ecient design of the real-time systems because they can implement complex functions that can be executed simultaneously by taking advantage of their intrinsic parallelism, having also xxi xxii Abstract a computing power similar or higher than conventional sequential operated digital processors. FPGAs permit inputs and outputs to be controlled at hardware level, and can provide faster response times and specialized functionality that meet the requirements of real-time applications. FPGAs are devices well suited for neurocomputational algorithms due to the parallel processing of information in such algorithms, motivating their use especially when time constraints are imposed for the case of real-time systems. A classication of neurocomputational implementations can be performed depending on whether the learning process is developed within the FPGA (on-chip) or not (o-chip). In applications where the learning process is not included in the device (o-chip) this process is generally performed in a personal computer, to then transmit the resultant neural network to the FPGA which acts as a hardware accelerator in the execution phase of the model. This kind of implementation is easier to develop since only the nal architecture is codied into the FPGA as training is done externally, usually in a PC with the possibility of reusing existing software. On the contrary, this scheme oers a very rigid structure that does not allow for the modication of the architecture and/or synaptic weights in a quick and ecient manner. The other situation in which the learning process is included within the FPGA (on-chip learning) larger hardware resource usage is needed, but this scheme oers more exibility as several algorithm features can be easily modied on-line. Furthermore, for this last scheme, the choice of training algorithm is a very relevant feature as it strongly inuences the FPGA code implementation, learning times and nal model architecture, all critical factors in terms of the time and eort required for the problem implementation and the nal execution model. For the previously mentioned reasons, one of the main purposes of this thesis is the analysis and development of hardware implementations for real-time neurocomputational systems with an on-chip learning scheme. In this line of research two main alternatives are possible: a) The rst one is to develop specic implementations of wellknown existent algorithms introducing modications to simplify the process in order to get the models adapted to the hardware devices; the changes should be sucient to simplify the process although should not alter the structure of the algorithm since the advantage of this alternative is the use of well-studied models that have demonstrated their performance. b) The second option is to design implementations of new algorithms better suited to the devices in order to achieve ecient implementations. This option seems the most eective if the proposed algorithm does generate a valid neurocomputational model. One of the motivations of this thesis is to analyze the limitations and strengths of both alternatives to determine the most viable and productive option. Apart from FPGAs, wireless sensor networks are one of the technologies that has advanced more in recent years due to the technological advances on the microcontrollers used in these kind of applications, together with a drastic reduction both in cost and power consumption, that allow for the use of large-scale networks. The traditional programming way of sensor/actuator systems can lead to wrong decisions when conditions change over time, so in several situations it is necessary to change or adapt the decision making process to new circumstances. Another motivation of this thesis is to include intelligence into sensor networks in changing environments, in order to use some additional information along with the measured variables to give an automated support decision-making and distributed processing, providing a smart environmental Abstract xxiii dependent response according to the sensed information. In spite of the great technological advances in recent years in the eld of microelectronics that permitted to construct microcontrollers with high computing and memory capacities at very aordable prices, microcontrollers resources still remain a major constraint to implementations of sophisticated learning algorithms. Therefore it is necessary to design ecient neurocomputational implementations models to develop smart sensor networks. As an overall goal, this thesis aims to advance in the scientic and technological knowledge necessary for the design and development of neurocomputational models for specic hardware devices (microcontrollers and FPGAs) to allow their use in realtime and sensor network applications. In more detail, this thesis seeks to achieve the following partial objectives: (i) analyzing the well-known neural network algorithm, Backpropagation, for its implementation in specic hardware devices, developing and evaluating dierent techniques of optimization in order to compare its performance with its standard PC version, and thus prove the improvement of the proposed techniques; (ii) evaluating alternatives to the Backpropagation algorithm to perform a hardware implementation in which device resources are maximized. The constructive neural network algorithm, C-Mantec is analyzed as an alternative since it produces very compact architectures; (iii) developing a comprehensive study of an ecient hardware implementation of the algorithm C-Mantec to assess their possible use in systems applications in real time, being the computational time in the learning and the execution processes the critical variables to determine the use; (iv) evaluating an implementation of C-Mantec constructive algorithm in microcontrollers to use as neural model in smart sensor networks by checking in real applications as microclimate predictions, emergency alarms and elderly people fall detection. Implementation of the Backpropagation algorithm in hardware devices: FPGA and microcontroller In Chapter 2 a detailed study of implementations of neural computational learning algorithm Backpropagation is carried out in two dierent hardware devices such as FPGA and a microcontroller, focusing on obtaining ecient implementations in terms of resource utilization and computing speed. The Backpropagation algorithm has been extensively studied in several works, so the rst step is to analyze the owchart to determine procedures which should be designed. In this step the sigmoid function is identied as the transfer function for the output of the model. The algorithm has been implemented in the two cases using the training/validation/testing strategy to avoid overtting caused by excessive training iterations; in order to obtain this scheme the dataset is divided into three subsets, a rst to perform the training to modify the synaptic weight values of the model, another to check the evolution of the error, and the last one to verify the predictive capacity of the resulting network. Whenever the network carry out an iteration (training the model with all training data set) the mean squared error of the validation data set is checked; if it is less than the minimum stored by the system, the network which generates this error is saved and the stored minimum error is changing by the obtained one. Finally, the obtained network (the one with the minimum mean squared error) runs with the test data set to check the quality of generalization. For the specic case of hardware implementation in FPGA a new design of a neuron xxiv Abstract (First Layer) has been introduced that it combines the elements of the inputs with the functionalities of the rst hidden layer, allowing a drastic reduction on the resources used for the implementation. In this new scheme, the resources used for the inputs are incorporated in the neurons of the First Layer with a small increase in use of logic cells, without needing the use of memory and specic blocks to perform the inherent operations for input elements. Furthermore, due to the intrinsic characteristics of the algorithm a scheme of timedivision multiplexing to perform the multiplications involved in the process is designed This processing scheme is feasible since the proposed model calculates sequentially the multiplications, so it is just necessary to use a single multiplier block for every neuron. These blocks can be implemented in two dierent ways, by combining logic cells or using specic blocks, the latter being the more ecient when using a DSP (digital signal processor) in each multiplier. Another strategy designed when the hardware implementation is performed has been to develop a lookup table plus a linear interpolation to approximate the transfer function. For this purpose a table where several equidistant values are stored of the sigmoid function and in order to reduce the error produced by rounding of the values a linear interpolation of the tabulated values is calculated, obtaining an absolute error below 0.001. The interpolation is possible to carry out without a signicant increase in resources since a multiplier block for operations in each neuron is available at the time of calculation due to described time-division multiplexing. This strategy has been modied to be also used in the implementation of the microcontroller, checking that a substantial improvement of the computing speed is obtained in this device. For both implementations, the data type representation has been modied from the classical oating point representation used in these type of models to xed-point representation, in order to reduce the used memory for the management of variables and for increasing the computation speed. Memory reduction is achieved when using an integer representation (also called xed point representation when a fractional part is used) because the number of bits used for representing the values can be optimized by the programmer while in general for the oating point cases the double oat representation is employed, that needs 64 bits. Speed reduction is intrinsic to data type, and even if powerful arithmetic-logic units for operations in oating point representation have been developed, their improvements are still inferior to using integer numbers. In a real hardware implementation the limitation in the size of the neural network architectures which can be simulated is determined by the used FPGA board. In our case, a Virtex V (XC5VLX110T) board has been employed, and by analyzing the characteristics of this device and the resources necessary for implementing a single neuron, it is observed that the main constraint for the current implementation is the number of available DSP blocks used to compute products related to a neuron output. The employed FPGA includes 64 DSP blocks so the total number of neurons that can be simultaneously implemented is 63 because one DSP block is required to perform the validation process. In order to demonstrate the correct implementation of the Backpropagation model both in the FPGA board and Arduino microcontroller several tests have been carried out, in particular by analyzing the evolution of the mean squared error for training, validation and test pattern sets. A comparison to the standard implementation of the algorithm on a PC is also carried out, checking that the level of error is similar for all considered cases. The use of a xed point representation for the implemented models in Abstract xxv the FPGA and microcontrollers may produce rounding eects larger than in the case of the PC application, but the results demonstrate that the representation used is long enough as the accuracy of the implemented models is not much aected. FPGA Implementation of the constructive algorithm C-Mantec In chapter 3 the FPGA implementation of a new constructive neural network algorithm named C-Mantec is analyzed. Unlike models based on the Backpropagation algorithm, C-Mantec generates the network architecture automatically while the training process is executed. Furthermore, this new algorithm generates very compact architectures with a single hidden layer of threshold neurons that permit to obtain very good predictive capabilities. Another dierence with the Backpropagation based architectures is that C-Mantec replaces the sigmoid function as output transfer function of the network by a majority function. Every neuron has a specic temperature ( Tfac ) which will decrease as the input data set is learned. Whenever an input pattern is misclassied and requires to be learned the neuron with the largest Tfac among those wrongly computing its output, modies its synaptic weights in order to learn the data. When the neuron in charge of carrying out the learning process has a Tfac too small so that the change of the synaptic weights of the architecture is almost negligible then the system adds one neuron to the network and all specic temperatures are reset. One of the main advantages of using this new algorithm is the fact that it avoids the problem of selecting the right architecture, as this process is performed automatically according to the complexity of the input data, with a further advantage regarding its robustness the parameter settings. The implementation has been designed aiming at reducing the use of resources and simplifying the whole process, with particular attention to the procedures of calculating the majority function, set of values of the specic temperature of every neuron and the multiplications necessary for the execution of the algorithm. The computation of the majority function is performed by comparing the number of active neurons in the hidden layer with the total number of neurons present in this layer divided by two, noting that this process can be carried out in only one clock cycle since the division by two of the total number of neurons can be implemented using a shift register. The calculation of the internal temperature of every neuron ( Tfac ) involves two procedures; the rst for computing the value of Tfac itself that in turn involves an exponential function which is implemented by using tabulated values plus a linear interpolation scheme, a similar method as described previously for the sigmoid function. The second procedure is dedicated to the selection of the neuron with the largest Tfac value (the candidate neuron that will try to learn the current input pattern), and for this task a series of comparisons is implemented in groups of 16 neurons, in order to optimize resource usage. The implementation of the C-Mantec algorithm involves several multiplications that are performed in a single block using a time-division multiplexing scheme for every neuron. Each of these products can be implemented with one specic block or by using combinational logic. This last option has been selected in this case due to the possibility of exporting the implementations to other dierent boards. Several tests on dierent benchmark data sets previously analyzed in several works have been performed, demonstrating that the obtained generalization using the new xxxii Índice 2.4.6. Comparación entre representación de datos en punto jo y punto otante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.5. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.6. Discusión y conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.7. Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3. Implementaciones FPGA del algoritmo de red neuronal constructivo C-Mantec 29 3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2. Algoritmos C-Mantec y constructivos . . . . . . . . . . . . . . . . . . . . 31 3.3. Implementación FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3.1. Bloque neurona . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3.2. Bloque patrón . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.3.3. Bloque Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.3.4. Detalles de la implementación . . . . . . . . . . . . . . . . . . . . 33 3.4. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.5. Discusión y conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.6. Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4. Repreogramación de nodos sensores/actuadores inteligentes en entornos cambiantes basados en un modelo de red neuronal 39 4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.2. El algoritmo de red neuronal constructivo C-Mantec . . . . . . . . . . . 41 4.3. La placa Arduino UNO . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.4. Implementación del algoritmo C-Mantec . . . . . . . . . . . . . . . . . . 42 4.4.1. Carga de patrones . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.4.2. Aprendizaje red neuronal . . . . . . . . . . . . . . . . . . . . . . 43 4.5. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.6. Casos de estudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.6.1. Sistema de alarma de fuego . . . . . . . . . . . . . . . . . . . . . 45 4.6.2. Predicción climática . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.6.3. Sistema detección de caidas . . . . . . . . . . . . . . . . . . . . . 47 4.7. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.8. Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5. Conclusiones y líneas de trabajo futuras 51 5.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.2. Líneas de trabajo futuras . . . . . . . . . . . . . . . . . . . . . . . . . . 55 6. Conclusions and future lines of research 57 6.1. Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 6.2. Lines of future research . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 A. Implementación del algoritmo de red neuronal constructivo en un microcontrolador Arduino UNO 63 B. Implementaciones FPGA de alta precisión de funciones de transfe- Índice xxxiii rencia de redes neuronales 73 C. Comparativa de implementaciones hardware dos algoritmos de aprendizaje de redes neuronaless 81 Bibliografía 95 Capítulo 1 Introducción 1.1. Conceptos generales previos 1.1.1. Redes Neuronales Articiales Las redes de neuronas articiales (ANN: Articial Neural Networks) son un paradigma de aprendizaje y procesamiento automático inspirado en el funcionamiento del sistema nervioso central de los animales (el cerebro en particular). Las ANN se presentan generalmente como un sistema de interconexionado de neuronas que calculan una respuesta a partir de un conjunto de estímulos de entradas. Un sistema de estas características se puede entender como procesadores paralelos masivamente distribuidos cuya función es almacenar conocimiento y representarlo para que esté disponible. Se basan en los siguientes principios: 1. El procesamiento de la información se ejecuta a través de múltiples elementos simples llamados unidades de proceso (neuronas). 2. Las neuronas están conectadas a través de conexiones sinápticas, las cuales transmiten las señales entre ellas. 3. Cada conexión sináptica entre dos neuronas tiene asociado un peso (peso sináptico) que tiene un efecto multiplicador sobre la señal transmitida. 4. Cada neurona dispone de una función de activación (o transferencia) para determinar su señal de salida. Historia 1943: Warren McCulloch y Walter Pitts publican un modelo de neurona que puede computar funciones aritméticas y lógicas [McCulloch y Pitts (1943)]. 1949: Donald Hebb plasma sus ideas sobre el aprendizaje neuronal en la conocida regla de Hebb. 1958: Frank Rosenblatt empieza el trabajo que conduce a la creación del concepto de perceptrón, siendo la red neuronal más antigua capaz de reconocer patrones [Rosenblatt (1962)]. 1 2 Capítulo 1. Introducción E1 ∑f(x) E2 En Entradas Neurona Salida W1 W2 Wn Pesos Sinápticos Figura 1.1: Representación de la arquitectura más básica de redes neuronales, un perceptrón simple con n entradas. 1960: Widrow y Ho desarrollan el ADALINE, que fue la primera aplicación industrial real. 1967: Marvin Minsky y Seymour Papert frenan esta primera etapa en el desarrollo de redes neuronales por la publicación sobre las limitaciones del perceptrón [Minsky y Papert (1969)]. 1982: Jhon Hopeld, con la publicación de su modelo [Hopeld (1982)] junto con la invención del algoritmo BackPropagation [Rumelhart et al. (1986)], consigue devolver el interés en el campo de la computación neuronal. 1987: Se celebra en San Diego la primera conferencia abierta sobre redes neuronales (IEEE International Conference on Neural Networks), con más de 1700 participantes, y se constituye la International Neural Network Society (INNS). 1988: Nace la revista Neural Networks; le siguen la revista Neural Computation en 1989 y la IEEE Transaction on Neural Networks en 1990. Posteriormente han ido apareciendo otras muchas y se han creado Institutos de Investigación y programas de formación en Neurocomputación. Estructura Una ANN está compuesta de elementos básicos de procesamiento (neuronas) que integran información desde múltiples entradas. Esta información es normalmente procesada mediante un sumador cuyo resultado actúa como entrada de una función de transferencia que calcula la respuesta de dicha neurona. La salida de una neurona se puede conectar a la entrada de otras mediante conexiones ponderadas (pesos sinápticos) que representan la ecacia de la sinapsis de las conexiones neuronales. En la Fig 1.1 se puede observar una representación del esquema más básico de una neurona arti- cial (perceptrón simple) . Las funciones de transferencias más utilizadas son la función escalón para salidas binarias y la función sigmoidea o la función tangente hiperbólica para salidas reales. Una red neuronal consiste en un conjunto de neuronas interconectadas de una forma especíca. El procesamiento en las ANN no reside solamente en el modelo de las neuronas sino en la manera en la que estas se conectan. Esta manera o estructura se conoce como arquitectura de la red y generalmente se organiza en grupos de neuronas llamados niveles o capas. Una de las arquitecturas más usadas es la de conexionado hacia delante 1.1. Conceptos generales previos 3 1 E1 E2 En Capa de entrada 2 o 1 2 p 1 q Capas ocultas Capa de salida Figura 1.2: Representación gráca de la estructura genérica de una arquitectura de red Feed-forward con n entradas 2 capas ocultas con o y p número de neuronas en cada capa y con q salidas. o feed-forward que consiste en una capa de entrada, que proporciona información a la red, una serie de capas ocultas, que mapean la información de las entradas y una capa de salida que proporciona la respuesta de la red. La Fig 1.2 representa un modelo genérico de ANN con una arquitectura de red Feed-forward. Propiedades El poder de cómputo de una red neuronal deriva principalmente de su estructura masivamente paralela y de su capacidad de aprendizaje y generalización. Además, las redes neuronales disponen de las siguientes propiedades y capacidades que las hacen especialmente atractivas [Haykin (1998)]: Sistemas distribuidos no lineales: Una neurona puede ser un elemento de proceso lineal o no lineal, con lo que una red neuronal también puede simular sistemas no lineales y caóticos. Relación entrada-salida: Las ANN son capaces de vincular una salida en función de unos parámetros de entrada bajo la premisa de aprendizaje supervisado. Adaptabilidad: Una red tiene capacidad de adaptación al entorno a través de la modicación del conjunto de pesos sinápticos que conforman la red. Autoorganización: Las ANN usan su capacidad de aprendizaje adaptativo para organizar la información que reciben durante el aprendizaje y/o la operación. Tolerancia a fallos: Una red neuronal es un sistema computacionalmente robusto con alta tolerancia a fallos. Su rendimiento se degrada lentamente bajo un funcionamiento adverso (pérdidas de neuronas). Implementación VLSI: Gracias al paralelismo intrínseco, las ANN pueden conseguir gran rapidez de cómputo en la realización de determinadas tareas, lo que permite que puedan ser aplicados a sistemas en tiempo real, permitiendo simular sistemas biológicos mediante circuitos de silicio. 4 Capítulo 1. Introducción Reglas de aprendizaje Una de las características más importantes de las redes neuronales es su capacidad de aprender interactuando con su entorno o con alguna fuente de información. El aprendizaje de la red es un proceso adaptativo mediante el cual se van modicando los pesos sinápticos de la red para mejorar el comportamiento de la misma. Se distinguen tres paradigmas de aprendizaje: Aprendizaje supervisado: Se dispone de un conjunto de patrones de entrenamiento para los que se conocen la salida deseada de la red. Un objetivo de este aprendizaje podría ser minimizar el error cuadrático medio cometido entre la salida de la red y la deseada. Aprendizaje no supervisado (competitivo o autoorganizado): Se dispone de un conjunto de patrones de entrenamiento pero no se conoce la salida que debe generar. La red por sí misma buscará su comportamiento más adecuado atendiendo a cierto criterio para encontrar estructuras o prototipos en el conjunto de patrones. Aprendizaje por refuerzo: basado en un proceso de prueba y error que busca maximizar el valor esperado de una función criterio conocida como una señal de refuerzo. Aplicaciones Las características de los modelos de sistema neurocomputacionales permiten que sean utilizadas en una gran variedad de aplicaciones, las cuales se puede enmarcar dentro de las siguientes categorías: Aproximación de funciones o análisis de regresión, incluyendo predicción de series temporales. Clasicación, comprendiendo reconocimiento de patrones y secuencias además de toma de decisiones. Procesamiento de datos, abarcando ltrado, agrupación, separación y compresión. Robótica, implicando manipulación directa y diseño de prótesis. Control, incluyendo control numérico por ordenador Algunas de las aplicaciones en las que las ANN son utilizadas son: predicciones del mercado nanciero debido al comportamiento no lineal del mismo [Bahrammirzaee (2010)]; diagnóstico médico para la predicción de enfermedades como el cáncer [Baena et al. (2013)]; tratamiento de imágenes como compresión de imágenes y video [Palomo et al. (2013)] o reconocimiento facial [Zhao et al. (2003)]; robótica [Chaoui et al. (2009)]; planicación y toma de decisiones en la teoría de juegos [Memmert y Perl (2009)], modelado de sistemas complejos en el sector energético [Kalogirou (2001)]. 1.1. Conceptos generales previos 5 3 LUT 3 LUT FA Bloques Lógicos Bloques I/O Interconexiones programablas Figura 1.3: Representación de la estructura básica de una FPGA, describiendo los elementos básicos que la componen como son los bloques lógicos, las interconexiones programables y los bloques de entrada salida 1.1.2. FPGA Una FPGA (Field Programmable Gate Array) es un circuito integrado semiconductor basado en una matriz de bloques de lógica congurables (CLBs) conectados entre sí, y a su vez, con celdas de entrada y salida (I/O) como puede observarse en la Fig. 1.3. Dichas interconexiones (también programables) forman una matriz de enrutado modi- cable según la funcionalidad necesaria por parte del usuario. Los CLBs se componen generalmente de varias tablas LUTs (Look-Up Table) cuyas salidas están multiplexadas y los bloques I/O comunican a la FPGA con el exterior. A diferencia de una ASIC (Application-Specic Integrated Circuit), en el que el dispositivo está diseñado a medida para una aplicación determinada, las FPGAs se pueden programar cambiando su conguración para un uso determinado. La lógica programable puede reproducir desde funciones tan sencillas, como las llevadas a cabo por una puerta lógica, hasta sistemas combinacionales complejos. Las FPGAs se utilizan en aplicaciones similares a los ASICs, y aunque son más lentas y presentan un mayor consumo de potencia, proporcionan la gran ventaja de ser reprogramables. Esta característica añade una enorme exibilidad al ujo de diseño y minimiza tiempos, coste de desarrollo y adquisición para pequeñas cantidades de dispositivos. Los lenguajes de descripción de hardware más empleados en el diseño de FPGAS son VHDL y Verilog. Ambos son lenguajes que permiten diseñar la FPGA desde un punto de vista abstracto, funcional, aunque también se puede denir la estructura del hardware a bajo nivel. Existen además componentes predenidos, los IPs, descritos en estos lenguajes para simplicar el diseño de la FPGA. Los principales fabricantes facilitan las herramientas para hacer más sencillo su proceso de diseño. 12 Capítulo 1. Introducción exibilidad y eciencia en los sistemas resultantes. Como contrapartida, este tipo de implementaciones requieren mucho más recursos de la FPGA [Dinu et al. (2010); Gomperts et al. (2010)]. En la actualidad, se ha extendido el uso de sistemas neurocomputacionales con esquema de aprendizaje on-chip en implementaciones hardware debido a que ha demostrado su superioridad en cuanto a la velocidad de cómputo ofreciendo sistemas más ecientes, aunque se hace evidente un incremento en la complejidad del diseño de las aplicaciones resultantes. Una vez decidido el esquema de aprendizaje on-chip como el más adecuado, se plantean diferentes estrategias para implementar ANN en dispositivos FPGAs. Las dos estrategias principales para este tipo de implementaciones son: 1. Mejorar y sacar mayor rendimiento de los algoritmos clásicos ampliamente utilizados en múltiples aplicaciones. Ejemplos de trabajos donde se adoptan esta estrategia son: Lotri£ y Buli¢ (2012): Realiza una variación del algoritmo BackPropagation para conseguir un incremento de la potencia de cálculo y eciencia del algoritmo. Para ello se sustituyen los multiplicadores, necesarios en este tipo de algoritmos, por una función aproximada más simple que requiere menos circuitería y que permite obtener mejores resultados sobre diferentes conjuntos de datos. Gomperts et al. (2011): Implementa una arquitectura del algoritmo de perceptrón multicapa BackPropagation minimizando los costes del hardware y maximizando el rendimiento, la precisión y la parametrización. Presenta además la implementación real de una aplicación de sistemas neurocomputacionales en tiempo real 2. Diseñar nuevos algoritmos que se adapten mejor al tipo de implementación utilizada optimizando la utilización de recursos disponibles. Algunos ejemplos son los trabajos de: Shawash y Selviah (2013): Describe una nueva implementación del algoritmo Levenberg-Marquardt, el cual es un algoritmo de aprendizaje no lineal que converge con precisión y rapidez. Como ejemplo, la función XOR es resuelta con tan sólo 13 iteraciones. Pan y Lan (2014): Presenta una variación del MLP en la que combina una tercera capa con un algoritmo genético y el método máxima pendiente para hacer una búsqueda global de los pesos sinápticos de forma más rápida y eciente. Bahoura (2014): Propone una red neuronal dinámica con arquitectura en pipeline de alta velocidad para el modelado del comportamiento del ampli- cador de potencia. La novedad de la arquitectura propuesta reside en una mayor frecuencia de funcionamiento, la latencia de salida inferior y menor grado de utilización de recursos. 1.3. Estado del arte 13 Mota Microcontrolador ADC Sensor 1 Sensor N Transmisor/Receptor Fuente Energía Figura 1.6: Representación gráca de una mota en la que los sensores envían información al microcontrolador para procesarla y este se comunica con el exterior mediante un Transmisor/Receptor 1.3.2. Redes de sensores inteligentes Los sensores (o detectores) son dispositivos que permiten la medición de variables químicas o físicas y las transforman en señales eléctricas, que son transmitidas por diferentes medios. Estos dispositivos son unidades autónomas que constan de un microcontrolador, una fuente de energía (usualmente una batería), un transmisor/receptor y un elemento sensor (Fig. 1.6). Las redes de sensores inalámbricas (WSN) están formadas por un grupo de sensores con ciertas capacidades sensitivas y de comunicación inalámbrica los cuales permiten formar redes ad hoc sin infraestructura física preestablecida ni administración central. Se conoce poco sobre el nacimiento de esta tecnología, ya que se produjo bajo el auspicio de la industria militar. El desarrollo moderno de pequeñas redes de sensores se remonta al proyecto Smartdust en 1998 y el proyecto de la NASA Sensor Webs. Aunque estos proyectos no tuvieron demasiada repercusión, el proyecto Smartdust desencadenó la ejecución de otros proyectos de investigación, NEST y CENS, desarrollados en la universidad de Berkeley, pioneros en este área de conocimiento y responsables de acuñar el término mota (mote) para referirse a los dispositivos nodo sensor. Hoy en día el esfuerzo en el desarrollo de las WSN se centra en solucionar los siguientes problemas: Cobertura: Existen diferentes estrategias que abordan el problema en la fase de implementación [Wang (2011)]: (i) estrategia basada en la fuerza bruta que consiste en distanciar o acercar las motas hasta que queden en una situación de equilibrio en el que se abarque el máximo espacio posible; (ii) estrategia del punto de cuadrícula, que consiste en dividir el área en cuadrículas y poner cada mota en el centro de una; (iii) estrategia de geometría computacional para la optimización, que usa principalmente el diagrama de Voroi y la triangulación de Delaunay. Desarrollo: Existen 3 niveles de abstracción en cuanto al diseño de la tecnología de WSN para facilitar la labor de los desarrolladores [Laukkarinen et al. (2012)]: nodo, red e infraestructura, siendo ésta última la más importante debido a que se reere típicamente al middleware de la red de sensores. El propósito principal de la abstracción de infraestructura es separar al usuario nal de la heterogeneidad de una red de sensores, haciendo el desarrollo de aplicaciones más rápido y fácil. 14 Capítulo 1. Introducción Consumo energético: La eciencia energética de una WSN es, quizás, el aspecto más importante a centrarse en el desarrollo de este tipo de tecnología, dado que la recarga de baterías en una red de cierto tamaño puede resultar una tarea altamente costosa en tiempo, por lo que un reto claro en este tipo de redes es reducir signicativamente el consumo energético de los dispositivos [Rault et al. (2014)]. Existen diferentes estrategias para reducir el consumo energético, siendo la más habitual la reducción de la transmisión de datos entre los nodos de la red, aunque existen otras vías para reducir el consumo como un enrutamiento energéticamente eciente, la optimización radio o la estrategia reposo/activación. Recientemente, en muchas aplicaciones se está considerado el equipamiento de los nodos sensores con un actuador, el cual convierte una señal eléctrica en un movimiento físico. Ejemplo de actuadores son algunos que incluyen válvulas que controlan el agua o la salida de gas, motores eléctricos que abran/cierren puertas y ventanas, interruptores para encender/apagar algún instrumento eléctrico o señales de alarma [Salarian et al. (2012)]. La red sensor/actuador inalámbrica (WSAN) resultante no sólo se compone de nodos de sensores que miden parámetros especícos sino que algunos de ellos tienen la capacidad de actuar sobre el medio ambiente, siendo una característica de este tipo de nodos la necesidad de una cantidad superior de recursos [Melodia et al. (2007)]. En ciertos escenarios donde las variables a sensar evolucionan con el tiempo, la programación original de sensores/actuadores puede conducir a decisiones incorrectas, por lo que es necesario cambiar o adaptar el proceso de toma de decisiones a las nuevas condiciones [Sayed-Mouchaweh y Lughofer (2012)]. La solución tradicional pasa por enviar los datos sensados a una unidad central, donde una persona los interpreta y vuelve a programar el microcontrolador con el nuevo conjunto de reglas Han et al. (2005); Wang et al. (2006); Shaikh et al. (2010). Se han propuesto diferentes técnicas de reprogramación dinámica para cambiar el comportamiento de los sensores sin tener que reprogramar manualmente, ya que la reprogramación tradicional requiere en la mayoría de los casos la interrupción del proceso para cargar el nuevo código binario, con la consiguiente pérdida de tiempo y energía que participan en el proceso de comunicación entre la unidad central [Rassam et al. (2013); Aiello et al. (2011)]. Un primer paso hacia la reducción de los efectos anteriores ha sido la incorporación de sistemas de aprendizaje automático en el proceso de toma de decisiones, la automatización de la respuesta del microcontrolador sin interrumpir su ejecución y el envío de sólo una pequeña fracción de código para el microcontrolador [Urda et al. (2012); E. Cañete et al. (2012); Farooq et al. (2010)]. Sin embargo, los recientes avances en la potencia de cálculo de los microcontroladores permite la inclusión de sistemas de aprendizaje on-chip, adaptando el comportamiento de sensores/actuadores dinámicamente según los datos sensados [Aleksendri¢ et al. (2012); Mahmoud et al. (2013)]. 1.4. Objetivos 15 1.4. Objetivos Esta tesis doctoral tiene como objetivo avanzar en el conocimiento cientíco y tecnológico necesario para el diseño e implementación de modelos neurocomputacionales en dispositivos hardware especícos (microcontroladores y FPGAs), con el n de permitir su utilización en aplicaciones de sistemas en tiempo real y redes de sensores. Se investigan y desarrollan estrategias de diseño para los dispositivos que maximicen la eciencia en la utilización de recursos, por lo que se evalúan posibles alternativas al clásico algoritmo de aprendizaje para redes neuronales articiales (algoritmo Backpropagation) utilizado habitualmente en las aplicaciones que precisan neurocomputación. Una alternativa clara parece ser los algoritmos constructivos de red neuronal (CoNN: Constructive Neural Networks) [Franco et al. (2010)], debido a que generan de forma automáticas arquitecturas de red compactas que consumen signicativamente menos recursos del dispositivo. De forma más detallada, esta tesis busca alcanzar los siguientes objetivos parciales: Analizar el algoritmo de red neuronal BackPropagation con la nalidad de evaluar las fortalezas y deciencias de éste para su diseño e implantación en los dos dispositivos hardware a analizar (FPGA y Microcontroladores). Desarrollar y evaluar diferentes técnicas de optimización del algoritmo para cada dispositivo y comparar dichos resultados con una programación tradicional realizada sobre un PC, con el n de comprobar la mejoría en eciencia de las técnicas propuestas. Evaluar una alternativa al algoritmo BackPropagation para realizar diferentes implementaciones sobre los dos dispositivos hardware estudiados con el objetivo de maximizar el uso de recursos en cada uno de ellos. (i) Analizar los algoritmos constructivos de red neuronal que generan arquitecturas de red de forma automática como alternativa para los modelos neurocomputacionales. (ii) Estudiar el nuevo algoritmo C-Mantec [Subirats et al. (2012)] con la función mayoría como función de salida de la red para comprobar si existe una reducción de la complejidad del modelo que repercuta en la simplicidad de la implementación hardware. Realizar un estudio exhaustivo de una implementación eciente en una FPGA, sobre VHDL, del algoritmo C-Mantec a n de evaluar su posible utilización en aplicaciones de sistemas en tiempo real. Desarrollar estrategias de diseño del algoritmo para reducir los recursos empleados en su implementación que, sin alterar la integridad del algoritmo, modiquen la complejidad de los procedimientos. Además realizar un análisis de los tiempos empleados en el proceso de aprendizaje así como de la explotación del modelo, dado que estas variables van a determinar la viabilidad de utilización de la implementación resultante como sistema en tiempo real. Evaluar una implementación del algoritmo C-Mantec sobre una placa microcontroladora especíca (Arduino UNO) para su utilización en redes de sensores. El objetivo principal es conseguir un aumento signicativo en el tamaño de las arquitecturas resultantes así como reducir la memoria utilizada del dispositivo. Otro objetivo es evaluar dicha implementación en aplicaciones reales de redes de sensores como la predicción microclimática, la gestión de alarmas de emergencia y los sensores de caídas. 16 Capítulo 1. Introducción 1.5. Estructura de la tesis Tras este capítulo introductorio, la memoria de esta tesis se encuentra estructurada en los siguientes cinco capítulos. El capítulo 2 expone la implementación del algoritmo BackPropagation en dos dispositivos hardware como son el microcontrolador y la FPGA, especicando las singularidades de dicho algoritmo para poder diseñar diferentes técnicas con el objetivo de conseguir implementaciones ecientes desde el punto de vista de la velocidad de cómputo y recursos. Se realiza además una comparativa para conocer si esta implementación mejora a las tradicionales de este algoritmo realizadas en un PC. En el apéndice B se describe detalladamente una de las técnicas utilizadas para maximizar la eciencia, la implementación por medio de tablas de búsqueda e interpolación lineal de las funciones de transferencias usadas en este tipo de algoritmos. El capítulo 3 describe la implementación de un nuevo algoritmo de red neuronal constructivo, C-Mantec, en una FPGA con el n de mejorar la velocidad de los cálculos neurocompuacionales. Las características especícas de este nuevo algoritmo hace de él un candidato idóneo para la implementación hardware debido a la reducción de las arquitecturas que genera y a la simplicidad de su estructura, sin perder capacidad de generalización respecto a los algoritmos tradicionales y comprobando que las velocidades de cómputo son más elevadas que las conseguidas en un PC. En el apéndice C se describe una comparativa de la implementación hardware del algoritmo C-Mantec en comparación con la del algoritmo Backpropagation, describiendo las ventajas y desventajas de las dos implementaciones hardware. El capítulo 4 estudia y diseña una red de sensores inteligentes para su uso en aplicaciones donde las condiciones ambientales evolucionan con el tiempo. Se implementa el novedoso algoritmo de red neuronal constructivo C-Mantec en un microcontrolador Arduino UNO, con el n de dotar de inteligencia a los nodos sensores y que éstos puedan reprogramarse de forma automática sin necesidad de interacción exterior ahorrando un coste en tiempo y energía. Este proceso está basado en trabajos preliminares recogidos en el apéndice A. Como resultado se demuestra que esta implementación es más eciente al ser desarrollada con éxito para para tres casos de estudios especícos de la vida real. Finalmente, el capítulo 5 expone las conclusiones derivadas de esta tesis doctoral junto a las posibles líneas futuras de trabajo en este campo. Capítulo 2 Implementaciones ecientes del algoritmo Backpropagation en FPGAs y microcontroladores Francisco Ortega-Zamorano, José M. Jerez, Daniel Urda, Rafael Luque-Baena and Leonardo Franco : Ecient implementation of the Backpropagation algorithm in FPGAs and microcontrollers. IEEE Transactions on Neural Networks and Learning Systems (IN PRESS). Posición JCR: Q1 (7/121) en Computer science: Articial Intelligence. Q1 (11/248) en Engineering: Electrical & Electronic. Factor de impacto: 4,370 Resumen: El algoritmo de aprendizaje BackPropagation, el cual ha sido ampliamente analizado en múltiples estudios, se ha implementado en una FPGA y en un microcontrolador de forma eciente en términos de uso de recursos y velocidad de cómputo. El planteamiento utilizado en ambos casos para evitar el sobreentrenamiento ha sido la estrategia entrenamiento/validación/testeo. Para el caso especíco de la implementación hardware en la FPGA se ha introducido un nuevo diseño de una neurona que combina los elementos de la entrada con las funcionalidades de la primera capa oculta, permitiendo reducir drásticamente el número de recursos hardware utilizados; además, se ha introducido un esquema de división en el tiempo para realizar todas las multiplicaciones implicadas en el algoritmo con un solo bloque multiplicador para cada neurona. Para ambas implementaciones se ha redenido la representación del tipo de datos utilizados pasando de la clásica representación en punto otante, utilizada en este tipo de modelos, a la representación de punto jo, consiguiendo así una reducción en la memoria utilizada para almacenar las variables del proceso y un aumento en la velocidad de procesamiento. Los resultados muestras que las modicaciones propuestas producen un claro incremento de la velocidad de cómputo en comparación con la implementaciones estándar realizadas en un PC, demostrando la utilidad del paralelismo intrínseco de una FPGAs en las tareas neurocomputacionales y la idoneidad de ambas implementaciones del algoritmo para problemas del mundo real. 17 Capítulo 3 Implementación en una FPGA del Algoritmo constructivo de red neuronal C-Mantec Francisco Ortega-Zamorano, José M. Jerez and Leonardo Franco : FPGA Implementation of the C-Mantec Neural Network Constructive Algorithm. IEEE Transactions on Industrial Informatics 10(2): 1154-1161 (2014). Posición JCR: Q1 (1/102) en Computer science: Interdisciplinary applications. Q1 (1/43) en Engineering: Industrial. Factor de impacto: 8,785 Resumen: Se ha realizado la implementación hardware en una FPGA del algoritmo recientemente propuesto de red neuronal constructivo (CoNN: Constructive Neural Networks) C-Mantec que genera arquitecturas muy compactas y con una muy buena capacidad de generalización. Una clara diferencia del algoritmo CMantec con respecto a la mayoría de las implementaciones de redes neuronales basadas en el algoritmo Backpropagation es que el algoritmo C-Mantec genera la arquitectura de red automáticamente, añadiendo neuronas conforme el modelo requiera arquitecturas más grandes para aprender el conjunto de datos de la aplicación; además, no precisa de capa de salida con lo que resta complejidad a la estructura de la red. Todos los pasos involucrados en la ejecución (incluyendo la fase de aprendizaje) se han descrito con detalle realizando un análisis en profundidad de los resultados que presentan claramente un incremento en la velocidad de cálculo en comparación con las implementaciones estándares realizadas mediante un ordenador personal, lo que demuestra la utilidad del paralelismo intrínseco de FPGAs en las tareas neurocomputacionales y la idoneidad de la versión de hardware del algoritmo de C-Mantec para su aplicación a los problemas del mundo real. 19 Capítulo 4 Reprogramación de sensores inteligentes en entornos cambiantes usando un modelo de red neuronal Francisco Ortega-Zamorano, José M. Jerez, José Luis Subirats, Ignacio Molina and Leonardo Franco : Smart sensor/actuator node reprogramming in changing environments using a neural network model. Engineering Applications of Articial Intelligence 30: 179-188 (2014). Posición JCR: Q2 (31/121) en Computer science: Articial Intelligence. Q1 (15/87) en Engineering: Multidisciplinary. Factor de impacto: 1,962 Resumen: Las técnicas desarrolladas en la actualidad como método para la actualización de los nodos de sensores requieren generalmente del uso de reprogramación; si éstos se encuentran en entornos cambiantes dicha reprogramación podría llegar a ser habitual, incrementando de forma sustancial los costes en términos de energía y tiempo. El trabajo presenta una alternativa al enfoque tradicional para la reprogramación de nodos sensores/actuadores en entornos cambiantes basada en un esquema de aprendizaje en el propio sensor para que de forma automática adapte el comportamiento a las condiciones del entorno. El modelo de aprendizaje propuesto se basa en el C-Mantec, un nuevo algoritmo de red neuronal constructivo especialmente adecuado para las implementaciones del microcontrolador, ya que genera arquitecturas de tamaño muy compacto reduciendo signicativamente el uso de memoria del microcontrolador. La placa seleccionada ha sido el Arduino UNO, una placa microcontroladora muy popular de código abierto, económica y eciente. Además este trabajo aporta un análisis en profundidad de las soluciones adoptadas para superar las limitaciones de recursos hardware en la implementación del algoritmo de aprendizaje junto con una evaluación de la eciencia de este enfoque, probando el algoritmo en un conjunto de datos de funciones de referencia. Finalmente la utilidad y versatilidad del sistema se prueban en tres casos de estudios de diferente naturaleza en los cuales las condiciones ambientales evolucionan con el tiempo, cambiando el comportamiento del sistema. 21 Capítulo 6 Conclusions and future lines of research 6.1. Conclusions We have analyzed in this thesis the implementation of two dierent neural network models (C-Mantec and Back-propagation algorithms) in FPGA and microcontroller devices, and now we present in this chapter the nal conclusions and possible future extensions of the work done. Neurocomputational models for real time systems At the time of the implementation of neurocomputational models for real time systems on a FPGA board there are at least two possible strategies: adapt an existing neural model to the hardware resources trying to optimize resource usage, and secondly develop a new algorithm taking into account the characteristics of the FPGA. With these two dierent strategies in mind, we have analyzed in this work the Backpropagation and C-Mantec neural models, studying their adaptation and performance for FPGA boards. The Backpropagation algorithm has been eciently implemented in a FPGA board using an on-chip learning scheme that includes a validation process to avoid over- tting; and several optimization strategies have been developed in order to minimize resource usage. In particular, a new type of neuron named Inp-Hid layer has been created. This new element incorporates the functions from both the input elements and the rst hidden layer neurons, reducing drastically the needed resources, especially in architectures with a large number of inputs. Furthermore, the use of a time-division multiplexing scheme for implementing a multiplier block, together with a scheme based on tabulation plus interpolation of values for the computation of the sigmoid function has enabled a saving of more than 25% in the number of logic cells used and 50% in specic blocks in comparison to previous published results. An important aspect of the implemented modications is that they allow for a substantial increase in the maximum number of neurons that can be included in a network architecture. An analysis of the developed implementation in terms of the constraints imposed by the available resources of the used FPGA board (Xilinx Virtex V) indicates that the main limitation regarding the maximum number of neurons that can be created is the number of DSP 29 30 Capítulo 6. Conclusions and future lines of research specic blocks included in the board, as each neuron requires one DSP block for its implementation. In order to check for the correct implementation of the Backpropagation algorithm in the FPGA board, a comparison with the original PC implementation of the algorithm is carried out. It is observed that the mean square error evolves in the same manner in both cases, existing small dierences as training errors are lower for the PC implementations, fact that can be justied by rounding errors present in the FPGA implementation that do not aect the predictive accuracy. Regarding computational times, training a neural model using the FPGA code is about 100 times faster than using the PC one. As a partial conclusion regarding hardware implementations based on existing algorithms we say that neural models should be adapted and modied to suit the device but taking care of not aecting the model structure. In particular in our specic case, it has been possible to maximize the available resources and at the same time reduce signicantly the computational times. As an alternative to the traditional Backpropagation algorithm, we have studied a second neurocomputational model for its FPGA hardware implementation. The selected algorithm is C-Mantec, a neural network constructive model that generates the architecture automatically as training is performed leading to compact neural architectures with very good predictive capabilities. The algorithm has been completely implemented (on-chip learning scheme) in a FPGA board, adapting it specically for this device. The correct implementation of the algorithm has been checked by analyzing and comparing the training and generalization error curves for well-known Boolean data sets, observing besides its proper operation a decrease in the training times in relation to the PC implementation. A detailed examination of these times shows that the number of times an FPGA is faster than a computer is proportional to the size of the resultant architecture, and as the computing time for a PC grows exponentially as neurons are added to the hidden layer while linearly for the FPGA, in some cases, results up to 47 times faster can be observed for the more complex architectures. Several tests with the previously mentioned data sets conrm that the used data type representation (xed point) is sucient to achieve similar results to those obtained from a PC using a oating point representation. In comparison with the hardware implementation of the Backpropagation algorithm, C-Mantec performance is 15% more ecient in terms of used hardware resources permitting to create for a given FPGA board larger neural networks. In addition, the execution of the C-Mantec algorithm needs shorter length for the data representation in order to operate correctly, indicating as expected that C-Mantec is less sensitive to number precision than Backpropagation. To complete the comparison between both algorithms FPGA implementation training time are signicantly lower for the C-Mantec algorithm, and in particular the runtime of the network (after the training phase is done) is signicantly lower for this algorithm, an important advantage at the exploitation phase of the algorithm. The observed results conrm the suitability of the C-Mantec algorithm as a valid neurocomputational model for its implementation in FPGA boards, demonstrating the potential advantages of FPGAs to act as hardware accelerator devices for application to real-world industrial problems. 6.1. Conclusions 31 Smart sensor networks Smart wireless sensor networks is another type of technology that we have analyzed for the application of neurocomputational models, with the aim of providing intelligence to the decision making process that it is needed in order for systems to adapt to changing environments. The implementations of the two previously studied algorithms have been analyzed in order to demonstrate their suitability for the application in sensor networks. Backpropagation and C-Mantec algorithms have been implemented in an Arduino board with on-chip learning scheme. The data type representation has been changed from traditional oating-point representation used in this type of algorithms to xed-point representation with the idea of reducing memory storage and in order to build as large as possible neural architectures. To verify the correct implementation two data sets have been employed and the obtained results have been compared with the theoretical results. A small reduction in accuracy is observed for the generalization of data sets due mainly to the eects of rounding in the data type representation without altering the eectiveness of the resultant neurocomputational model. In addition, for the specic case of the C-Mantec algorithm where the network architecture is generated automatically it can be observed that the resultant architectures are slightly larger than for the PC implementation, being this eect caused by rounding. Nevertheless, the increase does not aect the generalization ability. Further, we have carefully analyzed the learning computational times for the two types of data representation in both algorithms. An increase in speed between 8 and 18 is obtained for the Backpropagation algorithm, while up 5 times improvement is obtained for the C-Mantec algorithm using 8 bits in the decimal part of the xed point representation in comparison to the oating point one. The obtained results enable to build on-chip learning schemes that permits to implement the neurocomputational models in the microcontroller, that allows for their use in wireless sensor networks in autonomous mode. Furthermore, the C-Mantec algorithm has been employed in a sensors/actuators network for three case studies to demonstrate the eciency and versatility of the resultant application. Case studies are dened problems in changing environments where a sensor/actuator should be adjusted accordingly to the observed changes, requiring a re-training of the neural network model that controls the decision process. The observed reprogramming times are signicantly short in the three cases, and therefore the power consumption of the device is also quite low. Even without a thorough comparison with the traditional case where the new code should be transmitted from a central control unit, the results highlight a noteworthy reduction in energy supply, very important quality in this type of technology due to the short life of batteries. As part of result, it has demonstrated the suitability of C-Mantec algorithm to operate with using a microcontroller Arduino UNO on concrete applications for complex tasks. Even more, given the availability of similar devices with much more hardware resources, this study conrms the potential of the proposed algorithms for their application in real tasks where sensors/actuators are required. Final Conclusion As an overall conclusion of this thesis, it can be said that the problems analyzed together with the obtained results give a complete overview of the features to take into account for carrying out neurocomputational implementations in the two studied technologies (real-time systems and sensor networks). After the detailed analysis done, 32 Capítulo 6. Conclusions and future lines of research it can be concluded that neurocomputational models can be used in real-time systems and sensor networks applications, in cases where is better to use alternative devices rather than traditional PCs. It has been shown that it is possible to implement dierent neural network models on FPGA boards and microcontrollers obtaining much faster computational times than when the same models are implemented on a PC. Further, it has also been demonstrated that while adaptations made to known algorithms (the Backpropagation algorithm in our case) can make them much more ecient for their implementation in non PC hardware device, the use of alternative models like C-Mantec can be more suitable for FPGAs and microcontrollers, permitting to build larger network architectures with shorter response times. 6.2. Lines of future research Given the variety of applications which can be used according to the studied implementations, many possible lines of research can be carried on in the future. Some of them have already begun and others could start in the future in order to improve the exposed data. Some items could be the following: Progressing in the hardware implementation of the Backpropagation algorithm in order to allow architectures of neural network of N hidden layers, where N is a non-predetermined large number. This process requires designing a single hidden layer with the functionality of every layer, and then this layer would be able to simulate the whole architecture with N iterations. This implementation could be used with an evolutionary algorithm in order to generate optimal network architectures for dierent input data sets. Analyzing the possibility of using other neurocomputational models with other learning rules to design decision-making in smart sensor networks. A selforganizing map (SOM), that is trained using unsupervised learning, seems a suitable neural network for these devices because the model does not require knowing the output of data sets since the model is modied according to the structure of these sets. So it is not necessary to store the above data, being a saving of resources and time by not using the memory and its management. Investigating the possibility of using FPGAs as hardware accelerator boards of other complex systems with a need for very high computation. The Ising model is proposed to study the behavior of ferromagnetic materials that evaluates the behavior of each particle as a function of its neighbors'physical model. In systems that need to know the status of all the neighbors to know the behavior of a single particle, processing can take a huge amount of time. A application based on an FPGA system can reduce the time taken to model the ferromagnetic behavior. Exploring the possibility of new real applications to networks of intelligent sensors. An application startup is to use neurocomputational models for the control of urban gardens that require a very thorough control of water resources. Every seed and every plant require dierent irrigation based on microclimatic conditions; neurocomputational models eliminate the need for a prior study and can make automatic control of such a complex system of plantation. 6.2. Lines of future research 33 Analyzing the possibility of using neurocomputational systems in real time on complex areas. One possibility would be to develop a system of stabilization in quadricopter that allows quick adaptation to structural changes in the device such as the loss of a rotor or inclement weather. Apéndice A Implementación del algoritmo de red neuronal constructivo en un microcontrolador Arduino UNO Francisco Ortega-Zamorano, José Luis Subirats, José M. Jerez, Ignacio Molina, Leonardo Franco : Implementation of the C-Mantec Neural Network Constructive Algorithm in an Arduino Uno Microcontroller. Lecture Notes in Computer Science 7902, pp. 80-87, (2013). ISBN: 978-3-642-38678-7. Resumen: Un algoritmo constructivo propuesto recientemente de red neuronal, denominado C-Mantec, se diseña de forma íntegra (proceso de aprendizaje incluido) para una placa microcontroladora Arduino UNO. Dicho algoritmo genera arquitecturas de red muy compactas con buenas capacidades de predicción que lo hacen idóneo para ser implementado en un microcontrolador a n de ser usado como dispositivo neurocomputacional sin necesidad de transmitir información a una unidad de control central para efectuar el proceso de aprendizaje. Se detalla la implementación de los procesos más complejos y se realiza un análisis del correcto funcionamiento de la aplicación resultante mediante la veri- cación del aprendizaje de un conjunto de datos de referencia usados normalmente en el diseño de circuitos. 35 Apéndice B Implementaciones FPGA de alta precisión de funciones de transferencia de redes neuronales Francisco Ortega-Zamorano, José M. Jerez, Gustavo Júarez, Jorge O. Pérez and Leonardo Franco : High precision FPGA implementation of neural network activation functions. Proceedings of the IEEE Symposium Series on Computatitional Intelligence (SSCI'2014), pp. 55-60, (2014). ISBN: 978-1-4799-4486-6. Resumen: Las implementaciones hardware de modelos neurocomputacionales en FPGAs requieren afrontar varios problemas que afectan en gran medida al resultado nal del sistema para disponer de aplicaciones ecientes. Uno de los más evidentes es el cálculo de la función de transferencia de la neurona. Se ha efectuado un análisis de las implementaciones de las funciones Sigmoidea y exponencial en las que se ha utilizado una estructura que consiste en tabular los valores de la función combinada con un procedimiento de interpolación lineal. Además se ha utilizado un esquema de división en el tiempo para el bloque multiplicador con el objetivo de implementar un solo bloque por neurona, para ejecutar todas las multiplicaciones asociadas al algoritmo para ahorrar recursos de la placa. Los resultados se han evaluado en términos de error absoluto y relativo obtenidos para la aproximación y a través de un factor de calidad, demostrando una clara mejoría en relación a los trabajos publicadas con anterioridad. 37 44 Bibliografía Salarian, H. , Chin, K.-W. y Naghdy, F. Coordination in wireless sensor/actuator networks: A survey. Journal of Parallel and Distributed Computing , vol. 72(7), páginas 856  867, 2012. Savich, A. W. , Moussa, M. y Areibi, S. The impact of arithmetic representation on implementing mlp-bp on fpgas: A study. IEEE Transactions on Neural Networks , vol. 18, páginas 240252, 2007. Sayed-Mouchaweh, M. y Lughofer, E. Learning in non-stationary environments: Methods and Applications . Springer, New York, 2012. Shaikh, R. , Thakare, V. y Dharaskar, R. Ecient code dissemination reprogramming protocol for wsn. International Journal of Computer and Network Security , vol. 2(2), páginas 116122, 2010. Shawash, J. y Selviah, D. Real-time nonlinear parameter estimation using the levenberg-marquardt algorithm on eld programmable gate arrays. IEEE Transactions on Industrial Electronics , vol. 60(1), páginas 170176, 2013. Subirats, J. , Franco, L. y Jerez, J. C-mantec: A novel constructive neural network algorithm incorporating competition between neurons. Neural Networks , vol. 26, páginas 130140, 2012. Urda, D. , Canete, E. , Subirats, J. L. , Franco, L. , Llopis, L. y Jerez, J. M. Energy-ecient reprogramming in wsn using constructive neural networks. International Journal of Innovative, Computing, Information and Control , vol. 8, páginas 75617578, 2012. Wang, B. Coverage problems in sensor networks: A survey. ACM Comput. Surv. , vol. 43(4), páginas 32:132:53, 2011. Wang, Q. , Zhu, Y. y Cheng, L. Reprogramming wireless sensor networks: challenges and approaches. Network, IEEE , vol. 20(3), páginas 4855, 2006. Zhao, W. , Chellappa, R. , Phillips, P. J. y Rosenfeld, A. Face recognition: A literature survey. ACM Comput. Surv. , vol. 35(4), páginas 399458, 2003.