Está en la página 1de 8

DISEO Y SIMULACIN DE UNA RED NEURONAL EN VHDL Y SU APLICACIN EN FILTRADO DE UN ELECTROCARDIOGRAMA

Aguirre Miguel(1),
(1)

Franco Zulay(2)

Pateti Antonio(2)

Superintendencia de Mantenimiento Elctrico e Instrumentacin Ferrominera Orinoco (2) Universidad Nacional Experimental Politcnica Antonio Jos de Sucre Vice-Rectorado Puerto Ordaz. Departamento de Ingeniera Electrnica, Centro de Diseo Microelectrnico E-mail: miguelaguirreleon@gmail.com

Resumen: En este artculo se presenta el diseo y simulacin en VHDL de una red neuronal de tipo Backpropagation utilizada para la cancelacin de interferencias de 60 Hz en la seal electrocardiogrfica. (ECG). Se presenta en primer lugar el algoritmo de simulacin de la Red Neuronal diseada mediante MATLAB, como base para el desarrollo de la arquitectura en VHDL. El proceso de simulacin funcional del cdigo VHDL sintetizable se llev a cabo sobre el entorno de Modelsim. El muestreo de la seal se realiz a 250 Hz usando 8 bits de resolucin para las muestras. La discretizacin de los pesos de la red neuronal y los clculos se realizaron en punto decimal fijo. En la simulacin del modelo en MATLAB se obtuvo un error cuadrtico medio de 6,8E-5 para una seal de electrocardiograma de amplitud de 1 voltio. En la modelacin y simulacin en VHDL se obtuvieron resultados similares. Palabras clave: Red Neuronal/ VHDL/ Simulacin/ Interferencia/ Filtro.

DESIGN AND SIMULATION OF A NEURAL NETWORK USING THE VHDL LANGUAGE AND ITS APLICATION IN THE FILTERING OF ELECTROCARDIOGRAM SIGNAL
Abstract: In this article is presented the design and simulation of a VHDL model of a Backpropagation neural network for the cancellation of interferences of 60 Hz in the electrocardiogram signal (ECG). This is presented in first place with a simulation algorithm of the Neural Network using Matlab, as the base for the development of a VHDL architecture. The process of functional simulation of the VHDL codification was realized in Modelsim. The sampling of the signal was carried out to 250 Hz. using 8 resolution bits for the samples. The discretization of the weights of the neural network and the calculations were carried out in fixed point. In the simulation of the MATLAB model, an error quadratic means of 6,8E-5 was obtained for a signal of electrocardiogram with 1 volt of amplitude. In VHDL modeling and simulation similar results were obtained. Key words: Neural Network/ VHDL/ Simulation/ Interference/ Filter.

I . INTRODUCCIN Con el desarrollo de los dispositivos lgicos programables y las metodologas de diseo asociadas como es el caso de los lenguajes de descripcin de hardware, es posible construir sistemas computacionales complejos integrados en un solo chip semiconductor, siendo de naturaleza reconfigurable, y presentando un alto grado de flexibilidad.

Para presentar las ventajas que tienen estas nuevas tecnologas, como son los lenguajes de descripcin de hardware y el uso de dispositivos lgicos programables, en el diseo de sistema digitales que requieren un alto grado de cmputo, en este artculo se presenta el diseo y simulacin en VHDL (Very High Speed Integrated Circuits Hardware Description Language) de un filtro, basado en una red neuronal de tipo Backpropagation, modelado para la

Volumen 14, N 57, diciembre 2010. pp 261-268

261

Volumen 14, N 57, diciembre 2010. pp 261-268 cancelacin de interferencias de 60Hz electrocardiograma. en la seal de La capa de entrada no realiza ningn clculo, solo distribuye las entradas Xk a los Pesos Wjk de la capa ocu1ta. En las neuronas de la capa oculta, primero las entradas ponderados se suman, (ver ecuacin 1) (1) Una funcin de transferencia no linear (conocida como la funcin de activacin) es aplicada al resultado de clculo de cada salida del elemento de procesamiento. Las funciones de activacin se muestran en la Tabla I. Tabla I: Funciones de transferencias

