Cómo clasificar llanto del recién nacido mediante una red neuronal supervisada
1.
Universidad de Oriente. Patricio Lumumba s/n, Santiago de Cuba. Cuba.,
Universidad de Oriente,
Universidad de Oriente,
Patricio Lumumba s/n,
RESUMEN
El llanto es una vía de comunicación del recién nacido con el medio circundante. Investigaciones acerca del llanto infantil han correlacionado características acústicas de éste con patologías, demostrándose que el llanto puede reflejar la integridad neurofisiológica del niño y dar una medida de su interacción con el ambiente y su desarrollo cognitivo y social. Esta contribución muestra cómo clasificar el llanto de neonatos con hipoxia y de un grupo de control, en normal o patológico, a través de una red neuronal artificial supervisada. Para implementar la red neuronal se aprovechan las posibilidades de la plataforma MATLAB®. El diseño y estructuración de la red considera algoritmo de aprendizaje o entrenamiento, iteraciones, pruebas e intervalos de clasificación, obteniéndose arquitectura y topología, y funcionalidades de la red neuronal que en la generalización proporciona la mejor clasificación. En el trabajo se aplica el método de selección de casos, el método acústico para extraer parámetros cuantitativos de la señal de llanto en tiempo, intensidad y frecuencia, así como métodos vinculados con el diseño, implementación y validación, con pruebas diagnósticas, de la red neuronal artificial obtenida para cumplir el objetivo del trabajo que es la generación de clases (clasificación del llanto). Con precisión del resultado de clasificación del 90 % se está en condición de concebir una solución informática (agregando interfaz para interactuar con base de datos) para ayudar complementariamente al diagnóstico médico no invasivo usando el llanto del neonato provocado ante dolor.
Received: 2021 June 25; Accepted: 2021 December 29
Keywords: Palabras clave: análisis del llanto infantil, clasificación del llanto, red neuronal artificial, red neuronal supervisada, backpropagation.
Keywords: Keywords: infant cry analysis, cry classification, artificial neural network, supervised neural network, backpropagation.
Introducción
Se considera un recién nacido o neonato al niño desde el nacimiento hasta 28 días después del parto. El llanto del niño tiene significado y su interpretación conlleva información al adulto con orientación fonética y argumentos del valor en el llanto de la función expresiva o vocalización preverbal (1. El llanto es un sistema de señales que empieza en el nacimiento, alerta al adulto y puede generarse como necesidad del sistema vegetativo. El llanto es un acto reflejo, parte de un sistema regulador en el cual éste tiende a mantener la interacción entre funciones fisiológicas y del comportamiento. El llanto regula alerta, atención e inhibición, contribuye en el niño a la reorganización del sistema cardiorrespiratorio, mejora la capacidad pulmonar y el desarrollo del tracto vocal. El llanto es sucesión de patrones y modo primario para expresar necesidades. El llanto es una forma de comunicación con implicación en vocalizaciones en comienzos y desarrollo del lenguaje, es un evento acústico que contiene información de la integridad neurológica y del funcionamiento del Sistema Nervioso Central (2), (3.
Investigaciones del llanto infantil han permitido correlacionar características y atributos o parámetros acústicos de éste con patologías, demostrándose que el llanto es capaz de reflejar la integridad neurofisiológica del niño, el que como fenómeno biopsicosocial da una medida de la interacción del niño con su ambiente y su desarrollo. Son ejemplos de correlación de características acústicas del llanto con patologías: el Maullido del Gato, Síndrome de Down, Hiperbilirrubinemia, Encefalitis, Meningitis, Asfixia y formas de daño cerebral (1), (4-14.
Factores como prematuridad, bajo peso al nacer, desnutrición, complicaciones obstétricas, consumo de drogas en gestación, etcétera, que conllevan riesgos y la aparición en el desarrollo del niño de limitaciones motoras, cognitivas, entre otras, se estudian a partir del llanto. Han sido estudiados los modelos que describen anatomía y fisiología del control neurológico y de producción del llanto, los que sustentan la hipótesis de correlación entre características acústicas del llanto y el desarrollo predictivo del niño (2), (3. Variaciones en cantidad y calidad del llanto en el neonato puede indicar anormalidad (15. Alteración de atributos acústicos cuantitativos y cualitativos de frecuencia, tono y sus desplazamientos, de intensidad y duración afectan al llanto neonatal ante patologías. (1), (14), (16), (17.
Algunos trabajos de clasificación de llanto son: análisis auditivo y espectrográfico de llantos en niños sanos y con patologías (1), (12; características acústicas y perceptuales de llantos de niños (18; predicción del resultado evolutivo mediante análisis acústico del llanto en niños a término y pretérmino (19; variabilidad de melodía del llanto y su espectro como indicador en ciertas patologías del Sistema Nervioso Central (20; clasificación de llanto infantil usando redes neuronales artificiales (21; redes neuronales y mapas autoorganizados: nuevas técnicas con computadora en la evaluación acústica del llanto infantil (22; desplazamiento ascendente de frecuencia en el tono del llanto infantil en algunos casos patológicos (16; mapas autoorganizados de Kohonen en la clasificación del llanto infantil (23; modelos ocultos de Markov en la clasificación del llanto infantil (24; extracción de coeficientes cepstrales de frecuencia mel del llanto infantil para clasificar llanto con redes feedforward (25; detección de patologías desde el llanto infantil aplicando redes neuronales de gradiente conjugado escalado (26; función de base radial orientada a la clasificación del llanto infantil (27; enfoque multilateral al problema de clasificación del llanto infantil con fines diagnósticos (28; aproximaciones computacionales al problema de clasificación del llanto infantil con propósitos diagnósticos (29; preclasificación de llanto infantil y pruebas preliminares de validez (30; emergencia de nueva alternativa del análisis de llanto infantil: aproximación fuzzy (31; clasificación del llanto del recién nacido según la frecuencia fundamental (32; versión de software para obtener desplazamientos ascendentes de frecuencia en el tono del llanto infantil (33.
Lo planteado anteriormente permite apreciar el estudio del llanto infantil desde diversas áreas y su clasificación. El objetivo de este trabajo es clasificar llanto del recién nacido en normal o patológico con una red neuronal supervisada, usando el llanto provocado ante dolor por pellizco en el calcáneo o vacuna del nacimiento, en neonatos con hipoxia, aprovechando el llanto como no invasivo para ayudar complementariamente al médico en el diagnóstico.
Materiales y métodos
En este trabajo la red neuronal supervisada Backpropagation (BP) usa el algoritmo Levenberg-Marquardt, implementándose la red según el objetivo del mismo, detallándose diseño, pruebas y la clasificación de llanto con parámetros acústicos de esta señal.
Casos, grabación de llanto y parámetros acústicos cuantitativos
Se toman 16 casos del Hospital Materno Este (proyecto: "Análisis del llanto infantil orientado al diagnóstico") y 14 casos del Hospital General Juan Bruno Zayas Alfonso (proyecto: "Validación de un preclasificador de llanto infantil en recién nacidos normales y patológicos con Hipoxia"), hospitales de Santiago de Cuba. Se consideran, en trabajo multidisciplinario, recién nacidos con una grabación de llanto por caso, señal para extraer parámetros. Por el método de selección de casos se colectan 15 casos patológicos y 15 normales o de control, que completan los 30 del presente trabajo. Los casos patológicos son formas de hipoxia en el nacimiento: Hipoxia, Crecimiento Intra Uterino Retardado (CIUR), Hipoxia con factores agravantes e Hiperbilirrubinemia. Características y patologías de los neonatos se presentan en la tabla 1.
Características y patologías de los casos.
Casos normales o de control (Características) | Casos patológicos (Patologías) |
---|---|
|
|
TFN1Nota: Cardiogénico: alteraciones del miocardio; Endotóxico: shock debido a toxinas por gérmenes; Hipovolémico: déficit de volumen de sangre o electrólito; Vascular: relativo a componentes del sistema circulatorio; Neurógeno: relacionado con problemas del Sistema Nervioso Central
El APGAR (test clínico) evalúa la calidad al nacer el niño, se asocia a signos vitales y otros (frecuencia cardiaca, esfuerzo respiratorio, tono muscular, reflejo a la irritabilidad al catéter de aspiración y color de la piel). En los casos del grupo control el APGAR es de valor 9-10 y en los patológicos de Asfixia perinatal, el APGAR debe ser menor de 3 al minuto de nacido. Al evaluar cada signo se fijan valores de 0, 1 y 2, se promedia la evaluación a los 1, 5 y 10 minutos de nacido, generándose tres caracteres respectivos de valor normal entre 7 y 10 y anormal, menor de 7. Si el APGAR a los 5 minutos del nacimiento es 9, es común no usar el tercer carácter. En los casos patológicos se considera (criterio Antropométrico) los neonatos con CIUR Grado II y Grado III, con afectación de talla y peso, el primero, y talla, peso y circunferencia cefálica el segundo (2), (3), (34), (35.
En la grabación de llanto (toma de muestra) se usa llanto provocado ante dolor, el estímulo es pellizco en el calcáneo y puntura (vacuna: Antihepatitis B). Para tomar y procesar muestras se utilizan: micrófono, software PCVox (36, hardware VISHA (37, los software BPVoz: Base de procesamiento de voz (38, BDLlanto: Base de datos de llanto 1.0 (39, Anavoz 1.0 (40 y Preclasificador 1.0 (41. PCVox hecho en la Universidad Politécnica de Madrid. VISHA (Visualización del Habla), hardware del PCVox con Procesador de Señal DSP32C. BPVoz, BDLlanto, Anavoz y Preclasificador software hechos por el Grupo de Procesamiento de Voz de la Universidad de Oriente. La grabación de llanto por caso tiene frecuencia de muestreo: 8 kilohertz y duración: 12 segundos (192512 bytes, resolución: 16 bits). El método acústico permite procesar y extraer parámetros del llanto. Con PCVox-VISHA, Anavoz, Preclasificador, BPVoz, BDLlanto y el Oscilograma-Espectrograma, se obtienen parámetros de tiempo, intensidad y frecuencia, usándose algoritmos de Predicción Lineal, Transformada Rápida de Fourier, Simple Inverse Filter Tracking, entre otros.
El llanto provocado ante dolor se investiga hace décadas, con patrón característico, terminología común y análisis estándar de resultados; es un llanto que controla el investigador. Este llanto consiste en un tiempo o latencia como respuesta a un estímulo para a seguidas aparecer una total vocalización, que ocurre durante una simple inspiración o espiración (1. Esta vocalización es una Fase Espiratoria del Llanto (Unidad de Llanto). En inspiración es común una latencia, en otros casos vocalización o sonido. En la figura 1, esquema de llanto ante dolor.
[Figure ID: f1]
Esquema de llanto provocado ante dolor en Amplitud versus Tiempo, plano correspondiente al Oscilograma.
Los parámetros acústicos cuantitativos usados en el trabajo son:
Parámetros de duración
PUL: primera unidad de llanto; SUL: segunda unidad de llanto; SL: segunda latencia. Unidad utilizada el milisegundo.
Parámetros de frecuencia
Frecuencia Fundamental (F0) y Frecuencia del Primer Formante (F1), estos parámetros se definen como sigue: la Frecuencia Fundamental es la frecuencia a la cual vibran las cuerdas vocales cuando se produce un sonido. La unidad en los parámetros de frecuencia es el Hertz (Hz) o ciclo por segundo. La Frecuencia del Primer Formante, de un segmento sonoro, es una región de frecuencias de mayor intensidad donde se produce un reforzamiento de frecuencias coincidente con los resonadores bucales. Además los parámetros, F0min: valor mínimo de la frecuencia fundamental; F0max: valor máximo de la frecuencia fundamental; F1min: valor mínimo del primer formante; F1max: valor máximo del primer formante; VMF0: valor medio de la frecuencia fundamental; VMF1: valor medio de la frecuencia del primer formante. Por último:
Parámetros de amplitud o intensidad
VMPul: valor medio de la primera unidad de llanto; VMSul: valor medio de la segunda
unidad de llanto. Unidad empleada el decibel. No se considera la primera latencia (parámetro de duración) por haberse grabado tres casos sin la misma.
Normalización, vector de parámetros, matriz de entrada de datos, Matlab
Del procesamiento de casos para extraer parámetros acústicos hay un conjunto de valores máximos que permiten normalizar dichos parámetros entre 0 y 1. Un vector de un caso normalizado (vector columna) lo presenta la tabla 2.
Normalización de parámetros acústicos cuantitativos del caso 05_9092
Vector de parámetros | Valor | Normalización | Parámetro normalizado |
PUL | 2429 | 2429/5500 | 0,4416 |
SUL | 1988 | 1988/4000 | 0,4970 |
SL | 968 | 968/2500 | 0,3872 |
F0min | 57 | 57/200 | 0,2850 |
F0max | 2661 | 2661/3500 | 0,7602 |
F1min | 223 | 223/1200 | 0,1858 |
F1max | 1625 | 1625/3600 | 0,4513 |
VMPul | 33 | 33/40 | 0,8250 |
VMSul | 26 | 26/45 | 0,5777 |
VMF0 | 488 | 488/1500 | 0,3253 |
VMF1 | 1015 | 1015/2000 | 0,5075 |
TFN2Nota: Caso 05_9092, proyecto: “Validación de un preclasificador de llanto infantil en recién nacidos normales y patológicos con Hipoxia”. Normalización = valor/valor máximo
Según lo explicado todos los parámetros de los 30 casos del trabajo son normalizados. Ver los Anexos.
La lista de valores máximos es la misma en todo el trabajo. Los vectores de parámetros de cada caso ingresan a la red neuronal según una matriz de 11 x n, las filas la forman los 11 parámetros representados en la tabla 2 y n es el número de casos objeto de estudio (columnas). La forma de la matriz se muestra en la expresión (1):
(1).
Para implementar la red neuronal se aprovechan las posibilidades de MATLAB® (The Mathworks, Inc.) y su toolbox. MATLAB® es un software de desarrollo integrado (Integrated Development Environment: IDE) con herramientas para matrices, representar datos, funciones, implementar algoritmos, crear interfaz de usuario (Graphical User Interface: GUI) y comunicar con programas y hardware.
Al diseñar la red neuronal se usa una estructura con acceso a sus propiedades capaces de modificar entradas, capas de neuronas, conexiones, pesos (intensidad de interacción neuronal), etcétera.
Configurada la red neuronal se invocan funciones de manipulación y así se inicializa, entrena y simula la red.
Para configurar la red neuronal las funciones del toolbox son la Inicialización (net = init(net)) obteniéndose una red con pesos y bias (umbral de la red) actualizados, le sigue el Entrenamiento ([net, tr] = train(net, P, T);) para entrenar la red, modificando pesos vinculados a conexiones entre capas y neuronas. Para esto se indican patrones de entrada a la red (P, matriz mxn). En entrenamiento supervisado se asignan targets -salidas deseadas- (T, matriz mxn), con estos datos la matriz de patrones se aplica a la red, y el toolbox con funciones de entrenamiento actualiza los pesos de conexión de la red.
Por último, la Simulación (Y = sim(net, P)) función similar a la anterior sin actualización de los pesos de la red. Así, entrenada la red neuronal y brindando ésta resultados válidos se usa esta función para analizar nuevos patrones de entrada.
Diseño de la red neuronal supervisada
Conocida la analogía entre la neurona artificial y la neurona biológica un modelo estándar de neurona artificial dado un conjunto de entradas Xj(t), pesos sinápticos Wij, una regla de propagación hi(t) = σ(Wij, Xj(t)); donde hi(t) = Σ(Wij, Xj(t)) y una función de activación Yi(t) = fi(hi(t)) que representa la salida de la neurona y su estado de activación, es posible representar este modelo de neurona estándar según la figura 2.
La salida de la neurona Yi en función del tiempo se muestra en la expresión (2):
(2).
La salida de (2) corresponde a un perceptrón simple (modelo unidireccional de capas feedforward con aprendizaje supervisado) que con dos capas de n neuronas de entrada y m neuronas de salida, puede expresarse según (3) como:
(3).
Aunque el perceptrón se entrena y aprende automáticamente, tiene la limitación de sólo representar funciones separables linealmente, o sea representa funciones y resuelve algunos problemas de clasificación, pero pueden surgir errores. Así para evitar fallas y corregir errores del algoritmo de aprendizaje del perceptrón simple, en el diseño de la red del trabajo, se opta por la introducción de una capa oculta h entre las capas de entrada y salida, es decir, se parte del perceptrón multicapa, cuyo algoritmo de aprendizaje BP resuelve la limitación del perceptrón simple requiriendo función de activación derivable, siendo muy usadas las de tipo sigmoideo. La capa de entrada la forman neuronas que reciben datos del entorno, la capa de salida posee las neuronas de respuesta de la red neuronal y en la capa oculta sus neuronas no tienen conexión directa con el entorno, esta capa aporta grados de libertad adicionales a la red que le permiten hallar representaciones internas correspondientes con rasgos del entorno.
Los algoritmos de aprendizaje del tipo BP son de primer orden, iterativos, de gradiente descendente, que ajustan pesos en proporción a la diferencia entre la salida actual de la red y una salida deseada para hacer mínimo el error cuadrático medio de la red. Este algoritmo hace a la red aprender un conjunto predefinido de pares de ejemplo entrada-salida, usando un ciclo de dos fases: propagar y adaptar.
El perceptrón multicapas de una capa oculta puede representar fielmente toda función booleana con salida binaria, aspecto esencial para cumplir el objetivo de este trabajo siendo rápido y eficiente el entrenamiento debido al algoritmo de Levenberg-Marquardt, algoritmo de segundo orden que tiende a la solución a mayor velocidad, sobre todo para patrones pequeños y medianos con menos neuronas e iteraciones, sin que la red pierda habilidad en la generalización.
La generalización es la capacidad de la red para dar una respuesta correcta ante patrones que no han sido empleados en el entrenamiento. En buena medida la capacidad de generalización de la red es determinada por la complejidad del problema a resolver, la arquitectura de la red y el número de ejemplos de entrenamiento, tres aspectos a considerar en un diseño.
Respecto a la complejidad del problema a resolver, el llanto del recién nacido ante dolor es complejo y multivariado, estudios estadísticos de comportamiento y relevancia en casos con hipoxia indican lo pertinente de las variables (parámetros de entrada) elegidas usando técnicas de reducción (2), (3.
La arquitectura de la red neuronal del trabajo tiene estructura del perceptrón multicapas con una capa oculta, el número de neuronas por capa es: n=11; h=n-1; m=n-h, representado por: (11-10-1), o sea, 11 neuronas de entrada, 10 neuronas ocultas y 1 neurona de salida binaria para clasificación de llanto.
De los patrones de entrenamiento, la validación cruzada en el trabajo por MATLAB®, permite entrenar y validar la red hasta alcanzar un punto óptimo entre los errores de entrenamiento, validación y generalización de la red donde este último sea mínimo, esto lo logra la Parada Temprana (42 la cual evita el sobre entrenamiento de la red con menos patrones de entrenamiento.
Aunque se recomienda 80% de ejemplos para entrenar y 20% para pruebas, la validación cruzada de MATLAB® asume implícitamente las funcionalidades:
- net.divideParam.trainRatio=70/100
- net.divideParam.testRatio = 15/100
- net.divideParam.valRatio = 15/100
siendo trainRatio referida al entrenamiento, testRatio vinculada con la generalización de la red y valRatio con la validación.
En las funcionalidades anteriores aparecen las proporciones de ejemplos. En el trabajo se usa en las fases de entrenamiento y generalización 20 y 10 señales de llanto, por ese orden, en ambas fases mitad de señales de llanto normal y mitad patológico, o sea, 30 casos reales como pequeña muestra conjugando economía y representatividad.
Otras funcionalidades de MATLAB® para dividir datos en la validación cruzada son:
- net.divideFcn = 'dividerand'
- net.divideFcn = 'divideblock'
Al usar dividerand el entrenamiento de la red selecciona aleatoriamente un conjunto de datos para entrenar, otro para generalizar y el restante conjunto de datos para validar a los conjuntos escogidos. Con divideblock el entrenamiento de la red elige un conjunto de datos en el mismo orden de entrada para entrenar, otro para generalizar y el restante para validar los conjuntos elegidos. Para no usar la validación cruzada de MATLAB® en las funcionalidades (proporciones) se asume 1, 0 y 0, respectivamente.
Después de todo lo expuesto, con la función newff del toolbox de MATLAB® se crea la red feedforward backpropagation. Abreviando, la sintaxis de newff es:
- net=newff (P, T, [C1, C2, … C(n-1)], {TF1, TF2, …, TFn}, FE);
Siendo:
P: matriz de parámetros de entrada
T: matriz de salidas deseadas (target)
Ci: tamaño de la capa i (capas ocultas)
TFi: función de activación de la capa i, por defecto, tangente sigmoidal (tansig(n))
FE: función de entrenamiento Levenberg-Marquardt backprop (trainlm)
En el diseño se consideran funcionalidades para valores mínimos y máximos al disponerse parámetros normalizados, lo que corresponde con las salidas de la red: se establecen en el juego de datos mínimos y máximos, para cada entrada a la red, dentro del intervalo de la función de activación, así antes de entrenar deben estar en rango entradas y salidas.
Lo anterior es resuelto por la función minmax() de MATLAB®, para ello al crear la red con newff, se asigna minmax(p) que fija rango a mínimos y máximos de P.
En nuestro diseño newff queda como:
- net=newff(minmax(p), t, [10], {'tansig','tansig'}, 'trainlm');
donde p es la matriz de entrada a la red, t el vector de salidas deseadas, una capa oculta con 10 neuronas, la función de activación tangente sigmoidea para las capas oculta y de salida y la función de entrenamiento Levenberg-Marquardt.
La función mapminmax de MATLAB® acota al intervalo (de menos uno a uno) de la función de activación tansig, mapminmax asume los valores de cada parámetro como números reales finitos y con al menos uno de ellos diferente, en el caso de repetirse éstos son eliminados del grupo al no aportar información en el entrenamiento, esto se logra con: removeconstantrows.
Funcionalidades:
- net.inputs{1}.processFcns={'removeconstantrows','mapminmax'}; net.outputs{2}.processFcns={'removeconstantrows','mapminmax'};
La {1} normaliza entre menos uno y uno para la entrada de la capa oculta, la {2} lo mismo para la salida de la red.
En el diseño otros parámetros del algoritmo de aprendizaje, modificados por análisis y pruebas son:
net.trainParam.goal para fijar el valor límite de la función error (eficacia de operación de red), nuestro mejor resultado se obtiene con: net.trainParam.goal = 1e-10; el otro parámetro es el número de iteraciones que según el error es de 5000, código: net.trainParam.epochs = 5000.
La funcionalidad para dividir en muestras también se considera, ya que al tenerse casos en entrenamiento y generalización se necesita una funcionalidad antes de entrenar, esta consiste en dividir el entrenamiento en muestras representativas mediante el código: net.divideMode = 'sample'. Sample es la funcionalidad vinculada con el entrenamiento cruzado, definiéndose valores para casos de entrenamiento (trainRatio), reconocimiento (valRatio) y generalización (testRatio).
La arquitectura de la red neuronal del trabajo con las funcionalidades del entrenamiento se resume en los códigos:
- net = newff(minmax(p), t, [10], {'tansig','tansig'}, 'trainlm');
- net.inputs{1}.processFcns = {'removeconstantrows','mapminmax'};
- net.outputs{2}.processFcns = {'removeconstantrows','mapminmax'};
- net.trainParam.goal = 1e-10;
- net.trainParam.epochs = 5000;
- net.divideFcn = 'dividerand';
- net.divideFcn = 'divideblock';
- net.divideMode = 'sample'; % Divide up every sample
- net.divideParam.trainRatio = 70/100;
- net.divideParam.testRatio = 15/100;
- net.divideParam.valRatio = 15/100;
Finalmente el intervalo de clasificación del llanto que permite la generación de clase (normal-patológico). La salida binaria de la red, su convergencia a cero como normal o hacia uno como patológico, establece correspondencia de la salida de la red con valores del vector target.
En el trabajo se usan dos intervalos de clasificación, el primero dado por la función implícita round de MATLAB® la cual fija un intervalo que acota valores menores de 0,5 a cero como normal, y a uno como patológico si los valores están por encima de ese rango; round redondea cada salida de la red. El segundo intervalo, determinante en la fase de generalización, proviene de un Índice de Anormalidad (IANOR) (2), (3, éste expresa que si la salida binaria de la red es mayor o igual a cero y menor o igual a 0,20 el caso es normal y si el referido valor es mayor o igual a 0,21 y menor o igual a 1, el caso es patológico.
Resultados y discusión
Después de verificado el diseño de la red neuronal del trabajo se hicieron 6 pruebas de clasificación con validación de la red neuronal en la fase de generalización mediante pruebas diagnósticas de Sensibilidad, Especificidad y Precisión. Estas pruebas se utilizan por ser dicotómico el resultado de la clasificación. Las pruebas diagnósticas son proporciones, en la Sensibilidad (S), de verdaderos patológicos identificados en la prueba, en la Especificidad (E), de verdaderos normales correctamente identificados por la prueba y la Precisión (P), porciento de todos los resultados correctos en las pruebas (43-45. En la tabla 3 la matriz usada.
Matriz de confusión
Patológicos | Normales | Total | |
---|---|---|---|
Prueba + | a | b | (a+b) |
Prueba - | c | d | (c+d) |
Total | (a+c) | (b+d) | (a+b+c+d = N) |
Siendo:
a: patológicos que resultaron patológicos a la prueba
c: patológicos normales a la prueba
b: normales que resultaron patológicos
d: normales que arrojaron ser normales a la prueba
N: total de casos de la muestra.
Según la matriz de confusión (4), (5) y (6) responden a Sensibilidad, Especificidad y Precisión, por ese orden.
(4).
(5).
(6).
Pruebas de Clasificación
Las pruebas de clasificación buscan la mejor generalización. Empleando los casos de los Anexos, tomando según diseño, 20 casos para entrenar (10 patológicos y 10 de control) y 10 casos para generalizar (5 patológicos y 5 de control) la conformación de estas pruebas en relación con las funcionalidades en el entrenamiento de división de muestras y validación cruzada y los resultados de cada prueba de clasificación en la generalización los tiene la tabla 4.
Los resultados de la fase de entrenamiento en las 5 pruebas de clasificación (excepto la prueba 3) son satisfactorios, así el valor medio de las pruebas de Sensibilidad, Especificidad y Precisión alcanzan 92%, 90% y 91%, por ese orden. En la tabla 4, prueba de clasificación 3, no funciona divideblock sin validación cruzada, por ello no fue posible entrenar ni lograr resultado en la generalización. En esta prueba 3, la validación cruzada es determinante. Esto se demuestra en la propia tabla 4, prueba de clasificación 4, la de mejor resultado integral en la fase de generalización comparándola con las pruebas restantes. En la matriz de confusión de la prueba 4 de 10 casos (5 patológicos y 5 de control) solo falla la clasificación de un caso patológico, clasificando correctamente los casos de control, prueba con 90% de Precisión. El resto de las pruebas de la tabla 4 (1, 2, 5 y 6) tienen dificultad para clasificar casos patológicos y de control, según cada matriz de confusión y prueba diagnóstica. Así, la prueba de clasificación 4 cumple el objetivo del trabajo siendo seleccionada para clasificar el llanto del recién nacido usando la red neuronal supervisada.
Pruebas de Clasificación.
Prueba | Fase de Generalización | |||||||
---|---|---|---|---|---|---|---|---|
Prueba 1 | Fase de Generalización | |||||||
Del Entrenamiento | MC | + | - | Total | PD | valor | % | |
dividerand | No | + | 2 | 4 | 6 | S | 0,4 | 40 |
divideblock | No | - | 3 | 1 | 4 | E | 0,2 | 20 |
VC | No | Total | 5 | 5 | 10 | P | 0,3 | 30 |
Prueba 2. | Fase de Generalización | |||||||
Del Entrenamiento | MC | + | - | Total | PD | valor | % | |
dividerand | Si | + | 3 | 2 | 5 | S | 0,6 | 60 |
divideblock | No | - | 2 | 3 | 5 | E | 0,6 | 60 |
VC | No | Total | 5 | 5 | 10 | P | 0,6 | 60 |
Prueba 3. Del Entrenamiento: dividerand: No; divideblock: Si; VC: No. No fue posible entrenar. Fase de Generalización: No se obtuvo resultado. | ||||||||
Prueba 4. | Fase de Generalización | |||||||
Del Entrenamiento | MC | + | - | Total | PD | valor | % | |
dividerand | No | + | 4 | 0 | 4 | S | 0,8 | 80 |
divideblock | Si | - | 1 | 5 | 6 | E | 1 | 100 |
VC | Si | Total | 5 | 5 | 10 | P | 0,9 | 90 |
Prueba 5. | Fase de Generalización | |||||||
Del Entrenamiento | MC | + | - | Total | PD | valor | % | |
dividerand | Si | + | 3 | 2 | 5 | S | 0,6 | 60 |
divideblock | No | - | 2 | 3 | 5 | E | 0,6 | 60 |
VC | Si | Total | 5 | 5 | 10 | P | 0,6 | 60 |
Prueba 6. | Fase de Generalización | |||||||
Del Entrenamiento | MC | + | - | Total | PD | valor | % | |
dividerand | No | + | 4 | 4 | 8 | S | 0,8 | 80 |
divideblock | No | - | 1 | 1 | 2 | E | 0,2 | 20 |
VC | Si | Total | 5 | 5 | 10 | P | 0,5 | 50 |
TFN3Nota. VC: Validación Cruzada de MATLAB®; MC: Matriz de Confusión; PD: Pruebas Diagnósticas
Generación de clase o clasificación del llanto
Considerando los casos, el diagnóstico médico, los intervalos de clasificación para la generación de clase (normal-patológico) explicados en el diseño, la tabla 5 expone el comportamiento específico de la salida de la red neuronal supervisada en la fase de generalización de la prueba de clasificación 4.
En la tabla 5 está el valor de la salida de la red, los intervalos de clasificación, el vector deseado, la denominación de casos y su diagnóstico previo por los médicos (neonatólogos), al final y muy importante, la clasificación de la red neuronal supervisada según el intervalo de clasificación que implica el IANOR, el cual verifica la generalización de la red en cada caso. IANOR junto a la selección de casos, al método acústico para obtener parámetros del llanto provocado en neonatos con hipoxia y el tratamiento estadístico para estudiar atributos relevantes de este llanto, entre otros, viene de una Metodología de Análisis del Llanto Orientado al Diagnóstico de Patología en el Neurodesarrollo Infantil (2), (3, resultado de tesis doctoral. Usar el intervalo que implica el IANOR es aspecto novedoso y fundamental en la clasificación de llanto por la red neuronal. La tabla 5 en concordancia con la prueba 4 (tabla 4) muestra el caso patológico clasificado normal que disminuye la Sensibilidad al 80%. Coincide que el CASO24_9092 es una pretérmino de 35 semanas con distress respiratorio, casi en frontera de clasificación.
Clasificación de la red neuronal en la generalización de la prueba 4
|
|
|
|
Casos |
|
Clasificación de la red neuronal |
---|---|---|---|---|---|---|
0,9981 | 1,0000 | 1 | 1 | CASO11 | patológico | 1 |
0,8507 | 1,0000 | 1 | 1 | CASO13 | patológico | 1 |
0,6555 | 1,0000 | 1 | 1 | CASO4 | patológico | 1 |
0,0664 | 0,0000 | 0 | 0 | CASO12_9092 | normal | 0 |
0,6737 | 1,0000 | 1 | 1 | CASO14_9092 | patológico | 1 |
0,0101 | 0,0000 | 0 | 0 | CASO18_9092 | normal | 0 |
0,0079 | 0,0000 | 0 | 0 | CASO30_9092 | normal | 0 |
0,0000 | 0,0000 | 0 | 1 | CASO24_9092 | patológico | 0 |
0,0002 | 0,0000 | 0 | 0 | CASO4_9092 | normal | 0 |
0,0035 | 0,0000 | 0 | 0 | CASO15_9092 | normal | 0 |
TFN4Nota. Estado del caso o criterio médico (cero: normal; uno: patológico)
Casos virtuales
Para verificar los resultados de clasificación de llanto se repite la prueba de clasificación 4 (con igual condición de entrenamiento a la usada en los casos reales) para clasificar llanto en 10 casos virtuales (CV), 5 patológicos y 5 de control, cuyos datos están en la tabla 6 en la que desde CV1 a CV5 son de control y de CV6 a CV10 son patológicos.
Parámetros acústicos cuantitativos de los casos virtuales.
CV1 | CV2 | CV3 | CV4 | CV5 | CV6 | CV7 | CV8 | CV9 | CV10 | |
---|---|---|---|---|---|---|---|---|---|---|
PUL | 0,9090 | 0,7436 | 0,5454 | 0,7272 | 0,9090 | 0,0727 | 0,0981 | 0,0727 | 0,0818 | 0,1818 |
SUL | 0,7500 | 0,7250 | 0,4975 | 0,5000 | 0,6500 | 0,1500 | 0,1000 | 0,0750 | 0,0625 | 0,1250 |
SL | 0,4000 | 0,3600 | 0,4000 | 0,3840 | 0,3960 | 0,8320 | 0,8000 | 0,8200 | 0,6400 | 0,7200 |
F0min | 0,7500 | 0,9000 | 0,8800 | 0,9500 | 0,9000 | 0,9500 | 0,9750 | 0,9900 | 0,8500 | 0,9250 |
F0max | 0,2000 | 0,1942 | 0,1914 | 0,1857 | 0,2142 | 0,8571 | 0,8571 | 0,8857 | 0,8000 | 0,4857 |
Flmin | 0,4166 | 0,9166 | 0,8333 | 0,8166 | 0,6750 | 0,8333 | 0,9583 | 0,9916 | 0,8333 | 0,8166 |
Flmax | 0,3333 | 0,5277 | 0,6111 | 0,6944 | 0,3888 | 0,9722 | 0,9444 | 0,9722 | 0,8472 | 0,6666 |
VMPul | 0,7500 | 0,9000 | 0,9500 | 0,9750 | 0,8750 | 0,7250 | 0,6500 | 0,5000 | 0,4000 | 0,4750 |
VMSul | 0,6888 | 0,9333 | 0,9777 | 1,0000 | 0,9555 | 0,7555 | 0,6222 | 0,5111 | 0,4444 | 0,4888 |
VMF0 | 0,2933 | 0,3333 | 0,3166 | 0,3466 | 0,3533 | 0,6666 | 0,6000 | 0,8000 | 0,8666 | 0,6600 |
VMF1 | 0,4500 | 0,6000 | 0,5575 | 0,6400 | 0,6450 | 0,9000 | 0,9975 | 0,9990 | 0,9500 | 0,8000 |
Estado | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
TFN5Estado del caso o criterio médico (cero: normal; uno: patológico)
Los parámetros acústicos de los casos virtuales se han obtenido por la generación de valores dentro del rango de cada parámetro (2), (3. En la tabla 7 aparece la generalización en la clasificación de llanto con los casos virtuales, viéndose pruebas diagnósticas con clasificación compatible a los casos reales y Precisión del 90%.
Resultados de la clasificación de llanto empleando los casos virtuales
Prueba 4. | Fase de Generalización (casos virtuales) | |||||||
---|---|---|---|---|---|---|---|---|
Del Entrenamiento | MC | + | - | Total | PD | valor | % | |
dividerand | No | + | 5 | 1 | 6 | S | 1 | 100 |
divideblock | Si | - | 0 | 4 | 4 | E | 0,8 | 80 |
VC | Si | Total | 5 | 5 | 10 | P | 0,9 | 90 |
TFN6Nota. VC: Validación Cruzada de MATLAB®; MC: Matriz de Confusión; PD: Pruebas Diagnósticas
Plano ROC con casos reales y virtuales
De los métodos estadísticos y las pruebas diagnósticas son útiles los gráficos Receiver Operating Characteristic (ROC). Las curvas ROC resumen en pruebas estadísticas multinivel la habilidad de las mismas para discriminar entre pacientes con enfermedad o sin ella (45. En el plano ROC cada par ordenado (x,y) de una prueba se asocia según (1-Especificidad, Sensibilidad). Así los pares resultados de las pruebas diagnósticas de la prueba de clasificación 4 para casos reales (P4r) y virtuales (P4v) pueden representarse en la figura 3 como:
[Figure ID: f3]
Gráfico ROC (sólo pares ordenados) de la prueba de clasificación 4 para casos reales y virtuales.
En gráficos ROC las coordenadas de las pruebas situadas por debajo de la línea de 45 grados respecto al eje horizontal tienen la peor discriminación (clasificación) asociada. La discriminación por encima de la línea referida comienza a acercarse a la discriminación imperfecta, la cual se perfecciona a medida que las coordenadas se aproximen al área superior izquierda. Las pruebas de clasificación P4r y P4v en la figura 3 muestran buena discriminación.
El trabajo que aquí se presenta tiene como antecedente la contribución: una aproximación al diagnóstico del llanto infantil basado en redes neuronales supervisadas (46. Una comparación entre el trabajo citado y el actual reviste significativas diferencias, a pesar de alguna semejanza estructural y de parámetros. La contribución actual supera el trabajo de Torres y otros, el cual adolece de la optimización de las funcionalidades del entrenamiento, de las funciones de activación tangente sigmoidal para capas ocultas y de salida, no usa validación cruzada ni parada temprana, no busca el punto óptimo entre los errores de entrenamiento, validación y generalización de la red. En el trabajo citado (46 se emplean 17 casos de los que se reconoce 4 de 4, utilizándose solo 2 casos de control; la contribución actual usa 30 casos (20 para entrenar y 10 a reconocer) con balance en número de patológicos y de control, con verificación de reconocimiento de 10 casos virtuales y pruebas diagnósticas que comprueban la calidad en la clasificación de casos reales y virtuales con aceptables valores prácticos de Sensibilidad y Especificidad y 90% de Precisión. En general la contribución aquí presentada es más rápida y eficiente que la del trabajo citado, cuenta con el algoritmo de entrenamiento Levenberg-Marquardt y clasifica usando el IANOR, de la referida Metodología de Análisis del Llanto Orientado al Diagnóstico de Patología en el Neurodesarrollo Infantil. Estos son aspectos importantes al comparar esta contribución con el trabajo citado que apuntan a su originalidad.
Otros trabajos relevantes del estado del arte de la clasificación de llanto infantil con redes neuronales citados como referencias: clasificación de llanto infantil usando redes neuronales artificiales (21, redes neuronales y mapas autoorganizados: nuevas técnicas con computadora en la evaluación acústica del llanto infantil (22, extracción de coeficientes cepstrales de frecuencia mel del llanto infantil para clasificar llanto con redes neuronales feedforward (25 y detección de patologías desde el llanto infantil aplicando redes neuronales de gradiente conjugado escalado (26 utilizan otros métodos de selección de casos, incluidos no neonatos, otros tipos de llanto, algoritmos, parámetros y procedimientos de extracción de parámetros en el llanto; usan otras metodologías de diseño, plataformas y software para procesamiento de datos y desarrollo de la aplicación diferentes al empleado en esta contribución lo que impide cualquier comparación con el presente trabajo.
Conclusiones
Se ha implementado una red neuronal artificial supervisada feedforward backpropagation usando el algoritmo de entrenamiento Levenberg-Marquardt y se ha clasificado llanto provocado ante dolor del niño recién nacido en normal o patológico, en casos con hipoxia y de control, a partir de parámetros acústicos cuantitativos de tiempo, intensidad y frecuencia de ese llanto. La selección de casos, los parámetros acústicos, el diseño de la red, las funcionalidades del entrenamiento, la función de activación tansig, la validación cruzada y parada temprana (evitando sobreaprendizaje de la red neuronal y mala generalización) y la clasificación mediante un Índice de Anormalidad, permiten obtener resultados de clasificación (verificados en calidad por pruebas diagnósticas) prácticamente coincidentes con el criterio médico de estado de los casos, sugiriendo que puede concebirse una solución informática (adicionando a lo logrado una interfaz de usuario para interactuar con una base de datos) como importante aplicación práctica para ayudar complementariamente al médico dado el carácter no invasivo del llanto infantil.
El cumplimiento del objetivo del trabajo y sus resultados constituye un avance para la consolidación de un bloque de clasificación de llanto de recién nacidos con redes neuronales propuesto en la metodología de análisis del llanto orientado al diagnóstico de patología en el neurodesarrollo referida en esta contribución. Para continuar este trabajo se debe seguir optimizando el diseño de la red neuronal, dado su potencial, y hacer la interfaz que interactúa con la base de datos de la solución informática que el trabajo sugiere. También en trabajo futuro deben aumentarse los casos de análisis y el uso de un vector de entrada a la red neuronal con más parámetros acústicos cuantitativos y cualitativos.
A los miembros del Grupo de Procesamiento de Voz de la Universidad de Oriente y a los proyectos: Proyecto de Investigación-Desarrollo del Ministerio de Salud Pública, código 09029: "Análisis del llanto infantil orientado al diagnóstico"; Proyecto de la Universidad de Oriente, código 9092: "Validación de un preclasificador de llanto infantil en recién nacidos normales y patológicos con Hipoxia". Proyectos que ampararon la toma de muestras de llanto, junto a otros como fuente de recursos, entre éstos el Proyecto de Ciencia y Técnica del Ministerio de Educación Superior: "Procesamiento de Voz para Aplicaciones Médicas". Además el agradecimiento a los hospitales Materno Este y General Juan Bruno Zayas Alfonso y a las personas que ayudaron en este trabajo.
Estado del caso o criterio médico (cero: normal; uno: patológico).
Anexo 1.
CASO 1 | CASO 5 | CASO 6 | CASO 10 | CASO 11 | CASO 13 | CASO 17 | CASO 18 | |
---|---|---|---|---|---|---|---|---|
PUL | 0,4784 | 0,7742 | 0,9600 | 0,3924 | 0,8122 | 0,7365 | 0,8258 | 0,6333 |
SUL | 0,6200 | 0,5347 | 0,4590 | 0,2035 | 0,3690 | 0,2177 | 0,3740 | 0,3597 |
SL | 0,3028 | 0,1060 | 0,9388 | 0,2648 | 0,1136 | 0,1284 | 0,6360 | 0,7872 |
F0min | 0,4000 | 0,8474 | 0,7553 | 0,5555 | 0,5050 | 0,4201 | 0,8474 | 0,8333 |
F0max | 0,9524 | 0,3571 | 0,3175 | 0,5714 | 0,9524 | 0,2857 | 0,2041 | 0,2597 |
Flmin | 0,8667 | 0,6425 | 0,6167 | 0,2100 | 0,4467 | 0,2625 | 0,4200 | 0,3700 |
Flmax | 0,8333 | 0,4067 | 0,3367 | 0,3644 | 0,2711 | 0,3936 | 0,4725 | 0,4286 |
VMPul | 0,8000 | 0,6025 | 0,7275 | 0,6925 | 0,5775 | 0,7675 | 0,8800 | 0,8300 |
VMSul | 0,6911 | 0,7978 | 0,8955 | 0,8800 | 0,8844 | 0,8755 | 0,8755 | 0,7755 |
VMF0 | 0,4711 | 0,4328 | 0,3772 | 0,4023 | 0,3190 | 0,3302 | 0,2908 | 0,3088 |
VMF1 | 0,8979 | 0,5486 | 0,4984 | 0,4278 | 0,4011 | 0,4773 | 0,5565 | 0,4415 |
Estado | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 |
Proyecto: "Análisis del llanto infantil orientado al diagnóstico"
CASO 2 | CASO 14 | CASO 19 | CASO 22 | CASO 24 | CASO 36 | CASO 4 | CASO 38 | |
---|---|---|---|---|---|---|---|---|
PUL | 0,6573 | 0,1140 | 0,3751 | 0,5678 | 0,7847 | 0,5987 | 0,4645 | 0,1480 |
SUL | 0,2270 | 0,2602 | 0,2320 | 0,9037 | 0,4067 | 0,5205 | 0,4307 | 0,2932 |
SL | 0,4772 | 0,1436 | 0,3860 | 0,3636 | 0,2348 | 0,1440 | 0,9764 | 0,2272 |
F0min | 0,7143 | 1,0204 | 0,4000 | 0,6173 | 0,4800 | 0,6650 | 0,9995 | 0,4200 |
F0max | 0,7143 | 0,7143 | 0,5714 | 0,7143 | 0,7142 | 0,4762 | 0,3571 | 0,7142 |
Flmin | 0,8150 | 0,4942 | 0,5517 | 0,7350 | 0,7083 | 0,5775 | 0,6566 | 0,8525 |
Flmax | 0,7789 | 0,7350 | 0,4636 | 0,9625 | 0,7261 | 0,5163 | 0,3936 | 0,8050 |
VMPul | 0,6700 | 0,9550 | 0,7600 | 0,8175 | 0,8250 | 0,8000 | 0,8250 | 0,9000 |
VMSul | 0,7889 | 0,6800 | 0,8933 | 0,7267 | 0,8444 | 0,7333 | 0,8666 | 0,7555 |
VMF0 | 0,4959 | 0,3928 | 0,4832 | 0,6814 | 0,3486 | 0,3273 | 0,4486 | 0,4493 |
VMF1 | 0,8404 | 0,5051 | 0,5154 | 0,7849 | 0,6520 | 0,7255 | 0,5670 | 0,7705 |
Estado | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 |
Proyecto: "Análisis del llanto infantil orientado al diagnóstico"
CASO 5_ 9092 | CASO 8_ 9092 | CASO 12_ 9092 | CASO14_ 9092 | CASO18_ 9092 | CASO20_ 9092 | CASO27_ 9092 | |
---|---|---|---|---|---|---|---|
PUL | 0,4416 | 0,4505 | 0,4990 | 0,0950 | 0,3294 | 0,5172 | 0,2956 |
SUL | 0,4970 | 0,1837 | 0,2597 | 0,8902 | 0,3137 | 0,2227 | 0,2515 |
SL | 0,3872 | 0,7276 | 0,7320 | 0,9528 | 0,4996 | 0,2320 | 0,1396 |
F0min | 0,2850 | 0,5450 | 0,6900 | 0,2950 | 0,5300 | 0,2500 | 0,2900 |
F0max | 0,7602 | 0,4588 | 0,3271 | 0,7822 | 0,3305 | 0,3320 | 0,2154 |
Flmin | 0,1858 | 0,3583 | 0,3091 | 0,3616 | 0,4233 | 0,2150 | 0,1691 |
Flmax | 0,4513 | 0,2994 | 0,3938 | 0,6780 | 0,3655 | 0,4308 | 0,4763 |
VMPul | 0,8250 | 0,7750 | 0,8250 | 0,6250 | 0,7500 | 0,9000 | 0,9750 |
VMSul | 0,5777 | 0,7555 | 0,7777 | 0,7333 | 0,7111 | 0,6666 | 0,8222 |
VMF0 | 0,3253 | 0,3013 | 0,2926 | 0,4400 | 0,3360 | 0,3706 | 0,2893 |
VMF1 | 0,5075 | 0,5000 | 0,4900 | 0,9550 | 0,5750 | 0,6100 | 0,5150 |
Estado | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
Proyecto: "Validación de un preclasificador de llanto infantil en recién nacidos normales y patológicos con Hipoxia"
CASO28_ 9092 | CASO29_ 9092 | CASO30_ 9092 | CASO24_ 9092 | CASO22_ 9092 | CASO4_ 9092 | CASO15_ 9092 | |
---|---|---|---|---|---|---|---|
PUL | 0,1125 | 0,9149 | 0,3096 | 0,1443 | 0,1020 | 0,9783 | 0,1830 |
SUL | 0,1160 | 0,1405 | 0,4405 | 0,5660 | 0,3047 | 0,2855 | 0,6097 |
SL | 0,2092 | 0,8128 | 0,7276 | 0,2324 | 0,2092 | 0,5264 | 0,4100 |
F0min | 0,9750 | 0,3050 | 0,2900 | 0,2400 | 0,3950 | 0,3000 | 0,2900 |
F0max | 0,1542 | 0,2551 | 0,4777 | 0,1151 | 0,5545 | 0,3274 | 0,3251 |
Flmin | 0,3941 | 0,2083 | 0,1400 | 0,2408 | 0,3616 | 0,1466 | 0,2016 |
Flmax | 0,3580 | 0,5869 | 0,6336 | 0,3461 | 0,4752 | 0,6738 | 0,3330 |
VMPul | 0,9750 | 0,8250 | 0,8750 | 0,6500 | 0,8500 | 0,9000 | 0,6000 |
VMSul | 0,8666 | 0,8222 | 0,8222 | 0,6000 | 0,6222 | 0,8888 | 0,7111 |
VMF0 | 0,3526 | 0,2960 | 0,3633 | 0,2293 | 0,5160 | 0,2966 | 0,3373 |
VMF1 | 0,5250 | 0,5500 | 0,5400 | 0,6100 | 0,6325 | 0,5750 | 0,5550 |
Estado | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
Proyecto: "Validación de un preclasificador de llanto infantil en recién nacidos normales y patológicos con Hipoxia"
1. | |
2. | |
3. | |
4. | |
5. | |
6. | |
7. | |
8. | |
9. | |
10. | |
11. | |
12. | |
13. | |
14. | |
15. | |
16. | |
17. | |
18. | |
19. | |
20. | |
21. | |
22. | |
23. | |
24. | |
25. | |
26. | |
27. | |
28. | |
29. | |
30. | |
31. | |
32. | |
33. | |
34. | |
35. | |
36. | |
37. | |
38. | |
39. | |
40. | |
41. | |
42. | |
43. | |
44. | |
45. | |
46. |
Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional.