DETECCIÓN DE LATIDOS ECTÓPICOS CON REDES NEURONALES Fritschy J.L. et al Detección de Latidos Cardiacos Ectópicos con Redes Neuronales JUAN L. FRITSCHY a Y MARCELO R. RISK b a Department of Medical Physics, University College London, Inglaterra, Reino Unido b Centro de Procesamiento de Señales e Imágenes, Facultad Regional Buenos Aires, Universidad Tecnológica Nacional, Argentina Introducción El estudio de las redes neuronales no supervisadas o mapas auto-organizados (comúnmente conocidos por su sigla en inglés, SOM: Self-Organizing Maps) comienza a principios de los años ochenta (Kohonen 1984) con el firme objetivo de modelar y describir el funcionamiento del cerebro humano o, al menos, su habilidad cognitiva sobre el mundo exterior. A pesar del probablemente infinito e incierto camino que se tenía por delante y desafiando el Teorema de Incompletitud de Göedel (Hofstadter 1987) que demuestra cómo un sistema no puede estudiarse a sí mismo (en este caso el sistema cognitivo humano) esta nueva rama de la ciencia generó numerosos modelos para afrontar el problema planteado. Es a partir de comienzos de la década del noventa, y debido al increíble desarrollo de la capacidad computacional (en particular con el procesamiento paralelo), que el estudio de los SOMs se escinde en dos ramas. La primera conserva el foco de atención en la modelización de la mimesis biológica que venía desarrollándose y la segunda comienza a tomar a los SOMs como simples algoritmos de computadoras que, abstraídos de la intención original, pueden aplicarse a diferentes situaciones con resultados exitosos. Este breve capítulo tiene por objetivo la descripción teórica, junto con una aplicación en el campo de la medicina cardiaca, de una línea de investigación acerca de los SOMs fundada por el científico finlandés Teuvo Kohonen. Este enfoque, en el cual se irán presentando aspectos teóricos y prácticos, permitirá comprender uno de los modelos más sencillos y efectivos para la resolución de los llamados problemas difusos, que se describirán en breve. Es importante aclarar que las variaciones sobre las teorías de SOMs, y sobre los conceptos que abarca, suman más de 4000 publicaciones en la actualidad. Es intención de este trabajo presentar las formas más comunes de estas variaciones para que el lector se haga con los conceptos y tenga la visión suficiente, para en una probable profundización, ser autónomo frente al problema que se le presente. Debido a lo limitado del espacio, se han priorizado las explicaciones teóricas y ejemplos para el mejor entendimiento de los conceptos. En la sección final del 360 PROCESAMIENTO DE SEÑALES E IMÁGENES: TEORÍA Y APLICACIONES capítulo se describe una aplicación de los SOMs en el campo de la ingeniería biomédica. Problemas difusos y redes neuronales: causa y efecto Para describir el concepto de problema difuso recurriremos a algunos ejemplos. Imaginemos que se nos pide que hagamos un programa de computadoras que sea capaz de distinguir camas entre un conjunto diverso de objetos, frente a este problema tendríamos que poder “enseñarle” al sistema qué es una cama, y aquí se nos presenta un gran dilema, porque nosotros sabemos qué es una cama y sabemos distinguirla pero lo que no sabemos es explicar como lo hacemos; llegados a esta instancia en la lectura, usted lector podría decir: “una cama tiene cuatro patas, es rectangular (en general), puede estar fabricada de diferentes materiales, etc., pero por ejemplo, si a su sistema se le presenta una “cama paraguaya”, la cual es de lona y esta colgada entre dos palmeras, su sistema no la reconocería y usted sí 1. Observemos otro ejemplo: usted quiere que su programa “aprenda” (y aunque hasta el momento no hemos definido rigurosamente esta palabra en el campo de los SOMs, por ahora apelaremos al concepto intuitivo que todos tenemos al respecto) a reconocer señales de voz, entonces usted podría decir: “grabaría en memoria determinados mensajes, para que cuando se le presente una señal de voz, el programa la grabe y luego la compare con los patrones que posee”, pero he aquí un nuevo problema, porque se tendrían que definir criterios eficientes de comparación, para que cuando el mensaje varíe en su tono, velocidad de dicción, hablante, ruido ambiente y muchas otras variables, pueda seguir reconociendo la misma frase. Para continuar supongamos que podemos lograr estos criterios, (que están siendo desarrollados en la actualidad) nos encontraríamos fuertemente limitados en capacidad de memoria ya que habría que grabar infinitas palabras con infinitas combinaciones entre ellas. Pero vayamos un poco más lejos, pensemos que disponemos de memoria infinita, en este caso tendríamos que ver cómo nos las arreglamos con el tiempo que le lleva al algoritmo recorrer todos los mensajes hasta encontrar el correcto! La pregunta que surge es inmediata, ¿Cómo hace el ser humano para poder entender y comprender los infinitos mensajes que le llegan? O, ¿Cómo hace para darse cuenta que la “cama paraguaya” es una cama? De hecho nos encontramos con un problema que involucra una gran cantidad de variables y que dispone de 1 Este problema sencillo se resolvería apelando al criterio de “funcionalidad” y aunque no es fácil codificar este tipo de abstracción es válido aclarar que la mayoría de los problemas reales saltean fácilmente este posible atajo de criterio unificante 361 DETECCIÓN DE LATIDOS ECTÓPICOS CON REDES NEURONALES Fritschy J.L. et al reglas de interrelación desconocidas2. A esta altura de la exposición es importante aclarar que hay áreas de la ciencia en que éste tipo de problemas difusos se presentan más frecuentemente y una de ellas es la bioingeniería, ya que la mayoría de las señales biológicas provienen de fenómenos de este tipo. Y para afrontar la resolución de estos problemas se han desarrollado dos tipos de redes neuronales: Supervisadas y No-Supervisadas. Las redes neuronales supervisadas son aquellas, que como su definición sugiere, en la etapa de “entrenamiento” (aunque más adelante definiremos concretamente este proceso, por ahora lo aceptaremos como el concepto intuitivo que describe un proceso progresivo de adquisición de información) se tiende a un resultado previamente conocido, de esta manera, el sistema va comparando sus resultados parciales con los objetivos y de esa manera va construyendo su estructura. Estas redes están ampliamente desarrolladas en la actualidad y si bien cuentan con la ventaja de poseer modelos matemáticos que describen minuciosamente su comportamiento no pueden abordar problemas en los cuales los criterios de clasificación no son conocidos a priori. Debido a que el objetivo de este trabajo no es describir este tipo de redes no profundizaremos más al respecto pero si el lector lo desea se recomienda el libro “Neural networks. A comprehensive foundation” (Haykin 1994). Mapas auto organizados Las redes neuronales no supervisadas son aquellas que pueden llevar adelante un entrenamiento sin la conducción de conocimiento externo. Mapeo externo a interno Una de las hipótesis fundamentales en que se basan los SOMs es que el sistema cognitivo humano “mapea” internamente el mapa “externo” de la realidad. Sin llegar a pensar en las capacidades cognitivas superiores (las que intervienen en la intelectualidad y que seguramente se encuentran varias capas por encima en un sistema jerárquico) podemos pensar que, por ejemplo, el “mapa” externo de aromas y olores “reproducen” un mapa interno en cierta parte de nuestro cerebro que proporciona nuestra capacidad olfativa. Como el lector podrá observar, los ejemplos de conocimiento externo, apuntan a funciones básicas que generalmente no pasan por la capa consciente. Para avanzar, definiremos como mapa externo al conjunto de entes (en este caso aromas y olores) que a través de estímulos codificados (en nuestro caso las señales que llegan a cierta parte del cerebro y que provienen de células olfativas) generan un mapa interno (el cual 2 A esto hay que agregar que existe un cierto tipo de jerarquización, que será un concepto desarrollado más adelante y que de hecho es la base fundamental de las cadenas de Markov, algoritmos básicos del software de reconocimiento de voz que hay en la actualidad 362 PROCESAMIENTO DE SEÑALES E IMÁGENES: TEORÍA Y APLICACIONES estará representado por un conjunto de neuronas que se “identificarán” con cada uno de los colores). Codificación de estímulos De este proceso depende la eficiencia del mapeo. En la jerga de las redes neuronales se lo denomina “etapa de selección de características”. Siguiendo con nuestro ejemplo podríamos decir que las señales que llegan al cerebro representando a los aromas deben poseer al menos una característica de esos aromas que los identifique unívocamente. El sistema es repetible ya que frente a la misma sustancia, los centros olfativos desprenderán la misma señal y los centros neuronales “ubicarán” ese estímulo siempre en el mismo lugar dentro del “mapa interno”. Como veremos más adelante, la etapa común a una gran número de redes neuronales aplicadas a problemas prácticos comparten el modelo interno (digamos, las reglas de organización que forman el mapa interno) pero lo esencialmente diferente en cada situación en la “selección de características”. Por ejemplo, en las aplicaciones de identificación por rasgos faciales se tienen en cuenta como características las medidas de cada uno de los componentes de una cara y las proporciones entre ellos. En el caso de reconocimiento de voz, las características están asociadas a la potencia y energía de la señal sonora, a la frecuencia media, a los coeficientes de DFT (Discrete Fourier Transformation), etc. Estas características son cuantificadas con diferentes criterios para luego acceder al “cuerpo clasificador” de la red neuronal. Para dar paso a la descripción de todos los componentes del “cuerpo clasificador” de una red neuronal no supervisada es esencial tener en cuenta que sean cuales fueran las características extraídas de un ente a clasificar, éstas serán representadas por un vector de datos que será utilizado por la red. Descripción de los componentes de un Mapa auto organizado Modelaremos una red neuronal sencilla. La misma es representada por un grupo de neuronas. Cada neurona es un vector que tiene tantos componentes como características codificadas de las señales. Supongamos que queremos clasificar vocales y que hemos definido como características la frecuencia media, la potencia y la amplitud de la primera componente de la DFT. De aquí en adelante a estas características las identificaremos como A, B y C. Pues bien, entonces cada una de las neuronas de la red será un vector de 3 componentes. Si bien la medida de la red depende de muchas variables, para nuestro ejemplo dispondremos de una red de 144 neuronas y la visualizaremos como un cuadrado de 12 X 12, con una profundidad de 3. A partir de este momento llamaremos “matriz sináptica” a esta matriz de 12 x 12 x 3 y a cada uno de sus 144 componentes los llamaremos “neuronas”. 363 DETECCIÓN DE LATIDOS ECTÓPICOS CON REDES NEURONALES Fritschy J.L. et al Aleatoriedad inicial Si bien no es un requisito indispensable (de hecho para varias aplicaciones no se cumple) los valores de cada una de las neuronas tienen distribución aleatoria antes de comenzar el proceso de entrenamiento. Para aquellos que fuesen a implementar un algoritmo para completar con valores aleatorios la matriz sináptica sugiero la lectura del capítulo 7 – “Random numbers” del libro “Numerical Recipes in C” (Press 1992). Matriz de patrones de entrenamiento Tal como definimos previamente, la “profundidad” de la matriz sináptica es 3 y coincide con el número de características que identifican a cada elemento externo (en este caso vocales del idioma castellano). Denominaremos como conjunto de entrenamiento a un grupo de 50 vectores que representan a las vocales del idioma castellano, con 10 vectores por cada vocal. Así, cada vector que representa a un fenómeno externo tiene la misma estructura (longitud y tipo de dato) que una neurona de la red. De aquí en adelante, la matriz bidimensional con tantas columnas como números de vectores de entrenamiento (en nuestro ejemplo 50) y con tantas filas como características de cada vector (en nuestro ejemplo 3) la denominaremos Matriz de patrones de entrenamiento. Idea intuitiva de entrenamiento Durante el proceso de entrenamiento los valores internos de la matriz sináptica serán modificados en función de los vectores de la matriz de entrenamiento. Se observa en este punto la similitud con el modelo biológico de aprendizaje que, partiendo de neuronas inicialmente con valores aleatorios (o al menos con ninguna tendencia definida), poco a poco, los fenómenos externos van produciendo un efecto interno y comienza a existir una relación cada vez más marcada entre el mapa externo y el mapa interno. Vecindario y curva de entrenamiento El vecindario es un conjunto de neuronas equidistantes de alguna neurona en particular. Puede variar en su amplitud (cantidad de neuronas que lo integran) en función de la aplicación. En nuestro ejemplo utilizaremos un vecindario de 44 neuronas como muestra la figura 1. A su vez, dentro del vecindario se distinguen el vecindario menor y el vecindario mayor, indicados en rojo y azul respectivamente. La curva de entrenamiento, a diferencia del vecindario que es un concepto espacial dentro de la matriz sináptica, es un concepto temporal que determina la velocidad de aprendizaje de la red. Es el parámetro que “dosifica” la influencia de la matriz de patrones de entrenamiento sobre la matriz sináptica. Hay diferentes tipos de curvas pero para nuestro ejemplo utilizaremos dos rectas sencillas (más 364 PROCESAMIENTO DE SEÑALES E IMÁGENES: TEORÍA Y APLICACIONES adelante se explicará la razón de esta discontinuidad) que van dando valor al factor de curva de entrenamiento W. Ver figura 2. Proceso de entrenamiento Este proceso es una sucesión de iteraciones (en nuestro ejemplo 3000). A continuación se describe en detalle cada una de las acciones que se ejecutan en cada iteración. Primera etapa: encontrar el “ganador” Se toma aleatoriamente un vector de entrenamiento y se lo compara con cada una de las neuronas de la matriz sináptica. Esta comparación puede llevarse a cabo de muchas maneras (métodos de Hebb, Riccati, PCA, etc., Kohonen 1984), pero en este caso lo haremos calculando la distancia euclidiana entre ambos vectores. Distancia = || patrón de entrenamiento – neurona de la red || (1) A esta variable se la denomina “distancia” entre el vector de entrenamiento y la neurona, y describe cuán diferentes son entre ambos. Figura 1: Vecindario mayor y menor. Esta operación de comparación debe ser realizada con cada una de las neuronas de la red (en nuestro caso con 144) y existirá una de ellas que tendrá la mínima distancia al patrón citado. A esta neurona se la denomina “ganador”. 365 DETECCIÓN DE LATIDOS ECTÓPICOS CON REDES NEURONALES Fritschy J.L. et al Figura 2: Curva de entrenamiento de la SOM. Segunda etapa: Corrección del “ganador” Una vez que se encuentra el ganador el paso siguiente es corregirlo. Conceptualmente se trata de hacer que esa neurona de la matriz sináptica se parezca un poco más al patrón de entrenamiento, y esto se logra modificando cada una de las componentes de la neurona. Sus nuevos valores serán los originales más una parte de la diferencia entre la neurona y el patrón. Valor corregido = valor actual + coef de corrección (W) x distancia (2) Como se puede observar en la fórmula 2, el factor de corrección W dosifica cuán parecida será la neurona corregida con respecto al patrón de entrenamiento. Y es precisamente la curva de entrenamiento que se ha descrito anteriormente la que controla el valor del factor W a medida que avanzan las iteraciones. Esta es una de las características más importantes del proceso de entrenamiento, ya que esta curva debe decrecer a medida que avanzan las iteraciones. Debe producir un un mayor efecto de corrección en las primeras iteraciones, provocando un “ajuste grueso”; dejándose para el final un “ajuste fino”, disminuyendo considerablemente el valor del parámetro w. (Ver figura 2). Tercera etapa. Corrección del vecindario La corrección de las neuronas del vecindario se realiza de la misma forma que con el ganador (ver fórmula 2). En nuestro ejemplo, las 44 neuronas coloreadas (8 rojas y 36 azules) serán corregidas. El vecindario puede adoptar cualquier dimensión pero siempre se debe mantener la equidistancia con respecto al ganador para no privilegiar la corrección en una dirección en particular. La dimensión del vecindario debe ser dinámica. A medida que avanzan las iteraciones y el factor de corrección w decrece, el vecindario debe decrecer. De esta manera cuando se está realizando el “ajuste fino” de la matriz sináptica (en 366 PROCESAMIENTO DE SEÑALES E IMÁGENES: TEORÍA Y APLICACIONES nuestro ejemplo en la últimas 2000 iteraciones) el vecindario debe ser de pequeñas dimensiones. Así se logra una corrección bien localizada dentro de la matriz. En nuestro ejemplo, a partir de la iteración número 1001 se debe tener en cuenta solo el vecindario menor de 8 celdas (rojas). Es fundamental la armonía en la reducción tanto del factor de corrección w como del vecindario. Modelos más sofisticados que el de nuestro ejemplo reducen el vecindario en cinco etapas coincidiendo con la disminución de w. Evolución interna del entrenamiento. A medida que se van sucediendo las iteraciones, la matriz sináptica pasa de su estado inicial, completamente aleatorio, a un estado cada vez más “ordenado”, en el cual cada una de las neuronas comienza a identificarse con un determinado patrón de entrenamiento. En este punto se puede observar el claro paralelismo con el sistema cognitivo humano, ya que cada patrón de entrenamiento, que es utilizado para una iteración, representaría un fenómeno externo que afecta a los sentidos y éstos producirían un estímulo en alguna parte de la red neuronal, y a medida que se suceden los estímulos, estas partes de la red neuronal establecen una relación con los fenómenos externos. Clustering. El concepto de clustering esta relacionado con la clasificación de elementos externos dentro de la matriz sináptica, esto implica que si se tiene un determinado conjunto de entrenamiento dentro del cual, por ejemplo, se pueden distinguir tres clases, entonces la matriz sináptica, una vez terminado el entrenamiento, estará “dividida” en tres zonas identificadas con cada una de las clases. La identificación de ciertas zonas de la matriz sináptica con cierto grupo de vectores del conjunto de entrenamiento se refleja en el hecho que este grupo de vectores encuentra su distancia mínima con cierta parte de la matriz. Para describir el proceso de evolución del entrenamiento se planteará un ejemplo: supóngase que se tienen cubos de tres gamas de colores distintos (cinco de cada gama) y, obviamente, la característica relevante es su color, entonces en la etapa de selección de características se codifica cada color con un determinado número, así se logra tener un conjunto de 15 patrones y se sabe a priori que existen 3 clases distintas. Las figuras 3, 4 y 5 muestran respectivamente el estado inicial, intermedio y final de la matriz sináptica. Como puede apreciarse existe una tendencia al orden a medida que avanza el entrenamiento. Visualización. Una vez terminado el entrenamiento es necesario observar el estado final de la matriz sináptica. Más allá de las pruebas posteriores, la primera evaluación que se debe hacer es la de tomar cada uno de los patrones de 367 DETECCIÓN DE LATIDOS ECTÓPICOS CON REDES NEURONALES Fritschy J.L. et al entrenamiento y “pintar” de un color determinado la neurona que tiene la mínima distancia con él. Esta es la forma en la que se obtuvieron las figuras 3, 4 y 5. Mapeo final y etiquetamiento. Para etiquetar la red debemos elegir un “patrón representativo” de cada clase y utilizarlo como referencia. Para la elección del “patrón representativo” se recurre a la opinión de un experto que sería capaz de realizar la clasificación. Figuras 3, 4 y 5: Proceso de clustering, donde se pueden apreciar los estados inicial, intermedio y final de la matriz sináptica. Cuarta etapa. Etiquetamiento Para el etiquetamiento de la matriz sináptica se toma la neurona de posición (0,0) y se la compara (en nuestro ejemplo aplicando la distancia euclidiana) con cada uno de los patrones representativos (que es un vector por cada clase), etiquetando la neurona según con que patrón representativo mantiene la menor distancia. Por ejemplo, siguiendo con el caso de los cubos de colores, si estuvo “más cerca” del patrón representativo de la gama de los rojos, entonces la neurona quedará identificada con un número que corresponda a la clase roja. Luego se realiza el mismo procedimiento hasta la última neurona. La forma de “recorrer” la matriz sináptica para su etiquetamiento no tiene que ser ninguna en especial pero la antes mencionada es la óptima desde el punto de vista computacional. Quinta etapa. Mapeo final Una vez que se ha concluido el etiquetamiento, para poder observar el resultado final se “pinta” cada neurona con el color de la clase a la cual corresponde. La figura 6 es un ejemplo de mapeo. 368 PROCESAMIENTO DE SEÑALES E IMÁGENES: TEORÍA Y APLICACIONES Proceso L.V.Q. (Learning Vector Quantization) Este proceso no posee mimesis biológica. No es más que un algoritmo matemático que ayuda a delimitar mejor los bordes de las clases, una vez finalizada la etapa de entrenamiento. Para realizar el proceso de L.V.Q. se debe, en primer lugar, calcular las coordenadas de los centroides siendo éstos las neuronas “ganadors” de cada uno de los patrones representativos de las clases. Para calcularlos se toma a cada uno de ellos, se calculan sus “ganadores” respectivos y se almacenan estos datos como las coordenadas dentro de la matriz sináptica. Figura 6: SOM después del mapeo final. El siguiente paso es tomar uno a uno los patrones del conjunto de entrenamiento (en forma secuencial), se detecta el “ganador” que le corresponde y se busca de que centroide esta más cerca. Si la etiqueta del patrón de entrenamiento coincide con la del centroide más cercano se realiza un acercamiento por coincidencia, que significa que al valor de esa neurona se le efectúa una corrección que la hace más “parecida” a su representativo (ver ecuación 3). En el caso que las etiquetas no coincidan se aplica un distanciamiento por diferencia, que es una corrección que hace que esa neurona se “parezca menos” (aumentando su distancia euclidiana) a ese centroide, ya que no le corresponde (ver ecuación 4). Valor corregido = valor actual + coef.L.V.Q. x (patrón – valor actual) (3) Valor corregido = valor actual + coef.L.V.Q. x (valor actual – patrón) (4) Efectos del proceso L.V.Q Este proceso es recomendable en problemas en los cuales surgen dos “granos” de la misma clase. ¿Qué significa esto? Que cuando se realiza el etiquetamiento 369 DETECCIÓN DE LATIDOS ECTÓPICOS CON REDES NEURONALES Fritschy J.L. et al de la matriz y se hace el mapeo final, se observa que en dos sectores de la matriz sináptica aparecen neuronas identificadas con la misma clase, una aglomeración mayor y otra menor (Ver clase gris medio en la figura 6). Si en este caso se ejecutan algunas iteraciones de LVQ (cada iteración implica tomar todos los patrones de la matriz de patrones de entrenamiento), es probable que desaparezca la aglomeración más pequeña y de esta forma se logre aglutinar las clases y uniformizar la matriz. La figura 7 muestra la matriz sináptica de la figura 6 después de 100 iteraciones de LVQ con un coeficiente de LVQ de 0.05. Como todo proceso artificial, la aplicación de LVQ trae daños colaterales, y la principal de ellas es que se transforma la matriz sináptica. Como se sabe, una vez terminado el entrenamiento no supervisado, la matriz establece una relación isomórfica con la matriz de patrones de entrenamiento, y si se transforma más de lo debido se estará deteriorando el isomorfismo buscado. Código simbólico Debido a que cada vez que se inicia un entrenamiento la matriz sináptica está cargada con valores aleatorios, y que la presentación de los patrones de entrenamiento se lleva a cabo de forma aleatoria, los procesos de entrenamiento no poseen la característica de reproducibilidad. Figura 7: Matriz de la SOM después de 100 iteraciones. Otro problema que se presenta en las pruebas de estos sistemas es que el rendimiento de los mismos depende fuertemente de los patrones de entrenamiento elegidos, por lo que para cada situación particular habría que hacer una prueba distinta. Frente a estos inconvenientes, y para hacer un análisis estándar de todas las redes, se recurre a código simbólico. Se denomina código simbólico a una matriz de patrones de entrenamiento compuesta por vectores artificiales, los cuales no provienen de ninguna etapa de selección de características real sino que son generados con el fin de verificar el 370 PROCESAMIENTO DE SEÑALES E IMÁGENES: TEORÍA Y APLICACIONES entrenamiento de la red. Estos vectores poseen distancias entre ellos previamente calculadas. Por ejemplo, si se quiere crear una matriz de patrones de entrenamiento muy simple con tres clases, se propondría la siguiente: 0.20, 0.25, 0.30, 0.45, 0.50, 0.55, 0.70, 0.75, y 0.8. De esta manera se obtienen tres clases con sus representativos en el centro y equidistantes entre ellos, como así también con distancia constante a los de su misma clase. La utilización de este tipo de código permite saber en una primera aproximación si la red ha evolucionado correctamente, ya que se debería obtener en el mapeo final de la matriz sináptica, tres clases con aproximadamente la misma cantidad de neuronas cada una y sus centroides equidistantes entre ellos. Técnicas de análisis en paralelo Debido a que el criterio de comparación que utiliza la red neuronal es la distancia euclidiana, se observa que, en la mayoría de los casos, las componentes de un patrón de entrenamiento están consideradas en forma global y no en forma individual. Esto hace que no se pueda hacer un análisis eficiente del problema, ya que en general las características extraídas de un fenómeno provienen de distinta naturaleza3. Esta problemática se la denomina de datos no coherentes, debido precisamente a que, al provenir sus características de distintas fuentes, no poseen coherencia natural entre ellas; por ejemplo, supóngase que se quiere clasificar un conjunto de puertas y se selecciona el largo y el material del que estén hechas como características relevantes. Seguidamente, al codificar un determinado patrón que corresponde a una puerta, se obtiene el vector [1.2, 2] (en donde 1.2 es el largo y 2 es el código del material del que está hecha). Si se calcula la norma (parámetro que se utiliza para encontrar el ganador) se obtiene 2.33, pero es evidente que este número no aporta ninguna información, sino por el contrario, brinda una mala información porque proviene de “mezclar” numéricamente dos características que no poseen relación entre ellas. Frente a esta problemática se resuelve utilizar, para la clasificación, cada una de las características por separado. Esta solución tiene una fuerte impronta por seguir un modelo biológico, considerando una propiedad importante de los sistemas sensoriales del cuerpo humano: Las sensaciones corporales (audición, vista, gusto, olfato, tacto y apticidad) son adquiridas por nuestros “sensores naturales”, (oídos, ojos, lengua, nariz y manos), y todos estos datos ingresan al centro de 3 Existen aplicaciones que intentan, modificando la ley de comparación, la ponderación desigual de las componentes aunque a criterio del autor es mejor el análisis separado y jerárquico de las mismas. 371 DETECCIÓN DE LATIDOS ECTÓPICOS CON REDES NEURONALES Fritschy J.L. et al procesamiento natural (zona de Wernicke del cerebro) para ser analizados y en función de éstos “estimar” la situación actual. Lo destacable es que los caminos y los centros de inserción de los axones provenientes de las células de distintos sentidos van por caminos separados, y por lo que se sabe a nivel biológico, estas señales nunca tienen interacción física, sino que son tomadas por separado y de alguna manera ponderadas por el cerebro para definir el estado corporal actual. (Guyton 2001). Esta propiedad nos sugiere que el sistema clasificador debe adquirir y procesar por separado las señales adquiridas y luego, en una etapa jerárquica superior, ponderar las mismas para la estimación del estado actual. Presentada la idea a llevar adelante, se describirá cual es la función de las redes neuronales en este esquema. Cada característica en sí es un fenómeno a clasificar, de esta manera cada red neuronal tiene que entrenar sobre una característica en particular y entregar una conclusión. Estructura multicapa fallida En una primera aproximación, para desarrollar un programa que cumpla con estas características, se podría pensar en mantener la misma matriz sináptica que realice un entrenamiento por capas. Por ejemplo, si se tiene una matriz de patrones de entrenamiento en la cual cada patrón tiene tres características entonces, para llevarlo a cabo, cada vez que se toma un patrón se debe procesar cada característica en forma individual y entrenar los tres “pisos” de la matriz sináptica por separado. Cada uno de los pisos es totalmente independiente a los otros, por lo tanto los “ganadores” de cada una de las capas no tienen porque ubicarse en el mismo lugar. Debido a que las características son de distinta naturaleza, cuando se tiene una curva de entrenamiento apropiada para una de ellas es muy poco probable que lo sea para los dos restantes. Esto obliga a que se deba tener una curva de entrenamiento para cada una de las capas, pero si las curvas de entrenamiento son distintas, las reducciones de vecindario no estarán sincronizadas, trayendo como consecuencia que el entrenamiento de una capa termine antes que el de las demás. Debido a las complicaciones mencionadas, los entrenamientos no se pueden hacer en forma paralela sino que serían viables en forma secuencial. La complejidad computacional se debe al error conceptual que utilizamos desde un comienzo al pensar el problema como una red con varias capas en vez de plantearlo como distintas redes independientes. De lo anteriormente expuesto surge que el único proceso que se debe realizar, una vez terminada la etapa de selección de características, consiste en armar la matriz de patrones de entrenamiento que le corresponde y entrenar la matriz sináptica exclusiva de esta característica. 372 PROCESAMIENTO DE SEÑALES E IMÁGENES: TEORÍA Y APLICACIONES Etapa de ponderación Esta etapa, también llamada etapa de consulta, haciendo alusión al proceso al que somete a las redes para poder obtener la clasificación final, es la encargada de combinar la información generada por las distintas redes y llegar a una conclusión. Existen varias formas de ponderación y, frente a una aplicación en particular, puede ser necesaria una nueva forma ad hoc. Las formas más conocidas son las de “voto directo”, “importancia ponderada” y “reglas de inferencia”. Desarrollaremos esta última forma ya que es la utilizada en la aplicación que describiremos más adelante. Se pueden ver detalles sobre las dos primeras en (Fritschy 1999). El sistema se basa en establecer la importancia de las conclusiones de las distintas matrices sinápticas en forma de reglas de inferencia predefinidas. Por ejemplo, si se tienen tres clases (A, B y C) y dos redes (o sea que se han extraído dos características de cada patrón), y una de las matrices sinápticas, debido a una particularidad especial de la característica a la cual responde, distingue claramente la clase A pero mezcla los componentes de las clases B y C, entonces en este caso a la conclusión que da esta matriz se le debería dar importancia si ella concluye que el fenómeno es clase A, y se le debería restar importancia si clasifica al fenómeno como B o C. En forma análoga se supone que la otra matriz sináptica distingue bien la clase C pero “confunde” las clases A y B. Con esta estructura se resuelven varios problemas de clasificación ya que si la red 1 concluye que el fenómeno es A se acepta que es una A, pero si indica que es B o C se consulta a la red 2, la cual si clasifica el patrón como C se acepta que es C y por descarte si lo clasifica como A o B se acepta que el fenómeno es B. De esta manera se aprovechan utilidades parciales de cada una de las conclusiones de las redes para generar una robusta conclusión final. Aplicación: Detección de latidos ectópicos en registros Holter En el trabajo ya citado (Fritschy 1999) se pueden observar todos los detalles computacionales y conceptuales para llevar a cabo la clasificación. Este clasificador posee siete etapas de procesamiento de la señal de un registro Holter. Las primeras tres son de optimización de la relación señal/ruido, segmentación de latidos y extracción de características. La cuarta y quinta focalizan sobre la clasificación de cada una de las características por distintas matrices sinápticas y la utilización de un árbol de reglas de inferencia para obtener la clasificación final. La sexta y séptima etapa apuntan a, una vez etiquetado cada latido, almacenarlo 373 DETECCIÓN DE LATIDOS ECTÓPICOS CON REDES NEURONALES Fritschy J.L. et al en una base de datos y verificar si se cumplen secuencias que pueden indicar patologías y finalmente emitir un informe de diagnóstico4. El objetivo de estas páginas es concentrarnos solamente en las etapas 4 y 5. Para ello debemos aceptar que se dispone de patrones de entrenamiento con cuatro características ya extraídas: Ancho del complejo QRS. Distancia relativa desde el pico de la onda P hasta la onda R. Ancho de la onda P. Alto de la onda P. Etapa de clasificación. Preliminares El objetivo de este sistema es el de clasificar cada uno de los latidos en cuatro clases posibles: normales, auriculares, ventriculares y ruidosos. Esta clasificación es netamente morfológica, y un buen ejemplo de cómo la llevaremos adelante es analizar cómo un humano experto realiza el mismo trabajo. El humano, en primera instancia, observa características morfológicas relevantes que más tarde, relacionadas con determinadas reglas de inferencia que están sustentadas por la comprensión fisiológica del fenómeno, le permiten clasificar el latido. Warming Up Todo trabajo con redes neuronales no supervisadas comienza con pruebas sobre la sensibilidad de las redes a los diferentes tipos de patrones a clasificar. Es en esta etapa de “calentamiento” donde se define el tratamiento que se le debe dar a las características extraídas en lo que concierne a ajuste de rango y linealidad. Ajuste de rango Para normalizar el tratamiento de los datos, las características deben ser cuantificadas como números entre 0 y 1. Este ajuste de rango se hace a través de una función lineal que transforma el máximo valor en 1 y el mínimo valor en 0. Dado que esta recta esta definida y no cambia a lo largo del algoritmo y que los valores de máximo y mínimo surgen después de analizar una gran cantidad de datos, todos aquellos valores que estén fuera de este rango se ajustan al límite más cercano, o sea, los mayores al máximo toman el valor del máximo y los menores del mínimo toman el valor de mínimo. 4 Téngase en cuenta que este sistema analiza unos 85000 latidos, los cuales son etiquetados y el reporte final muestra estadísticas de clasificación y tendencias. 374 PROCESAMIENTO DE SEÑALES E IMÁGENES: TEORÍA Y APLICACIONES Entrenamiento de las redes Para formar los grupos de entrenamiento se tomaron patrones de distintos registros con morfologías de latidos normales, auriculares y ventriculares. Las figuras 8, 9 y 10 muestran las redes etiquetadas una vez terminado el entrenamiento. El código de colores es: ruido gris claro (amarillo); normales negro (azul), auriculares gris claro (verde), y ventriculares gris oscuro (rojo). Figuras 8, 9 y 10: las SOMs etiquetadas una vez terminado el entrenamiento. Distancia a centroides: regulación de sensibilidad Si bien en el proceso de etiquetamiento quedan todas las celdas de la red identificadas como miembros de una clase, no quiere decir que todas tengan la morfología del patrón característico usado en el entrenamiento. Este fenómeno se puede explicar de la siguiente manera: una vez que se ubica el centroide, que representa la posición que ocupa en la red el patrón representativo de cada clase, las celdas del vecindario cercano representan latidos de gran concordancia con él, pero a medida que nos alejamos la semejanza comienza a disminuir hasta el límite en el cual, si se da “un paso más” se convierte en una latido de otra clase. Puede ocurrir que estas celdas que se encuentran etiquetadas como de una clase pero que son linderas con otra, no coincidan con la opinión del experto en lo que respecta a la clasificación por lo cual con la exigencia de la distancia mínima al centroide no se las tienen en cuenta y se las etiqueta como latido no clasificado. Por lo tanto, el concepto de distancia mínima al centroide establece que para que la red clasifique a un latido como miembro de una clase en primera instancia debe “caer” dentro de esa clase y estar dentro de un radio mínimo con respecto al centroide. El parámetro de radio mínimo es configurable de acuerdo a la aplicación. LVQ y distancia a centroide. Relación de compromiso El proceso de LVQ se utiliza para acentuar los bordes entre clases y de esa forma hacer desaparecer las “islas” en las partes alejadas del centroide. A su vez 375 DETECCIÓN DE LATIDOS ECTÓPICOS CON REDES NEURONALES Fritschy J.L. et al el concepto de distancia mínima al centroide es utilizado para hacer más robusta la matriz concentrando las decisiones correctas en el centro de cada clase. Evidentemente los dos procesos tienen puntos en común y teniendo en cuenta que un fuerte proceso LVQ puede “desfigurar” el entrenamiento inicial es conveniente aplicar un proceso LVQ leve (pocas iteraciones con bajo coeficiente de acercamiento) y luego hacer uso de la restricción de la distancia mínima al centroide, no concentrando las decisiones muy en el centro de la clase pero si dejar afuera aquellas celdas lejanas que tienden a provocar un error en la clasificación. Etapa de reglas de inferencia En esta etapa se lleva adelante el proceso de clasificación propiamente dicho. La misma responde a un flujograma (ver figuras 11 y 12), el cual en función de las respuestas de cada una de las redes consultadas, avanza hacia una clasificación definitiva del latido. A continuación daremos una descripción exhaustiva del funcionamiento del flujograma. Si bien entraremos en detalles propios de la aplicación es importante que el lector observe un ejemplo de cómo se tratan los datos en esta etapa. Primera etapa. Frente a la detección de una onda R candidata cabe preguntarnos si es un complejo QRS o simplemente un ruido no filtrado. Si no es un complejo QRS se sigue adelante con el próximo latido del registro y si lo es, pasa a la segunda etapa. Segunda etapa. En este paso se consulta si el latido es prematuro, lo que lleva a comparar la distancia R-R actual con la distancia previa (o con la media de latidos anteriores). Si no lo es se pasa a la tercera etapa y si lo es a la cuarta etapa. La decisión en esta etapa depende del parámetro fijado para considerar un latido como prematuro. Tercera etapa. En esta instancia ya se sabe que se tiene un complejo QRS que no es prematuro por lo cual resta verificar si cumple con la existencia de la onda P y en ese caso si la distancia P-R es clasificada como normal. En función a estas consultas, y como indica el flujograma, se puede llegar a etiquetar un latido como normal, ventricular no prematuro o bloqueo de primer grado. Cuarta etapa. A esta instancia se llega sabiendo que se tiene un complejo QRS prematuro, por lo que se debe consultar nuevamente a las redes para saber si se está en presencia de un latido ventricular puro, auricular o bloqueo de primer grado. 376 PROCESAMIENTO DE SEÑALES E IMÁGENES: TEORÍA Y APLICACIONES Entrada de señal con una onda R candidata Es un complejo QRS? NO Se continua adelante en el registro SI Es un R-R prematuro? NO NO Hay onda P? SI SI (1) Sigue en pagina siguiente NO Hay onda P? Ventricular SI (2) Sigue en pagina siguiente Figura 11: flujograma de clasificación (1ra parte). 377 Ventricular No Prematuro DETECCIÓN DE LATIDOS ECTÓPICOS CON REDES NEURONALES (1) Viene de pagina anterior (2) Viene de pagina anterior SI SI Distancia P-R normal? Fritschy J.L. et al NO NO Distancia P-R normal? REF 1 REF 2 SI SI Normal Auricular Figura 12: flujograma de clasificación (2da parte). ¿Cómo se responden las preguntas? Como se puede observar en el flujograma hay muchas preguntas por SI o por NO, por lo cual es necesario definir como se arman cada una de las respuestas. ¿Es un complejo QRS? Una vez que se detecta la presencia de una onda R candidata se consulta a la red de “ancho de complejo QRS” y se considera que no es un complejo QRS solamente si la red NO clasifica al latido dentro de las tres clases siguientes: auricular, ventricular o normal. Esto indica que las exigencias son bajas (depende exclusivamente del criterio que utilicemos del concepto de distancia mínima a centroide) y que se descartan solamente los latidos que son clasificados como ruido. 378 PROCESAMIENTO DE SEÑALES E IMÁGENES: TEORÍA Y APLICACIONES ¿Es un R-R prematuro? Esta pregunta es contestada comparando el periodo del latido actual con el periodo del latido anterior y teniendo en cuenta el coeficiente configurable de porcentaje de latido prematuro. ¿Cuándo no hay onda P? Las redes a consultar en este punto son las de “alto de onda P” y “ancho de onda P”. Se considera que NO hay onda P cuando la red de “altura de onda P” y la red de “ancho de onda P” clasifican al latido como ventricular. [Es de suma importancia el ajuste fino del criterio de distancias mínimas a centroides]. ¿Distancia P-R normal? Esta respuesta es afirmativa solo en el caso que la red de “distancia entre onda P y R” clasifique al latido como normal. En cualquier otro caso la respuesta es negativa. La “capacidad de clasificación” de este tipo de algoritmos es medida bajo diferentes criterios y es contrastada contra índices obtenidos por algoritmos comerciales frente a la clasificación de curvas estándares. El algoritmo arriba descrito obtuvo una “capacidad de clasificación” similar a la del modelo comercial de HP del año 1992, con un 3% por debajo de éste (Fritschy 1999). Las redes neuronales no supervisadas poseen una ventaja diferencial con respecto a otros métodos de clasificación supervisados. A pesar de que todavía no hay modelos matemáticos que predigan el comportamiento de los SOMs, los mismos pueden ser utilizados en diferentes aplicaciones con destacadas capacidades de clasificación. Aplicación: detección y clasificación de latidos cardíacos La detección y clasificación precisas del complejo QRS del electrocardiograma son muy importantes en la posterior detección y clasificación de latidos cardiacos. Una de las aplicaciones más importantes de la detección y clasificación de latidos cardiacos es el estudio de la variabilidad de la frecuencia cardiaca (Saul 1988), así como en estudios de arritmias, entre otros (Risk 1997). El principal objetivo de la presente sección de este capítulo es proveer un procedimiento simple para la detección y clasificación de latidos, utilizando un algoritmo de preprocesamiento para la detección de los complejos QRS, y luego una red neuronal auto-organizada para la clasificación de los mismos. El algoritmo de preprocesamiento puede utilizar más de una derivación del ECG, esto permite independencia en caso de ruido o pérdidas de señal, y se basa en transformaciones no-lineales y derivadas (Hamilton 1986, Risk 1995). El segundo procedimiento utiliza una SOM para la clasificación de latidos, permitiendo la utilización de latidos normales de cada paciente para el 379 DETECCIÓN DE LATIDOS ECTÓPICOS CON REDES NEURONALES Fritschy J.L. et al entrenamiento de la SOM, y de esta forma el procedimiento se ajusta para las características del ECG de cada paciente. Métodos Algoritmo de preprocesamiento El algoritmo de preprocesamiento calcula el vector del ECG utilizando todos las derivaciones disponibles (l1, l2 , ... ln) son elevadas al cuadrado y sumadas para calcular el vector ( x (nT ) ), implementado con la siguiente ecuación de diferencia: x (nT ) = l12 (nT ) + l22 (nT ) +...+ln2 (nT ) (5) Donde n es un entero arbitrario y T es el período de muestreo. El paso siguiente tiene la opción de filtrado, en este caso se puede aplicar un simple filtro FIR pasa-bajos, el cual en nuestra aplicación se implementó con la siguiente ecuación: y (nT ) = ( x (nT − T ) + x (nT − 2T ) + x (nT − 3T )) / 3 (6) La salida del filtro se diferencia utilizando la ecuación (7), la cual es una implementación de una derivada de tres puntos como un filtro digital: y (nT ) = ( x (nT ) − x (nT − 2T )) / 2 (7) La localización del pico se determinó cuando la derivada al cuadrado d2 (de la ecuación 3) cruza un valor umbral th. El umbral th se determinó como un porcentaje del máximo de d2. El punto “fiducial” se encuentra dentro de los posteriores 50 ms, después del cruce del th, buscando el valor máximo de la d2. La figura 13 muestra la señales vector y d2. El valor de th se determina dinámicamente, y se renueva cada 30 s; típicamente el valor predeterminado para el th es de 50 %, en presencia de ruido se puede elevar este valor. Figura 13: A) vector, y B) d2. 380 PROCESAMIENTO DE SEÑALES E IMÁGENES: TEORÍA Y APLICACIONES Todos los puntos “fiduciales” determinaron el conjunto de localizaciones de los picos, de los cuales se pueden calcular la serie de latidos de los intervalos RR, y luego calcular la serie temporal de la variabilidad de la frecuencia cardiaca (Berger 1986). Clasificación de los latidos La clasificación de los latidos se realizó con una red neuronal SOM, la cual analiza la morfología del complejo QRS; la SOM determina regiones en un arreglo bidimensional de nodos, para todas las morfologías típicas, denominadas “cluster” (Kohonen 1984, Lippmann 1987). En esta estructura de nodos, cada uno de los cuales se conecta a un arreglo de entradas a través de una conexión de peso variable. Los nodos conforman el mapa, y una vez entrenada la SOM, se puede presentar un nuevo patrón a la SOM, y un nodo “ganador” se determina, esto define la clasificación de este nuevo patrón por las coordenadas del nodo “ganador” en el mapa. El nodo “ganador” se determina como el nodo con la distancia euclidiana mínima, calculada para cada nodo utilizando la siguiente expresión: { } d j = ∑i = 0 xi (t ) − wij (t ) N −1 2 (8) donde d es la distancia euclidiana, j es el índice del nodo, N es la cantidad de muestras del vector de entrada, x es el vector de entrada, i es el índice del vector x, w es el vector de pesos. En nuestro trabajo utilizamos un arreglo de entradas de 50 muestras, correspondientes a 390 ms, con uns frecuencia de muestreo de 128 Hz; esta cantidad de muestras es suficiente para apreciar cambios en la morfología de complejos QRS normales, así como patológicos, tales como latidos ventriculares (ectópicos). Una derivación se selecciona para alimentar la SOM, el criterio de selección se basa en la disponibilidad de datos a lo largo del registro, en el bajo ruido y en la morfología de los latidos ectópicos. La figura 14 muestra un complejo QRS típico, utilizado para el entrenamiento de la SOM, y en la figura 15 podemos apreciar un complejo QRS correspondiente a un latido ventricular. El arreglo de entrada se conecta a un mapa bidimensional de 6 x 8 nodos, y durante el proceso de entrenamiento se produjeron 3000 iteraciones, el coeficiente se decremento, así como el vecindario del nodo ganador, todo esto utilizando una función Gaussiana (Kohonen 1984, Lippmann 1987), con la siguiente ecuación: 381 DETECCIÓN DE LATIDOS ECTÓPICOS CON REDES NEURONALES { 2 f ij = e − ( ai ) + e − ( aj ) 2 }/2 Fritschy J.L. et al (9) donde i y j son las coordenadas alrededor del nodo a renovar, perteneciendo al vecindario, y a es una constante. Figura 14: QRS de un latido normal típico. Figura 15: QRS de un latido ventricular típico. Implementación El algoritmo de preprocesamiento y la SOM fueron implementadas en C++, a través de una clase denominada SOM. En el presente estudio se utilizaron dos derivaciones de ECG provenientes de un segmento de 1 hora, tomados del registro 80128 de la base de datos HMS-MIT-FFMS (Sobh 1995). Resultados Los resultados, después de entrenar la SOM con 3000 iteraciones, con 5 morfologías normales típicas y dos latidos ectópicos, conformaron un mapa tal como lo muestra la tabla 1. 382 PROCESAMIENTO DE SEÑALES E IMÁGENES: TEORÍA Y APLICACIONES La tabla 2 muestra el mapa después de la presentación de todos los latidos correspondientes al registro de 1 hora de ECG. Tabla 1: mapa de la SOM después normal, y V: latido ventricular). . . . . . . . . . . . . . . V . . . . . . V . . . . . . . . . . . N . . . . . N N . del proceso de entrenamiento (N: latido . . . . . . Tabla 2: mapa de la SOM después de procesar todos los latidos del registro (N: latido normal, y V: latido ventricular). . . . . . . N . . . . . . N . . V . . . N . N N V . . . N N N . . . . . . N . . . . . . N N N . Discusión La detección y clasificación precisa de latidos tiene una importancia relevante en el estudio de la variabilidad de la frecuencia cardiaca, debido a que los latidos ventriculares no corresponden a la regulación cardiovascular por parte del sistema nervioso autonómico, sino a problemas de conducción del miocardio, por lo cual dichos latidos cardiacos ectópicos no deben ser tenidos en cuenta (Saul 1990, Bigger 1992, Task force 1996, Risk 2004). El presente capítulo describe un algoritmo para el preprocesamiento del ECG, el cual combina la manipulación de un vector, su filtrado lineal, y un umbral basado en la derivada al cuadrado de la señal filtrada del ECG. El algoritmo presentado es rápido y eficaz, por lo cual se puede utilizar para el procesamiento de registros prolongados de ECG, tales como estudios Holter de 24 horas. La SOM aplicada en nuestro trabajo provee un método que utiliza la morfología del QRS de cada paciente en estudio, de esta forma se previene las diferencias debidas a los diferentes pacientes, así como a diferencias de nivel de las señales, y provee independencia de la derivación del ECG utilizada. La combinación del algoritmo de preprocesamiento y el análisis de la morfología utilizando la SOM, resulta en una alternativa a otros métodos de clasificación de latidos cardiacos, tales como el presentado en la sección teórica del presente capítulo. 383 DETECCIÓN DE LATIDOS ECTÓPICOS CON REDES NEURONALES Fritschy J.L. et al Referencias Berger RD, Akselrod S, Gordon D and Cohen RJ. An efficient algorithm for spectral analysis of heart rate variability. IEEE Trans. Biomed. Eng., vol. BME33, no. 9, pp. 900-904, 1986. Bigger TJ, Fleiss JL, Steinman RC, Rolnitzky LM, Kleiger RE, Rottman JM. Correlation’s among time and frequency domain measures of heart period variability two weeks after acute myocardial infarction. Am. J. Cardiol. 69:891898, 1992. Fritschy J. Sistema de detección de latidos ventriculares ectópicos en registros Holter. Tesis del Master en Ingeniería Biomédica de la Fundación Favaloro. 1999. Guyton y Hall. Tratado de Fisiología Médica. 10ª Ed. Interamericana Mc.GrawHill, 2001. Hamilton PS and W. J. Tompkins WJ. Quantitative investigation of QRS detection rules. Using the MIT/BIH arrhytmia database. IEEE Trans. Biomed. Eng., vol. BME-33, no. 12, pp. 1157-1165, 1986. Haykin S. Neural networks: A comprehensive foundation. Prentice Hall 1994. Hofstadter DR. Gödel, Escher, Bach – Un Eterno y Grácil Bucle. Marzo de 1998. Kohonen T. Self-organization and Associative Memory. Springer-Verlag, Berlin. 1984. Lippmann RP. An introduction to computing with neural nets. IEEE ASSP Magazine, April 1987, pp. 4-22. Press et al. Numerical Recipes in C. Cambridge University Press, ISBN 0-52143108-5. 1995 Risk MR, Sobh JF, Barbieri R, Saul JP. A simple algorithm for QRS peak location: use on long term ECG recordings from the HMS-MIT-FFMS database. IEEE Engineering in Medicine and Biology 17th Annual Conference. 1995. Risk MR, Sobh JF, Saul JP. Beat Detection and Classification of ECG using Self Organizing Maps. IEEE/EMBS 19th International Conference, pp 89-91. 1997. Risk MR, Ramirez AJ. Análisis Tiempo-Frecuencia de la Variabilidad de la Frecuencia Cardiaca y la Presión Arterial. En Procesamiento de Señales e Imágenes: Teoría y Aplicaciones, ISBN 950-42-0038-9. 2004 Saul JP, Albrecht P, Berger RD and Cohen RJ. Analysis of long term heart rate variability: methods, 1/f scaling and implications. Comput. In Cardiol., pp. 419422, 1988. 384 PROCESAMIENTO DE SEÑALES E IMÁGENES: TEORÍA Y APLICACIONES Saul JP. Beat to Beat Variations of Heart Rate Reflect Modulation of Cardiac Autonomic Flow, NIPS, Vol. 5, February 1990. Sobh JF, Risk MR, Barbieri R, Saul JP. Database for ECG, arterial blood pressure, and respiration signal analysis: feature extraction, spectral estimation, and parameter quantification. IEEE Engineering in Medicine and Biology 17th Annual Conference. 1995. Task Force of the European Society of Cardiology the North American Society of Pacing Electrophysiology Heart Rate Variability: Standards of Measurement, Physiological Interpretation, and Clinical Use. Circulation. 1996;93:1043-1065. 385