La seal de electrocardiograma demanda elevadas tasas de cmputo para atenuar las perturbaciones provocadas por movimientos del paciente, alteraciones de ndole emocional, interferencias de la red elctrica, etc. Para hacer el tratamiento efectivo de la seal, en este trabajo se hace uso de redes neuronales por ser una herramienta computacional de tipo distribuida con capacidad de aprendizaje. La metodologa a seguir para el diseo fue concebir primero la arquitectura del filtro utilizando MATLAB, para posteriormente poder describir su comportamiento en VHDL. El alcance de este trabajo abarca hasta la generacin del cdigo VHDL sintetizable para su posterior prueba en un dispositivo lgico programable como la FPGA (Field Programmable Gate Array). II. DESARROLLO 1. Marco Conceptual 1.1 Red BackPropagation La red de propagacin hacia atrs o Backpropagation fue creada por una generalizacin de la regla WidrowHofflearning [8] para redes multi-capa y a funciones de transferencia diferenciables y no lineales. Este tipo de redes se clasifica dentro de las feedfoward o red de alimentacin hacia delante por la manera como fluye la informacin. Esta informacin va desde la entrada a la salida acclicamente. Este tipo de red tiene una capa de entrada, una capa de salida y un nmero de capas escondidas entre capas ocultas. Este tipo de redes permite simular sistemas de orden cero porque no existe acumulacin en el tiempo de los valores de salida (Ver Figura 1).

La salida de la red neuronal ser el valor obtenido multiplicado por los pesos como se indica en la ecuacin 2. (2)

1.2 Entrenamiento de Redes Neuronales Feedfoward El entrenamiento consiste en el ajuste de los pesos (Wij) los cuales hacen que el error entre la salida deseada y la salida de la red sea el mnimo. Dos pasos son distinguidos en este procedimiento de entrenamiento: a) Computacin Feedfoward [11]. Desde las entradas se calcula cada valor en todas las neuronas y finalmente la salida de la red neuronal Yi(Xn) utilizando la ecuacin anterior. b) Adaptacin de Pesos. La salida de la Red es comparada con la salida deseada Yi(Xn). La

Figura 1. Esquema de una Red Neuronal Backpropagation

262

Aguirre, M., Franco, Z., Pateti, A. Diseo y simulacin de una red neuronal en VHDL y su aplicacin en filtrado de seal diferencia entre esos dos valores es el error el cual va a ser utilizado en el ajuste de los pesos, primero en la capa de salida, despus en la capa oculta anterior a la salida, etc. La funcin de costos es ilustrada en las ecuaciones 3 y 4. (7) (3) En donde la simplificacin est dada por la ecuacin (8). (4) (8) Los deltas de la capa de entrada son encontrados en trminos de los deltas de la capa de salida, propagndose hacia atrs, a travs de lo Wij de la red. Entrenar la red utilizando gradiente descendiente, alimentando el error hacia atrs, es llamado backpropagation o propagacin del error hacia atrs. Este trabajo se distribuyo en los siguientes pasos: Elegir una Red Neuronal para el procesamiento de seales ECG. Disear una red neuronal para el filtrado de una seal ECG mediante la herramienta de MATLAB de Redes Neuronales. Simular la red neuronal mediante la herramienta de MATLAB de Redes Neuronales mediante las seales de prueba ECG obtenidas de la base de dato del MIT [1]. Describir la Red Neuronal mediante el lenguaje de descripcin de Hardware VHDL. Simular la Red Neuronal mediante el simulador MODELSIM. 1.3.- Diseo en MATLAB de la Red Neuronal El diseo de la red neuronal utilizada es de tipo Backpropagation como la indicada en la Figura 2, la red elegida para el filtrado de la seal electrocardiogrfica consta de una capa de entrada constituida por 31 neuronas, una segunda capa formada por 10 neuronas, una tercera capa formada por 2 neuronas y la capa de salida constituida por una sola neurona.

De la optimizacin del descenso del gradiente, los pasos de cambios en los pesos de salida pueden ser encontrados diferenciando la funcin de costo dado en la ecuacin 3. Esto se muestra en la ecuacin 5.

(5)

La ecuacin (6) ilustra la simplificacin del Delta-i de la ecuacin (5). (6) El cambio de los pesos de entrada puede ser encontrado con la regla ilustrada en la ecuacin (7).

263

Volumen 14, N 57, diciembre 2010. pp 261-268

Figura 2. Red neuronal elegida

La seal de entrada es la seal que se desea filtrar, que en este caso corresponde a la seal de un electrocardiograma. Los vectores de entrada y salida vienen dados segn la ecuacin (9) y (10). Estos representan los datos de entrenamiento de la red neuronal. (9) (10)

