Tesis - Facultad de Ciencias Básicas, Ingeniería y Tecnología

Anuncio
SEP
DGIT
Instituto Tecnológico de Apizaco
“Clasificación de Llanto de Bebés para Identificación
de Hipoacúsia y Asfixia por medio de un Sistema
Híbrido (Genético – Neuronal)”
TESIS DE GRADO POR PROYECTO DE INVESTIGACIÓN
PARA OBTENER EL GRADO DE
Maestro en Ciencias en Ciencias de la Computación
PRESENTA
Orion Fausto Reyes Galaviz
Asesores:
Dr. Federico Ramírez Cruz
Dr. Carlos Alberto Reyes García
Apizaco Tlaxcala
2005
Agradecimientos
Agradezco con la misma importancia a:
Al Dr. Carlos Alberto Reyes García, por ser mi padre,
guía, y asesor, de no ser por sus invaluables consejos,
no hubiera llegado hasta este punto.
Al Dr. Federico Ramírez Cruz, por su invaluable
colaboración durante el desarrollo de esta tesis.
Al Dr. Sergio Cano por las atenciones brindadas durante
mi estancia en Cuba para la investigación relacionada
con el llanto del bebé.
A mi mamá por haberme soportado en las buenas y en
las malas.
A toda mi familia y novia por todo el apoyo que me
brindaron.
A todos mis amigos y compañeros, por haber
compartido tantas experiencias juntos.
A todos los bebés que ofrecieron sus llantos para
realizar este trabajo. Su aportación ayudará a conocer
más sus mensajes.
A COSNET por el apoyo brindado a lo largo de este
periodo, sin el cual no hubiera podido llegar hasta aquí.
Este trabajo es parte de un proyecto financiado por
CONACYT (número 37914-A). Agradeciendo el apoyo
brindado durante mis estudios.
ÍNDICE
Capítulo 1. INTRODUCCIÓN……………………………………….……….1
1.1
Importancia del Proyecto……………………………………..……1
1.2
Justificación……………………………………..………………………3
1.3
Hipótesis………………………………………………………..………..3
1.4
Procesamiento Acústico……………………….……………………3
Capítulo 2. CONCEPTOS
FUNDAMENTALES DEL ÁREA Y
ESTADO DEL ARTE………………………………………………..…………..5
1.5
Análisis de Componentes Principales….………………………8
1.6
Computación Evolutiva………………………..……………..……..9
1.7
Clasificación de Patrones………………………..………………11
Capítulo 3. PREPARACIÓN DEL CONJUNTO DE DATOS E
IMPLEMENTACIÓN DE LA FASE EXPERIMENTAL………….…....12
3.1
Colección de Muestras……………………..……………………..13
3.1.1
Segmentación en 1 o 3 segundos………………………………..………….14
3.1.2
Segmentación en unidades de llanto……………………………………….15
3.1.3. Segmentación por Unidades de Llanto Unidas………………...……...….17
3.2 Extracción de Características…………………….……………….18
3.2.1
Segmentos de 1 o 3 segundos (sin incluir Unidades de llanto Unidas)…..18
3.2.2
Unidades de Llanto………………………………………………...……….21
3.2.3
Unidades de Llanto Unidas……………………………..………………….22
3.2.4
MFCC…………………………………...……………..……………………22
3.2.5
LPC……………………………………………….…………………………23
3.3 Estrategias Evolutivas………………………….………..…………..24
3.4 Redes Neuronales Artificiales (RNA)..…..………………………26
3.4.1
Red Neuronal, Feed-forward (Alimentación hacia adelante)………...….27
3.4.2
Red Neuronal, Feed-forward Input Delay (Alimentación hacia adelante
con retraso en la entrada)…………………………………………….……28
3.4.3
Red Neuronal LVQ (Cuantificación Vectorial Lineal)…………..………29
3.4.4
Entrenamiento (Gradient descent with adaptive learning rate back
propagation)………………………………………...…………………...….30
3.4.5
Entrenamiento (Scaled conjugate gradient backpropagation)….……….31
3.4.6
Validación Cruzada...………………………………………………………31
3.5 Proceso de Experimentación……………..………………………..32
3.5.1
Sistema Híbrido…………………………………………..…………………32
3.5.2
Entrenamiento de las Redes Neuronales……………..……………...……35
3.5.3
Entrenamiento con bebés diferentes…………………...………………….37
Capítulo 4. DESARROLLO DE LA FASE EXPERIMENTAL……....40
4.1
Primeros Experimentos de Selección de Parámetros….41
4.1.1
Retrasos en la Red con Retraso en el Tiempo......………………………..41
4.1.2
Número de Componentes Principales…………………..………………....43
4.2
Experimentos con Parámetros Seleccionados……..…….45
4.2.1
1 Segundo………………………………………………...………………….45
4.2.2
3 Segundos………………………………………...……...…………………48
4.2.3
Unidades de llanto…………………………………………………………..50
4.2.4
Unidades de Llanto Unidas…………………...……………………………51
4.3
Validación del Sistema……………………..…………………..…53
Capítulo 5 ANÁLISIS DE RESULTADOS………………..………..…..57
Capítulo 6 CONCLUSIONES Y TRABAJOS FUTUROS………..….60
BIBLIOGRAFÍA…………………………………………………………..…….61
ANEXOS………………………………………………………………………….65
ÍNDICE DE FIGURAS
Figura 1.1. Análisis de Componentes Principales……………………………...…..9
Figura 3.1. Proceso de Reconocimiento Automático del Llanto del Bebé…........12
Figura 3.2. Segmentación en n segundos………………………………..………...15
Figura 3.3. Segmentación en unidades de llanto………………………………….16
Figura 3.4. Unidades de Llanto unidas a una sola onda de llanto……………….17
Figura 3.5. Mutación Gaussiana de padre a para formar descendiente b………25
Figura 3.6.
Recombinación intermediaria de padres a & b para formar
descendiente c……………………………………………….………………25
Figura 3.7. Entrenamiento de una red neuronal………………….………………26
Figura 3.8. Red Neuronal con Retraso en el Tiempo (TDNN)……………...……29
Figura 3.9. Arquitectura de la red LVQ…………………………..………………29
Figura 3.10. Inicialización de individuos………………………….………………33
Figura 3.11. Selección de los mejores individuos………………...……………….33
Figura 3.12. Generación de la nueva población, con los mejores individuos…...34
Figura 4.1. Precisiones resultantes de cada Retraso probado en la red con
retraso en el tiempo……………………………………………………...….42
Figura 4.2. Comportamiento de entrenamientos con diferentes retrasos…...….43
Figura 4.3. Precisiones dadas por la Red con Retraso en el Tiempo con muestras
de 1 segundo y diferente número de PCs………………………………….43
Figura 4.4. Precisiones dadas por la Red con Retraso en el Tiempo con muestras
LPC de 3 segundos y diferente número de PCs…………………………..44
Figura 4.5. Precisiones dadas por la Red con Retraso en el Tiempo con muestras
MFCC de 3 segundos y diferente número de PCs………………………..44
Figura 4.6. Entrenamiento usando características LPC contra características
MFCC, sin reducción, ninguno alcanza 1x10-8……………………………47
Figura 4.7. Entrenamiento usando características LPC contra características
MFCC y 50 PCs………………………………………………………..……47
Figura 4.8. Entrenamiento usando características LPC contra características
MFCC, sin reducción……………………………………….………………49
Figura 4.9. Entrenamiento usando características LPC contra características
MFCC, con reducción, 70 y 20 PCs respectivamente…………………….49
Figura 4.10. Comportamiento de entrenamiento usando Unidades de Llanto con
características LPC y MFCC…………………………...………………….51
Figura 4.11. Comportamiento del entrenamiento usando Unidades de Llanto
Unidas con Características LPC y MFCC…………….…………………..53
Figura 4.12. Comportamiento de entrenamiento usando muestras de bebés
diferentes con características LPC y MFCC……………………..……….56
ÍNDICE DE TABLAS
Tabla 3.1. Relación de muestras obtenidas por cada bebé, en segmentos de 1 o 3
segundos………………………………………..……………………………20
Tabla 4.1. Resultados utilizando muestras de 1 segundo………………………...46
Tabla 4.2. Resultados utilizando muestras de 3 segundos………….…………….48
Tabla 4.3. Experimentos con Unidades de Llanto probando cada RNA………..50
Tabla 4.4. Experimentos con Unidades de Llanto Unidas probando cada red
neuronal………………………………………………..……………………52
Tabla 4.5. Resultados de las mejores configuraciones, usando muestras de bebés
diferentes……………………………………………...……………………..55
Capítulo 1. INTRODUCCIÓN
1.1
Importancia del Proyecto
El sonido del llanto producido por un infante, es el resultado de su condición
física y psicológica y/o de estímulo externo/interno. Ha sido probado que las causas
del llanto tales como dolor, hambre, miedo, estrés, etc. exhiben diferentes patrones de
llanto. Una madre experimentada puede ser capaz de reconocer el significado de
diferentes tipos de llanto, y con esto reaccionar de una manera adecuada a las
necesidades del infante. Se ha reportado en la literatura que el análisis del llanto de
bebés, era realizado principalmente por análisis visuales de espectrogramas de llanto.
Este método es una evaluación subjetiva y no es muy apropiado para su uso
generalizado en clínicas. Desde los principios del siglo XX, se han hecho esfuerzos
de investigar el llanto de los infantes para poder descubrir cuanta información está
‘oculta’ dentro del sonido. Por lo tanto, era necesario desarrollar un método objetivo
que nos permita realizar una clasificación automática del llanto.
Los neurolingüistas consideran al llanto del bebé como la primera manifestación
del habla. El llanto es la primera experiencia en la producción del sonido, el cual es
seguido por movimientos de la laringe y la cavidad oral, todo esto con la
retroalimentación en la capacidad de escuchar, la cual, deliberadamente, muy pronto
será usada para la producción de fonemas. La adquisición y la selección de fonemas
se logran a través de la discriminación entre las emisiones de actividad vocal
espontánea y su refuerzo auditivo. Von Monakow y Morgue en 1928 enfatizaron la
necesidad de actividades natas tales como la succión, tragar, y el llanto como pasos
previos para el desarrollo del habla [1]. Los niños con pérdida auditiva, identificados
antes de los 6 meses de edad, tienen una mejora significante en el desarrollo del
lenguaje que aquellos niños cuya pérdida auditiva fue identificada después de los 6
1
meses de edad. Los niños con desarrollo normal cognitivo, cuyas pérdidas auditivas
fueron detectadas antes de los seis meses de edad, pueden desarrollar el lenguaje en el
mismo rango o similar que un niño sin problemas auditivos [2]. Los niños
identificados con pérdida auditiva entre el nacimiento y los seis meses de edad tienen
un lenguaje receptivo de 200 palabras y lenguaje expresivo de 117 palabras, mientras
que aquellos identificados entre los 7 y los 18 meses de edad, tienen un lenguaje
receptivo de 86 palabras y lenguaje expresivo de 54 palabras. Cuando se prueban a
los 26 meses de edad, aquellos identificados antes de los 6 meses de edad tienen
crecimiento en las medidas de lenguaje “significativamente” altas, y mejor desarrollo
social personal [3].
En estudios recientes, los análisis subjetivos auditivos de la voz y el habla, han
sido reemplazados por análisis objetivos espectrales fonográficos, con la ayuda de
grabaciones de audio y análisis computarizados, recibiendo atención especial los
análisis espectrales fonográficos del llanto del bebé recién nacido. Los reportes
preliminares se enfocan en los análisis de bebés recién nacidos de término completo,
prematuros, recién nacidos con alteraciones neurológicas, metabólicas, o en los
cromosomas, así como aquellos con anomalías congénitas entre otros. Los estudios
sugieren una variabilidad objetiva del llanto relacionada al estado de salud y la
integridad neuropsicológica. En el caso de los infantes que han pasado a través de un
periodo de asfixia al nacer, están expuestos a posibles cambios o disturbios a nivel
neurológico, dependiendo del grado de asfixia que sufrieron. De acuerdo a la
Academia Americana de Pediatría (AAP), 2 a 6 de 1000 bebés recién nacidos
presentan asfixia, y el índice es del 60% en bebés prematuros con bajo peso, de ellos,
del 20 al 50% mueren durante sus primeros días de vida; de los sobrevivientes, el
25% desarrolla secuelas neurológicas permanentes. Existe una relación cercana entre
el sistema nervioso central y las vías respiratorias que incluyen el aparato fono
articulador. Cuando esta función no es la propia, se detectan cambios a nivel
intrínsico laringe muscular así como en los músculos que intervienen en el proceso
respiratorio, estos cambios se traducirán posiblemente en alteraciones o
modificaciones en el llanto del bebé. La importancia en el estudio del llanto en el
bebé recién nacido durante los primeros meses está relacionada con la información
2
psicológica y neuropsicológica que éste provee del infante, su interpretación correcta
proveerá información complementaria la cual podría soportar los diferentes
diagnósticos clínicos.
1.2
Justificación
La detección de patologías en etapas tempranas del bebé ha sido uno de los
grandes retos a vencer para las ciencias médicas. La falta de medios de interpretación
de las manifestaciones normales del recién nacido ha hecho que esta labor sea
sumamente complicada. El descubrimiento de que la onda de llanto, como único
medio de comunicación de un bebé, contiene información acerca de su estado físico y
anímico y ha abierto la posibilidad de poder diagnosticar patologías desde los pocos
días de nacimiento. Debido a esto, el desarrollo de un sistema que permita la
extracción de la información presente en el llanto, de manera automática, facilitará
grandemente el trabajo de los pediatras y médicos especialistas. Un sistema con tales
capacidades, desarrollado con métodos de vanguardia, que además le permitan
mostrar cierto comportamiento inteligente, será de mayor utilidad ya que podrá ser
utilizado por prácticamente cualquier persona.
1.3
Hipótesis
La hipótesis inicial para este proyecto es que si existe este tipo de información
relevante en el llanto de un bebé, puede ser posible la extracción, reconocimiento y
clasificación de este mismo por medio de mecanismos automáticos, que de ser
implementados por medio de modelos híbridos inteligentes, pueden ofrecer ventajas
como simplificación de desarrollo y procesamiento así como altos índices de
eficiencia en la clasificación.
1.4
Procesamiento Acústico
El análisis acústico implica la selección y aplicación de técnicas de
normalización y filtrado, segmentación de la señal, extracción de características, y
compresión de datos. Con la aplicación de las técnicas seleccionadas tratamos de
3
describir la señal en términos de algunos de sus componentes fundamentales. Una
señal de llanto es compleja y codifica más información que la que es necesaria para
ser analizada y procesada en aplicaciones de tiempo real [4]. Por esta razón, en
nuestro sistema de reconocimiento de llanto usamos una función de extracción como
un procesador de primer plano. Su entrada es una señal de llanto, y su salida es un
vector de características que caracterizan los elementos clave de la onda de llanto.
Todos los vectores obtenidos de esta forma son después alimentados a nuestro
modelo de reconocimiento, primero para entrenarlo, y después para clasificar el tipo
de llanto.
En el capítulo 2 veremos una breve reseña de los trabajos que se han hecho en el
campo de reconocimiento de llanto de bebés, así como algunos resultados
experimentales de algunos de ellos. También haremos un breve repaso a algunos
conceptos fundamentales, usados en esta tesis, tales como el Análisis de
Componentes Principales (PCA por sus siglas en inglés), Computación Evolutiva y
Clasificación de Patrones. En el capítulo 3 observaremos una descripción de nuestra
base de datos, la cantidad de muestras usadas, la forma de captura de las mismas, la
metodología usada para la segmentación de las grabaciones y la extracción de
características usadas para los experimentos propuestos. Asimismo dentro de este
capítulo conoceremos los métodos propuestos para la solución del problema
propuesto, tales como las Estrategias Evolutivas, y las Redes Neuronales usadas para
realizar los experimentos. Finalmente repasaremos de manera detallada el proceso de
experimentación. En el capítulo 4 se encuentra el desarrollo de la fase experimental,
donde se empieza por la selección de parámetros de los experimentos. Una vez
seleccionados estos parámetros, se inicia el proceso de experimentación con todas las
segmentaciones establecidas en esta tesis. Posteriormente validaremos el sistema
usando los mejores resultados de todos nuestros experimentos. En el capitulo 5
realizaremos un análisis de resultados y acabáramos en el capitulo 6 donde veremos
las conclusiones y los trabajos futuros propuestos para la continuación de este trabajo.
4
Capítulo 2. CONCEPTOS FUNDAMENTALES DEL ÁREA Y
ESTADO DEL ARTE
En los 60’s, se realizaron una serie de experimentos llamados “Finnish
Experiments”. El objetivo era crear ‘espectrogramas’, que son visualizaciones del
sonido del llanto, para poder visualmente inspeccionar el comportamiento de sonidos
de llanto de diferentes bebés [5]. Más tarde, el profesor Howard Golub de Hospital
Infantil de Boston, Massachussets, llevó a cabo una serie de pruebas llamadas los
‘Primeros Análisis Auditivos” [6]. En otro experimento noventa y tres madres y sus
bebés fueron entrenados por dos semanas para que después a las madres se les pidiera
identificar a sus propios bebés desde una colección de diferentes llantos. El resultado
de esta prueba fue de más del 95% de las madres fueron capaces de identificar a su
propio infante.
Zeskind y Lester [7] demostraron que, por medio del sonido del llanto, los
observadores entrenados podían diferenciar entre bebés recién nacidos con alto riesgo
de los que no sufrían ningún riesgo. Toda esta información hacía creer a los
investigadores que podía ser posible extraer cierta información del sonido del llanto y
usarla para saber si el infante tenía dolor o estaba en algún riesgo.
Con el avance de la tecnología, hemos sido capaces de precisar la estimación de
características y de la clasificación automática del sonido, imágenes y otros tipos de
datos en categorías predefinidas, este tipo de tecnologías se volvieron deseables en el
área de la clasificación de llanto. La idea de una máquina capaz de diagnosticar
automáticamente ciertos problemas en un infante, sin lastimarlo y sin tener que
esperar resultados de laboratorios de prueba era muy atractiva para los científicos y
médicos; por lo tanto, se enfocaron algunas investigaciones para ver cómo describir
numéricamente el sonido del llanto de los bebés, y como clasificar esta información
5
para ayudar en el establecimiento de diagnósticos confiables. El área de investigación
llamada “Análisis de Llanto de Bebés” había nacido.
Existe un Grupo de Procesamiento de Voz (GPV) de la Universidad de Oriente
(UO), en Santiago de Cuba, Cuba; el cual es uno de los grupos más grandes e
importantes dedicados al estudio del llanto de infantes. Este grupo dirigido por Sergio
D. Cano Ortiz [8], [9], [10] usa, entre otros mapas auto-organizados de Kohonen para
la clasificación de unidades de llanto infantil.
En 1984 fue propuesto un sistema de clasificación por Cohen y Zmora [11], y
fue demostrada una clasificación exitosa en una base de datos preliminar que
consistía de llantos de hambre y dolor de bebés totalmente sanos. El sistema estaba
basado en “Modelos Ocultos de Markov de Densidad Continua”, el cual ha sido
aplicado de manera exitosa en el reconocimiento automático del habla. En 1995
Petroni [12] usó redes neuronales para diferenciar entre llantos de dolor y de no-dolor.
En 2002 Dror Lederman [13] usó Modelos Ocultos de Markov (HMM) para clasificar
diferentes tipos de llanto, incluyendo bebés prematuros; infantes expuestos a cocaína
mientras estaban dentro del útero; y bebés que sufren de fisura palatina mostrando
resultados que van desde 40% hasta un 63% en reconocimiento. También en 2002
Taco Ekkel [17] intentó clasificar sonido de llanto neonato en categorías llamadas
normal y anormal (hipoxia), y reporta un resultado de clasificación correcta de
alrededor de 85% basado en una red neuronal de base radial. En 2003 Reyes y
Orozco [15] clasifican muestras de llantos de niños sordos y normales, obteniendo
resultados de reconocimiento que van de 79.05% hasta 97.43%.
Existen varios modelos que pueden resolver este problema, a continuación se
mencionaran algunos de los que pudieran resolver este problema y estarían
propuestos para trabajos futuros.
Los Sistemas Clasificadores (CSs por sus siglas en inglés), son sistemas de
reglas que automáticamente generan poblaciones de reglas que cooperan para lograr
una tarea deseada. Los CSs [16] fueron inspirados por el enfoque Michigan
(Michigan Approach) cuyos fundamentos fueron puestos por Holland (1975). A
6
diferencia de los sistemas expertos tradicionales donde las reglas eran hechas a mano
por los ingenieros de conocimiento, los CSs usan algoritmos genéticos (GA por sus
siglas en inglés) como un operador de descubrimiento para generar clasificadores.
Cada clasificador son reglas “IF-THEN” con una parte de condición y otra parte de
acción. La organización del prototipo propuesto se componía de las tres siguientes
partes principales: i) El sistema de actuación; ii) El sistema de asignación de crédito;
y iii) El sistema descubridor de clasificadores [17].
Mientras que el enfoque Michigan tiene que ver principalmente con aprendizaje
continuo (en línea) en problemas no inductivos, existe otro tipo de enfoque llamado el
Enfoque Pittsburg (Pittsburg Approach), el cual es particularmente adaptado para
entrenar en problemas tanto inductivos como no inductivos. Los conceptos detrás de
esto son realmente diferentes también, mientras que el enfoque Michigan está más
cercano a la idea de representar el conocimiento de una sola entidad que aprende a
través de su interacción con el ambiente (y consecuentemente su adaptación a él),
Pittsburg se acerca más a la idea de la evolución a través de la competencia entre
individuos y adaptación en el ambiente. En este enfoque, cada individuo representa
una entidad completa del conocimiento, y consecuentemente, no ocurre una
interacción con otros individuos diferentes al evaluar dicho conocimiento. Esto evita
la necesidad de crear algoritmos complejos para su propósito [17].
La computación neuro difusa, es un paradigma de un híbrido que ha sido
adecuadamente investigado. Este nos permite incorporar las ventajas genéticas de las
redes neuronales artificiales y lógica difusa con un paralelismo masivo, robustez,
aprendizaje, y el manejo de incertidumbre e imprecisión, dentro del sistema. En el
caso de la clasificación de patrones y generación de reglas, podemos explotar la
capacidad de las redes neuronales de generar una decisión altamente no lineal, y
modelar las incertidumbres en la descripción de entrada y la decisión de salida por
medio del concepto de conjuntos difusos. Por lo general, los modelos neuro difusos
funcionan mejor que las redes neuronales o los sistemas difusos considerados
individualmente [18].
7
2.1
Análisis de Componentes Principales
El análisis de componentes principales, o PCA (por sus siglas en inglés), es muy
usado en el procesamiento de señales, estadística, y computación neuronal. En
algunas áreas de aplicación, éste es también llamado la transformada (discreta) de
Karhunen-Loéve, o la transformada de Hotelling.
El objetivo del PCA es el reducir la dimensión de un conjunto de p variables a un
conjunto m de menor número de variables para mejorar la interpretabilidad de los
datos. En muchas situaciones prácticas las observaciones se obtienen de un gran
número de variables correlacionadas; en esos casos, es natural buscar varios caminos
en los cuales la dimensión del problema (es decir, el número de variables que van a
ser estudiadas) se reduzca, sin sacrificar demasiada información útil. El conjunto de
variables o características originales, en ocasiones, son redundantes, por lo que
también es útil reducir la dimensión de los datos originales, sin perder información
relevante.
El PCA trata de hallar componentes (factores) que sucesivamente expliquen la
mayor parte de la varianza total. Ésta técnica tiene tres efectos: ortogonaliza los
componentes (parámetros) de vectores de entrada; ordena los componentes
ortogonales resultantes (componentes principales) para que aquellos que tengan una
variación mayor estén primero; y elimina aquellos componentes que contribuyen
menos en la variación en el conjunto de datos. Un conjunto reducido es mucho más
fácil de analizar e interpretar.
En el PCA, el primer factor o componente sería el que contiene una mayor parte
de la varianza total, el segundo factor sería el que tiene la mayor parte de la varianza
restante, es decir, de la que no contenía el primero y así sucesivamente.
Para estudiar el conjunto de datos de coeficientes extraídos de la señal de llanto,
sería difícil y lento el proceso, por la cantidad muy grande de variables, sin embargo
reducir el conjunto de datos facilita el proceso del clasificador, ahorra tiempo de
procesamiento, y reduce la demanda en los recursos de cómputo.
8
Tal reducción en la dimensión tiene beneficios importantes. Primero, el costo
computacional de las etapas de procesos subsecuentes es reducido. Segundo, el ruido
puede ser reducido, esto por los datos que no están contenidos en los n primeros
componentes pueden ser en la mayoría de los casos debido a ruido. Tercero, una
proyección dentro de un subespacio de muy baja dimensión, por ejemplo dos, es útil
para visualizar los datos [19].
Una simple ilustración de PCA se encuentra en la Figura 1.1, en la cual el primer
componente principal de un conjunto de dos dimensiones es mostrado.
Figura 1.1. Análisis de Componentes Principales de una nube de datos bidimensional. La línea
mostrada es la dirección del primer componente principal, la cual da una reducción de dimensiones
óptima (en el sentido de los medios cuadrados) desde 2 a 1 dimensiones.
2.2
Computación Evolutiva
Un área importante en investigaciones actuales, es el desarrollo y aplicación de
técnicas de búsqueda basadas en los principios de la evolución natural. Muchos de los
lectores, a través de la literatura popular y experiencia típica de la educación
occidental, probablemente saben los conceptos básicos de la evolución. En particular,
el principio de la ‘supervivencia del más apto’ propuesta por Charles Darwin (1859)
ha capturado la imaginación popular especialmente. Podemos tomar esto como un
punto de origen para introducir la computación evolutiva.
9
La teoría de la selección natural propone que las plantas y animales que existen
hoy día son el resultado de millones de años de adaptación a las demandas del medio
ambiente. En cualquier momento, un número diferente de organismos diferentes
pudieran coexistir y competir por los mismos recursos en un ecosistema. Los
organismos que son más aptos para conseguir recursos y de procrearse de manera
exitosa son los que tendrán descendientes más numerosos en el futuro. Los
organismos que sean menos aptos, por cualquiera que sea la razón, tenderán a tener
pocos o ningún descendiente en el futuro. Estos se dice que son menos capaces que
los anteriores, y las características distintivas que causaron que los anteriores sean
más aptos son seleccionados sobre las características de los actuales. A través del
tiempo, la población entera del ecosistema “evoluciona” para contener organismos
que, en promedio, son más aptos que aquellos de previas generaciones de la
población porque exhiben más de aquellas características que tienden a promover
supervivencia. Las técnicas de la computación evolutiva contienen estos principios de
evolución en algoritmos que pueden ser usados para buscar soluciones óptimas a un
problema. En un algoritmo de búsqueda, un número de soluciones posibles a un
problema están disponibles, y la tarea es encontrar la mejor solución posible en un
periodo estimado de tiempo. Para un espacio de investigación, con solo un número
pequeño de soluciones posibles, todas las soluciones pueden ser examinadas en un
tiempo razonable, y la óptima puede ser encontrada. Esta búsqueda exhaustiva, por
otro lado, se vuelve impractica muy rápido cuando el espacio de búsqueda crece en
tamaño. Los algoritmos tradicionales de búsqueda ejemplifican de manera aleatoria
(e.g. camino aleatorio) o de manera heurística (e.g. gradiente descendente) el espacio
de búsqueda una solución a la vez, tratando de encontrar la solución óptima. El
aspecto clave que distingue a un algoritmo evolutivo de búsqueda de los algoritmos
tradicionales de búsqueda es que está basado en una población. A través de la
adaptación de generaciones sucesivas de un gran número de individuos, un algoritmo
evolutivo realiza una búsqueda eficiente y directa. La búsqueda evolutiva es
generalmente mejor que la búsqueda aleatoria y no es susceptible a comportamientos
basados en gradientes o en escalamiento de montañas [20].
10
2.3
Clasificación de Patrones
Por el lado de los métodos de reconocimiento de patrones, se han utilizado
tradicionalmente cuatro enfoques principales: comparación de patrones, modelos
estadísticos, sistemas basados en conocimientos y modelos conexionistas. Los
modelos conexionistas también conocidos como redes neuronales debido al parecido
que tiene su estilo de computación, con el estilo de computación del sistema nervioso
humano. Estos sistemas conexionistas han permitido hacer sólidos avances en varias
de las áreas de visión, vehículos autónomos, reconocimiento de patrones, y síntesis de
habla continua. En la etapa de clasificación se toman los parámetros de características
como patrones para entrenar la red neuronal y una vez entrenado el modelo se
procede a la clasificación de nuevos patrones, dando una decisión sobre el tipo de
clase detectada. [21].
11
Capítulo 3. PREPARACIÓN DEL CONJUNTO DE DATOS E
IMPLEMENTACIÓN DE LA FASE EXPERIMENTAL
El modelo para solucionar el problema de reconocimiento de llanto, está dado en
la Figura 3.1, donde vemos el proceso desde la obtención de las muestras hasta el
reconocimiento.
Vector de
Características
Seleccionadas
Llanto
infantil
Digitalización
(Transductor)
Microfono
Extracción de
Características
(Análisis Acústico)
Selección de
Caractrísticas
(Ea’s)
Entrenamiento
del Clasificador
de Patrones
Modelo
Entrenado
Clasificación
de Patrones
Figura 3.1. Proceso de Reconocimiento Automático del Llanto del Bebé
Decision
Tipo de Llanto
o Patología
Detectada
En la figura 3.1, primeramente se obtiene el sonido del llanto del bebé, esto por
medio de micrófonos o grabadoras digitales, con el fin de digitalizar la señal en un
archivo de sonido, posteriormente se realiza una extracción de características
acústicas, lo cual ayuda a extraer los patrones de la señal digitalizada. Una vez
obtenidas las características de la señal, se realiza una selección de características por
medio de Estrategias Evolutivas, esto para obtener la información más relevante
dentro de los patrones extraídos. Cuando se llega a la selección de las mejores
características, se continúa con el entrenamiento del clasificador de patrones, para
obtener un modelo entrenado. Para reconocer nuevos tipos de llanto, se seguirá la
misma metodología mencionada, desde la digitalización hasta la selección de
características, para clasificar los patrones. Al final, con una regla de decisión, se
obtiene el tipo de llanto o patología que nuestro sistema detecte en los patrones de
llanto extraídos.
12
3.1
Colección de Muestras
Las grabaciones de llantos fueron obtenidas en México y en Cuba, los
experimentos que se realizan para la investigación de este trabajo los hacemos
primordialmente con las muestras recolectadas en México, otras con las muestras
recolectadas en Cuba y finalmente usando ambos conjuntos de las muestras. Las
muestras Cubanas fueron recolectadas durante una estancia de investigación en la
Universidad de Oriente (UO) en Santiago de Cuba, Cuba. Mas adelante se describe el
procesamiento completo del llanto realizado en México y después la metodología
usada en Cuba.
Las muestras de llanto fueron y siguen siendo recolectadas en México por medio
de grabadoras de casetes y grabadoras digitales (SONY® ICD-67) y fueron
digitalizadas usando Sonic Foundry Sound Forge® Ver. 6.0 (Build 132) y un cable
estereo. Los registros de llanto de Cuba fueron realizados en el Hospital de
Maternidad Este de Santiago de Cuba por el Grupo de Procesamiento de Voz,
constituido por especialista de la UO y el Centro de Lingüística Aplicada del CITMA,
para esto se usó una grabadora de casetes AKAI® PM-R55 y fueron digitalizadas por
el sistema de adquisición PCVOX A/D [9].
Al momento de realizar experimentos de este trabajo, se tenía una colección de
muestras mexicanas de 98 bebés, siete de ellos son de bebés que sufren de asfixia,
seis con sordera, y el resto de bebés normales. En el caso de sordera, se cuenta con
varias muestras de un mismo bebé, solo en diferentes etapas de sus primeros meses de
vida. Estas grabaciones van desde 7 segundos hasta 3 minutos y medio de duración.
Para la recolección de estas muestras, se les indicó a los doctores que graben el llanto
del bebé y que al final de cada grabación graben con su propia voz la causa del llanto,
esto es para que nosotros podamos identificarla y etiquetarla al momento de
digitalizarla en la computadora. Una vez que tenemos las muestras de llanto, estas se
etiquetan y se guardan en una carpeta donde están todos los llantos de bebés
ordenados por número de bebe. Posteriormente se quita digitalmente el segmento
13
donde está la voz grabada del doctor y se almacena dicho llanto a su carpeta
correspondiente, solamente con la etiqueta del número del bebe.
La colección de datos existente de los bebés cubanos era de 35 casos de llantos.
Diecinueve de estos casos eran bebés sanos y los otros 16 bebés sufrían de mal
funcionamiento del cerebro por hipoxia u otras patologías. La duración de estas
muestras de llantos es de más o menos doce segundos. Una muestra consistía de la
expiración e inspiración de los pulmones de los bebés y por esta razón pudimos
dividir una sola muestra en periodos de llantos respiracionales y periodos de
inspiraciones, o silencios. Los datos fueron recolectados infligiendo dolor al bebé con
un pequeño golpe con los dedos del doctor en la planta del pié del infante, al hacer
esto, el doctor decía la palabra “ya” y grababan los doce segundos de llanto del bebé.
Las condiciones de la habitación fueron en cuarto cerrado y lo único contaminando la
muestra era el ruido del aire acondicionado, el cual fue removido digitalmente una
vez capturadas las muestras en archivos de sonido [10].
3.1.1
Segmentación en 1 o 3 segundos
Las muestras Mexicanas se dividen, en segmentos de 1 ó 3 segundos, como se
muestra en la Figura 3.2, cada segmento es guardado en su carpeta correspondiente y
es etiquetado con un código propuesto por nosotros. Obteniendo con esto hasta ahora,
para las muestras de llanto Mexicanas 1,049 de llanto normal, 879 de llanto
hipoacúsico (sordo) y 340 de llanto de asfixia, todas de 1 segundo. Además se
dividen en segmentos de 3 segundos, obteniendo así 329 muestras de llanto normal,
291 de llanto hipoacúsico y 111 de llanto con asfixia. Para los llantos de Cuba, se
utiliza otro tipo de etiqueta, mas adelante mostraremos como se etiquetaron las
muestras. Para las muestras de llanto cubanas, solo se dividieron en segmentos de 1
segundo, ya que existen relativamente pocas muestras, y por otro lado los
investigadores en Cuba le dan más importancia a la segmentación en unidades de
llanto, lo que a continuación explicamos. Pero dividiendo en segmentos de 1 segundo,
obtenemos 125 muestras de bebés normales y 106 muestras de bebés con alguna
patología referente a la asfixia.
14
n segundos
m segundos
Figura 3.2. Segmentación en n segundos.
3.1.2
Segmentación en unidades de llanto
La segmentación y extracción de unidades de llanto para el reconocimiento de
patologías dentro del llanto de bebés es la metodología usada por el GPV de la
Universidad de Oriente. Esto por que se tenían muy pocos casos de llanto de bebés, y
con la información que ellos extraían por cada muestra de llanto, terminaban con
solamente 35 vectores de 12 características, estas características eran las siguientes;
1. F0min, el valor mínimo de la frecuencia fundamental sobre todas las ventanas;
2. F1min, el valor mínimo del primer formante sobre todas las ventanas;
3. F0max, el valor máximo de la frecuencia fundamental sobre todas las ventanas;
4. F1max, el valor máximo del primer formante sobre todas las ventanas;
5. F0mean, el valor promedio de la frecuencia fundamental sobre todas las ventanas;
6. F1mean, el valor promedio del primer formante sobre todas las ventanas;
7. F0amp, la amplitud de la frecuencia fundamental sobre todas las ventanas;
8. F1amp, el valor de amplitud de primer formante sobre todas las ventanas;
15
9. F0s, la desviación estándar de la frecuencia fundamental sobre todas las ventanas;
10. F1s, la desviación estándar del primer formante sobre todas las ventanas;
11. F0s2, la varianza de la frecuencia fundamental sobre todas las ventanas;
12. F1s2, la varianza del primer formante sobre todas las ventanas.
Donde una ventana es la muestra de llanto a ser estudiada. Por lo que decidieron
hacer una nueva propuesta donde se producían los mismos vectores, pero esta vez sin
usar un caso de llanto completo, si no, una unidad de llanto como la fuente del vector.
Con una unidad de llanto, se quiere decir que es un llanto respiracional de un caso de
llanto (Figura 3.3). Un caso que consistiese de tres unidades de llanto, ahora
produciría tres en vez de un solo parámetro, y de esta forma, se producirían alrededor
de 120 vectores [10]. Este número de vectores es suficiente para entrenar y probar
una red neuronal. Para recolectar este tipo de datos, se hizo de manera manual,
seleccionando las unidades de llanto una a una.
Cabe mencionar, que nosotros no nos enfocamos en la frecuencia fundamental,
ni en el primer formante, nos enfocamos a extracción de características LPC y MFCC,
lo que más a delante explicaremos.
Figura 3.3. Segmentación en unidades de llanto
16
3.1.3. Segmentación por Unidades de Llanto Unidas
Otra propuesta para poder sacarle provecho a las unidades de llanto, y queriendo
seguir con la primer metodología propuesta para la segmentación de las ondas de
llanto (en 1 o 3 segundos), fue la de unir las unidades de llanto a un solo archivo de
sonido (ver Figura 3.4), como resultado obtenemos una onda de llanto similar a la
original, solo que en este caso sin segmentos “silenciosos” o sin segmentos que no
tengan información acústica de llanto. Una vez unidas las unidades de llanto, lo que
se propuso, fue segmentar esa señal en fragmentos de 1 segundo, para así poder
extraer las características acústicas de cada segmento, y nuevamente obtener vectores
de igual tamaño por cada muestra. Al hacer esto, obtenemos 64 segmentos de 1
segundo de llanto de bebé normal, y 60 segmentos de llanto patológico.
Figura 3.4. Unidades de Llanto unidas a una sola onda de llanto.
Para las muestras de llanto de bebés mexicanos, se hizo lo mismo con las
unidades de llanto, unimos todas las pertenecientes a un mismo bebé y después las
segmentamos en 1 segundo, para así finalmente poder extraer las características
MFCC y LPC y finalmente poder entrenar la red neuronal con estas muestras. Con
esto, se obtuvimos 76 segmentos de 1 segundo de llantos de bebés con asfixia, 86
17
muestras de bebés normales y 73 de bebés con sordera. Cabe mencionar que para este
tipo de experimentos no pudimos aplicar la técnica de reducción por componentes
principales, ya que para poder hacer esto, se necesita tener más columnas que
renglones. Es decir, que como tenemos en total 304 renglones (características), y
como máximo 86 columnas (muestras), no se puede aplicar la reducción por PCA.
3.2 Extracción de Características
3.2.1
Segmentos de 1 o 3 segundos (sin incluir Unidades de llanto Unidas)
Las muestras son procesadas una a una extrayendo sus características acústicas
LPC de auto correlación y MFCC, por medio del programa de distribución libre Praat
4.0, luego cada documento generado se guarda con la misma etiqueta en una carpeta
de muestras con características LPC y las otras en otra carpeta con características
MFCC en formato de texto plano. Las características acústicas se extraen de la
siguiente forma:
Cada muestra de 1 segundo es dividida en segmentos o ventanas de 50 y 100
milisegundos, con objeto de comparar cual era la mejor alternativa, dado que el
tamaño de la ventana ha sido utilizado anteriormente, en otros trabajos de
investigación [15].
•
Se extraen 16 características para cada 100 milisegundos, generando con esto 145
datos por segundo de muestra.
•
Se extraen 16 características para cada 50 milisegundos, generando con esto 304
datos por segundo de muestra.
•
Se extraen 21 características para cada 100 milisegundos, generando con esto 189
datos por segundo de muestra.
•
Se extraen 21 características para cada 50 milisegundos, generando con esto 399
datos por segundo de muestra.
Por cada segmento de 3 segundos
18
•
Se extraen 16 características para cada 100 milisegundos, generando con esto 448
datos por segmento de muestra.
•
Se extraen 16 características para cada 50 milisegundos, generando con esto 928
datos por segmento de muestra.
•
Se extraen 21 características para cada 100 milisegundos, generando con esto 588
datos por segmento de muestra.
•
Se extraen 21 características para cada 50 milisegundos, generando con esto 1218
datos por segmento de muestra.
Como estos documentos tienen mucha información “adicional” (encabezados,
identificadores, etc. añadidos por Praat), en otras palabras, datos que no son
relevantes para el reconocimiento de la onda, tenían que ser limpiados uno por uno,
para así obtener archivos de texto con la información importante. Como son muchas
muestras, en total 2,268 muestras de 1 segundo y 731 muestras de 3 segundos,
realizamos una serie de algoritmos que nos ayudaron a limpiar las muestras una a una
de manera automática.
Cuando obtenemos todas las muestras, se utiliza la plataforma Matlab 6.5 para
unir una a una las columnas y así obtener matrices diferentes para cada combinación
de extracción de características, después se realiza una técnica de reducción por
medio de Análisis de Componente Principal (PCA por sus siglas en inglés).
Finalmente, a cada matriz se le agrega una línea de etiquetas con el número 1, el cual
indica que son de asfixia obteniendo así una matriz de n + 1 datos (n = No. de datos
por configuración de extracción de características), los niños normales tienen una
etiqueta de 2 y los niños sordos tienen una etiqueta de 3. Para los llantos de bebés
cubanos, se etiquetó 1 para bebés normales y 2 para bebés con patología.
La Tabla 3.1 muestra los segmentos obtenidos por cada bebé (Mexicano), en ella
se pueden apreciar las diferentes clases obtenidas, número de bebé grabado, y número
de muestras obtenidas por cada bebé tanto de 1 segundo como de 3 segundos:
19
Tabla 3.1. Relación de muestras obtenidas por cada bebé, en segmentos de 1 o 3 segundos
Sordos
Normales
Dolor
Hambre
Asfixia
Normal
No. de
bebé
1
seg
3
seg
No. de
bebé
1
seg
3
seg
No. De
bebé
1
seg
3
seg
No. De
bebé
1
seg
3
seg
No. De
bebé
1
seg
3
seg
1
2
3
6
7
8
9
10
13
14
15
17
19
20
22
24
32
45
49
50
72
8
8
8
4
5
5
5
8
12
3
5
3
3
6
3
8
8
4
13
10
12
3
2
2
1
1
1
1
3
4
1
2
1
1
2
1
2
2
1
4
3
4
4
5
11
12
16
18
21
23
31
33
34
35
36
37
38
39
40
41
42
43
44
7
3
6
5
6
5
7
7
17
13
12
9
9
8
12
9
18
16
9
8
10
2
1
2
1
2
1
2
2
5
4
4
3
3
2
4
3
6
5
3
2
3
52
53
70
71
78
359
88
30
21
10
507
115
28
10
7
3
163
25
26
27
28
29
30
121
56
158
234
70
240
879
43
20
50
76
22
78
289
63
64
65
66
67
68
53
64
57
58
53
55
340
17
21
19
19
17
18
111
73
74
12
39
192
4
13
59
46
47
48
51
75
76
77
79
80
81
83
88
17
9
5
9
17
13
12
9
11
14
26
12
5
3
1
3
5
4
4
3
3
4
8
4
350
107
20
3.2.2
Unidades de Llanto
Las unidades de llanto son de tamaño variable, esto debido a que un bebé no
emite la misma cantidad de sonido en cada llanto respiracional, hablando en términos
de tiempo. Por esto es imposible hacer una extracción de características de la misma
manera en la que se hace para segmentos completos de llanto, en otras palabras,
segmentos de 1 o 3 segundos, principalmente por que son pocas las unidades de llanto
que duran 1 segundo o más. Tampoco podemos extraer las características acústicas de
cada unidad de llanto, ya que cada unidad de llanto arrojaría un número diferente de
coeficientes, dependiendo del tiempo de duración de la unidad de llanto, y
obtendríamos vectores de tamaños diferentes lo cual Matlab no permite. Por esto para
tomar en cuenta una unidad de llanto esta tenía que tener una duración mayor a 0.4
segundos, con esto las unidades de llanto que tuvieran duración menor a 0.4 segundos
eran inservibles, ya que tenían muy poca información acústica.
Cuando tenemos estas unidades de llanto, ya separadas de las muestras originales,
a su vez las segmentamos en partes de exactamente 0.4 segundos, por ejemplo, si se
tiene una unidad de llanto que dure 0.9 segundos, se le podían extraer dos segmentos
de 0.4 segundos. Para los segmentos de las unidades de llanto solamente se extrajeron
16 coeficientes por cada ventana de 50 milisegundos, obteniendo así vectores de 112
coeficientes por cada segmento de 0.4 segundos. Teniendo con esto, para las muestras
cubanas, 154 segmentos para los llantos de bebés normales y 139 segmentos para
llantos de bebés con alguna patología.
En el caso de las muestras de llanto de bebés mexicanos, obtuvimos 180
segmentos de 0.4 segundos para los llantos de bebés normales, 157 segmentos de
bebés con sordera, y 164 segmentos para bebés con asfixia. Una vez obtenidos estos
vectores en archivos de texto plano, se procesan los vectores de la misma manera en
la que se procesan los vectores provenientes de segmentos de 1 segundo. Es decir,
que se cargan los vectores uno a uno en la plataforma de Matlab para unirlos a una
matriz, y después de les etiqueta con un número que los identifique como una clase
21
de llanto, por lo tanto, las matrices que obtenemos tienen 113 líneas y tantas
columnas como se tengan segmentos de unidades de llanto por cada clase.
3.2.3
Unidades de Llanto Unidas
Para este tipo de unidades, debido a la gran cantidad de experimentos que hasta
este punto existen, decidimos solamente extraer 16 características por ventanas de 50
milisegundos, de ambos, MFCC y LPC, obteniendo con esto vectores de 304
características por muestra de llanto.
3.2.4
MFCC
El procesador de primer plano más común extrae los coeficientes cepstrales de
frecuencia Mel (MFCC). Estos se obtienen por una Transformada de Fourier en
segmentos cortos de llanto dentro del dominio de las frecuencias, una computación
del algoritmo del espectro de amplitud, y una transformada inversa de Fourier que lo
regrese al dominio del tiempo. Los MFCC extraen características acústicas muy útiles
para el reconocimiento del habla, y estos son usados frecuentemente en medios
comerciales y de investigación. La mayoría de los sistemas de reconocimiento están
basados en esta técnica de MFCC y sus derivadas de primero y segundo orden. Las
derivadas normalmente se aproximan por medio de un ajuste en la línea de regresión
lineal hacia un segmento de tamaño ajustable de marcos consecutivos de información.
La resolución de tiempo y la suavidad de la derivada estimada dependen en el tamaño
del segmento [22]. En resumen, los MFCC pueden ser calculados mediante:
1. Dividir la muestra en segmentos pequeños
2. Calcular la DFT para cada segmento
3. El espectro se convierte a la escala logarítmica
4. La escala se transforma al espectro suave de MEL
5. La transformada discreta de coseno se calcula (para reducir al espectro)
6. Típicamente, los primeros 13 coeficientes se usan
22
3.2.5
LPC
El objetivo de la aplicación de estas técnicas es describir la señal en términos de
sus componentes fundamentales. El análisis de predicción lineal (LP) ha sido una de
las técnicas de análisis del dominio del tiempo más usadas durante los últimos años.
El análisis LP intenta predecir “lo mejor posible” una muestra de habla por medio de
una combinación lineal de varias muestras de señal. Así, la envoltura espectral puede
ser eficientemente representada por un número pequeño de parámetros, en este caso,
coeficientes LP [15].
El modo en particular en el cual los datos son segmentados, determina ya sea el
método de covarianza, método de auto correlación, o cualquier método de análisis de
LP que sea usado. El primer método que se está usando es el de auto correlación,
donde la función de auto correlación, para la señal de tamaño finito s(n) se define por
[23]:
rj =
N −1−l
∑ s(n )s(n + 1)
n =0
(l ≥ 0)
(1)
Donde, l es el retraso entre la señal y su versión de retraso, N es el número total
de ejemplos. La función de predicción de error entre el segmento de datos s(n) y la
predicción s(n) se define como:
M
e(n ) = ∑ ai s (n − 1)
a0 = 1
(2)
i =0
for
n = 0, 1, ...,N + M - 1
Como el orden del modelo LP se pueden aproximar más detalles del espectro de
potencia de la señal [15].
23
3.3 Estrategias Evolutivas
Las estrategias evolutivas (ES) son algoritmos que imitan los principios de la
evolución natural, como un método para resolver problemas de optimización de
parámetros. Estos fueron desarrollados en Alemania durante los 60s.
Como dice textualmente en [24] “En 1963 dos estudiantes en la Universidad
Técnica de Berlín estaban colaborando en experimentos que usaban el túnel de viento
del Instituto de Ingeniería de Flujos. Durante la búsqueda de formas óptimas de
cuerpos en un flujo, que en aquel entonces era un caso de experimentación intuitiva
de laboratorio, la idea era proceder estratégicamente. Pero, los intentos con las
coordenadas y simples estrategias de gradiente no fueron exitosos. Luego, uno de los
estudiantes, Ingo Rechenberg, ahora profesor de Biónica e Ingeniería Evolutiva, dio
con la idea de tratar cambios aleatorios en los parámetros que definirían la figura,
siguiendo el ejemplo de mutaciones naturales. Las estrategias evolutivas habían
nacido.” (El segundo estudiante era Hans-Paul Schwefel, ahora profesor de Ciencias
Computacionales y Coordinador de Análisis de Sistemas) [25].
Las estrategias evolutivas son un planteamiento para resolver determinados
problemas continuos de una forma eficiente. Su nombre viene del alemán
“Evolutionstrategien”, por lo que, frecuentemente, las veremos mencionadas como
“ES”. Su origen fue en un método estocástico de escalada (es decir, siguiendo la
dirección del gradiente) mediante paso adaptable, mas con el tiempo se ha convertido
en uno de los algoritmos evolutivos más poderosos, dando buenos resultados en
determinados problemas paramétricos sobre dominios reales. La nomenclatura que se
emplea para denominarlas es (a + b) - ES (caso que el reemplazo sea determinista por
inclusión) y (a, b) - ES, en el caso de que el reemplazo sea por inserción. Aquí, a es
un número correspondiente al tamaño de la población y b otro correspondiente al
tamaño de la descendencia. La idea básica es codificar la tasa de mutación como parte
del genoma, junto con los parámetros del sistema. Las estrategias evolutivas hacen
búsquedas más exploratorias que los algoritmos genéticos [26].
24
En las estrategias evolutivas, la representación usada es un vector de números
reales. Es diferente a los algoritmos genéticos, los cuales usan cadenas de bits para
representar a un individuo, ya que cada posición del vector corresponde a una
característica del individuo [27].
El principal operador de reproducción en estrategias evolutivas es la mutación
Gaussiana, en el cual un valor aleatorio de una distribución Gaussial se añade a cada
elemento de un vector de un individuo para crear un nuevo descendiente (ver Figura
3.5). Otro operador que se usa es la recombinación intermediaria, en la cual los
vectores de dos padres son promediados juntos, elemento por elemento para formar
un nuevo descendiente (ver Figura 3.6), por el momento no estamos usando esta
técnica de recombinación de padres, solo nos enfocamos en la mutación. Los efectos
de estos operadores reflejan un cambio del comportamiento de los vectores
resultantes [20].
Figura 3.5. Mutación Gaussiana de padre a para formar descendiente b.
Figura 3.6. Recombinación intermediaria de padres a & b para formar descendiente c.
La selección de padres para formar descendientes es menos estricta que como lo
es en algoritmos genéticos y programación genética. Por ejemplo, debido a la
naturaleza de la representación, es muy fácil promediar vectores desde muchos
individuos para formar un solo descendiente. En una estrategia evolutiva, N padres
son seleccionados uniformemente de manera aleatoria (Ej. no está basado en aptitud),
mas de N descendientes son generados a través del uso de recombinación, y después
N sobrevivientes son seleccionados de manera determinista. Los sobrevivientes son
seleccionados ya sea del mejor N descendiente (e.g., ningún padre sobrevive) o de los
mejores N padres [28].
25
3.4 Redes Neuronales Artificiales (RNA)
Las RNA son programas de computadora que emulan la estructura y el
comportamiento del cerebro humano, específicamente a las redes neuronales
biológicas. Estos programas son algunas veces llamadas redes neuronales artificiales
para distinguirlas unas de otras. Ya que las referencias en esta tesis van a ser de RNA,
nosotros simplemente usaremos el término red neuronal o simplemente redes [29].
Las redes neuronales son modelos computacionales definidos por cuatro
componentes: neuronas, algoritmo de aprendizaje, algoritmo de recuerdos y
arquitectura conexionista. Estas son un intento de imitación de simples partes del
sistema nervioso. Las redes neuronales están compuestas de simples elementos
operando en paralelo. Estos elementos como se mencionó anteriormente, están
inspirados en sistemas nerviosos biológicos. Como en la naturaleza, la función de la
red se determina en su mayor parte por las conexiones entre dichos elementos.
Podemos entrenar una red neuronal para realizar una función en particular, ajustando
los valores de las conexiones (pesos) entre los elementos.
Por lo general, las redes neuronales se ajustan o se entrenan para que una entrada
en particular lleve a una salida específica de meta. Dicha situación se muestra en la
Figura 3.7. Aquí, la red se ajusta, basada en una comparación entre la salida y la meta,
hasta que la salida de la red iguale a la meta. Por lo general muchos de dichos pares
de salidas/metas son usados, en este aprendizaje supervisado, para entrenar una red.
`
Figura 3.7. Entrenamiento de una red neuronal
El entrenamiento de una red se hace por medio de cambios en los pesos y
gradientes basados en un conjunto entero de vectores de entrada. El entrenamiento
26
cambia los pesos y las gradientes de una red como se necesite después de la
presentación de cada uno de los vectores de entrada. Este tipo de entrenamiento es
algunas veces conocido como entrenamiento “en línea” o “adaptable”.
Las redes neuronales han sido entrenadas para realizar funciones complejas en
varias áreas de aplicación incluyendo el reconocimiento de patrones, identificación,
clasificación, habla, visión y sistemas de control. Hoy en día las redes neuronales
pueden ser entrenadas para resolver problemas que son difíciles para computadoras
convencionales o seres humanos.
Los métodos de entrenamiento supervisado son los que más comúnmente se usan,
pero otras redes pueden ser obtenidas de técnicas de entrenamiento no supervisado o
desde métodos de diseño directo. Las redes sin supervisión pueden ser usadas para
identificar grupos de datos. Ciertos tipos de redes lineales y redes de Hopfield son
diseñadas directamente. En resumen, existen muchos tipos de técnicas de diseño y de
aprendizaje que enriquecen las opciones que un usuario pueda tomar [30].
El área de las redes neuronales tiene una historia de casi seis décadas, pero sólo
han encontrado una aplicación sólida en lo últimos 25 años, y esta área se está
desarrollando rápidamente [31].
Las redes neuronales son sistemas de clasificación excelentes. Éstas se
especializan en clasificar datos ruidosos, con patrones, o variables que contiene
pautas múltiples, sobrelapadas, interactivas e incompletas. El reconocimiento del
llanto es una tarea de clasificación que tiene todas estas características, haciendo a las
redes neuronales una alternativa atractiva para realizar esta tarea de clasificación [29].
3.4.1
Red Neuronal, Feed-forward (Alimentación hacia adelante)
La red neuronal feed-forward es una de las redes utilizadas para este trabajo,
consiste en N1 capas que usan la función de pesos por medio de producto punto. La
primera capa tiene pesos que vienen de la entrada. Cada capa subsiguiente tiene un
peso que proviene de la capa anterior. Todas las capas tienen un bias. La última capa
es la salida de la red. Todos los pesos y bias son inicializados de manera aleatoria. La
27
adaptación de los pesos se hace con algún entrenamiento, el cual actualiza los pesos
con la función de aprendizaje especificada. El entrenamiento termina cuando se ha
alcanzado la meta definida por el usuario [30].
3.4.2
Red Neuronal, Feed-forward Input Delay (Alimentación hacia adelante
con retraso en la entrada)
Las redes neuronales convencionales son estructuras que tratan con patrones
estáticos. Como es de suponerse, el llanto es indiscutiblemente dinámico por
naturaleza. Consecuentemente, se requieren hacer algunas modificaciones a
las
estructuras de las redes neuronales convencionales. Hasta ahora, no existe o no
sabemos de una manera correcta de tratar con la dinámica del llanto, más que
simplemente extraer las características acústicas para obtener ciertos patrones; sin
embargo, se han propuesto algunas estructuras para poder tratar con esta dinámica
[32].
“Input Delay” o “Retraso en el Tiempo” es un concepto viejo en el
procesamiento de señal adaptable. Si nosotros retrasamos la señal de entrada por una
unidad de tiempo y dejamos a la red recibir ambas señales, la original y la retrasada,
tenemos una red neuronal con retraso de tiempo simple. Por supuesto que podemos
construir una más complicada retrasando las señales en varias longitudes. Si la señal
de entrada es n bits y es retrasada por m diferentes longitudes, entonces tendremos nm
unidades de entrada para codificar la entrada total. Cuando llega nueva información,
esta es puesta en un extremo de los nodos y la vieja información intercambia hacia
abajo de las series de nodos como una registradora de cambios controlada por un reloj.
Se presenta una arquitectura general en la Figura 3.8.
Esta red fue desarrollada para clasificar fonemas en 1987 por Waibel y Lang
en Carnegie Mellon University (CMU) [33]. Los retrasos en el tiempo permiten a la
Red Neuronal con Retraso en el Tiempo o TDNN descubrir una relación temporal
directamente en la señal de entrada y en una representación aun más abstracta de la
capa oculta. Esto lo hace usando los mismos pesos para cada paso en el tiempo.
28
La TDNN es invariante a cambios: las características dentro de la señal de audio
pueden ser detectadas independientemente de su posición.
Figura 3.8. Red Neuronal con Retraso en el Tiempo (TDNN)
3.4.3
Red Neuronal LVQ (Cuantificación Vectorial Lineal)
La arquitectura de la red LVQ se muestra en la figura 3.9,
Figura 3.9. Arquitectura de la red LVQ
Una red LVQ tiene una primera capa competitiva y una segunda capa lineal. La
capa competitiva aprende a clasificar vectores de entrada en una manera muy similar
a la de las capas competitivas de las redes de Cuantificación Vectorial AutoOrganizadas y de aprendizaje. La capa lineal transforma las clases de las capas
competitivas en clasificaciones meta definidas por el usuario. Nosotros nos referimos
a las clases aprendidas por la capa competitiva como subclases y las clases de la capa
lineal como las clases meta.
29
Ambas, la capa competitiva y la capa lineal, tienen una neurona por clase (sub o
meta). Por eso, la capa competitiva puede aprender hasta S1 subclases. Estas, a su vez,
son combinadas por una capa lineal para formar S2 clases meta. (S1 siempre es más
grande que S2).
Por ejemplo, suponga que todas las neuronas 1, 2 y 3 en la capa competitiva
aprendan subclases del espacio de entrada que pertenecen a la clase de la capa lineal
meta número 2. Entonces las neuronas competitivas 1, 2 y 3, tendrán LW2,1 pesos de
1.0 a la neurona n2 en la capa lineal, y los pesos de 0 a todas las demás neuronas
lineales. Por lo tanto, la neurona lineal produce un 1 si cualquiera de las tres neuronas
competitivas (1, 2 y 3) gana la competencia y la salida es 1. Así es como las subclases
de la capa competitiva son combinadas a clases meta en la capa lineal.
En resumen, un 1 en la fila i de a1 (el resto de los elementos de a1 será cero)
efectivamente toma la columna i de LW2,1 como la salida de la red. Cada columna
contiene un solo 1, correspondiente a una clase en específico. Por lo tanto, la subclase
1s de la capa 1 se pone dentro de varias clases, por la multiplicación de LW2,1a1 en la
capa 2.
Sabemos de antemano cual fracción de las neuronas de la capa 1 deberán ser
clasificadas dentro de las varias clases de la capa 2, por lo tanto debemos especificar
los elementos de LW2,1 al principio. Pero, tenemos que hacer todo el proceso de
entrenamiento para hacer que la primera capa produzca la subclase correcta de salida
para cada vector del conjunto de entrenamiento [34].
3.4.4
Entrenamiento por Gradiente Descendiente con Retro-Propagación y
Rango de aprendizaje Adaptable
El entrenamiento por medio de alimentación hacia adelante de gradiente
descendiente con rango de aprendizaje adaptable, propuesto para este proyecto, puede
entrenar cualquier red que tenga funciones de derivación en sus pesos, entradas de la
red y funciones de transferencia. Las cuales tiene la red propuesta en este proyecto.
La retro propagación se usa para calcular derivadas de rendimiento con respecto a las
30
variables de pesos y de inclinaciones X. Cada variable se ajusta por medio de
gradiente descendiente.
En cada época, sí el rendimiento disminuye en dirección de la meta, entonces el
rango de aprendizaje se incrementa. Si el rendimiento aumenta, el rango de
aprendizaje se ajusta por medio de factor de decremento y el cambio, el cual aumentó
el rendimiento, no se realiza [30]. El entrenamiento se detiene cuando ocurre
cualquiera de estas condiciones:
•
Se alcanza el número máximo de épocas (repeticiones).
•
El rendimiento ha sido minimizado a la meta.
3.4.5
Entrenamiento por Retro-Propagación y Gradiente Escalado Conjugado
El entrenamiento de retropropagación por gradiente conjugado escalado, puede
entrenar cualquier red neuronal, siempre y cuando sus pesos, la entrada de la red, y la
función de transferencia tengan funciones que puedan ser derivadas. La
retropropagación es usada para calcular derivadas de desempeño con respecto a los
pesos y bias de las funciones. El algoritmo de gradiente conjugado escalado está
basado en direcciones conjugadas, pero este algoritmo no realiza búsquedas en línea
en cada iteración [30]. El entrenamiento se detiene cuando cualquiera de estas
condiciones ocurra:
•
El número máximo de épocas (repeticiones) sea alcanzado.
•
La máxima cantidad de tiempo ha sido excedida.
•
El desempeño ha sido minimizado a la meta.
3.4.6
Validación Cruzada
Para evaluar el desempeño de la red neuronal, en términos de precisión,
eficiencia, y fiabilidad se usó la técnica 10-fold cross validation (Validación Cruzada
de 10 Particiones) [35]. El conjunto de muestras fue aleatoriamente dividido en 10
subconjuntos, cada vez dejando un subconjunto para su clasificación y los otros
31
restantes para entrenamiento. Este proceso se repite hasta que todos los conjuntos han
sido clasificados una vez. Al final de todo este proceso se suman todos los resultados
obtenidos por cada subconjunto, y se promedian para obtener un resultado, dado que
cada grupo es del mismo tamaño, la red obtenida en la última vuelta se prueba ahora
con el subconjunto separado previamente y se obtiene de esta manera un resultado
final que se compara con el resultado promedio.
3.5 Proceso de Experimentación
3.5.1
Sistema Híbrido
El sistema híbrido fue diseñado para seleccionar las mejores características, del
vector de entrada, que pudieran entrenar a un sistema de Redes Neuronales. Esto para
saber qué características dentro de un vector, funcionan mejor para obtener los
mejores resultados en cuanto al entrenamiento y prueba de una red neuronal. Para
hacer esta selección, hicimos uso de las técnicas de Estrategias Evolutivas, las cuales
usan números reales para la representación de sus individuos. El sistema funciona de
la siguiente forma:
Si tenemos una matriz de tamaño p x q, donde p es el número de características
acústicas que tiene cada muestra y q es el número de muestras que existen, y
queremos reducir dicha matriz a una matriz a m x q, donde m es el número de
características seleccionadas, realizamos lo siguiente; se inicializa una población de n
individuos, cada uno de longitud m; cada uno de estos individuos representa n
matrices de tamaño m x q, ver Figura 3.10.
32
Figura 3.10. Inicialización de individuos.
Una vez obtenidas las matrices, se inicializan n redes neuronales, y se entrenan
cada una con una matriz, al final de cada entrenamiento se prueba la eficiencia de la
red neuronal por medio de matrices de confusión. Una vez obtenidos estos datos, se
seleccionan las matrices que mejor resultado dieron, ver Figura 3.11.
Figura 3.11. Selección de los mejores individuos.
Cuando se tienen seleccionadas las mejores matrices, se hace un torneo, donde se
generan l números aleatorios que van desde 0 hasta el número de matrices
seleccionadas, como se muestra en la Figura 3.12, donde solamente se seleccionaron
2 matrices, entonces se generan 3 números aleatorios del 0 al 2. Cabe mencionar que
el número 1 tiene dos veces más probabilidad de ser generado aleatoriamente, ya que
cuando el número aleatorio generado es 0, éste automáticamente se convierte en 1,
esto lo veremos como una premiación al mejor lugar, y mayores posibilidades de ser
seleccionado.
33
Figura 3.12. Generación de la nueva población, con los mejores individuos
Una vez generada la nueva población de individuos, estos pasan por una
mutación aleatoria, en cada época, primeramente se pide un factor de mutación (se
utiliza 0.2, esto debido a varios experimentos efectuados), cuando entra un individuo,
se genera un número aleatorio que va de 0 a 1, sí es menor que 0.2 el individuo se
muta, sí es mayor, se deja intacto. Cuando el individuo es seleccionado para ser
mutado, se genera un número aleatorio que va desde 1 hasta m, esto es para
seleccionar cual cromosoma va a ser mutado, una vez hecho esto, se genera un
número aleatorio que va desde 1 hasta el número total de la longitud de las matrices
originales (Ej. 1 – p), esto representa una nueva característica a ser seleccionada.
Cuando el individuo no es seleccionado para ser mutado, pasa a la nueva población a
competir con los demás individuos sin ser alterado. El usuario al principio tiene la
opción de elegir el número de épocas que irá a realizar el sistema (r). Al finalizar las r
épocas definidas por el usuario, se debería de contar con un individuo que arroja el
mejor resultado, y también se muestra los mejores individuos en cada una de las r
épocas, y con esto sabemos cuales son las mejores características que pueden ser
seleccionadas, dependiendo de la población inicial.
Se implementará este tipo de selección en los experimentos que obtengan
mejores resultados, para hacer en parte una comparación del sistema híbrido, con el
sistema simple usando reducción de vectores por componente principal. Por otro lado
para ver si es posible tener una buena selección de características, y un mejor
resultado en cuanto a las pruebas con bebés diferentes ya en tiempo real. El algoritmo
puede ser encontrado en los anexos de este reporte.
34
Cabe mencionar que al ya tener seleccionadas las mejores características, por
medio de las estrategias evolutivas, se debe de entrenar el sistema con dichas
características seleccionadas por el sistema híbrido, esto para corroborar si el sistema
realmente funciona mejor con este selector de características, o reduciendo los
vectores por medio de componentes principales.
3.5.2
Entrenamiento de las Redes Neuronales
El sistema de redes neuronales se programó de forma tal, que se pudiera entrenar
con cualquier base de datos, siempre y cuando los vectores de características estén en
forma de columnas. Es decir que cada columna represente una muestra de llanto de
una clase determinada. Como cada muestra está en su carpeta correspondiente, en
formato de texto plano, se diseñó el programa de manera que pudieran ser invocadas
una a una por medio de otro documento de texto plano que tuviera la ruta de la
carpeta donde se encuentra dicha muestra. Así el algoritmo lee uno a uno los archivos
de las carpetas donde se encuentran las muestras, y con esto genera por si mismo las
matrices, para entrenar la red neuronal y para probar la red neuronal. También,
mientras está recopilando cada una de las clases, al final de cada columna le pone una
etiqueta, dependiendo del orden como va leyendo las clases.
En otras palabras, supongamos que se quiere entrenar una red neuronal con tres
clases, siendo las siguientes: Asfixia, Normales y Sordera; el programa primeramente
recopilará la información de las muestras de asfixia y al final le pondrá la etiqueta
número 1, después recopilará las muestras de bebés normales, y le pondrá la etiqueta
número 2, y a las clases de sordera la etiqueta número 3. Cabe mencionar que el
usuario le indica al algoritmo con cuantos vectores se quiere probar el sistema, puede
ser por ejemplo con el 20%, esto quiere decir que el algoritmo toma los vectores de
asfixia, normal y sordera, las etiqueta y separa el 80% de estas para entrenar la red
neuronal y el 20% para probarla. Al hacer esto, con las tres clases, al final se
recopilan las tres matrices de entrenamiento y se revuelven las columnas entre si
internamente de forma aleatoria, así obtenemos la matriz que servirá para entrenar
nuestro sistema. También se recopilan las tres matrices de prueba y estas se dejan de
35
forma ordenada, estas no se revuelven debido a que de esta forma es más fácil, si se
desea, ver exactamente cuales vectores fueron clasificados de manera errónea.
Una vez obtenidas las matrices de entrenamiento/prueba, el algoritmo reduce los
vectores por medio de componente principal, si el usuario lo requiere, se separan las
matrices de entrenamiento de las etiquetas, y se procede a entrenar la red neuronal, al
finalizar, la red neuronal se prueba con la matriz de prueba y finalmente se comparan
las etiquetas separadas de la matriz de prueba, con la salida de la red neuronal. Esto
se contabiliza por medio de una matriz de confusión y se obtiene la precisión del
sistema.
Con el sistema programado de esta manera, ya no importa el tamaño de los
vectores de entrada, hasta ahora se ha probado con vectores que van desde 112
características (segmentos de 1 seg con 16 coef por cada 100 ms) hasta 1218
características (segmentos de 3 seg con 21 coef y 50 ms), al igual que el número de
clases, se ha probado el sistema con 2 clases (muestras cubanas) hasta 5 clases
(muestras cubanas y mexicanas). Destacando que estas pruebas solo fueron hechas
para probar el sistema y no son reportadas en este trabajo. Así mismo la red neuronal
tiene una arquitectura de n nodos de entrada donde n es el número de características
que tienen las muestras con las que se va a experimentar, o el número de
características que se obtienen en caso de usar PCA; la capa oculta tiene 40% menos
nodos que la capa de entrada (n x 0.4) y la capa de salida depende del número de
clases con el que se esté entrenando.
El algoritmo necesita los siguientes parámetros de entrada:
•
file = Nombre del archivo donde se encuentran las clases a entrenar.
•
porc = Porcentaje de prueba, puede ser desde 0.1 hasta 0.9
•
ncp = Número de componentes principales (Especificado por el usuario)
•
del = Retraso en la red neuronal que se usa
•
redu = Para entrenar,
36
1. Con Reducción por PCA ó
2. Sin Reducción
•
RedNA = Entrenamiento por,
1. Red Feed Forward Time Delay entrenamiento por Scaled conjugate gradient
backpropagation
2. Red
Feed
Forward
entrenamiento
por
Scaled
conjugate
gradient
backpropagation
3. Red LVQ
4. Red Feed Forward Time Delay entrenamiento por Gradient descent with
adaptive learning backpropagation
5. Red Feed Forward entrenamiento por Gradient descent with adaptive learning
backpropagation
Y entrega como salida:
•
net = Red Neuronal entrenada
•
matc = Matriz de confusión
•
prec = Precisión obtenida
•
tam = Tamaño de los datos de entrenamiento
•
numpru = Tamaño de los datos de prueba
Como se puede observar, se pueden entrenar 3 diferentes configuraciones de
redes neuronales, y se tiene la posibilidad de decirle al algoritmo si se requiere
reducción o no. Esto para las unidades de llanto unidas, que son más filas que
columnas. El retraso de la red neuronal, es por si se está entrenando la red Time
Delay, o con retraso en la entrada. Se puede encontrar el algoritmo en los anexos de
esta tesis.
37
3.5.3
Entrenamiento con bebés diferentes
Para hacer entrenamientos con bebés diferentes, es decir, entrenar las redes
neuronales con muestras de una cantidad seleccionada de bebés, y probar la red con
otros bebés cuyas muestras no hayan sido usadas para entrenar la red neuronal, se le
hicieron algunos cambios al algoritmo explicado anteriormente, en este caso no se
pide un porcentaje de prueba, y se piden dos archivos, el que contiene las clases con
las que se va a entrenar el sistema, y el que contiene las clases con las que se probará
el sistema.
El algoritmo en este caso pide como parámetros de entrada lo siguiente:
•
file1 = Nombre del archivo donde se encuentran las clases a entrenar
•
file2 = Nombre del archivo donde se encuentran las clases a probar
•
ncp = Número de componentes principales
•
del = Retraso en la red neuronal que se usa
•
redu = Para entrenar
1. Con Reducción por PCA ó,
2. Sin Reducción
•
RedNA = Entrenamiento por
1. Red Feed Forward Time Delay entrenamiento por Scaled conjugate gradient
backpropagation
2. Red
Feed
Forward
entrenamiento
por
Scaled
conjugate
gradient
backpropagation
3. Red LVQ
4. Red Feed Forward Time Delay entrenamiento por Gradient descent with
adaptive learning backpropagation
38
5. Red Feed Forward entrenamiento por Gradient descent with adaptive learning
backpropagation
Obtenemos
•
net = Red Neuronal entrenada
•
matc = Matriz de confusión
•
prec = Precisión obtenida
•
tam = Tamaño de los datos de entrenamiento
•
numpru = Tamaño de los datos de prueba
El algoritmo se comporta de manera similar que el anterior, una vez obtenidas las
matrices de entrenamiento/prueba. El algoritmo se puede encontrar en los anexos de
esta tesis.
39
Capítulo 4. DESARROLLO DE LA FASE EXPERIMENTAL
Se han hecho diferentes tipos de experimentos desde que se inició con la
investigación del llanto de bebés. Ya que éste es un sistema híbrido, pensado como un
sistema que usa Estrategias Evolutivas combinado con Redes Neuronales, se inició
por realizar la parte del Clasificador, el cual era mediante una Red Neuronal con
Retraso en el Tiempo programada usando la caja de herramientas de Redes
Neuronales de Matlab 6.5. La primera versión del algoritmo tenía algunas fallas, tales
como mala selección de las muestras, y mala medición de la precisión, e inicialmente
se empezó clasificando solamente 2 clases de llanto, sordera y normal. Se contaba
solamente con una base de datos de 157 muestras de llanto de niño normal y 879
muestras de llanto de niño sordo. Todos estos llantos provenientes de 61 bebés
normales, 6 bebés con asfixia y 6 bebés que presentan sordera.
Como se siguieron recolectando más muestras de llanto se obtuvieron algunas de
bebés que reportaron asfixia al nacer, con las cuales llegamos a juntar 340 muestras
de un segundo de llanto de asfixia, y se agregó la tercera clase de llanto para
clasificarla por medio de redes neuronales.
Las muestras de llanto siguieron agregándose a nuestra base de datos, y se
programó una segunda versión del algoritmo clasificador, corrigiendo los errores
antes mencionados y mejorando algunas rutinas, tales como la selección de muestras
de entrenamiento y prueba, y el conteo de las muestras clasificadas correctamente.
Ahora contábamos con 1049 muestras de niño normal, 879 muestras de niños sordos
y 340 muestras de niños con Asfixia. Y se empezó a extraer varias combinaciones de
características, concertando la segmentación de cada segundo (50ms o 100ms) con la
extracción de características de cada segmentación (16 o 21 características),
obteniendo por cada segundo 4 diferentes extracciones de características, también
usamos dos tipos diferentes de coeficientes, Coeficientes de Predicción Lineal (LPC)
y Coeficientes Cepstrales de Frecuencia Mel (MFCC), obteniendo con esto 8
40
diferentes tipos de características, y finalmente experimentamos segmentando las
muestras no solo en 1 segundo, también en 3 segundos. Con esto nos daba 16
diferentes tipos de extracciones de características. Como cada combinación de
extractores de características se hacía en forma de algoritmo dentro del programa
Praat, se tuvieron que hacer 16 diferentes algoritmos para extraer las características
deseadas. Así como 16 macros diferentes para limpiar cada una de las 2268 muestras
que teníamos, y tenerlas listas para experimentar con ellas en nuestro sistema (como
se explica en la sección 3.2.1). Ya teniendo nuestra base de datos limpia y lista, se
tuvieron que programar 16 diferentes redes neuronales, cada una para clasificar las
tres clases de llanto y poder comparar resultados y ver cual tipo de características
resultaba en una mejor clasificación.
4.1
Primeros Experimentos de Selección de Parámetros
Después de haber programado los algoritmos para segmentar, extraer, y
experimentar con las muestras de llanto, se empezaron a buscar métodos alternativos
para facilitar todo este procedimiento. Por lo que se programó una nueva versión del
algoritmo clasificador (Red Neuronal) de tal forma que se adaptara a cualquiera de
nuestras 16 bases de datos, y aparte se implementó el algoritmo de componente
principal (PCA) para reducir nuestra información y reducir el tiempo de
entrenamiento. También se encontró la manera de extraer los coeficientes de cada
muestra y obtener vectores más limpios que los originales, haciendo con esto que
solamente usáramos un solo macro para limpiar todas los diferentes tipos de muestras.
Todo esto se usó para extraer las muestras de manera más fácil y rápida y no tardar
tanto tiempo en experimentar con nuevos llantos de bebés. Para estos experimentos se
usó retro-propagación con gradiente descendiente adaptable.
4.1.1
Retrasos en la Red con Retraso en el Tiempo
Los primeros experimentos que se hicieron fueron con la finalidad de ver cuanto
retraso se necesita para tener un buen desempeño de reconocimiento de llantos. Se
probó la red neuronal con retrasos que iban desde 1 hasta 10 retrasos, de ahí saltando
hasta de 25 en 25 hasta 100 unidades de retraso, y lo que se notó es que no había
41
mucha variación en los resultados como se muestra en la Figura 4.1, donde la
precisión mínima fue de 95.75% y la máxima de 97.38%.
97.4
97.2
97
Precisión
96.8
96.6
96.4
96.2
96
95.8
95.6
0
2
4
6
8
10
12
14
Retrasos, de 1 a 10, después de 25 en 25 hasta llegar a 100
16
18
Figura 4.1. Precisiones resultantes de cada Retraso probado en la red con retraso en el tiempo.
Con esto podemos decir que podemos usar cualquier retraso en el tiempo, ya que
esto no modificaría en mucho nuestro resultado final. Cabe aclarar que se usaron las
muestras de llanto con características MFCC, 16 características y 50ms. En la Figura
4.2 podemos apreciar el comportamiento de cada entrenamiento, el cual no difiere
mucho uno del otro. Con estos resultados decidimos usar un retraso de 1 unidad de
tiempo para los siguientes experimentos.
42
0
10
-1
10
-2
10
-3
Error
10
-4
10
-5
10
-6
10
-7
10
-8
10
-9
10
0
200
400
600
800
1000
1200
Épocas
Figura 4.2. Comportamiento de entrenamientos con diferentes retrasos.
4.1.2
Número de Componentes Principales
También se hicieron experimentos para ver cual número de componentes
principales arrojaría los mejores resultados, para ambas segmentaciones, de 1 y 3
segundos, se hicieron experimentos desde 5 componentes principales (PCs) hasta 100,
saltando de 5 en 5 el número de PCs, esto lo podemos ver en la Figura 4.3.
98
97
96
Precisión
95
94
93
92
91
90
89
88
0
2
4
6
8
10
12
14
16
18
20
Retrasos en unidades de Tiempo que van de 5 en 5 hasta 100 retrasos.
Figura 4.3. Precisiones dadas por la Red con Retraso en el Tiempo con muestras de 1 segundo y
diferente número de PCs
43
Con este experimento, se puede ver que la precisión más alta fue dada cuando se
usaron 50 componentes principales (97.07%), por lo tanto para los experimentos
usaremos 50 componentes principales, esto para muestras de 1 segundo. Se hizo lo
mismo para segmentos de 3 segundos, haciendo el mismo procedimiento
anteriormente explicado, esto puede verse en la Figura 4.4.
88
86
Precisión
84
82
80
78
76
74
0
2
4
6
8
10
12
14
16
18
20
Retrasos en unidades de Tiempo que van de 5 en 5 hasta 100 retrasos.
Figura 4.4. Precisiones dadas por la Red con Retraso en el Tiempo con muestras LPC de 3
segundos y diferente número de PCs
El mejor desempeño de la red neuronal fue detectado en 70 PCs (87.87%) esto
cuando se utilizaban las características LPC en todas sus configuraciones, pero no
funcionó igual con las características MFCC, por lo que se hizo otra búsqueda del
mejor desempeño, esto puede verse en la Figura 4.5.
94
92
Precisión
90
88
86
84
82
0
2
4
6
8
10
12
14
16
18
20
Retrasos en unidades de Tiempo que van de 5 en 5 hasta 100 retrasos.
Figura 4.5. Precisiones dadas por la Red con Retraso en el Tiempo con muestras MFCC de 3
segundos y diferente número de PCs
44
En este caso la mejor precisión fue encontrada a los 20 PCs (93.93%), por lo que
cuando se hicieron experimentos con características MFCC de muestras de 3
segundos, se usó esta cantidad de componentes principales.
En las tablas 4.1 y 4.2 de las siguientes secciones se pueden ver resultados de los
primeros experimentos usando ya los datos que anteriormente seleccionados. En estos
experimentos se hizo una comparación, las tablas muestran las diferentes
configuraciones de características usadas, también resultados de segmentos de 1 y 3
segundos, y de estos, resultados obtenidos usando vectores originales (sin reducción),
vectores reducidos por PCA y reducidos con Validación cruzada. Todo esto con el fin
de seleccionar las características que mejor resultados nos den, con el fin de hacer los
siguientes experimentos.
4.2
Experimentos con Parámetros Seleccionados
4.2.1
1 Segundo
Para estos experimentos se usaron los siguientes parámetros, 70% de las
muestras de cada clase para entrenar y el 30% para probar, es decir se usan 238
muestras de cada clase para entrenar al sistema y 102 para probarlo. Para todas las
pruebas se usa un Delay de 1 unidad de retraso. Cuando se reducen los vectores se
usan 50 componentes principales, y finalmente cuando se usa Validación Cruzada se
usan 10 particiones, mostrando al final el resultado promedio de todas las particiones
y el resultado que se hace al probar la red entrenada con el 30% de cada clase que
previamente se separó para probar al sistema. Los resultados pueden verse en la Tabla
4.1.
45
Tabla 4.1. Resultados utilizando muestras de 1 segundo.
Sin Reducción
Épocas Precisión
LPC 16c
100ms
LPC 16c
50ms
LPC 21c
100ms
LPC 21c
50ms
MFCC 16c
100ms
MFCC 16c
50ms
MFCC 21c
100ms
MFCC 21c
50ms
Con Reducción
Validación Cruzada
Épocas Precisión Resultado Resultado
Promedio
Final
2000
79.41%
87.91%
86.93%
2000
88.89%
2000
86.60%
2000
84.31%
86.31%
75.49%
2000
90.85%
2000
87.25%
86.09%
62.41%
2000
86.27%
2000
86.60%
84.49%
84.31%
2000
96.40%
871
97.05%
98.10%
96.08%
2000
95.42%
1016
97.05%
96.28%
95.42%
2000
93.46%
462
94.77%
97.73%
96.73%
1461
94.77%
732
95.09%
96.83%
95.75%
Con esto vemos que los resultados son mucho mejores cuando se usan
características MFCC, también que el mejor desempeño de reconocimiento es cuando
se usan 16 coeficientes MFCC por cada 100ms. En la figura 4.6 podemos ver el
comportamiento del entrenamiento cuando se usan coeficientes LPC contra MFCC.
Aquí podemos ver como se llega al error establecido de 1x10-8 solamente cuando se
usan las características MFCC reducidas, a diferencia de las características LPC,
donde no se llegó ni siquiera a un error de 1x10-2.
Los gráficos se comportan de manera diferente cuando se usa reducción por
medio de componentes principales, ya que los entrenamientos son más rápidos,
cuando se usan características MFCC, y en la mayoría de los casos se obtiene un
mejor resultado. Esto puede observarse en la Figura 4.7.
46
0
10
-1
10
-2
Error
10
-3
10
-4
10
-5
10
-6
10
-7
10
0
500
1000
1500
2000
2500
Épocas
Figura 4.6. Entrenamiento usando características LPC (línea punteada) contra características
MFCC (línea continua), sin reducción, ninguno alcanza 1x10-8
0
10
-1
10
-2
10
-3
Error
10
-4
10
-5
10
-6
10
-7
10
-8
10
-9
10
0
500
1000
Épocas
1500
2000
2500
Figura 4.7. Entrenamiento usando características LPC (línea punteada) contra características
MFCC (línea continua) y 50 PCs
Los siguientes experimentos son ahora para muestras de 3 segundos. Con esto
podremos ver si la red tiene mejor desempeño con poca o mucha información, esto lo
veremos en la siguiente sección
47
4.2.2
3 Segundos
En estos experimentos, se hizo el mismo procedimiento anterior, solo que en la
parte de reducción de vectores, se usaron 70 PCs para las características LPC y 20
PC’s para las características MFCC. El retraso sigue siendo de 1 unidad de tiempo,
pero ahora se usa el 80% de cada clase para entrenar el sistema (89 muestras) y el
20% para probar al sistema (22 muestras). Los resultados pueden verse en la Tabla
4.2.
Tabla 4.2. Resultados utilizando muestras de 3 segundos.
Sin Reducción
Épocas Precisión
LPC 16c
100ms
LPC 16c
50ms
LPC 21c
100ms
LPC 21c
50ms
MFCC 16c
100ms
MFCC 16c
50ms
MFCC 21c
100ms
MFCC 21c
50ms
Con Reducción
Validación Cruzada
Épocas Precisión Resultado Resultado
Promedio
Final
2000
83.33%
83.68%
43.93%
2000
80.30%
2000
80.30%
2000
86.36%
85.55%
27.27%
2000
89.39%
2000
84.84%
80.66%
65.15%
2000
84.84%
2000
80.30%
78.58%
68.18%
336
92.42%
533
92.42%
94.63%
75.75%
486
90.90%
699
95.45%
91.86%
66.66%
392
93.93%
640
92.42%
93.89%
45.45%
1466
90.90%
769
92.42%
94.33%
27.27%
Nuevamente se puede ver el comportamiento cuando usamos muestras con
características MFCC y LPC, también se nota una diferencia del sistema cuando se
usan muestras reducidas, no tanto en los resultados, sino en cuanto a la duración de
entrenamiento, el cuál es mucho más rápido cuando se usa reducción que cuando se
usan las muestras completas, en la Figura 4.8 podemos ver el entrenamiento usando
muestras sin reducción, y en la Figura 4.9 cuando se usa reducción. Se nota un
comportamiento bastante raro cuando se usa entrenamiento por medio de Validación
48
Cruzada, ya que el reconocimiento es muy bajo al final, esto lo discutiremos en la
sección de conclusiones.
0
10
-1
10
-2
10
-3
Error
10
-4
10
-5
10
-6
10
-7
10
-8
10
-9
10
0
500
1000
1500
2000
2500
Épocas
Figura 4.8. Entrenamiento usando características LPC (línea punteada) contra características
MFCC (línea continua), sin reducción.
0
10
-1
10
-2
10
-3
Error
10
-4
10
-5
10
-6
10
-7
10
-8
10
-9
10
0
500
1000
1500
2000
2500
Épocas
Figura 4.9. Entrenamiento usando características LPC (línea punteada) contra características
MFCC (línea continua), con reducción, 70 y 20 PCs respectivamente.
49
4.2.3
Unidades de llanto
En la estancia de investigación que se hizo en la Universidad de Oriente de
Santiago de Cuba, se aprendimos a manejar una nueva metodología de segmentación,
la de separar las unidades de llanto de cada muestra que se tiene, esto se explica en la
sección 3.1.2 de este trabajo. Una vez obtenido esto, se empezó entrenando el sistema
con las muestras de llanto mexicanas, las cuales consisten de 180 segmentos de 0.4
segundos para los llantos de bebés normales, 157 segmentos de bebés con sordera, y
164 segmentos para bebés con asfixia. Como ahora se tenía el sistema programado de
manera tal que pudiéramos entrenar varios tipos de redes neuronales, se obtuvieron
varios datos, dependiendo del uso de la red neuronal. Para esta etapa se tuvo que
implementar la red LVQ, la cual es la que usan los investigadores cubanos para
reconocer llanto, y con fines comparativos. A continuación en la Tabla 4.3 mostramos
los resultados obtenidos, por cada red, sin usar reducción, usando reducción por PCA
(a 50 componentes), y finalmente validación cruzada.
Tabla 4.3. Experimentos con Unidades de Llanto probando cada red neuronal
Sin Reducción
Con Reducción
FF Scg
LPC
91.39%
MFCC
98.92%
LPC
86.02%
MFCC
97.84%
Validación
Cruzada
LPC
MFCC
82.94% 98.14%
FFTD Scg
91.39%
94.62%
82.79%
98.92%
81.98%
98.66%
LVQ
33.33%
88.17%
33.33%
94.62%
29.30%
87.52%
FF Gda
86.02%
97.84%
90.32%
97.84%
85.77%
98.62%
FFTD Gda
88.17%
98.92%
81.72%
97.84%
89.91%
97.31%
A saber:
FF = Red Neuronal Feed Forward,
FFTD = Red Neuronal Feed Forward Time Delay,
50
Scg = Entrenamiento por Scaled conjugate gradient backpropagation,
Gda = Entrenamiento por Gradient descent with adaptive learning backpropagation.
En la Figura 4.10 podemos ver el comportamiento cuando se entrena una red
neuronal con características LPC y con MFCC, sin reducción y con reducción, estas
tomadas del entrenamiento de la red neuronal con retraso en el tiempo entrenada por
Scg, ya que fue la que mejor desempeño tuvo en la mayoría de los casos. En dicha
figura vemos que esta vez todas las características llegaron al error establecido, y se
ve una gran diferencia en el entrenamiento de características MFCC, sin reducción
(línea sólida) y con reducción (línea discontinua), el cual fue mucho más rápido. En
cuanto LPC, sin reducción (línea punteada y discontinua), el entrenamiento es muy
similar que con reducción (línea punteada).
0
10
-1
10
-2
10
-3
Error
10
-4
10
-5
10
-6
10
-7
10
-8
10
-9
10
0
50
100
150
200
250
300
350
400
Épocas
Figura 4.10. Comportamiento de entrenamiento usando Unidades de Llanto con características
LPC (línea delgada) y MFCC (línea gruesa)
4.2.4
Unidades de Llanto Unidas
Una vez obtenidos los resultados de los segmentos extraídos de las unidades de
llanto de 0.4 segundos, intentamos otro tipo de experimentos, en los cuales uníamos
las unidades de llanto de cada bebé para formar un archivo más grande, de tal forma
51
que solo contuviera información sonora del llanto sin segmentos de sonido, esto para
poder segmentar muestras de 1 segundo y compararlas con los experimentos que se
hicieron originalmente, cuando segmentábamos 1 o 3 segundos, sin tomar en cuenta
las unidades de llanto. Como habíamos explicado antes en la sección 3.1.3, para estos
experimentos no se puede utilizar la reducción por componentes principales, por lo
que solo se hacen experimentos de las muestras sin reducción, como se muestra en la
Tabla 4.4. Usamos 16 características LPC o MFCC por cada 50 milisegundos y una
unidad de retraso cuando se usa la red neuronal Time Delay. Se muestran
experimentos por cada red neuronal.
Tabla 4.4. Experimentos con Unidades de Llanto Unidas probando cada red neuronal
Sin Reducción
LPC
MFCC
88.09%
97.77%
Validación Cruzada
LPC
MFCC
74.32%
82.95%
FFTD Scg
92.85%
93.33%
80.40%
86.58%
LVQ
38.09%
93.33%
41.52%
89.60%
FF Gda
92.85%
97.77%
82.77%
91.92%
FFTD Gda
93.33%
98.09%
78.63%
95.02%
FF Scg
El la Figura 4.11 se muestra el comportamiento del entrenamiento de la red con
retraso en el tiempo, la cual fue la que tuvo mejor comportamiento para las unidades
de llanto unidas. Se ve un comportamiento similar al visto en los segmentos de 1
segundo, donde LPC (línea discontinua) nunca converge y MFCC (línea continua) si
llega al error establecido, y aparte tiene mayor precisión.
52
0
10
-1
10
-2
10
-3
Error
10
-4
10
-5
10
-6
10
-7
10
-8
10
-9
10
0
500
1000
1500
2000
2500
Épocas
Figura 4.11. Comportamiento del entrenamiento usando Unidades de Llanto Unidas con
Características LPC (línea discontinua) y MFCC (línea continua)
Ahora se tienen entrenamientos y resultados con muestras de 1 segundo, de 3
segundos, de unidades de llanto segmentadas en 0.4 segundos, de unidades de llanto
unidas segmentadas en muestras de 1 segundo. Hasta este punto se tienen las
extracciones de características que mejores resultados dieron, tanto LPC y MFCC, de
cada uno de los experimentos propuestos. Con esto podremos ahora validar el sistema.
4.3
Validación del Sistema
Para poder validar realmente el sistema se inició una nueva forma de
experimentación, una donde nos permitiera ver si el sistema funciona correctamente,
que reconozca no solo las clases con las cuales son alimentadas, sino que también
reconozca a bebés diferentes, con esto queremos decir, que el sistema esté listo para
hacer diagnósticos confiables, que pueda ser creíble para un médico al hacer un
diagnóstico acertado de alguna patología que pudiera tener el bebé. Para esto, se
hicieron pruebas, donde se entrenan las redes neuronales con una cantidad
seleccionada de bebés (46 de bebés normales, 5 con asfixia y 5 con sordera), y
finalmente se pruebe con una cantidad diferente de muestras de bebés (16 bebés
normales, 1 con asfixia y 1 con sordera).
53
Para esto seleccionamos las características que mejor resultado nos dieron en la
mayor parte de los experimentos, estas son las siguientes:
•
Muestras de 1 segundo,
o LPC 16 coeficientes 100ms
o MFCC 16 coeficientes 100ms
•
Muestras de 3 segundos
o LPC 16 coeficientes 50ms
o MFCC 16 coeficientes 100ms
•
Unidades de Llanto
o Red Neuronal FFTD entrenada con Scg y muestras MFCC
•
Unidades de llanto unidas
o Red Neuronal FFTD entrenada con Gda y muestras MFCC
Ahora para hacer estas pruebas, es tiempo de poner en marcha nuestro sistema
híbrido para comparar los resultados obtenidos solamente por el sistema de redes
neuronales. En esta ocasión usaremos solamente la red neuronal “Feed Forward Time
Delay”, con los parámetros de entrada usados en los experimentos seleccionados. Y
como estamos buscando la solución más óptima en un espacio de varias soluciones,
solo se hará una sola prueba por cada experimento realizado con anterioridad, ya que
se usarán 20 individuos como la población inicial, 20 generaciones para hacer la
búsqueda y el tamaño de los individuos será de 50, para comparar los resultados con
los entrenamientos hechos con 50 componentes principales, en caso de los segmentos
de 3 segundos se usaran individuos de tamaño 70 y 20 para LPC y MFCC
respectivamente. Tomamos esto ya que con estos datos de entrada, se generan 200
entrenamientos diferentes, y esto toma mucho tiempo máquina para ser efectuado.
Más adelante tendremos que hacer pruebas variando el número de individuos,
54
generaciones y tamaño de los individuos, haciendo un muestro comparativo para ver
cuales serían los parámetros más óptimos para hacer este tipo de experimentos de
búsqueda, pero esto queda como trabajo futuro y no será considerado para los fines de
esta tesis.
Tabla 4.5. Resultados de las mejores configuraciones, usando muestras de bebés diferentes.
Reducción por PCA
Reducción por
Sistema Híbrido
Épocas
Precisión
Precisión
1 Seg. LPC 16c
100ms
1 Seg. MFCC 16c
100ms
3 Seg. LPC 16c
50ms
3 Seg. MFCC 16c
100ms
FFTD Scg MFCC
2000
55.15%
86.75%
395
93.33%
96.79%
2000
68.79%
85.72%
351
92.33%
95.56%
439
93.33%
96.67%
FFTD Gda MFCC
527
92.00%
94.66%
Como se puede ver en todos los casos, se puede apreciar una mejora en el
desempeño final del sistema, esto quiere decir que tenemos un mejor reconocimiento,
o sea un sistema más confiable y robusto. Aparte en esta sección también vemos un
comportamiento similar a los anteriores, donde las características MFCC tienen
mayor eficiencia que las características LPC, esto lo podemos ver en la figura 4.12,
donde se ve un comportamiento de entrenamiento similar a los anteriores
entrenamientos.
55
0
10
-1
10
-2
10
-3
Error
10
-4
10
-5
10
-6
10
-7
10
-8
10
-9
10
0
500
1000
1500
2000
2500
Épocas
Figura 4.12. Comportamiento de entrenamiento usando muestras de bebés diferentes con
características LPC (línea discontinua) y MFCC (línea continua).
56
Capítulo 5 ANÁLISIS DE RESULTADOS
Como se puede ver, en las muestras de 1 segundo se empezó a observar poca
convergencia de error en las muestras de llanto con características LPC, como se
muestra en las figuras de comportamiento (4.6-9 y 4.11-12), nunca se llega a la
convergencia de 1×10-8 que se tenía anteriormente. Pero por otro lado, con
características MFCC se obtuvo en la mayoría de los casos una convergencia más
rápida obteniendo el error que se tenía anteriormente, y podemos ver este
comportamiento en las mismas figuras, por lo que se muestra un comportamiento
bajo en la eficiencia de la Red Neuronal al usar características LPC. También
podemos notar que la red neuronal muestra mejores resultados cuando se entrena con
un mayor número de muestras, es decir usando los segmentos de 1 o 3 segundos,
contra las unidades de llanto, y que es confiable usar el método de reducción de
vectores por medio de análisis de componente principal, ya que los resultados son
muy similares y el entrenamiento es significativamente más rápido que usando
vectores sin reducción, ya que sin reducción el sistema tarda cerca de 28 minutos en
entrenar y con reducción el entrenamiento va desde 1 a 4 minutos. Pero en general
puede decirse que la mayoría de los resultados son muy aceptables, esto porque
tenemos resultados en su mayoría arriba del 85% y que se está llegando a una muy
buena solución para la clasificación de muestras de llanto. Cuando se empezó a
trabajar con unidades de llanto, se observaron comportamientos muy curiosos,
cuando se usaron características de llanto LPC las unidades de llanto tenía una
convergencia muy rápida y se llegaba al error establecido. Pero realmente no se
puede ver mucha diferencia, para las muestras cubanas, cuando se entrena el sistema
usando vectores LPC o MFCC, como la que está marcada cuando se comparan los
entrenamientos usando características MFCC contra LPC de bebés mexicanos. Algo
mas curioso, con las muestras mexicanas, fue cuando entrenamos la red LVQ, usando
características LPC, donde no existía ni convergencia, ni reconocimiento,
simplemente tomaba todas las muestras de llanto como normales, y otros casos como
57
sordera. Lo que si podemos mencionar, es que había una gran variabilidad en
resultados entre cada experimento, esto se debe a que cada experimento es iniciado de
una manera altamente aleatoria, por lo que modificamos la manera de recolectar las
muestras de llanto. Primero se recolectaban todas las muestras y con esas mismas
muestras se efectuaban los experimentos correspondientes, esto para evitar posibles
variabilidades. Dicho en otras palabras, pensamos en implementar la selección de
características acústicas como primer plano, para poder tener resultados similares, sin
importar que tipos de características se seleccionen al principio. Podemos mencionar
que las muestras de llanto mexicanas, fueron de llantos totalmente espontáneos, no
eran afectados por medios exteriores, claro está que para obtener llanto de dolor, eran
de bebés recibiendo inyecciones. Pero en algunas muestras existe un poco de ruido
exterior. Aparte debemos aclarar que el fin de este trabajo es la búsqueda de
algoritmos efectivos para reconocer llanto, no el de hacer una comparación de
resultados de entrenamientos con llantos cubanos y entrenamientos con llantos
mexicanos. Para las unidades de llanto unidas, los resultados son muy similares a los
resultados obtenidos por unidades de llanto normales, solo que en estos experimentos
se omitió la reducción por componentes principales, ya que no vimos diferencia
alguna, entre entrenamientos con vectores sin reducción o con reducción. En esta
parte de los experimentos, las muestras LPC se comportaron de manera similar a
cuando se usaron segmentos de 1 segundo. Lo interesante viene cuando empezamos a
reconocer bebés diferentes, ya que el reconocimiento baja mucho. Se dice que viene
la parte interesante ya que exactamente esta es la parte que queremos mejorar con el
sistema híbrido. En los experimentos donde comparamos los resultados ya con el
sistema híbrido, se puede ver que los resultados si son mejores, en el mejor de los
casos el reconocimiento aumenta hasta 31.6 puntos porcentuales, cuando se realizan
experimentos con bebés diferentes. Cuando se realizan experimentos de manera
normal, sin definir los llantos para hacer las pruebas, hay veces que el sistema tiene
mayor precisión, y hay veces que no mejora esa precisión. Pero podemos ver en esta
parte que sí se ve una mejora al reconocer no solo la clase de llanto, sino también al
bebé. Por esto podemos decir, que al buscar características más fuertes, obtenemos
58
una mejora en los resultados, cuando se quiere reconocer cualquier llanto de bebé, sin
importar el bebé al cual estamos tratando de diagnosticar.
Finalmente podemos mencionar que el mejor resultado de todos los
experimentos fueron dados por, las muestras de 1 segundo con características MFCC
con 16 coeficientes por cada 100ms, obteniendo un resultado de 93.33% en el sistema
de redes neuronales normal y 96.79% con el sistema híbrido. En cuanto a las
muestras con características LPC, las que mejor dieron resultado fueron las de 3
segundos con 16 características por cada 50 milisegundos, obteniendo un resultado de
68.79% usando la red neuronal simple, y un 85.72% usando el sistema híbrido.
Observando una gran diferencia entre ambos tipos de características, aparte de que el
sistema híbrido es el que mejores resultados arroja en cuanto a reconocimiento.
59
Capítulo 6 CONCLUSIONES Y TRABAJOS FUTUROS
A lo largo de este trabajo, se puede observar como hemos hecho para escoger la
mejor extracción de características, y tratamos de comparar los resultados obtenidos
por métodos de reducción contra los que no tienen reducción, lo cual no había mucha
diferencia. Por lo que podemos concluir que las mejores características acústicas
hasta el momento son los coeficientes MFCC. También podemos concluir que para
reconocer tanto la clase de llanto, como al bebé cuyo llanto nunca estuvo en las
muestras de entrenamiento, es mucho mejor usar un sistema de selección de
características, en este caso las estrategias evolutivas, que con la manera tradicional
de solamente entrenar las redes neuronales. Pero faltan todavía algunas cosas por
hacer, la cual es optimizar la mutación, ya que en algunos casos, existe un mejor
resultado en épocas intermedias, y posteriormente ese resultado se pierde y luego
vuelve a aumentar, lo que indica que hay veces que no se mantiene en los hijos la
información del padre “más apto”. Esto se cree que está en la mutación. Y también
tenemos que trabajar en estandarizar el grabado de las muestras de llanto, desde su
forma de captura del sonido, hasta la digitalización y procesamiento de las muestras,
para esto se debe establecer cual es la mejor forma de grabar el llanto de los niños.
También es importante decidir si es mejor segmentar las muestras en segmentos de n
segundos, o si debemos primero extraer las unidades de llanto para después
segmentarlas y trabajar explícitamente la intermitencia de la señal.
60
Bibliografía
[1]
Monakow C, Morgue R., Introduction a l’étude de la neurologie et de la
sychopathologie. Integration et désintégration de la function, Paris: Alcan 1928.
[2]
Yoshinaga-Itano, quoted in ‘The High Cost Of Hearing Lost; What Our Publics
Need to Know’, Donald Radcli.e, The Hearing Journal, May 1998, vol 51 no. 5.
[3]
Yoshinaga-Itano, C. & Appusso, M L., The development of deaf and hard of
hearing children identified through the high-risk registry, in The American
Annals of the deaf, 143, 416-424. 1998.
[4]
Reyes-García C. A. & Reyes-Galaviz O. F., Classification of Infant Crying to
Identify Pathologies in Recently Born Babies with ANFIS. ICCHP
Transactions, Lecture Notes in Artificial Intelligence, Springer-Verlag. 2004.
[5]
Wasz-Höckert O., Lind J., Vuorenkoski V., Partenen T., Valanne E., The infant
cry: a spectrographic and auditory analysis, Clin. Dev. Med. 29 (1968) pp. 1-42
[6]
Golub H., Corwin M., Infant cry: a clue to diagnosis, Pediatrics, vol. 69 (1982),
pp. 197-201.
[7]
Zeskind P.S., Lester B., Acoustic features and auditory perceptions of the cries
of newborns with prenatal and perinatal complications, Chils development, 49
(1978), pp. 580-589.
[8]
Sergio D. Cano, Daniel I. Escobedo y Eddy Coello, El Uso de los Mapas AutoOrganizados de Kohonen en la Clasificación de Unidades de Llanto Infantil,
Grupo de Procesamiento de Voz, 1er Taller AIRENE, Universidad Católica del
Norte, Chile, 1999, pp 24-29.
[9]
Sergio D. Cano Ortiz, Daniel I. Escobedo Beceiro, Miguel Torres Alberto,
Alexander Castillo Lombart. Análisis preliminar de los resultados de una
clasificación de unidades de llanto infantil según tres arquitecturas de redes
61
neuronales. Proyecto Multidiciplinario Ramal Análisis de Llanto Infantil
orientado al Diagnóstico Neonatal, código MINSAP 09. 2000
[10] Pieter Mulder, Matthijs. A Clue Using Self Organizing Maps: A final report of
a practical period on Computer Science. Infant Cry Analysis. February 22,
2001. Santiago de Cuba
[11] Cohen, A. and Zmora, E. “Automatic classification of infants’ hunger and pain
cry”. In Proc. Int. Conf. Digital Signal Processing, Cappellini, V. and
Constantinides, A.G., Eds., Elsevier, Amsterdam, (1984), pp. 667-672.
[12] Marco Petroni, Alfred S. Malowany, C. Celeste Johnston, Bonnie J. Stevens,
(1995). Identification of pain from infant cry vocalizations using artificial
neural networks (ANNs), The International Society for Optical Engineering.
Volume 2492. Part two of two. Paper #: 2492-79.
[13] Lederman, D., Automatic Classification Of Infants’ Cry, Ben-Gurion
University Of The Negev Faculty Of Engineering Sciences Department Of
Electrical And Computer Engineering, (2002), Thesis.
[14] Ekkel, T, “Neural Network-Based Classification of Cries from Infants
Suffering from Hypoxia-Related CNS Damage”, Master Thesis. University of
Twente, the Netherlands. 2002.
[15] Orozco García, J., Reyes García, C.A. (2003), Mel-Frequency Cepstrum
Coefficients Extraction from Infant Cry for Classification of Normal and
Pathological Cry with Feed forward Neural Networks, ESANN 2003, Bruges,
Belgium.
[16] Holland, J. H. Progress in Theorical Biology IV. Adaptation. In R. Rosen and F.
M. Snell (Eds.), pp. 263-293. Academic Press. 1976.
[17] Oscar Cordón, Francisco Herrera, Frank Hoffmann, Luis Magdalena. Genetic
Fuzzy Systems: Evolutionary Tuning and Learning of Fuzzy Knowledge Bases.
Ed. World Scientific. 2001.
62
[18] Sankar K. Pal, Sushmita Mitra. Neuro-Fuzzy Pattern Recognition: Methods in
Soft Computing. Ed. Wiley Inter-Science. 1999
[19] Orozco-García, José. Extracción y Análisis de Características Acústicas del
Llanto de Bebés para su Reconocimiento Automático Basado en Redes
Neuronales. Tesis. INAOE Febrero 2004.
[20] Hussain, Talib S., An Introduction to Evolutionary Computation, Department
of Computing and Information Science Queens University, Kingston, Ont. K7L
3N6. 1998.
[21] Francisco Casacubierta & Enrique Vidal, Reconocimiento Automático del
Habla, pp 19. Marcombo, Boixareu Editores, 1987.
[22] Gold, B., Morgan, N. Speech and Audio Signal Processing. Processing and
perception of speech and music. John Wiley & Sons, Inc. 2000.
[23] Markel, John D., Gray, Augustine H. Linear prediction of speech. New York:
Springer-Verlag. 1976.
[24] Schwefel, H.-P., Numerical Optimization for Computer Models, John Wiley,
Chichester, UK, 1981.
[25] Zbigniew Michalewicz, Genetic Algorithms + Data Structures = Evolution
Programs, Springer Verlag, 1999.
[26] Santo
Orcero,
David.
Estrategias
evolutivas,
http://www.orcero.org/irbis/disertacion/node217.html. 2004.
[27] Angeline, P.J. (1996) “Genetic programming continued evolution,” Chapter 1
in K.E. Kinnear, Jr. and P.J. Angeline (Eds.), Advances in Genetic
Programming 2. Cambridge, MA: MIT Press, p. 1 -20.
[28] Spears, W.M., DeJong, K.A., Back, T., Fogel, D.B., & deGaris, H. “An
overview of evolutionary computation “Proceedings of the 1993 European
Conference on Machine Learning.
63
[29] Markowitz, Judith A., Using Speech Recognition, Prentice Hall, 1996.
[30] Neural Network Toolbox, Matlab V.6.0.8, Developed by Math Works, Inc.
[31] Caudill, M., and C. Butler. Understanding Neural Networks: Computer
Explorations, Vols. 1 and 2, Cambridge, MA: the MIT Press.1992.
[32] Lawrence Rabiner, Biing-Hwang Juang. Fundamentals of Speech Recognition.
Prentice Hall Signal Processing Series. 1993.
[33] A. Weibel, T. Hanazawa, G. Hinton, K. Shikano, and K.J. Lang, “Phoneme
Recognition Using Time Delay Neural Networks,” IEEE Trans. Acoustics, Speech,
Signal Proc., ASSP-37: 328-339, 1989.
[34] Escritorio
en
línea
de
Math
Works,
sept.
6,
2004.
http://www.mathworks.com/access/helpdesk/help/toolbox/nnet/selfor17.html
[35] Haykin, Simon S. “Neural networks: A comprehensive foundation”. New York:
Macmillan College Publishing Company, Inc., 1994.
64
Anexos
Algoritmo Principal Redes Neuronales
function [net,matc,prec,tam,numpru]=proyecto(file,porc,ncp,del,redu,RedNA)
fid=fopen(file);
if fid < 0
mat=[];
return;
end;
datos=fgetl(fid);
i=1; Yy=[];
entrena=[]; prueba=[];
while datos ~= -1
nombre=strrep(datos,'.txt','');
[Y]=leearch(datos,i);
eval([ nombre , '=Y']);
datos=fgetl(fid);
i=i+1;
[X1,Y1]=size(eval(nombre));
Yy=[Yy Y1];
[a,b]=min(Yy);
T=randperm(Y1);
nombre2=strcat('entrena',nombre);
nombre1=strcat('prueba',nombre);
ap=round(a*porc);
for k=1:(a-ap)
Temp(:,k)=Y(:,T(k));
end
for j=1:(a-k)
Temp1(:,j)=Y(:,T(j+k));
end
eval([nombre2,'=Temp']);
eval([nombre1,'=Temp1']);
entrena=[entrena eval(nombre2)];
prueba=[prueba eval(nombre1)];
end
fclose(fid);
[entrena,prueba,etiquetas,etiquetas2,tam] = etiqu(entrena,prueba,i);
if redu == 1
[pcaEntrena,pcaPrueba]=comprimir(entrena,prueba,ncp);
elseif redu == 2
pcaEntrena=entrena;
pcaPrueba=prueba;
[Ll,Mm]=size(pcaEntrena);
ncp=Ll;
end
if RedNA == 1
[net,meta] = redEntrena(etiquetas,pcaEntrena,ncp,(i-1),del);
elseif RedNA == 2
[net,meta] = redEntrena2(etiquetas,pcaEntrena,ncp,(i-1));
elseif RedNA == 3
[net,meta] = redEntrena3(etiquetas,pcaEntrena,ncp,(i-1));
elseif RedNA == 4
[net,meta] = redEntrena4(etiquetas,pcaEntrena,ncp,(i-1),del);
elseif RedNA == 5
[net,meta] = redEntrena5(etiquetas,pcaEntrena,ncp,(i-1));
end
Y = sim(net,pcaPrueba);
a
Anexos
[AAa,BBb]=max(Y);
numpru=a-k;
[matc,prec] = matconf(numpru,i,BBb,etiquetas2);
Algoritmo Principal, Bebés Diferentes
function [net,matc,prec,tam,numpru,BBb]=diferentes(file1,file2,ncp,del,redu,RedNA)
[entrena,prueba,i,t] = invocadif(file1,file2);
[entrena,prueba,etiquetas,etiquetas2,tam] = etiqu(entrena,prueba,i);
if redu == 1
[pcaEntrena,pcaPrueba]=comprimir(entrena,prueba,ncp);
elseif redu == 2
pcaEntrena=entrena;
pcaPrueba=prueba;
[Ll,Mm]=size(pcaEntrena);
ncp=Ll;
end
if RedNA == 1
[net,meta] = redEntrena(etiquetas,pcaEntrena,ncp,(i-1),del);
elseif RedNA == 2
[net,meta] = redEntrena2(etiquetas,pcaEntrena,ncp,(i-1));
elseif RedNA == 3
[net,meta] = redEntrena3(etiquetas,pcaEntrena,ncp,(i-1));
elseif RedNA == 4
[net,meta] = redEntrena4(etiquetas,pcaEntrena,ncp,(i-1),del);
elseif RedNA == 5
[net,meta] = redEntrena5(etiquetas,pcaEntrena,ncp,(i-1));
end
Y = sim(net,pcaPrueba);
[AAa,BBb]=max(Y);
numpru=t/(i-1);
[matc,prec] = matconf(numpru,i,BBb,etiquetas2);
Algoritmo Principal, Sistema Genético Neuronal
function [soluc,maxind] = inpob(file,ind,tam,porc,del,mut,vueltas,corte)
soluc=[];
A = zeros(ind,tam);
[entrena,prueba,i,a,k] = invoca(file,porc);
numero=i-1;
[a,b]=size(entrena);
for i=1:ind
T=randperm(a-1);
A(i,:)=T(1:tam);
end
A=A';
A=sort(A);
A=A';
[entrena,prueba,etiquetas,etiquetas2,tam2] = etiqu(entrena,prueba,i);
sol=[];
[Xx,Yy]=size(entrena);
[Xxx,Yyy]=size(prueba);
for cuenta=1:vueltas
mat1=zeros(tam,Yy);
mat2=zeros(tam,Yyy);
res=[];
for i=1:ind
b
Anexos
for j=1:tam
mat1(j,:)=entrena(A(i,j),:);
mat2(j,:)=prueba(A(i,j),:);
end
[net,meta] = redhib(etiquetas,mat1,tam,numero,del);
Y = sim(net,mat2);
[AAa,BBb]=max(Y);
[matc,prec] = matconf((Yyy/3),4,BBb,etiquetas2);
res=[res prec];
end
[sol,maxim]=max(res);
[c,d]=sort(res);
cut=ind-corte;
A2=[];
for l=(cut+1):ind
A2((l-cut),:)=A(d(l),:);
end
[s,t]=size(A2);
n2=[];
for i=1:ind
n=round(s*rand(1,1));
if n==0
n=n+1;
end
n2=[n2;n];
end
for u=1:ind
A3(u,:)=A2(n2(u,:),:);
end
A=A3;
[A2]=muta(A,mut,Xx-1);
A2=sort(A2');
A=A2';
soluc=[soluc sol];
maxind=(A(maxim,:));
end
Algoritmo Principal Sistema Genético Neuronal, Bebés Diferentes
function [soluc,maxind] = inpobdif(file1,file2,ind,tam,del,mut,vueltas,corte)
soluc=[];
A = zeros(ind,tam);
[entrena,prueba,i,t] = invocadif(file1,file2);
numero=i-1;
[a,b]=size(entrena);
for i=1:ind
T=randperm(a-1);
A(i,:)=T(1:tam);
end
A=A';
A=sort(A);
A=A';
[entrena,prueba,etiquetas,etiquetas2,tam2] = etiqu(entrena,prueba,i);
sol=[];
[Xx,Yy]=size(entrena);
[Xxx,Yyy]=size(prueba);
for cuenta=1:vueltas
c
Anexos
mat1=zeros(tam,Yy);
mat2=zeros(tam,Yyy);
res=[];
for i=1:ind
for j=1:tam
mat1(j,:)=entrena(A(i,j),:);
mat2(j,:)=prueba(A(i,j),:);
end
[net,meta] = redhib(etiquetas,mat1,tam,numero,del);
Y = sim(net,mat2);
[AAa,BBb]=max(Y);
[matc,prec] = matconf((Yyy/3),4,BBb,etiquetas2);
res=[res prec];
end
[sol,maxim]=max(res);
[c,d]=sort(res);
cut=ind-corte;
A2=[];
for l=(cut+1):ind
A2((l-cut),:)=A(d(l),:);
end
[s,t]=size(A2);
n2=[];
for i=1:ind
n=round(s*rand(1,1));
if n==0
n=n+1;
end
n2=[n2;n];
end
for u=1:ind
A3(u,:)=A2(n2(u,:),:);
end
A=A3;
[A2]=muta(A,mut,Xx-1);
A2=sort(A2');
A=A2';
soluc=[soluc sol];
maxind=(A(maxim,:));
end
Red FF, Entrenamiento SCG
function [net,meta] = redEntrena2(etiquetas,pcaEntrena,ncp,Bb);
O = ind2vec(etiquetas);
meta = full(O);
net = newff(minmax(pcaEntrena),[ncp round(ncp*.4) Bb],{'logsig', 'logsig', 'logsig'},'trainscg');
net.trainParam.show = 100;
net.trainParam.epochs = 2000;
net.trainparam.min_grad=1e-20;
net.trainparam.goal=0.00000001;
net = train(net,pcaEntrena,meta);
Red FFTD, Entrenamiento SCG
function [net,meta] = redEntrena(etiquetas,pcaEntrena,ncp,Bb,del)
O = ind2vec(etiquetas);
meta = full(O);
d
Anexos
net = newfftd(minmax(pcaEntrena),[0 del],[ncp round(ncp*.4) Bb],{'logsig', 'logsig', 'logsig'},'trainscg');
net.trainParam.show = 200;
net.trainParam.epochs = 2000;
net.trainparam.min_grad=1e-20;
net.trainparam.goal=0.00000001;
net = train(net,pcaEntrena,meta);
Red LVQ
function [net,meta] = redEntrena3(etiquetas,pcaEntrena,ncp,Bb)
O = ind2vec(etiquetas);
meta = full(O);
net = newlvq(minmax(pcaEntrena), round(ncp*0.4) ,[0.4 0.3 0.3],0.03,'learnlv1');
net.trainParam.show = 5;
net.trainParam.epochs = 50;
net.trainparam.min_grad=1e-20;
net.trainparam.goal=0.1;
net = train(net,pcaEntrena,meta);
Red FF, Entrenamiento GDA
function [net,meta] = redEntrena5(etiquetas,pcaEntrena,ncp,Bb);
O = ind2vec(etiquetas);
meta = full(O);
net = newff(minmax(pcaEntrena),[ncp round(ncp*.4) Bb],{'logsig', 'logsig', 'logsig'},'traingda');
net.trainParam.show = 100;
net.trainParam.epochs = 2000;
net.trainparam.min_grad=1e-20;
net.trainparam.goal=0.00000001;
net = train(net,pcaEntrena,meta);
Red FFTD, Entrenamiento GDA
function [net,meta] = redEntrena4(etiquetas,pcaEntrena,ncp,Bb,del)
O = ind2vec(etiquetas);
meta = full(O);
net = newfftd(minmax(pcaEntrena),[0 del],[ncp round(ncp*.4) Bb],{'logsig', 'logsig', 'logsig'},'traingda');
net.trainParam.show = 200;
net.trainParam.epochs = 2000;
net.trainparam.min_grad=1e-20;
net.trainparam.goal=0.00000001;
net = train(net,pcaEntrena,meta);
Matriz de Confusión
function [matrizconfu,precision] = matconf(numpru,i,BBb,etiquetas2)
matrizconfu=zeros(i-1,i-1);
for st=1:(numpru*(i-1))
matrizconfu(etiquetas2(st),BBb(st))=(matrizconfu(etiquetas2(st),BBb(st)))+1;
end
precision=0;
for t=1:(i-1)
precision=precision+matrizconfu(t,t);
end
precision=(precision*100)/(numpru*(i-1));
e
Descargar