PROCESAMIENTO EN TIEMPO REAL DE VARIABLES

Anuncio
PROCESAMIENTO EN TIEMPO REAL DE VARIABLES FISIOLÓGICAS
Carlos A. Ramírez R
Miguel A. Hernández S.
[email protected]
[email protected]
Universidad Nacional Experimental del Táchira
Decanato de Investigación – Grupo de Bioingeniería.
INTRODUCCION
El material que se presenta a continuación, brevemente ilustra las tres etapas involucradas
en el diseño de un dispositivo que tenga como objetivo adquirir, visualizar y procesar en tiempo
real, variables fisiológicas tomadas de un ser vivo. En particular, se hace énfasis en el diseño de
estos dispositivos tomando como herramienta el computador personal. Se hace mención a las
técnicas de programación multitarea, que permiten mejorar la velocidad de adquisición de
muestras y visualización de los datos. De igual manera, se describen brevemente dos técnicas
(redes neurales y lógica difusa) para el reconocimiento de patrones que en años recientes se han
establecido
como
herramientas
robustas
y computacionalmente
económicas
para
el
procesamiento de señales en tiempo real.
1. INSTRUMENTACIÓN BIOMÉDICA
Los instrumentos biomédicos son todos aquellos empleados para medir, registrar y/o
controlar el valor de cualquier parámetro fisiológico en observación. Unos se utilizan para
obtener información o aplicar energía a los seres vivos y otros están destinados a ofrecer una
ayuda funcional o a la sustitución de funciones orgánicas. Todo sistema de instrumentación
biomédica presenta una estructura muy similar a la de la Figura 1
paciente
Control de lazo cerrado
(opcional)
Etapa de
visualización
Sensores
Etapa de
Acondicionamiento
Unidad de control
y
procesamiento
Interfaz de
Comunicación
Etapa de
Aislamiento
eléctrico
Etapa de
conversión
Etapa de
Registro
Figura 1. Sistema de Instrumentación Biomédica.
Los datos del paciente son adquiridos a través de sensores, los cuales producen
impedancias, voltajes o corrientes que varían de acuerdo con el comportamiento del parámetro
medido. Existen sensores de diferentes tipos tales como los de temperatura, presión sanguínea,
electrodos para ECG señales electrocardiográficas) y EEG (señales electroencefalográficas).
Algunos de estos sensores tienen un comportamiento lineal y otros un comportamiento no lineal.
Todas las medidas que provienen de estos sensores son transferidas a una etapa de
acondicionamiento que se encarga de amplificarlas y filtrarlas para que puedan pasar “limpias” a
la etapa de conversión. Dichos valores son analógicos, por lo tanto deben ser convertidos a
valores digitales que puedan ser interpretados por un microprocesador, cuya función principal
consiste en
procesarlos y enviarlos de forma inmediata a la etapa de presentación para
visualizarlos o a la etapa de comunicación que es la encargada de transferir estas medidas a otros
sistemas. Pero antes de esta conversión es necesario aislar eléctricamente los circuitos que están
conectados al paciente de los circuitos que conforman realmente el equipo, ya que existe la
posibilidad de que se produzcan corrientes de fuga capaces de dañar el tejido sobre el cual están
colocados los sensores. Estos daños pueden ir desde una simple quemadura superficial de la piel
hasta una fibrilación ventricular (desorden de la actividad eléctrica del corazón que puede
ocasionar la muerte) causada por una estimulación no deseada sobre las fibras del miocardio .
Opcionalmente, el instrumento puede contener un sistema de registro para guardar
secuencias prolongadas de estos parámetros durante intervalos de tiempo considerables y útiles
para estudios clínicos posteriores. Estos registros pueden ser grabados en un papel especial o
pueden ser almacenados en formato digital en un archivo de disco. Algunos sistemas de medición
pueden necesitar de un control de lazo cerrado, por ejemplo, los estimuladores cardiacos
utilizados para diagnosticar arritmias cardiacas, ya que estos deben emitir pulsos de corriente
sobre el tejido con una frecuencia determinada por el comportamiento del corazón ante el
estímulo. Otros equipos como los monitores utilizados en una unidad de cuidados intensivos
(UCI) no necesitan de este sistema, salvo en el caso de detectar algún electrodo que no haya sido
conectado en el paciente debidamente.
2. INSTRUMENTOS MÉDICOS BASADOS EN COMPUTADORES
Los instrumentos médicos basados en computadores tienen la capacidad de presentar las
imágenes, señales y otros parámetros biomédicos en la pantalla de un computador. Los sistemas
más avanzados, tienen la capacidad de procesar digitalmente señales e imágenes. Pero se debe
tomar en cuenta, que toda la posibilidad que tenga un sistema computarizado médico de realizar
estas tareas depende de las características de los datos y de la arquitectura del hardware asociado.
Por ejemplo, una computadora puede procesar señales o imágenes, aplicando un conjunto
de filtros por software útiles para eliminar de la señal las interferencias no deseadas. De igual
manera, se pueden implementar algoritmos útiles para suprimir algunos componentes de una
señal y así poder estudiar un fenómeno asociado solo a un componente de la misma, como es el
caso de la cancelación del complejo QRS de la señal ECG.
Estos algoritmos requieren computadoras con altas velocidades de procesamiento,
preferiblemente basadas en procesadores RISC, tales como los de la serie SPARC de Sun
Microsystems, o procesadores superescalares como los Pentium II, III y IV de la Intel (ver figura
2.2. ), y en algunos casos no es un mito pensar en la implementación de una maquina paralela
(SIMD o MIMD) conformada por varios microprocesadores. Además de los métodos netamente
matemáticos, existen otras formas de procesar y analizar señales, basadas en algoritmos de
inteligencia artificial aplicando redes neurales y reconocimiento de patrones, que también
requieren de las arquitecturas anteriormente mencionadas.
Figura. 2. Computadores RISC vs CISC
Pero no solo de la capacidad de procesamiento depende el éxito de la interpretación y el
análisis confiable de una imagen o una señal médica. También es importante que el sistema de
adquisición sea veloz y que obtenga la mayor cantidad de muestras de los datos que sea posible
en un intervalo de tiempo determinado. En la actualidad, existen tarjetas de adquisición de datos
especiales para obtener imágenes o señales médicas. Estas tarjetas tienen características
peculiares, tales como la posibilidad de realizar transferencias a través de acceso directo a
memoria y buffering1 , ya que muchas de estas contienen circuitos integrados de DMA 2 y
memorias FIFO 3 , adicionales a las que pueda tener el propio computador. El principal fabricante
de este tipo de hardware es la conocida compañía NATIONAL INSTRUMENTS. Otras tarjetas
más costosas incluyen chips DSP4 los cuales son microprocesadores especiales para el
procesamiento de señales digitales.
Sin embargo, no siempre es indispensable una tarjeta de adquisición de datos.
Actualmente el puerto paralelo de capacidades extendidas, proporciona una velocidad de muestro
de 1 Mhz e incluye transferencias con DMA y compresión de datos codificadas en RLE5 . Por otra
parte, el puerto
1
proporciona velocidades de transmisión de datos en el orden de los 14.1
Técnica donde se interpone una memoria de almacenamiento temporal de datos entre un dispositivo de alta
velocidad con uno de baja velocidad, con la finalidad de evitar la perdida de datos.
2
Siglas en ingles que significan Acceso Directo a Memoria.
3
First In, First Out. El primer elemento que se almacena en la memoria es el último que sale.
4
Siglas en ingles que se traducen como Procesamiento Digital de Señales
5
Método de compresión de datos denominado Run Length Encoding.
Megabits por segundo. Estos puertos están incluidos en todas las computadoras personales que
actualmente se fabrican.
3. SOFTWARE PARA EL DESARROLLO DE INSTRUMENTOS BIOMÉDICOS
BASADOS EN COMPUTADORA
Para que el hardware funcione de manera apropiada, el software con el cual se desarrollan
las rutinas de adquisición y presentación de las señales, también desempeña un papel
fundamental. En algunos casos, ciertas rutinas se deben implementar en lenguajes de bajo nivel
para poder acceder a los componentes del hardware de la forma más rápida posible, aunque
implique más trabajo y conocimientos por parte del programador. Por otra parte, con la aparición
de los lenguajes orientados a objetos y los ambientes de desarrollo visuales, se ha hecho más fácil
la programación de las pantallas de presentación de los datos y el manejo de los archivos de
almacenamiento.
Por esta razón, una aplicación médica implantada en un equipo basado en computador,
debe estar conformada por rutinas de bajo y alto nivel para poder gozar de una velocidad
aceptable de adquisición y procesamiento, sin dejar atrás la realización de una interfaz gráfica
con el usuario lo más sencilla y agradable posible.Algunos de los lenguajes utilizados para la
programación de estas aplicaciones son: MASM32, TASM32, BORLAND C/C++, BUILDER
C++, VISUAL C++, LABVIEW.
Es importante destacar que mientras más alto sea el nivel del lenguaje de programación, el
desempeño en términos de velocidad de procesamiento será menor. En la figura 2.3 se ilustra
gráficamente el tiempo en que dura un programador una aplicación vs. el tiempo de ejecución de
la misma.
Figura. No 3.. Tiempo de desarrollo vs. Tiempo de ejecución. Tomada de [.
4. ADQUISICIÓN DE DATOS.
Un sistema de adquisición de datos esta constituido por un conjunto de elementos de
hardware y software cuya principal función consiste en obtener datos provenientes del mundo
exterior y convertirlos en valores que puedan ser procesados y representados en un computador o
en otro sistema de visualización. De esta manera, es posible estudiar la mayoría de los fenómenos
de la naturaleza más subjetivamente, debido a que los datos, ya sean señales o simples valores,
pueden ser analizados con mayor precisión y exactitud. En el campo de la bioingeniería, estos
sistemas se emplean para convertir fenómenos fisiológicos tales como temperatura, presión
arterial, señales electrocardiográficas, etc. en valores digitales que son interpretados en una
unidad de control.
El concepto de convertir una señal continua en el tiempo a su representación discreta
utilizable por un microprocesador, radica en el hecho de que se puede representar dicha señal
continua por medio de sus valores de amplitudes instantáneas tomados en intervalos periódicos
de tiempo . De esta manera, es posible reconstruir la señal original perfectamente con los valores
obtenidos, ya que el tiempo transcurrido entre la adquisición de un valor y el próximo se puede
determinar, conociendo el número de valores por segundo que pueden ser adquiridos sin que se
pierdan datos (ver figura 3), es decir, conociendo la velocidad de muestreo o de adquisición.
Este concepto ha sido explotado en el cine, donde los marcos individuales son fotografías
de alta velocidad de una escena continua cambiante. Cuando dichos marcos proyectan en una
secuencia de alta velocidad, es posible tener una representación casi exacta de la escena original
[.
Figura 4. A) Señal Analógica, continua. B) Señal digitalizada, como se observa en la figura, esta conformada por una serie de puntos donde cada
uno de los mismos tienen su respectivo valor de amplitud y están separados por un mismo intervalo de tiempo C) Señal Reconstruida a partir de la
señal digitalizada.
Los datos digitalizados, se utilizan para reconstruir la señal, como se observa en la figura
4. La señal reconstruida es una buena reproducción de la señal analógica original. Esto se debe a
que esta última no presenta variaciones rápidas que superen la velocidad de muestreo a la que se
adquieren las diferentes muestras. En el caso contrario, la señal reconstruida sería una versión
mucho menos exacta que la original. Por lo general, la velocidad de muestreo, depende de la
velocidad de conversión de la señal analógica a digital, es decir, depende de la velocidad de
respuesta de los circuitos y del software que participa en esta tarea. En algunos casos, se pueden
perder algunas muestras de la señal, pero no una cantidad excesiva, ya que la morfología de dicha
señal al reconstruirla será totalmente distinta. Sin embargo, el Teorema de Muestreo inicialmente
desarrollado por Shannon, garantiza que la señal puede ser reconstruida a partir de sus muestras
sin ninguna perdida de información, siempre y cuando una señal que no tenga componentes mas
altas que una frecuencia fc, sea muestreada a una velocidad al menos de 2fc muestras por
segundo. A dicha frecuencia (2fc) de le denomina Frecuencia de Nyquist .
En la tabla 1, se observan algunos valores de frecuencia correspondientes a señales
biomédicas.
Tabla 1. Señales Biomédicas y sus valores de frecuencia y amplitud. Tomada de [
PARÁMETRO
FRECUENCIA (Hz.)
AMPLITUD
EEG
0 – 150
5 – 300 µV
ECG
0.01 – 250
0.5 – 4 mV
Presión sanguínea invasiva
0 – 50
10 – 400 mmHg
Potenciales nerviosos
0 – 10000
0.01 – 3 mV
Temperatura corporal
0 – 0.1
32 – 40 °C
5. PROGRAMACIÓN ORIENTADA A OBJETOS
Se define la programación orientada a objetos (POO), como un método de implementación
en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los
cuales representan una instancia de alguna clase, y cuyas clases son todas miembros de una
jerarquía de clases unidas mediante relaciones de herencia . Existen tres importantes partes en la
definición: la programación orientada a objetos utiliza objetos, no algoritmos, como bloques de
construcción lógicos (jerarquía de objetos). Cada objeto es una instancia de una clase y las clases
se relacionan unas con otras. Un programa puede parecer orientado a objetos, pero si cualquiera
de estos elementos no existe, no es un programa orientado a objetos.
Un objeto es una colección de datos, junto con las funciones asociadas para operar sobre
esos datos. Sin embargo la potencia real de los objetos reside en el modo en que los objetos
pueden definir otros objetos. Este proceso se denomina herencia y es el mecanismo que ayuda a
construir programas que se modifican fácilmente y se adaptan a aplicaciones diferentes .
6. MULTIPROGRAMACIÓN
La multiprogramación es la gestión de varios procesos en un solo procesador. Es un modo
de trabajo en el que se pueden ejecutar varios procesos simultáneamente con el fin de aprovechar
al máximo los recursos de la computadora. Consiste en aprovechar la inactividad del procesador
durante la ejecución de una operación de entrada o salida de un proceso para atender a otro.
Desde el punto de vista de cada proceso, todos están siendo atendidos al mismo tiempo por un
procesador, que se puede considerar virtual, debido a que en realidad todos son atendidos por
este, pero no al mismo tiempo, este conmuta entre uno y otro
constantemente, dando la
impresión de la ejecución simultanea. Desde el punto de vista del usuario, se considera que los
procesos se ejecutan simultáneamente, sin tener en cuenta que en cada quantum de tiempo se
atiende solo a uno de ellos. Esto último es debido a que la velocidad de conmutación del
procesador es tan alta que hace transparente al usuario los cambios entre la ejecución de un
proceso y otro, y por lo tanto siempre parece que los procesos se ejecutan paralelamente. La
mayoría de los computadores personales, estaciones de trabajo y sistemas operativos actuales
para estas maquinas, tales como UNIX, Windows, OS/2 y el sistema 7 de Macintosh, dan soporte
a la multiprogramación.
6.1. PROCESOS
Un proceso es básicamente un programa en ejecución. Consta de un programa ejecutable,
sus datos y pila, el registro contador y otros, además de toda la información necesaria para
ejecutar el programa . Cuando un proceso se detiene en forma temporal, este debe volverse a
iniciar en el mismo estado en el que se encontraba al detenerse, es decir, el sistema operativo
debe almacenar toda la información relativa al proceso, durante la suspensión del mismo en una
estructura única para cada proceso conocida como bloque de control del proceso (BCP).
6.2 HEBRAS O HILOS
Una hebra es un camino de ejecución dentro de un proceso. Es una unidad remitente de
código ejecutable que se puede ejecutar independientemente, es decir, una hebra puede ser una
función dentro de un programa que se planifica y se conmuta como un proceso. El planificador de
procesos del sistema decide cuando debe ejecutar dicha hebra y cuando debe dejar de hacerlo,
para dar paso a la ejecución de otra hebra u otro proceso [.
De acuerdo a esto, un programa puede ser dividido en múltiples partes para aumentar su
efectividad, por lo tanto, un proceso tendrá una hebra como mínimo, pero es posible que dos o
más de sus fragmentos estén ejecutándose simultáneamente, en otras palabras, el proceso puede
estar conformado por varías hebras, donde cada una de estas, al igual que los procesos, podrá
estar planificada y en cualquier estado de actividad o inactividad. Algo aproximado a este
enfoque lo hacen los sistemas operativos como Windows NT, Windows 98, OS/2, Solaris y
Linux. Los beneficios clave de los hilos se derivan de las implicaciones del rendimiento, es decir,
dura mucho menos tiempo la creación de un hilo dentro de un proceso existente, que la creación
de una nueva tarea como un proceso. Por otra parte, se tarda menos en terminar un hilo y aun
mayor es la velocidad de conmutación6 entre hilos que entre procesos. Por ello, si una aplicación
o una función se puede implementar como un conjunto de unidades de ejecución relacionadas, es
mas eficiente hacerlo con una colección de hilos que con una colección de procesos. Si el sistema
de computo es multiprocesador, se podrán ejecutar varios hilos de la misma tarea en diferentes
procesadores. Si es monoprocesador, se podrán planificar varios hilos para ser ejecutados cuando
en el momento que les corresponda [.
6.3 SINCRONIZACIÓN ENTRE LOS PROCESOS
Una de las características inherentes a la multiprogramación es la concurrencia y se
define como la existencia de varias actividades ejecutándose simultáneamente que necesitan
6
La velocidad de conmutación se rige por el tiempo que tarda el cambio de contexto del procesador, es decir, para
suspender la ejecución de un proceso y ejecutar otro que este en la cola de preparados.
sincronizarse para actuar conjuntamente. Es importante resaltar que para que dos actividades sean
concurrentes, es necesario que tengan alguna relación entre sí, como puede ser la cooperación en
un trabajo determinado o el uso de información compartida .
La existencia de la multiprogramación es una condición necesaria, pero no suficiente para
que exista concurrencia, ya que los procesos pueden ejecutarse de forma totalmente
independiente. Por ejemplo, un editor y un compilador pueden estar ejecutándose
simultáneamente en una computadora sin que exista concurrencia entre ellos. Por otra parte, si un
programa se está ejecutando y se encuentra grabando datos en un archivo, y otro programa
también en ejecución está leyendo datos del mismo archivo, si existe concurrencia entre ellos, ya
que el funcionamiento de uno interfiere en el otro .
Al usar múltiples hilos o procesos concurrentes, es necesario sincronizar las actividades
de los mismos. La razón más frecuente se debe a que la compartición de recursos globales está
llena de riesgos. Aparece cuando dos o más procesos o hilos tienen que acceder a un recurso
compartido que solo puede ser utilizado por uno solo a la vez. Por ejemplo, si dos procesos hacen
uso al mismo tiempo de la misma variable global y ambos llevan a cabo tanto lecturas como
escrituras sobre la variable, el orden en que se ejecuten es crítico. Las situaciones como esta, en
la que dos o mas procesos o hilos leen o escriben ciertos datos compartidos y el resultado final
depende de quien ejecuta que y en que momento, reciben el nombre de condiciones de
competencia .
Para evitar las condiciones de competencia, se debe evitar que más de un proceso escriba
o lea datos compartidos al mismo tiempo, en otras palabras, se debe garantizar la exclusión
mutua. Esta es una forma de sincronización donde una actividad impide que otras puedan tener
acceso a un dato mientras se encuentra realizando una operación sobre el mismo .
Un proceso concurrente se puede encontrar ejecutando labores que no conducen a
condiciones de competencia. Sin embargo, es posible que otra parte del mismo proceso accese a
una región de datos compartidos, desempeñando labores sobre los mismos que puedan ocasionar
conflictos. A estas porciones del proceso se les denominan secciones críticas .
En resumen, para evitar las condiciones de competencia, se deben tomar en cuenta los
siguientes factores:
ü En un grupo de procesos concurrentes, solamente uno podrá estar dentro de su sección
crítica a la vez.
ü No se deben hacer hipótesis sobre la velocidad de los procesadores ni sobre el número de
los mismos.
ü Ningún proceso que este en ejecución debe esperar eternamente para entrar a su sección
crítica.
ü Ningún proceso que este en ejecución fuera de su sección crítica puede bloquear a otro
proceso.
Existen varios métodos para lograr la exclusión mutua y así evitar las condiciones de
competencia. Algunas de estas soluciones fallan en algunos casos, generando un caos en el
sistema, otras presentan un alto porcentaje de efectividad o son simplemente infalibles. Dichas
soluciones se clasifican en dos grupos:
ü Exclusión mutua con espera ocupada.
ü Exclusión mutua sin espera ocupada.
La exclusión mutua con espera ocupada esta conformada por todos aquellos algoritmos
que controlan la entrada a la sección crítica, haciendo que el proceso espere en un bucle que será
roto en el momento en que se cumpla una determinada condición. En este caso, el proceso no
queda bloqueado durante su ejecución, sino que estará compitiendo por el procesador
constantemente. Por esta razón, estas soluciones sobrecargan al sistema innecesariamente. La
espera ocupada puede ocasionar el caos del sistema cuando hay dos procesos concurrentes; Uno
de muy alta prioridad y otro de muy baja. El proceso de menor prioridad inicialmente se
encuentra en su sección crítica. Posteriormente el procesador conmuta y comienza a ejecutar una
espera ocupada en el proceso de mayor prioridad. Como la prioridad es tan alta que imposibilita
la planificación de los demás procesos, entonces el proceso de menor prioridad jamás saldrá de su
sección crítica, debido a que nunca será planificado. A este problema se le conoce como
inversión de prioridad .
Por estas razones, los algoritmos utilizados para evitar las condiciones de competencia no
se basan en la espera ocupada. Entre estos algoritmos, se destacan aquellos que utilizan secciones
críticas, semáforos clásicos y binarios, ya que se pueden implantar sobre la mayoría de los
sistemas operativos actuales. Las soluciones que no utilizan la espera ocupada, basan su
funcionamiento en primitivas de comunicación que bloquean un proceso cuando el mismo no
puede entrar en su sección crítica. De esta manera, el procesador puede ejecutar un proceso
preparado. Cuando el proceso que se encontraba dentro de la sección crítica libera a la misma, lo
hace a través de una primitiva de comunicación que indica al sistema operativo que el proceso
bloqueado puede ser planificado para ejecutarse, ya que puede entrar en su sección crítica.
Las primitivas más sencillas de comunicación son dormir (SLEEP) y despertar
(WAKEUP). La primera es una llamada al sistema que provoca el bloqueo de quien hizo la
llamada, es decir, que sea suspendido hasta que otro proceso lo despierte. La llamada WAKEUP
tiene un parámetro, el proceso por despertar.
7-. RECONOCIMIENTO DE PATRONES PARA EL PROCESAMIENTO DE SEÑALES.
El campo de Reconocimiento de Patrones es considerado un área de estudio inexacta
dentro de las ciencias de la computación. Su estudio permite la aplicación y generación de
distintas técnicas, algunas complementarias, algunas veces competitivas, para aproximarse de la
manera más óptima a la solución de un problema dado. Actualmente, constituye un área donde
se emplea gran cantidad de esfuerzo en términos de investigación y desarrollo guiado por la
necesidad de procesar información obtenida por la interacción entre la comunidad científica y la
sociedad en general. El área de Reconocimientos de patrones es usualmente dividida en cuatro
sub-areas conocidas como: descripción de procesos, análisis de características, agrupamiento
natural y diseño de clasificadores. Ejemplos de problemas relacionados con reconocimientos de
patrones involucran la adquisición de datos, su análisis y posterior transformación para extraer
información y estructura de ellos. Esto con la finalidad de interpretar los fenómenos presentes en
el entorno que nos rodea.
7.1 Reconocimiento Inteligente de Patrones
Hasta años recientes, el tratamiento de problemas relacionados con reconocimiento de
patrones recibía un tratamiento netamente estadístico. Sin embargo, en años recientes con el
advenimiento de poderosos sistemas de computo y el avance de la tecnología informática ha
surgido un área de estudio conocida como Reconocimiento Inteligente de Patrones (RIP). El RIP
involucra la aplicación de técnicas extraídas del campo de la Inteligencia Artificial a la solución
de problemas relacionados con reconocimiento de patrones. Estas técnicas incluyen pero no se
limita a: Sistemas expertos, redes neurales, algoritmos genéricos, sistemas difusos y cualquier
técnica que se encuentre bajo la sombra de la llamada computación emergente. La idea consiste
en pasar de los modelos matemáticos formales a modelos que asemejan de alguna manera la
forma en que un ser humano procesa datos para extraer de los mismos información relevante,
pudiendo desechar aquella que esta de más o genera incertidumbre para el proceso de toma de
decisiones. El Grupo de Bioingenieria en su sub-área de Reconocimiento Inteligente de Patrones,
realiza investigaciones que contemplan la aplicación y el desarrollo de nuevas técnicas
enmarcadas en la descripción anterior. Específicamente, se encuentra aplicando modelos de
redes neurales para el tratamiento de señales Electrocardiográficas, el modelado de sistemas
biológicos basado en su análisis de relación de estructuras cuantitativas (QSAR) y en el análisis
de variables discriminantes dado un conjunto de variables de entrada a un proceso de
clasificación, predicción o toma de decisiones.
7.2 REDES NEURALES
Redes neurales es un área de investigación dentro de una rama de ciencias de la
computación conocida como computación inteligente que se encarga del estudio de modelos
computacionales capaces de exhibir comportamiento inteligente y de aprendizaje basados en
experiencias pasadas. El propósito de este estudio es el desarrollo de entidades capaces de
realizar procesos humanos de una manera automatizada y en algunos casos más óptima.
Los modelos neurales están compuestos de una cantidad de elementos computacionales
no-lineales trabajando en paralelo estructurados en conexiones que tienen semejanza a las redes
neurales biológicas. Dentro de las áreas de aplicación de redes neurales se incluye: El análisis de
señales e imágenes, la robótica, el diagnóstico médico, la teoría de decisiones, el análisis
numérico, la optimización, el control dinámico, los sistemas cognitivos, la econometría, el diseño
de sistemas expertos y muchas más. El papel de las redes neurales en el mundo tecnológico
actual es fácilmente apreciado por el alto número de publicaciones científicas en las cuales se
resalta la versatilidad de esta técnica en la solución de problemas de ingeniería.
Al igual que las redes neurales biológicas consisten de muchas unidades de procesamiento
simple, altamente interconectadas llamadas neuronas. Las neuronas artificiales están conectadas
por canales de un solo sentido a través de los cuales las señales se transmiten. Cada neurona
recibe varias señales sobre sus conexiones de entrada, algunas de estas conexiones provienen de
otras neuronas o del mundo exterior. Sin embargo, una neurona nunca produce mas de una
salida. La mayoría de las conexiones de salida terminar como entrada a otra neurona o terminan
afuera de la red donde generan una señal de control o un patrón de respuesta. El valor de la
salida, que es enviado de una neurona hacia otra depende de un factor de peso que determina
cuanto del valor de la salida llega realmente a la neurona receptora .
La manera en la cual estas conexiones son organizadas y la metodología usada para
determinar los parámetros de peso (el diámetro de las tuberías en nuestro ejemplo), genera una
amplia variedad de modelos y algoritmos de entrenamiento. La Figura 5 muestra como ejemplo,
una red neural creada mediante la interconexión de varias capas de neuronas. Este modelo es
conocido como la red neural multicapa.
Red Neural
Salida
Entrada
Figura 5. Red neural multicapa.
Una red neural artificial puede definirse entonces como: Un conjunto de unidades para el
procesamiento de información llamadas neuronas, arregladas para producir un procesador
inherentemente paralelo y distribuido que tiene un mecanismo natural para guardar
conocimiento proveniente de la experiencia y que permite a su vez hacer uso del mismo. Las
redes neurales artificiales se asemejan al cerebro en dos aspectos:
• El conocimiento es adquirido por la red a través de un proceso de aprendizaje.
• Los valores asociados a cada conexión inter-neural conocidos como “pesos”, son usados para
guardar este conocimiento.
El procedimiento utilizado durante el proceso de aprendizaje es llamado algoritmo de
aprendizaje, y su función es modificar los pesos en las conexiones de la red para alcanzar cierta
función objetiva. Existen numerosos tipos de redes neurales, entre las cuales tenemos las redes
recurrentes, los modelos de auto-organización, redes de resonancia.
APLICACIONES DE LAS REDES NEURALES
En el Grupo de Bioingeniería, las redes neurales son aplicadas a tres áreas básicas de
investigación:
Clasificación:
Proceso que consiste en diseñar un modelo neural que permita tomar como entrada un
patrón desconocido y asignarlo a una clase definida. Básicamente, la idea consiste en generar
una superficie de decisión n-dimensional que permita separar el universo de las variables en
clases o áreas definidas, tal como lo muestra la Figura 6 para dos clases en un espacio bidimensional.
Y
Clase 2
Función de
Decisión
Clase 1
X
Figura 6. Proceso de clasificación bi-dimensional
Agrupamiento natural:
Proceso que consiste en diseñar un modelo neural que permita tomar como entrada un
grupo de patrones desconocidos y conforman con ellos grupos naturales basado en criterios de
distancia, separación grupal, volumen del grupo y disposición espacial. La idea general consiste
en formar grupos de datos con aquellos patrones que presentan ciertas características homogeneas
que permiten que los mismos puedan ser considerados como pertenecientes a una misma clase,
tal como lo muestra la Figura 7 para tres grupos en un espacio bi-dimensional.
Y
Grupo 2
Grupo 3
Grupo 1
X
Figura 7. Proceso de agrupamiento bi-dimensional
Predicción:
Técnica que consiste en diseñar un modelo neural que permita tomar como entrada un
patrón desconocido y predecir cual será el valor de salida asociado con esa entrada mediante una
función matemática. La idea consiste en evitar el arduo y complicado proceso que involucra el
encontrar una ecuación matemática que describa un fenómeno del mundo que nos rodea.
Y
Función a
Modelar
y = f(x)
Valor
Predecido
y = f(x)
Patrón
Desconocido
x
X
Figura 8. Modelado Predictivo
En este caso, la red neural actúa como un modelo general que adapta sus parámetros al
fenómeno bajo estudio representado por un conjunto de muestras históricas sobre su desempeño
bajo ciertas condiciones. Un ejemplo de este proceso se muestra la Figura 8 para el modelado
de un fenómeno bastante conocido como lo es el crecimiento poblacional.
Variables Discriminantes:
Esta técnica consiste en utilizar las conexiones internar de una red neural multicapa para
determinar cual sub-conjunto de variables involucradas en un modelo de toma de decisiones, ya
sea de clasificación o predicción, conformar el más significativo en términos de su capacidad
discriminatoria o representativa. Esto se muestra en la Figura 9, donde se aprecia, que la variable
X, constituye la variable discriminativa al lograr separar las clases, lo cual no sucede con la
variable Y.
Y
Función de
decisión
Clase 1
Clase 2
X
Variable
discriminante
Figura 9. Análisis de variables discriminantes
7.3 LÓGICA DIFUSA
La lógica difusa (fuzzy logic) es considerada una generalización de la teoría general de
conjuntos que permite que los elementos de un conjunto tengan grados intermedios de
pertenencia por medio de una función característica. Con esta idea se modifica el concepto de
bivalencia (0s y 1s) de la lógica booleana, el cual pasa a ser un caso particular de los conjuntos
difusos. La teoría de lógica difusa ha generado en los últimos años la segunda generación de
modelos de representación de conocimiento, mejor conocidos como sistemas expertos difusos.
También, ha revolucionado el mercado japonés de electrodomésticos al incorporar de forma
sencilla conocimiento humano experto en sistemas de control con características no-lineales.
Esto, gracias a lo sencillo del diseño de los sistemas difusos y al alto grado de precisión logrado
en los sistemas de control y decisión creados con esta lógica. Areas de aplicación incluyen, pero
no se limita a: Comunicaciones entre hombre-maquina, medicina, robótica, estudio y estimación
de recursos naturales, análisis de señales e imágenes, sistemas de control, electrodomésticos y
computadoras.
¿ QUE ES LÓGICA DIFUSA ?
Las ciencias utilizan concepto tanto vagos como precisos. Nacimiento, muerte, blanco y
negro, son conceptos precisos; fiebre, anemia y obesidad son vagos. Usualmente, conceptos
vagos son tratados como si fueran precisos. Por ejemplo, se podría insistir en un diagnostico
médico de que fiebre, anemia y obesidad están presentes o ausentes. Este tipo de clasificaciones
impuestas son a veces el producto de valores preestablecidos que tienen que ser excedidos por
una variable de cierta importancia. Aunque la clasificación binaria puede que sea conveniente
para el diseño de un esquema de decisiones, esta frecuentemente produce un modelo
distorsionado que puede impedir significativamente las decisiones.
Lógica difusa provee una herramienta para preservar el concepto de vaguedad en vez de
eliminarlo mediante la imposición arbitraria de sentencias ciertas o falsas provenientes de la
lógica bivalente. Mucha de la lógica detrás del razonamiento humano no esta basada en blancos
y negros, ceros y unos sino en matices de grises y de valores intermedios. Esto se refleja en el
hecho de que la experticia humana, la cual los sistemas expertos pretenden transferir a las
máquinas, es muy frecuentemente dependiente del ambiente, incompleta y de poca confiabilidad.
De esta misma manera, la mayoría de las decisiones en el mundo real se llevan a cabo en un
ambiente en el cual los objetivos, las restricciones y las consecuencias de las acciones posibles no
son conocidas con precisión.
Para manejar la imprecisión cuantitativamente, usualmente se
emplean los conceptos y técnicas de la teoría de probabilidades y, particularmente, las
herramientas proporcionadas por la teoría de decisiones, la teoría de control y la teoría de la
información.
Al hacer esto, nosotros estamos aceptando la premisa de que imprecisión,
cualquiera sea su naturaleza puede ser reducida a procesos aleatorios. Esto desde el punto de
vista de la lógica difusa, es incorrecto.
Específicamente, los adeptos a la lógica difusa proponen la necesidad de una
diferenciación entre procesos aleatorios y procesos difusos. Por procesos difusos, se entiende un
tipo de imprecisión que esta asociada con conjuntos difusos, esto es, clases en las cuales no hay
una transición tajante de pertenencia a no pertenencia. Por ejemplo, la clase de objetos azules es
un conjunto difuso. Al igual lo son las clase de objetos caracterizados por adjetivos tan comunes
como: largo, pequeño, significante, importante, caliente, frío, serio, simple, etc. Realmente en el
mundo que nos rodea hay pocas clases en las cuales existan fronteras bien delimitadas que
separan aquellos objetos que pertenecen a una clase de aquellos que no pertenecen.
En este sentido es importante notar que en las comunicaciones entre humanos,
expresiones como “Juan es varios metros mas alto que Pedro” , “x es mucho más largo que y”
conllevan información a pesar de lo impreciso de su definición. De hecho, se podría decir que la
mayor diferencia entre inteligencia humana y la inteligencia en máquinas recae en la habilidad
exhibida por los humanos para manejar conceptos difusos y a responder a instrucciones difusas.
Es así como hoy en día es imposible decirle a una computadora que mueva “un poquito” el cursor
hacia la derecha sin caer en la necesidad de aportar el dato numérico exacto para realizar dicha
operación.
Para resumir un poco todas estas ideas podemos establecer que por una parte, los
conjuntos difusos son utilizados para representar la imprecisión asociada a la definición de los
limites de un conjunto (ver Figura 10).
Frío
Tibio
Frío
Caliente
Tibio
Caliente
1
1
0
25
50
75
0
25
50
75
Temperatura
Figura 10.
Conjuntos difusos para la variable temperatura.
En la Figura 10 podemos observar como los conjuntos Frío, Tibio y Caliente son vistos
desde el punto de vista de la teoría clásica de conjuntos y de la teoría de los conjuntos difusos,
respectivamente.
En el primer caso, la pertenencia de una temperatura cualquiera en estos
conjuntos es mutuamente exclusiva. Es decir de acuerdo a esta definición, la lectura de un
termómetro es o frío o tibio o caliente. Los limites que definen estos conjuntos son tajantes ya
que a partir de 25 grados se considera que de frío pasamos inmediatamente a tibio. En el caso de
los conjuntos difusos esta transición es gradual en todos los conjuntos; lo cual se ajusta mucho
más a la imprecisión asociada a la definición de las fronteras de estos conjuntos.
RAZONAMIENTO DIFUSO
El razonamiento permite sacar conclusiones lógicas a partir de un conjunto de premisas.
En un nivel de abstracción más elevado, permite generar una respuesta acorde a situaciones que
no han sido analizadas con anterioridad. Un ejemplo sencillo de razonamiento difuso podría ser:
Premisa 1
Premisa
Conclusión
Si x es A entonces y es B
x es A’
y es B’
donde x y y son objetos y A,A’ y B,B’ son conjuntos difusos en los conjuntos universales U y V
respectivamente.
En esta forma de razonamiento difuso, A y A’ junto con B y B’ no son necesariamente
iguales. Si A’ = A y B = B’, el método de razonamiento recién descrito se reduce a lo que se
conoce en lógica como el modus ponens. En otras palabras:
Premisa 1
Premisa
Si el tomate esta rojo entonces el tomate esta maduro
El tomate esta bien rojo
Conclusión
El tomate esta bien maduro
Dada la condición “Si x es A entonces y es B”, es fácil deducir que se trata de una
implicación del tipo A→B, la cual expresa una relación entre A y B. Como se estudio en la
sección III.2, existen muchos mecanismos para lograr obtener la función característica de una
implicación.
Para efectos de ilustrar el mecanismo de inferencia de un sistema difuso,
adoptaremos la formula de implicación de Mandani (Rc).
Aún siendo capaces de resolver el valor de la implicación todavía no sabemos como
obtener B’. La conclusión B’ puede obtenerse tomando la composición del conjunto difuso A’
con la condición difusa A→B ( la regla composicional de inferencia) la cual esta dada por:
B′ = A′ o RA → B
Esta regla es implementada como una operación de máximos y mínimos entre el “vector”
A’ y la “matriz” R. Su finalidad es la de utilizar A’ para reducir R a la dimensionalidad y el
orden del universo de discurso de B o B’. Matemáticamente:
µB ′ = maxmin( µA ′ ( u), µR ( u, v ) )
u
Si A’ es tal que µA ′ (u0 ) = 1 para algún u0 ∈ U, entonces:
µB ′ (v ) = µR ( u0 , v )
ahora,
µR ( u0 , v ) = Rc ( µA ( u0 ), µB ( v ))
lo cual corresponde simplemente al mínimo entre µA (u0 ) y µB ( v) . En el caso de varias reglas
Ak → Bk , simplemente se busca el valor µA k ( u0 ) y se forma el subconjunto B’ como el
subconjunto de B cuyo valor más largo no excede µA k ( u0 ) . Para reglas del tipo “Si x es A y y es
B entonces z es C” se representa la implicación de la forma (A ∧ B)→ C de manera de formar
una relación difusa.
La decisión B’ es un conjunto difuso y como tal puede que no sea de utilidad en una
aplicación dada. Por ejemplo, en el área de control se requiere saber el valor exacto a aplicar a un
determinado proceso. A partir del conjunto difuso B’, un valor v0 debe ser escogido como el
valor representativo. Varios métodos heurísticos pueden ser empleados para seleccionar v0 tales
como el valor al cual B’ alcanza su punto máximo o el punto el cual corresponde al centro de
gravedad del conjunto difuso (método del centroide). En la mayoría de las aplicaciones de hoy
en día, el método del centroide constituye la alternativa más frecuentemente utilizada. Este se
calcula como:
p
∑µ
B′
v0 =
( v j )v j
j =1
(1)
p
∑v
j =1
j
El centroide difuso es único y utiliza toda la información en la distribución del conjunto
difuso B’. En el caso de distribuciones simétricas y de una sola moda, el centroide difuso y la
moda coinciden. En algunos casos es necesario remplazar las sumas discretas con integrales.
Es importante resaltar a este punto que las operaciones de la regla composicional de
inferencia se han podido simplificar gracias al hecho de que los antecedentes corresponden a
valores discretos y no a conjuntos difusos. Si uno o más de los antecedentes fuesen conjuntos
difusos, otras formas de simplificación y aproximación son necesarios.
Más aun, todas las
formas matemáticas discutidas aquí asumen que los universos de discurso son conjuntos discretos
y que los conjuntos difusos pueden ser representados en la forma de vectores. Claro, es posible
usar universos de discurso continuos y representar los conjuntos difusos como simples funciones
matemáticas. En ese caso, la derivación matemática de B’ y en particular su implementación en
un computador difieren bastante de lo expresado aquí.
SISTEMAS DIFUSOS PARA RECONOCIMIENTO DE PATRONES
Sistemas de toma de decisiones basados en lógica difusa es el nombre que se le da a un
conjunto de reglas agrupadas de manera de formar una matriz de relaciones.
Este tipo de
representación es particularmente útil cuando el número de antecedentes es menor que dos. La
visualización gráfica de los antecedentes y las conclusiones proporciona una manera de presentar
en forma compacta las distintas reglas que conforman la base de conocimiento del sistema difuso.
Un ejemplo de un banco de memorias asociativas se muestra en la Figura 11.
Error Global
P
M
G
P
G
M
M
M
M
M
P
G
M
P
P
Iteraciones
P = Pequeño
M = Mediano
G = Grande
Figura 11.
Banco de memorias asociativas para controlar la tasa de aprendizaje de una red
multicapa
Los bancos de memorias asociativas permiten la creación de superficies de control nolineales en n-dimensiones. El mecanismo de inferencia representado por la regla composicional,
permite establecer una relación de entrada y salida que es tan no-lineal como se defina en las
reglas que componen el banco de memorias. Al ser las reglas definidas lingüísticamente, surge
entonces un método que permite trasladar el conocimiento experto de un ser humano a un modelo
matemático general y de simple definición. Se dice que el modelo es general porque permite
modelar sistemas lineales o no-lineales. Para ilustrar el mecanismo de inferencia de un banco de
memorias asociativas basado en la regla de composición max-min se tiene el siguiente ejemplo
que emplea solo dos reglas para el proceso de inferencia. Ejemplo:
Reglas:
Si la temperatura es alta y la humedad es mediana entonces la presión debe ser alta.
Si la temperatura es mediana y la humedad es baja entonces la presión debe ser mediana.
Banco de memorias asociativas:
Temperatura
B
M
A
B = Baja
M = Mediana
A = Alta
M
B
Humedad
A
M
A
Funciones de pertenencia para los conjuntos difusos:
Mediana
Alta
Baja
1
Mediana
1
0
0
0
15
20
0
25 30
Temp.
Mediana
30
40
50
Humedad
Alta
1
0
0
100
200
250
Presión
Suponga ahora que los siguientes valores de temperatura y presión son suministrados:
Temperatura: 24 o C. Humedad relativa: 34 %. Se desea entonces conseguir el valor adecuado
de presión para el sistema que se pretende controlar con el banco de memorias asociativas. El
primer paso consiste en evaluar los valores puntuales dentro de las funciones de pertenencia, esto
es:
Alta
Mediana
Baja
0.8
Mediana
0.6
0.4
0.2
0
15
20
0
30
30
40
Temp.
24
50
Humedad
34
Esto es,
µtemp_alta(24) = 0.8 y µhumedad_mediana(34) = 0.4
µtemp_mediana(24) = 0.2 y µhumedad_baja(34) = 0.6
Aplicando la regla composicional de inferencia max-min, tenemos que los antecedentes de las
reglas tienen los siguientes grados de activación:
Para la primera regla: µtemp_alta ∧ humedad_mediana (24,34) = min (0.8,0.4) = 0.4
Para la segunda regla: µtemp_mediana
∧ humedad_baja (24,34)
= min (0.2,0.6) = 0.2
Al aplicar la regla de implicación de Mandani tenemos que los conjuntos difusos Mediana’ y
Alta’ del universo Presión están dados por:
Mediana
Alta
0.4
0.2
0
100
200
250
Presión
Como se mencionó anteriormente, estos conjuntos difusos como tales puede que no sean
de mucha utilidad cuando se necesita un valor puntual de control. Para obtener este valor se
aplica entonces el método del centroide.
corresponde a:
De esta manera nuestro valor de presión deseado
0.4
0.2
0
220
Presión
De esta manera queda defuzzificada la salida del sistema de decisión, quedando la misma,
lista para ser utilizada.
8. DISCUSIÓN FINAL
En esta breve introducción al procesamiento de señales en tiempo real, se han tocado
brevemente algunas etapas claves en el diseño de un dispositivo de adquisición, visualización y
procesamiento en tiempo real, de señales fisiológicas basado en una computadora personal.
Se
ha dado como una alternativa de bajo costo y alto rendimiento, el diseño de programas basado en
la multiprogramación.
Asimismo, se ha dado una breve introducción a dos áreas del
reconocimiento de patrones con marcado auge en años recientes: las redes neurales y la lógica
difusa. Quedan por cubrir tópicos tales como reconocimiento de patrones basado en estadística,
algoritmos genéticos, data fusión y muchas otras más.
La literatura que se presenta a
continuación puede servir de base para profundizar en los temas ilustrados en este material.
9. BIBLIOGRAFIA DE CONSULTA
Alcalde E. “Conceptos Básicos de Sistemas Operativos”. Introducción a los Sistemas
Operativos. Primera Edición, McGraw Hill.
Beebe D. “Signal Conversión”. Biomedical Digital Signal Processing. Editorial Prentice Hall.
University of Wisconsin. Madison, Wisconsin E.U.A. 1993
Belandría L., Sandoval A., Hernández M. “Diseño de un Sistema de Adquisición de Señales
Electrocardiográficas”. Tendencias Actuales en Bioingeniería. Sociedad Venezolana
de Bioingeniería. Ramírez C - Bravo A Editores. VI Coloquio Nacional de
Bioingeniería, UNET. San Cristóbal, Estado Táchira. 2000
Booch G. Análisis y Diseño Orientado a Objetos con Aplicaciones. Segunda edición, Adisson
Wesley / Díaz de Santos, 1995.
Callejas V., Luis M. “Sistema de Adquisición de Parámetros Fisiológicos de Ocho Canales”.
Trabajo presentado como tesis de grado para optar al título de Ingeniero en
Computación. Universidad Fermín Toro, Cabudare, Estado Lara. 1995
Castro G, Pinilla M “ Diseño y Construcción de un Sistema de Ablación Cardíaca por
Radiofrecuencia”. Trabajo de grado desarrollado en el Laboratorio de Bioingeniería
de la Universidad Nacional Experimental del Táchira. San Cristóbal, Estado Táchira.
1999.
Castro G, Pinilla M, Hernández M., Sandoval A. “ Optimización de un Sistema de Ablación
Cardíaca por Radiofrecuencia”. Tendencias Actuales en Bioingeniería. Sociedad
Venezolana de Bioingeniería. Ramírez C - Bravo A Editores. VI Coloquio Nacional
de Bioingeniería, UNET. San Cristóbal, Estado Táchira. 2000
Chacón G, Salas R . “Diseño y Construcción de un Monitor ECG a través del Computador”.
Trabajo de grado desarrollado en el Laboratorio de Bioingeniería de la Universidad
Nacional Experimental del Táchira. San Cristóbal, Estado Táchira. 1999.
Fu LiMin., Neural Networks in Computer Intelligence. Edit. McGraw-Hill, 1994.
Hernández M., Fernández O. “Adquisición y Presentación de Señales Biomédicas Utilizando
Programación Basada en Multihebras”. Tendencias Actuales en Bioingeniería.
Sociedad Venezolana de Bioingeniería. Ramírez C - Bravo A Editores. VI Coloquio
Nacional de Bioingeniería, UNET. San Cristóbal, Estado Táchira. 2000.
Olson W. “Basic Concepts of Medical Intrumentation”. Medical Instrumentation, Application
and Design. John G. Webster Editor. Third Edition. New York, E.U.A. . 1998.
Pallas R. “Transductores Bioeléctricos”. Introducción a la Bioingeniería. Varios autores bajo la
coordinación de Mompin J. Serie Mundo Electrónico, Editorial Marcombo.
Barcelona, España. 1988.
Parra H., Hugo E. “Central de Monitoreo de los Parámetros Fisiológicos del Cuerpo Humano”.
Trabajo de grado desarrollado en el Laboratorio de Bioingeniería de la Universidad
Nacional Experimental del Táchira. San Cristóbal, Estado Táchira. 2000.
Ramirez-Rodriguez C., Vladimirova T. “A hierarchical fuzzy neural system for ECG
classification”. En 3rd European Congress on Intelligent Techniques and Soft
Computing (EUFIT'95). Acchen, Alemania, Pag. III 1668-1672, Agosto 1995.
Ramírez-Rodríguez C.A. "Detección de Episodios de fibrilación auricular utilizando redes
nuerales multicapa". En I Congreso Venezolano de Ingeniería Eléctrica. Mérida,
Venezuela, Octubre 1998.
Stallings W. “Concurrencia: exclusión mutua y sincronización”. Sistemas Operativos. Segunda
Edición, Prentice Hall, 1997.
Tanenbaum A. Sistemas Operativos Modernos. Primera Edición, Prentice Hall. México 1993.
Tocci R. “Interfaz con el Mundo Analógico”. Sistemas Digitales. Editorial Prentice hall, Quinta
Edición. México, 1993.
Valentinuzzi M. “Objetivos de la Bioingeniería”. Introducción a la Bioingeniería. Varios autores
bajo la coordinación de Mompin J. Serie Mundo Electrónico, Editorial Marcombo.
Barcelona, España. 1988
Descargar