La cantidad de neuronas en las capas subsiguientes: [10 2 1] 10 en la segunda capa 2 en la tercera capa 1 en la capa de salida La funcin de transferencia de cada capa, la cual se puede elegir entre: purelin (linear), logsig (sigmoidal), tansig (tangencial). En este caso todas las capas tienen funcin de transferencia lineal. El mtodo de entrenamiento: trainbfg. Esta basado en el mtodo de quasi-Newton el cual ha sido exitosamente publicado en estudios de Broyden, Fletcher, Goldfarb, and Shanno (BFGS) [9].

Donde S(z) es la seal con la interferencia y S*(z) es la seal sin interferencia El valor de las constantes que representan los pesos se ajustan mediante un proceso de entrenamiento o aprendizaje, en el cual la salida deseada (la seal sin ruido) y la entrada (la seal con ruido), son presentadas a la red y mediante un algoritmo de ajuste, los pesos se calculan para que la correspondencia entre salida y entrada contenga el mnimo error. Estas constantes se ajustan mediante MATLAB y verificando la relacin entre la seal de entrada y de salida se verifica la fiabilidad del diseo. La seal de prueba fue la sel100 del Banco de datos del Massachussets Institute of Technology / Beth Israel Hospital (MIT/BIH) correspondiente a un minuto de grabacin de una seal de ECG muestreada a una frecuencia de 250 Hz. El comando newff de MATLAB sirve para la creacin de una red neuronal, los parmetros necesarios a incluir son: La cantidad de neuronas de entrada y el rango de cada una (-1,1),

La estructura y parmetros de entrenamiento para la red neuronal son almacenados en la variable net. El comando utilizado para la creacin de la red neuronal diseada en este trabajo es: net=newff([-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1],[10 2 1],{ 'purelin' 'purelin' 'purelin'},'trainbfg'); El comando para iniciar el entrenamiento es: net=train(net,(num2cell(ecgr',1)),(num2cell(ecg',1))); La respuesta de la red neural con la seal de prueba incluyndole un ruido de 60Hz se verifica con MATLAB mediante el comando sim, la seal de salida se almacena en la variable a .

264

