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.
© 2001-2024 Fundación Dialnet · Todos los derechos reservados