art06.pdf
-
Upload
jose-mujica -
Category
Documents
-
view
22 -
download
2
Transcript of art06.pdf
DISEÑO Y SIMULACIÓN DE UNA RED NEURONAL EN VHDL Y SU APLICACIÓN EN FILTRADO
DE UN ELECTROCARDIOGRAMA
Aguirre Miguel(1), Franco Zulay(2) y Pateti Antonio(2)
(1)Superintendencia de Mantenimiento Eléctrico e Instrumentación Ferrominera Orinoco(2)Universidad Nacional Experimental Politécnica
“Antonio José de Sucre” Vice-Rectorado Puerto Ordaz.
Departamento de Ingeniería Electrónica, Centro de Diseño Microelectrónico
E-mail: [email protected]
Resumen: En este artículo se presenta el diseño y simulación en VHDL de una red neuronal de tipo
Backpropagation utilizada para la cancelación de interferencias de 60 Hz en la señal electrocardiográfica.
(ECG). Se presenta en primer lugar el algoritmo de simulación de la Red Neuronal diseñada mediante
MATLAB, como base para el desarrollo de la arquitectura en VHDL. El proceso de simulación funcional del
código VHDL sintetizable se llevó a cabo sobre el entorno de Modelsim. El muestreo de la señal se realizó
a 250 Hz usando 8 bits de resolución para las muestras. La discretización de los pesos de la red neuronal y
los cálculos se realizaron en punto decimal fijo. En la simulación del modelo en MATLAB se obtuvo un error
cuadrático medio de 6,8E-5 para una señal de electrocardiograma de amplitud de 1 voltio. En la modelación
y simulación en VHDL se obtuvieron resultados similares.
Palabras clave: Red Neuronal/ VHDL/ Simulación/ Interferencia/ Filtro.
DESIGN AND SIMULATION OF A NEURAL NETWORKUSING 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 . INTRODUCCIÓN
Con el desarrollo de los dispositivos lógicos programables y
las metodologías de diseño asociadas como es el caso de los
lenguajes de descripción 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
tecnologías, como son los lenguajes de descripción de
hardware y el uso de dispositivos lógicos programables, en el
diseño de sistema digitales que requieren un alto grado de
cómputo, en este artículo se presenta el diseño y simulación en
VHDL (Very High Speed Integrated Circuits Hardware
Description Language) de un filtro, basado en una red
neuronal de tipo Backpropagation, modelado para la
261Volumen 14, Nº 57, diciembre 2010. pp 261-268
cancelación de interferencias de 60Hz en la señal de
electrocardiograma.
La señal de electrocardiograma demanda elevadas tasas de
cómputo para atenuar las perturbaciones provocadas por
movimientos del paciente, alteraciones de índole emocional,
interferencias de la red eléctrica, etc. Para hacer el tratamiento
efectivo de la señal, en este trabajo se hace uso de redes
neuronales por ser una herramienta computacional de tipo
distribuida con capacidad de aprendizaje.
La metodología a seguir para el diseño 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 generación del
código VHDL sintetizable para su posterior prueba en un
dispositivo lógico programable como la FPGA (Field
Programmable Gate Array).
II. DESARROLLO
1. Marco Conceptual
1.1 Red BackPropagation
La red de propagación hacia atrás o Backpropagation fue
creada por una generalización de la regla Widrow-
Hofflearning [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 alimentación hacia
delante por la manera como fluye la información. Esta
información va desde la entrada a la salida acíclicamente. Este
tipo de red tiene una capa de entrada, una capa de salida y un
número de capas escondidas entre capas ocultas. Este tipo de
redes permite simular sistemas de orden cero porque no existe
acumulación en el tiempo de los valores de salida (Ver Figura
1).
Figura 1. Esquema de una Red NeuronalBackpropagation
La capa de entrada no realiza ningún cálculo, 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 ecuación 1)
(1)
Una función de transferencia no linear (conocida como la
función de activación) es aplicada al resultado de cálculo de
cada salida del elemento de procesamiento. Las funciones de
activación se muestran en la Tabla I.
Tabla I: Funciones de transferencias
La salida de la red neuronal será el valor obtenido
multiplicado por los pesos como se indica en la ecuación 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 mínimo. Dos pasos son distinguidos en este
procedimiento de entrenamiento: a) Computación 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 ecuación anterior. b) Adaptación de Pesos. La
salida de la Red es comparada con la salida deseada Yi(Xn). La
Volumen 14, Nº 57, diciembre 2010. pp 261-268
262
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,
después en la capa oculta anterior a la salida, etc. La función
de costos es ilustrada en las ecuaciones 3 y 4.
(3)
(4)
De la optimización del descenso del gradiente, los pasos de
cambios en los pesos de salida pueden ser encontrados
diferenciando la función de costo dado en la ecuación 3. Esto
se muestra en la ecuación 5.
(5)
La ecuación (6) ilustra la simplificación del Delta-i de la
ecuación (5).
(6)
El cambio de los pesos de entrada puede ser encontrado con
la regla ilustrada en la ecuación (7).
(7)
En donde la simplificación está dada por la ecuación (8).
(8)
Los deltas de la capa de entrada son encontrados en términos
de los deltas de la capa de salida, propagándose hacia atrás, a
través de lo Wij de la red. Entrenar la red utilizando gradiente
descendiente, alimentando el error hacia atrás, es llamado
backpropagation o propagación del error hacia atrás.
Este trabajo se distribuyo en los siguientes pasos:
• Elegir una Red Neuronal para el procesamiento de señales
ECG.
• Diseñar una red neuronal para el filtrado de una señal
ECG mediante la herramienta de MATLAB de Redes
Neuronales.
• Simular la red neuronal mediante la herramienta de
MATLAB de Redes Neuronales mediante las señales de
prueba ECG obtenidas de la base de dato del MIT [1].
• Describir la Red Neuronal mediante el lenguaje de
descripción de Hardware VHDL.
• Simular la Red Neuronal mediante el simulador
MODELSIM.
1.3.- Diseño en MATLAB de la Red Neuronal
El diseño de la red neuronal utilizada es de tipo
Backpropagation como la indicada en la Figura 2, la red
elegida para el filtrado de la señal electrocardiográfica 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.
Aguirre, M., Franco, Z., Pateti, A. Diseño y simulación de una red neuronal en VHDL y su aplicación en filtrado de señal
263
La señal de entrada es la señal que se desea filtrar, que en este
caso corresponde a la señal de un electrocardiograma. Los
vectores de entrada y salida vienen dados según la ecuación
(9) y (10). Estos representan los datos de entrenamiento de la
red neuronal.
(9)
(10)
Donde S(z) es la señal con la interferencia y S*(z) es la señal
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 señal sin ruido) y la entrada (la señal
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 mínimo error. Estas
constantes se ajustan mediante MATLAB y verificando la
relación entre la señal de entrada y de salida se verifica la
fiabilidad del diseño.
La señal de prueba fue la sel100 del Banco de datos del
Massachussets Institute of Technology / Beth Israel Hospital
(MIT/BIH) correspondiente a un minuto de grabación de una
señal de ECG muestreada a una frecuencia de 250 Hz.
El comando newff de MATLAB sirve para la creación de una
red neuronal, los parámetros necesarios a incluir son:
• La cantidad de neuronas de entrada y el rango de cada una
(-1,1),
• 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 función de transferencia de cada capa, la cual se puede
elegir entre: purelin (linear), logsig (sigmoidal), tansig
(tangencial). En este caso todas las capas tienen función
de transferencia lineal.
• El método de entrenamiento: trainbfg. Esta basado en el
método de quasi-Newton el cual ha sido exitosamente
publicado en estudios de Broyden, Fletcher, Goldfarb, and
Shanno (BFGS) [9].
La estructura y parámetros de entrenamiento para la red
neuronal son almacenados en la variable ‘net’.
El comando utilizado para la creación de la red neuronal
diseñada 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 señal de prueba
incluyéndole un ruido de 60Hz se verifica con MATLAB
mediante el comando ‘sim’, la señal de salida se almacena en
la variable ‘a’ .
Figura 2. Red neuronal elegida
Volumen 14, Nº 57, diciembre 2010. pp 261-268
264
a=sim(net,(num2cell((ecgr)',1)))';
1.4. Desarrollo en VHDL.
Después de tener la confiabilidad deseada del filtro
desarrollado en MATLAB se realiza su descripción 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,
Figura 3.Diagrama en Bloques de la Red Neuronal
El sistema completo de la Red Neuronal consta de los bloques
de capas 1, 2 y 3, de una unidad aritmética (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
señal 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 aritmética
mostrada en la figura 2, se utilizó multiplexores que
sincronizadas por contadores y señales de control permite
realizar las operaciones aritméticas de la capa 1, capa 2 ó
capa 3. Las operaciones aritméticas que se realizan en cada
capa se encargan de tomar los valores de entrada y
multiplicarlos por sus respectivos pesos más el umbral
respectivo para acumularse en una neurona perteneciente a
la siguiente capa. El tipo de multiplicación que se
implementó consiste en utilizar multiplicadores
combinacionales. Para realizar las operaciones aritméticas
se utilizó el sistema de numeración en coma fija (punto
decimal fijo).
En la Figura 4 se muestra el símbolo esquemático utilizado en
VHDL para describir la red neuronal.
Figura 4. Símbolo esquemático del módulo Filtro_red_neuronal.vhd
ClK:Reloj del sistema (500 Khz)
Reset: Reset asíncrono activo en alto
Muestra(7:0) :muestra de la señal de entrada del ADC
Salida(7:0): salida del filtro
Aguirre, M., Franco, Z., Pateti, A. Diseño y simulación de una red neuronal en VHDL y su aplicación en filtrado de señal
265
2. Detalle de la Codificación en VHDL
Para el diseño de la Red Neuronal en VHDL se parte de los
esquemáticos creados en el entorno del software de XILINX
WEBPACK en los que cada bloque se le especifica su función
mediante líneas de código. En la Figura 5 se muestran los
bloques que forman la descripción del Filtro_red_neuronal
.vhd
Figura 5 Esquema de la Red Neuronal Completa
2.1. Codificación 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 están contenidas
en la variable ‘net’.
Haciendo un estudio de las variables involucradas, puede
determinarse cual es el número máximo requerido en bits y
cuál es el escalamiento mínimo para obtener un resultado
fiable.
Para los pesos, el escalamiento fue elegido basado en la
constante más pequeña de la red, (de tal manera, que no se
hiciera cero) resultando el escalamiento de 15. Se añaden dos
bits para la magnitud basándose en el máximo valor, más 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 señal 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 número.
La longitud máxima de los datos de las neuronas, utilizando
un escalamiento de 7, se pudo determinar haciendo una
simulación con números reales del diseño y realizando un
estudio de la salida de la unidad aritmética. El número
máximo obtenido en ese estudio se duplicó para tener una
confiabilidad que no fuera a excederse en la suma, y se le
añadió un bit de signo para considerar los números 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 resolución del ADC a utilizar.
Al entrar un dato del ADC se completa de 7 a 13 bits con ceros
si el número 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
Volumen 14, Nº 57, diciembre 2010. pp 261-268
266
izquierda, porque el número máximo obtenido en la
simulación 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 aritmética en el paso siguiente
(Ver Figura 6), por lo tanto debe tener las mismas
características en cantidad de bits y escalamiento.
Figura 6. Esquema de la Unidad Aritmética (UA)
2.2.- Resultados y discusión de resultados.
El diseño de la arquitectura en MATLAB fue simulado
variando la función de transferencia. Los mejores resultados
se obtuvieron utilizando la función de transferencia sigmoidal
en las capas 2 y 3, sin embargo, esto incrementaba
significativamente el uso de recursos en la implementación en
hardware. Se utilizó entonces la función de transferencia
lineal (purelin) cuya respuesta es bastante aceptable y cuya
implementación no consumía tantos recursos.
En la Tabla II, se muestra un cuadro comparativo del método
de entrenamiento elegido (Trainbfg) con respecto a otros
métodos de entrenamiento.
Tabla II. Cuadro comparativo de métodos de entrenamiento [9]
La curva de entrenamiento con el algoritmo de entrenamiento
‘trainbfg’ de la red Neuronal con la señal de prueba es
ilustrada en la Figura 7, donde el error cuadrático medio
obtenido es de 6,79352E-5 si se quisiera un error mucho
menor debería agregarse más retardos a la señal sin embargo,
esto hace que el diseño se haga más grande, consumiendo
muchos recursos en la implementación.
Figura 7. Gráfica de Error Cuadrático Medio Vs. Númerode iteraciones en el Entrenamiento
La gráfica de la Figura 8 ilustra la respuesta del filtro diseñado
en MATLAB:
Figura 8. Respuesta de la Red Neuronal
La señal superior se corresponde con la señal de prueba y la
señal inferior, con la respuesta de la red neuronal.
La simulación de la arquitectura descrita en VHDL se pudo
obtener mediante el software ModelSim SE-EE 5.4e.
En la Figura 9, se presenta la gráfica, en la que se puede
Aguirre, M., Franco, Z., Pateti, A. Diseño y simulación de una red neuronal en VHDL y su aplicación en filtrado de señal
267
apreciar la respuesta del filtro, cuya señal superior es la
entrada del sistema y la señal inferior es la señal de salida.
Figura 9. Simulación de la Red Neuronal en VHDL con el paquete MODELSIM
Una vez que se verificó que el diseño estaba funcionando
correctamente, se procedió a generar el fichero .bit, con ayuda
del entorno “Xilinx Foundatión 3.1”, requerido para
programar la FPGA.
IV. CONCLUSIONES
1) Es posible la codificación en VHDL del algoritmo de
filtrado de la interferencia de 60 Hz en la señal del
electrocardiograma, utilizando técnicas neuronales.
2) El entorno ModelSim integra todas las herramientas
necesarias para llevar a cabo la simulación 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
señal de ECG para una perturbación de 60Hz.
4) El sistema se hace confiable según las pruebas realizadas
ya que garantiza la generalización 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 patrón de entrenamiento.
5) El filtro presenta un error máximo de 67 microvoltios para
una señal de +/-1 Voltio.
6) El error obtenido con el escalamiento en punto decimal
fijo es mínimo. Esto hace que el sistema tenga la suficiente
precisión para realizar cálculos con mínimo error.
7) Este trabajo tiene una segunda etapa a desarrollar como es
la implementación en la FPGA.
V. REFERENCIAS
1. Teres, L.,Torroja, T., Olcoz, S.,Villar, E.,: VHDL
Lenguaje Estándar de diseño electrónico., Primera edición
en español. Madrid. McGraw Hill.1998, 498 pp.
2. Hilera, J.R., Martínez, V.J. :Redes Neuronales Artificiales.
Wilmington Delaware, E.U.A. Addison-Wesley
iIeroamericana. 1995. pag 385.
3. Artigas L. A. Barragán, C. Orrite, I. Urriza
Electrónica Digital, Aplicaciones y Problemas con
VHDL, J.I,, Prentice Hall 2002. ISBN: 84-205-3222-
3. 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. Página Web de NNCV Neural Networks for Computer
Vision
7. Director de Investigación: Juan J.Villanueva, e-
mail:[email protected]
8. Miembros: Juan José Villanueva, Xavi Varona, Albert
Pujol.
9. www.cvc.uab.es/castella/research/
arees/llv/nncv/nncv.html
10. Página Web del Departamento de Sistemas Electrónicos
y de Control de la Universidad Politécnica de Madrid.
Introducción al Lenguaje VHDL.
11. www.sec.upm.es/docencia/plan_92/sdii/
descarga_SDII/Manuales/vhdl_1.pdf
12. Página 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. Página Web. Implementación con FPGAs. Introducción
a las FPGAs [PDF]
16. www.arco.inf-cr.uclm.es/docs/DSH/FPGAs.pdf
17. Juan Antonio Pérez Ortiz [2002]. Modelos Predcitivos
Basados en Redes Neuronales Recurrentes de tiempo
discreto. Universidad de Alicante. Departamento de
lenguaje y sistemas informáticos. [Documento en línea
http://www.conicyt.cIl573 Modelos predictivos basados
en redes neuronales recurrentes de tiempo discreto.pdf ]
[22/07/08].
Volumen 14, Nº 57, diciembre 2010. pp 261-268
268