Entrenamiento de una red neuronal hardware desde Matlab (Hardware In The Loop)

Lasarte Zapata, Eduardo (2017). Entrenamiento de una red neuronal hardware desde Matlab (Hardware In The Loop). Proyecto Fin de Carrera / Trabajo Fin de Grado, E.T.S.I. Industriales (UPM), Madrid.

Descripción

Título: Entrenamiento de una red neuronal hardware desde Matlab (Hardware In The Loop)
Autor/es:
  • Lasarte Zapata, Eduardo
Director/es:
  • Moreno González, Félix Antonio
  • Aledo Ortega, David
Tipo de Documento: Proyecto Fin de Carrera/Grado
Grado: Grado en Ingeniería en Tecnologías Industriales
Fecha: Febrero 2017
Materias:
Escuela: E.T.S.I. Industriales (UPM)
Departamento: Automática, Ingeniería Eléctrica y Electrónica e Informática Industrial
Licencias Creative Commons: Reconocimiento - Sin obra derivada - No comercial

Texto completo

[img]
Vista Previa
PDF (Document Portable Format) - Se necesita un visor de ficheros PDF, como GSview, Xpdf o Adobe Acrobat Reader
Descargar (2MB) | Vista Previa

Resumen

Las redes neuronales artificiales son un algoritmo inspirado en las neuronas biológicas por la manera en las que estas tratan la información, y por el hecho de que están compuestas por varios nodos o neuronas conectados entre sí. Las entradas que llegan a la red se propagan a través de ella con un sencillo algoritmo hasta obtener las salidas de la red. La principal característica de este algoritmo es su capacidad para aprender. Las redes neuronales artificiales sirven para modelizar sistemas sin tener que programarlos específicamente. Es decir, ante una entrada determinada, la red dará una salida en función de lo aprendido. Por tanto, antes de poder utilizar una red neuronal artificial se debe realizar una etapa de aprendizaje o entrenamiento en la que se modifican unos valores esenciales en el desarrollo del algoritmo: los pesos y bias. En función de estos parámetros la red dará una salida u otra para las mismas entradas. Es por esto que el objetivo del entrenamiento es encontrar los valores óptimos de los pesos y bias para la aplicación en la que se vaya a utilizar la red neuronal artificial. Una vez entrenada, la red ya está lista para su utilización. En el empleo de las redes neuronales artificiales se implican por tanto dos etapas fundamentales: la etapa de entrenamiento o aprendizaje y la etapa de funcionamiento. En la etapa de entrenamiento se utilizan principalmente dos algoritmos: backpropagation y feedforward, mientras que en la etapa de funcionamiento sólo se realiza el algoritmo de feedforward. Las redes neuronales artificiales tienen una estructura que facilita el tratamiento de datos en paralelo. Las FPGAs son dispositivos hardware con gran capacidad de paralelización, por lo que implementando las redes neuronales artificiales en una FPGA se consigue obtener mejores rendimientos que en software. El algoritmo de feedforward es fácilmente implementable en hardware. Sin embargo, el backpropagation, dada su complejidad, no es viable implementarlo en una FPGA. Por tanto, es frecuente la implantación de la etapa de funcionamiento en hardware, pero la realización de la etapa de entrenamiento en software. El objetivo de este Trabajo de Fin de Grado es implementar la parte de feedforwad del entrenamiento en una FPGA y la parte de backpropagation en software. Sin embargo, la salida de un algoritmo es la entrada del otro, por lo que se requiere una comunicación constante entre ambos. Para realizar esto se ha utilizado un proceso llamado FPGA-in-the-loop, que consiste en comunicar el hardware con el software de manera continua. Para ello se ha usado la toolbox de Matlab HDL Verifier. Con ella se ha conseguido realizar el proceso de FPGA-in-the loop, comunicando de esta forma Matlab con la FPGA. Una vez hecho esto, se ha adaptado el código VHDL de feedforward para poder utilizarlo con FPGA-in-the-loop. Después, se han creado unos algoritmos de Matlab para gestionar las entradas y salidas de la FPGA, y de esta manera obtener los datos necesarios para continuar con el entrenamiento en la parte de backpropagation. Finalmente, se han realizado pruebas para comparar el tiempo de realización del feedforward del entrenamiento en software con el tiempo invertido para realizarlo con FPGA-in-the loop. Los resultados obtenidos no han sido satisfactorios, ya que con el sistema de FPGA-in-the loop se han obtenido tiempos de entrenamiento 100 veces mayores que con software. El motivo principal de esta diferencia es la comunicación entre el ordenador y la FPGA. A día de hoy, HDL Verifier no permite enviar y recibir datos lo suficientemente rápido como para que resulte eficiente utilizarlo para entrenar una red neuronal artificial. Por tanto, para acelerar el entrenamiento la única opción a corto plazo es optimizar el software existente. Sin embargo, a largo plazo pueden esperarse mejoras en la comunicación de los datos entre hardware y software que permita implementar el FPGA-in-the-loop en el entrenamiento de una red neuronal artificial de forma eficiente.

Más información

ID de Registro: 45516
Identificador DC: http://oa.upm.es/45516/
Identificador OAI: oai:oa.upm.es:45516
Depositado por: Biblioteca ETSI Industriales
Depositado el: 19 Abr 2017 06:30
Ultima Modificación: 19 Abr 2017 06:30
  • Open Access
  • Open Access
  • Sherpa-Romeo
    Compruebe si la revista anglosajona en la que ha publicado un artículo permite también su publicación en abierto.
  • Dulcinea
    Compruebe si la revista española en la que ha publicado un artículo permite también su publicación en abierto.
  • Recolecta
  • e-ciencia
  • Observatorio I+D+i UPM
  • OpenCourseWare UPM