Aguirre, M., Franco, Z., Pateti, A. Diseo y simulacin de una red neuronal en VHDL y su aplicacin en filtrado de seal a=sim(net,(num2cell((ecgr)',1)))'; 1.4. Desarrollo en VHDL. Despus de tener la confiabilidad deseada del filtro desarrollado en MATLAB se realiza su descripcin utilizando el lenguaje VHDL (Very High Speed Integrated Circuit Hardware Description Language). En la Figura 3 se presenta el diagrama en bloque de la arquitectura desarrollada en VHDL, El sistema completo de la Red Neuronal consta de los bloques de capas 1, 2 y 3, de una unidad aritmtica (UA) y del bloque de salida de la ltima neurona. Las neuronas en la capa 2, capa 3 y la neurona de salida representan posiciones de memoria cuyos valores se van a ir calculando secuencialmente. Las neuronas de la capa 1 son retardos de la seal muestreada de 8 bits. La secuencia utilizada implica que, para calcular el valor a almacenar en una neurona de cualquier capa se debe multiplicar cada valor acumulado en las neuronas de la capa anterior por su respectivo peso. El resultado de la UA se almacena en la neurona respectiva. Para implementar la arquitectura de la unidad aritmtica mostrada en la figura 2, se utiliz multiplexores que sincronizadas por contadores y seales de control permite realizar las operaciones aritmticas de la capa 1, capa 2 capa 3. Las operaciones aritmticas que se realizan en cada capa se encargan de tomar los valores de entrada y multiplicarlos por sus respectivos pesos ms el umbral respectivo para acumularse en una neurona perteneciente a la siguiente capa. El tipo de multiplicacin que se implement consiste en utilizar multiplicadores combinacionales. Para realizar las operaciones aritmticas se utiliz el sistema de numeracin en coma fija (punto decimal fijo). Figura 3.Diagrama en Bloques de la Red Neuronal En la Figura 4 se muestra el smbolo esquemtico utilizado en VHDL para describir la red neuronal.

Figura 4. Smbolo esquemtico del mdulo Filtro_red_neuronal.vhd ClK:Reloj del sistema (500 Khz) Reset: Reset asncrono activo en alto Muestra(7:0) :muestra de la seal de entrada del ADC Salida(7:0): salida del filtro

265

Volumen 14, N 57, diciembre 2010. pp 261-268 2. Detalle de la Codificacin en VHDL Para el diseo de la Red Neuronal en VHDL se parte de los esquemticos creados en el entorno del software de XILINX WEBPACK en los que cada bloque se le especifica su funcin mediante lneas de cdigo. En la Figura 5 se muestran los bloques que forman la descripcin del Filtro_red_neuronal .vhd

Figura 5 Esquema de la Red Neuronal Completa 2.1. Codificacin de las constantes en punto decimal fijo. Cada peso de la red neuronal est dado por una constante codificada en punto decimal fijo. Estas constantes se obtuvieron en el entrenamiento de Matlab y estn contenidas en la variable net. Haciendo un estudio de las variables involucradas, puede determinarse cual es el nmero mximo requerido en bits y cul es el escalamiento mnimo para obtener un resultado fiable. Para los pesos, el escalamiento fue elegido basado en la constante ms pequea de la red, (de tal manera, que no se hiciera cero) resultando el escalamiento de 15. Se aaden dos bits para la magnitud basndose en el mximo valor, ms el bit de signo. Los pesos se representan con 18 bits con escalamiento 15. La entrada del sistema es mediante un ADC de 8 bits. Como la seal pudiera ser negativa o positiva, se utilizan 7 bits de datos y uno de signo. El rango es considerado entre 1V y 1V, entonces el escalamiento de entrada es de 7; se invierte el ltimo bit para representar el signo y obtener de una vez el complemento a dos del nmero. La longitud mxima de los datos de las neuronas, utilizando un escalamiento de 7, se pudo determinar haciendo una simulacin con nmeros reales del diseo y realizando un estudio de la salida de la unidad aritmtica. El nmero mximo obtenido en ese estudio se duplic para tener una confiabilidad que no fuera a excederse en la suma, y se le aadi un bit de signo para considerar los nmeros tanto positivos como negativos, resultando entonces la longitud de 13 bits. El escalamiento considerado en el estudio es de 7, debido a que esa es la resolucin del ADC a utilizar. Al entrar un dato del ADC se completa de 7 a 13 bits con ceros si el nmero es positivo o con unos si el dato es negativo. La salida del multiplicador es de 33 bits con escalamiento 22 que se lleva al sumador para as poder acumular los resultados. Cuando el resultado se va a almacenar en la neurona de destino de una capa superior, los 33 bits son truncados a 13 bits, quitando 15 bits por la derecha para que queden 7 bits para el escalamiento y quitando 5 bits por la

266

Aguirre, M., Franco, Z., Pateti, A. Diseo y simulacin de una red neuronal en VHDL y su aplicacin en filtrado de seal izquierda, porque el nmero mximo obtenido en la simulacin indica que estos bits son cero por lo tanto se descartan. La salida_N de 13 bits resultante ser almacenada en el registro entrada_N de la unidad aritmtica en el paso siguiente (Ver Figura 6), por lo tanto debe tener las mismas caractersticas en cantidad de bits y escalamiento. La curva de entrenamiento con el algoritmo de entrenamiento trainbfg de la red Neuronal con la seal de prueba es ilustrada en la Figura 7, donde el error cuadrtico medio obtenido es de 6,79352E-5 si se quisiera un error mucho menor debera agregarse ms retardos a la seal sin embargo, esto hace que el diseo se haga ms grande, consumiendo muchos recursos en la implementacin.

Figura 6. Esquema de la Unidad Aritmtica (UA) 2.2.- Resultados y discusin de resultados. El diseo de la arquitectura en MATLAB fue simulado variando la funcin de transferencia. Los mejores resultados se obtuvieron utilizando la funcin de transferencia sigmoidal en las capas 2 y 3, sin embargo, esto incrementaba significativamente el uso de recursos en la implementacin en hardware. Se utiliz entonces la funcin de transferencia lineal (purelin) cuya respuesta es bastante aceptable y cuya implementacin no consuma tantos recursos. En la Tabla II, se muestra un cuadro comparativo del mtodo de entrenamiento elegido (Trainbfg) con respecto a otros mtodos de entrenamiento. Tabla II. Cuadro comparativo de mtodos de entrenamiento [9] Figura 7. Grfica de Error Cuadrtico Medio Vs. Nmero de iteraciones en el Entrenamiento La grfica de la Figura 8 ilustra la respuesta del filtro diseado en MATLAB:

Figura 8. Respuesta de la Red Neuronal

La seal superior se corresponde con la seal de prueba y la seal inferior, con la respuesta de la red neuronal. La simulacin de la arquitectura descrita en VHDL se pudo obtener mediante el software ModelSim SE-EE 5.4e. En la Figura 9, se presenta la grfica, en la que se puede

267

Volumen 14, N 57, diciembre 2010. pp 261-268 apreciar la respuesta del filtro, cuya seal superior es la entrada del sistema y la seal inferior es la seal de salida. V. REFERENCIAS 1. Teres, L.,Torroja, T., Olcoz, S.,Villar, E.,: VHDL Lenguaje Estndar de diseo electrnico., Primera edicin en espaol. Madrid. McGraw Hill.1998, 498 pp. 2. Hilera, J.R., Martnez, V.J. :Redes Neuronales Artificiales. Wilmington Delaware, E.U.A. Addison-Wesley iIeroamericana. 1995. pag 385. 3. Artigas L. A. Barragn, C. Orrite, I. Urriza Electrnica Digital, Aplicaciones y Problemas con VHDL, J.I,, Prentice Hall 2002. ISBN: 84-205-32223. pp. 17-26 4. Reese B. Reese, VHDL Synthesis Tutorial, Mississipi State University, http://www.erc.msstate.edu/ ~reese/vhdl_synthesis. 5. Skahill 96 K. Skahill, VHDL for Programmable Logic, Addison Wesley 1996. 6. Pgina Web de NNCV Neural Networks for Computer Vision 7. Director de Investigacin: Juan J.Villanueva, email:villanueva@cvc.uab.es 8. Miembros: Juan Jos Villanueva, Xavi Varona, Albert Pujol. 9. www.cvc.uab.es/castella/research/ arees/llv/nncv/nncv.html 10. Pgina Web del Departamento de Sistemas Electrnicos y de Control de la Universidad Politcnica de Madrid. Introduccin al Lenguaje VHDL. 11. www.sec.upm.es/docencia/plan_92/sdii/ descarga_SDII/Manuales/vhdl_1.pdf 12. Pgina Web : Basic Neural Network Example 13. www.ida.his.se/ida/kurser/ai_ann/kursmaterial/ tutorial/node22.html 14. Howard Oemuth, Mark Beale, Martin Hagan [2005] Neural Network Toolbox User's GuideUser's Guide. COPYRIGHT 1992 - 2005 by The MathWorks, Inc.[Documento del TOOLBOOX para MATLAB de MATHWORKS Version 4.0.6 (Release 14SP3)] [11/10/2008]. 15. Pgina Web. Implementacin con FPGAs. Introduccin a las FPGAs [PDF] 16. www.arco.inf-cr.uclm.es/docs/DSH/FPGAs.pdf 17. Juan Antonio Prez Ortiz [2002]. Modelos Predcitivos Basados en Redes Neuronales Recurrentes de tiempo discreto. Universidad de Alicante. Departamento de lenguaje y sistemas informticos. [Documento en lnea http://www.conicyt.cIl573 Modelos predictivos basados en redes neuronales recurrentes de tiempo discreto.pdf ] [22/07/08].

Figura 9. Simulacin de la Red Neuronal en VHDL con el paquete MODELSIM

Una vez que se verific que el diseo estaba funcionando correctamente, se procedi a generar el fichero .bit, con ayuda del entorno Xilinx Foundatin 3.1, requerido para programar la FPGA. IV. CONCLUSIONES 1) Es posible la codificacin en VHDL del algoritmo de filtrado de la interferencia de 60 Hz en la seal del electrocardiograma, utilizando tcnicas neuronales. 2) El entorno ModelSim integra todas las herramientas necesarias para llevar a cabo la simulacin del filtro codificado en VHDL. 3) De los resultados obtenidos se puede afirmar que el sistema se puede considerar ptimo para el filtrado de la seal de ECG para una perturbacin de 60Hz. 4) El sistema se hace confiable segn las pruebas realizadas ya que garantiza la generalizacin de la respuesta, es decir a medida que se le vayan presentando diversos patrones a la red esta tendr una respuesta predecible y con el mismo comportamiento que tuvo con el patrn de entrenamiento. 5) El filtro presenta un error mximo de 67 microvoltios para una seal de +/-1 Voltio. 6) El error obtenido con el escalamiento en punto decimal fijo es mnimo. Esto hace que el sistema tenga la suficiente precisin para realizar clculos con mnimo error. 7) Este trabajo tiene una segunda etapa a desarrollar como es la implementacin en la FPGA.

268

También podría gustarte