ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

105
ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES MEDIANTE TÉCNICAS DE APRENDIZAJE PROFUNDO ENFOCADO EN EL MOVIMIENTO DE MIEMBROS INFERIORES HACIENDO USO DE UNA INTERFAZ CEREBRO-MÁQUINA JHENNER SNEYDER TIGREROS NIÑO UNIVERSIDAD AUTÓNOMA DE BUCARAMANGA FACULTAD DE INGENIERÍA PROGRAMA DE INGENIERÍA DE SISTEMAS BUCARAMANGA, SANTANDER 2020

Transcript of ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

Page 1: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES MEDIANTE TÉCNICAS DE APRENDIZAJE PROFUNDO ENFOCADO EN EL

MOVIMIENTO DE MIEMBROS INFERIORES HACIENDO USO DE UNA INTERFAZ CEREBRO-MÁQUINA

JHENNER SNEYDER TIGREROS NIÑO

UNIVERSIDAD AUTÓNOMA DE BUCARAMANGA FACULTAD DE INGENIERÍA

PROGRAMA DE INGENIERÍA DE SISTEMAS BUCARAMANGA, SANTANDER

2020

Page 2: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

2

ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES MEDIANTE TÉCNICAS DE APRENDIZAJE PROFUNDO ENFOCADO EN EL

MOVIMIENTO DE MIEMBROS INFERIORES HACIENDO USO DE UNA INTERFAZ CEREBRO-MÁQUINA

JHENNER SNEYDER TIGREROS NIÑO

Proyecto de Trabajo de Grado

Director Feisar Enrique Moreno Corzo

UNIVERSIDAD AUTÓNOMA DE BUCARAMANGA FACULTAD DE INGENIERÍA

PROGRAMA DE INGENIERÍA DE SISTEMAS BUCARAMANGA, SANTANDER

2020

Page 3: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

3

TABLA DE CONTENIDO

1. PLANTEAMIENTO DEL PROBLEMA Y JUSTIFICACIÓN 13

1.1 PLANTEAMIENTO DEL PROBLEMA 13

1.2 JUSTIFICACIÓN 14

1.3 LINEA DE INVESTIGACIÓN 15

2. OBJETIVOS Y PRODUCTOS 16

2.1. OBJETIVO GENERAL 16

2.2. OBJETIVOS ESPECÍFICOS 16

2.3. PRODUCTOS 16

3. ANTECEDENTES Y ESTADO DEL ARTE 18

3.1. ANTECEDENTES 18

3.2. ESTADO DEL ARTE 19

4. MARCO CONCEPTUAL 22

4.1. INTERFAZ CEREBRO-COMPUTADORA BASADA EN ELECTROENCEFALOGRAFÍA (EEG) 22

4.1.1. Ritmos motores sensoriales e imágenes motores 22

4.2. PREPROCESAMIENTO DE SEÑALES 23

4.2.1. Filtro de Band-Stop 23

4.2.2. Filtro High Pass 24

4.2.3. Normalización 25

4.3. REDES NEURONALES ARTIFICIALES 25

4.3.1. Neurona 26

4.3.1.1. Estructura 26

4.3.2. Función de activación 27

4.3.2.1. ReLU 27

4.3.2.2. Tanh 28

4.3.3. Función de costos 28

4.3.3.1. Linear 29

4.3.3.2. Sigmoide 29

4.3.3.3. Softmax 31

4.4. APRENDIZAJE PROFUNDO 31

4.4.1. Red Neuronal Recurrente Clásica. 31

Page 4: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

4

4.4.2. Red Long Short-Term Memory (LSTM) 33

5. MARCO METODOLÓGICO 37

5.1 DEFINICIÓN DE STACK TECNOLOGICO 40

5.1.2 Python 40

5.1.3 Tensorflow 40

5.1.4 Google Cloud Platform 40

5.1.5 Scipy 41

5.1.6 Scikit-Learn 41

5.2 DEFINICIÓN DE CASOS DE USO 41

5.3 DESCRIPCIÓN DE CASOS DE USO 43

5.3.1 Carga de información en batch 43

Actores 43

Precondiciones 43

Flujo Básico 43

Flujo Alternativo 1 44

Flujo Alternativo 2 44

Descripción de Objetos e Interacciones 44

Implementación 45

5.3.2 Carga de información en tiempo real 45

Actores 46

Precondiciones 46

Flujo Básico 46

Flujo Alternativo 1 46

Flujo Alternativo 2 46

Descripción de Objetos e Interacciones 47

Implementación 48

5.3.3 Visualizar predicción 48

Actores 49

Precondiciones 49

Flujo Básico 49

Descripción de Objetos e Interacciones 49

Implementación 50

5.3.4 Preprocesamiento de datos 51

Page 5: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

5

Actores 51

Precondiciones 51

Flujo Básico 51

Flujo Alternativo 51

Descripción de Objetos e Interacciones 52

Implementación 53

5.3.5 Visualizar señales 53

Actores 54

Precondiciones 54

Flujo Básico 54

Flujo Alternativo 54

Descripción de Objetos e Interacciones 54

Implementación 55

5.3.6 Guardar información en la nube 55

Actores 56

Precondiciones 56

Flujo Básico 56

Flujo Alternativo 56

Descripción de Objetos e Interacciones 57

Implementación 57

5.4 LEVANTAMIENTO DE DATOS 58

5.4.1 Recolección de datos 58

5.4.2 Muestra de datos 59

5.4.3 Método experimental 59

5.4.4 Datos 60

5.4.5 Validación técnica 60

5.5 PROCESAMIENTO DE SEÑALES 60

5.5.1 Filtro Band-Stop 60

5.5.2 Filtro High-Pass 62

5.5.3 Normalización 63

6. ARQUITECTURA DE RED NEURONAL 64

6.1 Capas 64

6.2 Funciones de activación 65

Page 6: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

6

6.3 Modelo 65

7. RESULTADOS OBTENIDOS 67

7.1 CONJUNTO DE DATOS EN BRUTO Y PREPROCESAMIENTO DE INFORMACIÓN. 67

7.2 CARACTERIZACIÓN DE LAS ONDAS EEG 67

7.3 ARQUITECTURA DE APRENDIZAJE PRONFUNDO 68

7.4 IMPLEMENTACIÓN DE LA ARQUITECTURA DE APRENDIZAJE PRONFUNDO 68

7.5 ENTRENAMIENTO DE LA RED NEURONAL 68

7.6 PRUEBAS DE LA RED NEURONAL ENTRENADA 68

8. ANALISIS DE RESULTADOS 69

8.1 ENTRENAMIENTO DE LA RED NEURONAL 69

8.2 PRUEBAS EN EL CONJUNTO DE VALIDACIÓN 73

8.3 PROCESAMIENTO DE DATOS 74

8.4 CONJUNTO DE ENTRENAMIENTO 75

8.5 DIAGRAMA DE DESPLIEGUE 75

9. CONCLUSIONES 76

10. RECOMENDACIONES 77

BIBLIOGRAFÍA 79

ANEXOS 85

Page 7: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

7

LISTA DE TABLAS

Tabla 1 Productos finales del proyecto .................................................................. 16 Tabla 2 Uso de funciones de costos ...................................................................... 28

Tabla 3 Cuadro Comparativo Metodologías para la Minería de Datos .................. 37 Tabla 4 Casos de Uso ........................................................................................... 42

Page 8: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

8

LISTA DE FIGURAS

Figura 1 Árbol de problemas .................................................................................. 13 Figura 2 Resumen de rendimiento de todos los modelos implementados ............. 18

Figura 3 Visualización de regiones cerebrales activas durante un movimiento motor e imaginario tomada con un FMRI ......................................................................... 23 Figura 4 Aplicación del Filtro Notch al canal 1 del paciente SL01-T01 .................. 23 Figura 5 Aplicación del Filtro High-Pass al canal 1 del paciente SL01-T01 ........... 24 Figura 6 Ejemplo de Normalización de datos. ....................................................... 25

Figura 7 Estructura Fundamental de una Red Neuronal ........................................ 26 Figura 8 Gráfica de ReLu ....................................................................................... 27

Figura 9 Gráfica de la tangente hiperbólica ........................................................... 28

Figura 10 Representación de una función Lineal y=cx .......................................... 29 Figura 11 Gráfica de función sigmoide .................................................................. 30 Figura 12 Izquierda, RNN contraída. Derecha, RNN desplegada en el grafo profundo ............................................................................................................................... 32

Figura 13 Arquitectura LSTM ................................................................................. 34 Figura 14 Primer paso de la LSTM ........................................................................ 35

Figura 15 Segundo paso de la LSTM .................................................................... 35 Figura 16 Último paso de la LSTM ......................................................................... 36 Figura 17 Diagrama de etapas de CRISP-DM ....................................................... 39

Figura 18 Diagrama de Casos de Uso ................................................................... 42 Figura 19 Diagrama de actividades del Caso de Uso Carga de Información en Batch ............................................................................................................................... 43 Figura 20 Diagrama de objetos e interacción del caso de uso carga de archivos en lotes ....................................................................................................................... 44 Figura 21 Implementación del caso de uso carga de archivos en lotes ................. 45 Figura 22 Diagrama de actividades del Caso de Uso Carga de Información en Tiempo Real........................................................................................................... 46 Figura 23 Descripción de objetos e interacción del Caso de Uso Carga de Información en Tiempo Real .................................................................................. 47 Figura 24 Implementación del Caso de Uso Carga de Información en Tiempo Real ............................................................................................................................... 48

Figura 25 Diagrama de actividades del Caso de Uso Visualizar Predicción. ......... 49 Figura 26 Diagrama de objetos e interacción del Caso de Uso Visualizar Predicción ............................................................................................................................... 50 Figura 27 Implementación del Caso de Uso Visualizar Predicción ........................ 50

Figura 28 Diagrama de actividades del Caso de Uso Preprocesamiento de datos. ............................................................................................................................... 51 Figura 29 Diagrama de objetos e interacción del Caso de Uso Preprocesamiento de datos ...................................................................................................................... 52 Figura 30 Implementación del Caso de Uso Preprocesamiento de datos ............. 53

Figura 31 Diagrama de actividades del Caso de Uso Visualizar señales .............. 54 Figura 32 Diagrama de objetos e interacción del Caso de Uso Visualizar señales55

Page 9: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

9

Figura 33 Diagrama de actividades del Caso de Uso Guardar Información en la Nube ...................................................................................................................... 56 Figura 34 Diagrama del Caso de Uso Guardar Información en la Nube ................ 57

Figura 35 Implementación del Caso de Uso Guardar Información en la Nube ...... 57 Figura 36 Configuración experimental ................................................................... 59 Figura 37 Imagen de representación de filtro band-stop con los datos obtenidos. 61 Figura 38 Código para creación y utilización del filtro ............................................ 61 Figura 39 Imagen de representación de filtro high-pass con los datos obtenidos. 62

Figura 40 Código para creación y utilización del filtro high-pass ........................... 63 Figura 41 Código de normalización de los datos ................................................... 63 Figura 42 Capas individuales de la Red Neuronal ................................................. 64

Figura 43 Clase final de la red neuronal y su función call ...................................... 65 Figura 44 Resumen de la Red Neuronal dado por Tensorflow .............................. 66 Figura 45 Costos diarios en el entrenamiento de la Red Neuronal ........................ 69 Figura 46 Grafica de precisión del modelo en entrenamiento ................................ 70

Figura 47 Grafica de la perdida obtenida en el entrenamiento .............................. 70 Figura 48 Ilustración en alto nivel del grafo de la Red Neuronal ............................ 71

Figura 49 Grafo detallado del interior de la Red Neuronal ..................................... 72 Figura 50 Grafica de la distribución de perdidas en la normalización por lotes en el entrenamiento ........................................................................................................ 72

Figura 51 Histograma de los resultados obtenidos en los conjuntos de validación73 Figura 52 Clase de preprocesamiento de datos .................................................... 74

Figura 53 Función de división de conjuntos de datos ............................................ 75

Figura 54 Diagrama de Despliegue de componentes tecnológicos ....................... 75

Page 10: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

10

LISTA DE ANEXOS

ANEXO 1. CÓDIGO DESARROLLADO PARA LA CARGA Y PROCESAMIENTO DE DATOS. ANEXO 2. GRÁFICOS GENERADOS A PARTIR DE LOS DATOS PREPROCESADOS. ANEXO 3. CONJUNTO DE DATOS EN BRUTO Y PROCESADOS. ANEXO 4. CÓDIGO DE IMPLEMENTACIÓN RED NEURONAL Y SOFTWARE DE USO.

Page 11: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

11

RESUMEN

Las dificultades físicas y desplazamiento a las que se ven sometidas personas con algún tipo de disminución en las capacidades motoras de su cuerpo, personas con parálisis o cuadripléjicos por algún accidente sufrido, es un problema al cual la sociedad ha estado integrándose lentamente, convirtiendo la infraestructura física de las grandes ciudades y las edificaciones de estas, con el fin de tener un ambiente más incluyente con esta población vulnerable. Actualmente con la implementación de nuevas tecnologías como la Inteligencia Artificial, principalmente el Aprendizaje de Maquina y el Aprendizaje Profundo, para la detección y clasificación de las acciones que desea hacer una persona en situación de discapacidad mediante el procesamiento de las señales cerebrales capturadas por un dispositivo de Interfaz Cerebro-Maquina, ha generado una nueva posibilidad y oportunidad a estas personas de usar modernas prótesis para sus extremidades inferiores y superiores. En este proyecto se desarrollará un algoritmo para la clasificación de estas ondas cerebrales enfocado en el movimiento de miembros inferior mediante la Inteligencia Artificial, para ser la base de nuevos productos de apoyo para estas poblaciones vulnerables. Palabras Clave: brain-signal, artificial intelligence, movement, brain-machine interface (BMI), RNN

Page 12: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

12

INTRODUCCIÓN

El presente proyecto de grado aborda una problemática que afecta a gran cantidad de personas a nivel mundial, nacional y local, la parálisis en alguna de sus extremidades, principalmente en miembros inferiores. La sociedad ha intentado abordar esta problemática adaptando la infraestructura, sin embargo, con los avances tecnológicos del área de la Inteligencia Artificial, especialmente en Redes Neuronales Recurrentes se han generado alternativas para devolver la movilidad de los miembros para estas personas. Por otra parte, teniendo en cuenta la oportunidad de crecimiento de las tecnologías enfocadas a la identificación de patrones y señales caracterizadas provenientes del procesamiento y análisis por algoritmos de Aprendizaje de Máquina y Aprendizaje Profundo, hace tentativo el desarrollo de nuevos productos enfocados a la mejora de calidad de vida de las personas con esta situación de discapacidad. En este proyecto se plantea la implementación de un algoritmo de Inteligencia Artificial para el procesamiento de señales cerebrales EEG (Electroencefalografía) con el fin de proveer conocimiento en este campo, para facilitar el desarrollo e implementación de prótesis que devuelvan la movilidad a las personas en situación de discapacidad.

Page 13: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

13

1. PLANTEAMIENTO DEL PROBLEMA Y JUSTIFICACIÓN

1.1 PLANTEAMIENTO DEL PROBLEMA

Figura 1 Árbol de problemas

Fuente: Elaboración propia

La cantidad de personas a nivel mundial con parálisis en alguna de sus extremidades ha venido aumentando en los últimos años. Como ejemplo de esto a nivel internacional podemos observar a los Estados Unidos de América, donde en el 2013 se reportaron 1.462.220 casos, de los cuales 26.8% fue producido por accidentes de tránsito provocados en medios de transporte tales como automóviles y motocicletas (Christopher & Dana Reeve Foundation, 2013), y según estadísticas, esta cifra aumentó cada año con cerca de 12.000 nuevos casos y en 2019 con 14.467 nuevos casos. (Center, 2014; NICHD - Eunice Kennedy Shriver National Institute of Child Health and Human Development (NICHD), 2015)

Page 14: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

14

Si observamos el problema de manera local, enfocándolo principalmente en el área metropolitana de Bucaramanga, se estima según datos del DANE que existen 2.927 personas en situación de discapacidad en el movimiento del cuerpo, manos, brazos y piernas, y que 15.601 son afectadas en el desarrollo de sus actividades cotidianas por alguna disminución de movilidad (DANE, 2010). La disminución en la capacidad para que una persona pueda moverse con libertad en alguna de sus extremidades (inferior o superior) es un problema que la sociedad ha venido abordando por medio de las ayudas otorgadas y facilidades que se tienen en cuenta a la hora de construir nuevos lugares e infraestructura amigable con personas en este estado (Universitario, 2018). Además, se ha intentado abordar esta problemática mediante la implementación a gran escala de las interfaces cerebro-maquina, aunque esta solución se ha visto truncada principalmente por el hecho de que las interfaces que son invasivas tienen un mejor rendimiento de aquellas que no son invasivas (Luigjes et al., 2019), teniendo una clara desventaja a la hora su implementación, ya que tienen un coste mucho mayor al que podría tener una no invasiva y adicionalmente tiene un procedimiento complejo que debe realizarse para su incrustación debajo del cráneo y realizar una conexión directa con el cerebro del paciente. Desde las nuevas tecnologías es posible abordar esta problemática, por lo que surge la pregunta de investigación ¿cómo implementar un algoritmo de inteligencia artificial haciendo uso de técnicas de Deep Learning tales como las redes neuronales recurrentes (RNN) para la memorización de la información proveniente de señales cerebrales con el fin de realizar procesamiento y clasificación de los movimientos motrices inferiores?

1.2 JUSTIFICACIÓN

Mediante la realización de este proyecto se responderá a la pregunta de investigación. Se propone el uso de una interfaz de cerebro-maquina no invasiva utilizando las nuevas tecnologías enfocadas al Aprendizaje de Maquina y Aprendizaje Profundo, logrando detectar de manera eficiente estas señales caracterizadas por una serie de comandos repetitivos cuando se quiere realizar una acción, siendo capaz estos algoritmos de permitirle a un hombre cuadripléjico controlar una prótesis de un brazo tan solo usando sus pensamiento, todo esto realizado mediante una interfaz no invasiva, dando de esta manera más mérito a lo conseguido por los investigadores. (World Economic Forum, 2019) El proyecto surge como iniciativa personal con el fin de mejorar la calidad de vida de personas en condición de parálisis en sus extremidades. Surge también porque es un campo de aplicación de la inteligencia artificial, área de mi interés. No existen

Page 15: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

15

investigaciones previas en las que se base y no hace parte de algún otro proyecto de investigación.

1.3 LINEA DE INVESTIGACIÓN

Desarrollo de Software e Interacción Persona Computador

Page 16: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

16

2. OBJETIVOS Y PRODUCTOS

En este capítulo se abordará el objetivo general y sus objetivos específicos, con los cuales se piensa obtener unos productos finales con el fin de suplir y cumplir a cabalidad el objetivo general de este proyecto.

2.1. OBJETIVO GENERAL

Desarrollar un algoritmo en aprendizaje profundo para la clasificación de ondas cerebrales, centrado en movimiento de la parte inferior del cuerpo, por medio de una interfaz cerebro-máquina

2.2. OBJETIVOS ESPECÍFICOS

o Preprocesar el conjunto de datos inicial utilizando técnicas de procesamiento de señales tales como filtro high-pass, band-stop y normalización.

o Extraer de las ondas cerebrales las características relevantes para el movimiento de miembros inferiores tomando como base el preprocesamiento de datos.

o Diseñar la arquitectura de aprendizaje profundo para la interpretación de los datos extraídos y su entrenamiento.

o Implementar la arquitectura de aprendizaje profundo haciendo uso de lenguaje de programación Python.

o Entrenar el algoritmo de aprendizaje profundo implementado tomando como base la arquitectura y los datos procesados.

o Realizar pruebas del algoritmo entrenado con un conjunto de datos aislado.

2.3. PRODUCTOS

Los productos finales de este proyecto son:

Tabla 1 Productos finales del proyecto

Producto Anexo o Sección

Conjunto de datos completamente etiquetado y caracterizado para el entrenamiento

ANEXO 3

Page 17: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

17

Algoritmo de preprocesado. ANEXO 1

Conjunto de datos de salida de los algoritmos de preprocesado.

ANEXO 3

Características importantes para la caracterización de las acciones a clasificar.

ANEXO 2

Arquitectura de aprendizaje profundo. CAPITULO 6

Código en Python de la implementación de la red neuronal y modelo de machine Learning para la clasificación de la onda.

ANEXO 4

Estadísticas de las diferentes iteraciones del entrenamiento del modelo y su análisis.

CAPITULO 7

Resultados del despliegue del algoritmo en el conjunto de pruebas.

CAPITULO 7

Análisis de resultados obtenidos en la prueba realizada sobre el conjunto destinado, obteniendo posibles soluciones a los algoritmos y correcciones.

CAPITULO 7 Y 8

Fuente: autor

Page 18: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

18

3. ANTECEDENTES Y ESTADO DEL ARTE

3.1. ANTECEDENTES

En esta sección se presenta la tesis de maestría titulada Decoding EGG Brain Signals using Recurrent Neural Networks elaborada por Fedjaev Juri (Fedjaev, 2017), la cual se relaciona con el problema planteado en este proyecto y presenta una implementación y solución haciendo uso de Recurrent Neural Networks, por lo que es considerada un antecedente de la presente investigación. Este estudio se realizó en el año 2017, su objetivo principal fue “desarrollar una red neuronal recurrente para decodificar las señales cerebrales EEG durante cuatro movimientos motores imaginarios” y los principales hallazgos se presentan a continuación:

o La exactitud obtenida es comparable al estado del arte usando métodos tradicionales, pero inferior a los nuevos modelos de CNN.

o Si bien implementaron LSTM al principio, optaron por desarrollar redes de tipo CNN, ya que su rendimiento superaba ampliamente la de una LSTM.

o La combinación de estos dos tipos de redes conllevará a un rendimiento mayor que cada una por separado.

Figura 2 Resumen de rendimiento de todos los modelos implementados

Fuente: (Fedjaev, 2017)

Page 19: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

19

Según lo presentado por los autores una red LSTM no es tan potente como sus contrarias CNN, sin embargo, cabe resaltar que los autores implementaron una red LSTM simple, la cual no cumple con el estado del arte ya que existen otras más complejas y con mayor rendimiento que no fueron probadas y por ende no refleja la realidad del estado actual de la implementación de Recurrent Neural Networks para este tipo de problemas. Por esta razón se plantea el desarrollo de este proyecto.

3.2. ESTADO DEL ARTE

A continuación, se presenta el análisis realizado de los artículos recuperados en las bases de datos: Arxiv, Scopus, IEEE y Oxford Journal, haciendo uso de las palabras clave brain-signal, artificial intelligence, movement, brain-machine interface (BMI), RNN. Se tuvo un resultado de 911 artículos de los cuales fueron seleccionados los siguientes 7 por su relevancia para el desarrollo de este proyecto. Feature Extraction of Mental Task in BCI Based on the Method of Approximate Entropy Este trabajo de mano de Lei Wang, et. al, habla de un problema fundamental en todo proceso de implementación de machine Learning o Deep Learning en el presente, el cual es la extracción de características necesarias para poder entrenar los modelos necesarios, para reconocer correctamente los patrones o señales que se quieren identificar. Su trabajo consistió en la captura de información con una interfaz cerebro-maquina se tomaron datos de 5 tareas mentales: “base”, “rotación”, “multiplicación”, “contar” y “composición de palabras”, las otras tareas correspondían a movimientos imaginarios de la mano derecha e izquierda. Este trabajo logra dar un aporte significativo al proyecto, ya que se plantea una red neuronal BP de 3 capas para la clasificación de patrones, mostrando que la técnica de Approximate Entropy (APEN) es un método efectivo para extraer características de diferentes estados del cerebro. (Wang et al., 2007) A Subspace Approach to Learning Recurrent Features From Brain Activity Este artículo desarrollado por B. Vikrham Gowreesunker, et. al, introduce un método que ataca directamente al problema de la variabilidad en la recolección de datos a partir de los mismos sujetos de prueba, su trabajo propone el uso de aprendizaje de subespacios constantes, en el contexto del movimiento de dirección. Estos subespacios son constantes en el tiempo lo que permite tener un punto regulatorio de las señales recogidas, para poder bajar esta variabilidad implícita en la recolección de señales cerebrales. Este trabajo aporta significativamente a uno de los problemas más importantes a resolver en el desarrollo de este proyecto, el cual es el procesamiento de las señales

Page 20: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

20

y su variabilidad en el tiempo. El método propuesto ayuda a controlar de manera significativa esta variabilidad permitiendo tener mejores resultados finales. (Gowreesunker et al., 2011) Classification of Hand Movement Imagery Tasks for Brain Machine Interface Using Feed-Forward Network En este artículo de Mohd Shuhanaz Zanar Azalan, et. al, se trata el problema de la clasificación de movimientos en las manos, a partir de tareas imaginarias captadas por medio de una interfaz cerebro-maquina. Su trabajo propone como solución el uso de una red neuronal de Avance, utilizando una proporción apropiada entre los datos de entrenamiento y pruebas, estos datos fueron tomados de 19 canales de electrodos EGG, asociando 5 bandas espectrales de cada canal y asociada a la tarea mental objetivo. Aportando de esta manera un modelo base para la red neuronal que deberá desarrollarse con el fin de poder realizar este tipo de clasificación y diferentes hiperparametros necesarios para ajustar la red neuronal. (Shuhanaz et al., n.d.) Decoding of Finger Movement Using Kinematic Model Classification And Regression Model Switching El trabajo realizado por Ayman Elgharabawy y Manal Abdel Wahed trata el problema de predecir el movimiento individual de los dedos a partir de una señal Electrocorticografica (ECoG) como entrada para la interfaz cerebro-maquina y un control multidimensional. Propone una solución novedosa de la utilización de dos modelos para la clasificación de estos movimientos, usando una máquina de soporte vectorial y un modelo de regresión y la captura de datos a partir de diferentes señales tomadas con una BMI y su correspondiente extracción de características. Este trabajo aporta en el sector de procesamiento de señales para entender su complejidad y como la aplicación de diferentes modelos para resolver tareas específicas mejora significativamente la precisión en la predicción del modelo final. (Elgharabawy & Wahed, 2016) Brain-computer interface and assist-as-needed model for upper limb robotic arm En este artículo Alkim Kapsalyamov, et. al, presentan el problema de la rehabilitación en pacientes víctimas de choques o golpes que han perdido la actuación de sus músculos y se encuentran en rehabilitación física tradicional, y los problemas como la subjetividad en el tratamiento y la poca motivación del paciente para su mejoría. La solución propuesta es una interfaz cerebro-maquina y un paradigma de asistencia como necesidad para un robot de rehabilitación en

Page 21: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

21

miembros superiores, implementando en la interfaz diferentes sensores electroencefalográficos, permitiendo al usuario mover el robot con su movimiento limitado y fuerza, reconstruyendo el espació de características para el control del motor. Este trabajo aporta significativamente un prototipo y modelo, el cual está enfocado el reconocimiento de las señales y su aplicación inmediata en robot, lo que da una perspectiva y resultados en la aplicación de estos algoritmos. (Kapsalyamov et al., 2019) Adaptive learning in the detection of Movement Related Cortical Potentials improves usability of associative Brain-Computer Interfaces El trabajo presentado por E. Colamarino, et al., plantea el problema de que a la fecha de publicación no existían métodos para tratar con las señales cerebrales no estacionarias. Este estudio introduce un método de aprendizaje adaptativo en la detección de Movement Related Cortical Potentials (MRCPs) y busca compararlo con métodos no adaptativos, como prueba de concepto, EEG y la data recolectada de seis pacientes saludable los resultados revelaron que los algoritmos adaptativos incrementan el número de detecciones verdaderas y disminuyen los falsos positivos por minuto. (Colamarino et al., 2019) Deep Learning-based Classification for Brain-Computer Interfaces El trabajo presentado por John Thomas, et. al, aborda el problema de la utilización de diferentes algoritmos para solucionar el mismo problema como lo es aquellos algoritmos de Machine Learning donde existe un proceso manual, compara contra los algoritmos de Deep Learning en el cual no implica ningún proceso manual para su ejecución. Este trabajo presenta la utilización de diferentes algoritmos para la clasificación de ondas cerebrales, con diferentes técnicas de Deep Learning (CNN, RNN con LSTM), comparándolas con algoritmos tradicionales como lo son los de machine Learning (SVM), obteniendo mejores resultados con los algoritmos de Deep Learning a la hora de la clasificación con una mejoría de 2,94%. Este trabajo da una perspectiva de la utilización de algoritmos de Deep Learning sobre algoritmos tradicionales, para la realización de tareas complejas como la clasificación de ondas cerebrales. (Thomas et al., 2017)

Page 22: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

22

4. MARCO CONCEPTUAL

En esta sección se presentan los conceptos necesarios para el desarrollo de este proyecto. Se tuvieron en cuenta conceptos tales como: Interfaz cerebro-Computador, Preprocesamiento de Señales, Redes Neuronales Artificiales y Redes Neuronales Profundas, revisando trabajos basados en la implementación de interfaces cerebro-computadora con algoritmos de Deep Learning.

4.1. INTERFAZ CEREBRO-COMPUTADORA BASADA EN ELECTROENCEFALOGRAFÍA (EEG)

Las interfaces cerebro-computadora (ICC) son plataformas de comunicación entre un ser humano y una máquina, específicamente basado en las señales cerebrales emitidas por el ser humano, las cuales transmiten diferentes impulsos, uno de ellos movimiento motores, siendo usadas en personas con problemas neuromusculares haciendo uso de técnicas mentales para producir imágenes mentales (MI), que en un nivel neurofisiológico, regiones cerebrales similares son activadas durante un movimiento motor o imagen mental (Decety, 1996) cómo se puede observar en la Figura 4. Estas interfaces se centran típicamente en estimar el estado mental del usuario o intentan monitorear las señales para traducirse en algún movimiento físico, como lo puede ser el movimiento de una prótesis. Las ICCs pueden ser categorizadas en dos tipos de monitoreo basado en la característica de EGG que se quiera obtener, actividad cerebral relacionada al evento (ERP) u oscilatoria, las basadas en la actividad ERP son llamadas comúnmente ICCs reactivas, que se basan en un estímulo bloqueado en el tiempo, este estimulo provoca en el sujeto una onda cerebelar relacionada en el EEG que está bien caracterizada. Estas ICC ERP son en general más robustas en problemas multidisciplinarios que las oscilatorias. (Fazel-Rezai et al., 2012) Por el contrario las ICCs basadas en los procesos oscilatorios son llamadas ICCs activas, ya que no necesitan de un estímulo que está bloqueado en el tiempo ya que son capaces de traducir tareas mentales voluntarias y personalizadas a control físico. (Pfurtscheller & Neuper, 2001)

4.1.1. Ritmos motores sensoriales e imágenes motores

Ritmos motores sensoriales (RMS) son señales comunes de control en las ICCs activas ya que son reconocibles y tienen patrones estables que son caracterizables en los ruidos captados por las EGG, las características de este tipo de señal especifican se puede describir en la desincronización de la actividad neuronal cobre el córtex sensomotor en las frecuencias 𝛼 −(8 Hz – 13 Hz) y 𝛽 − (12 Hz – 31 Hz) durante un movimiento físico o imaginario de extremidades. (Fedjaev, 2017)

Page 23: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

23

Figura 3 Visualización de regiones cerebrales activas durante un movimiento motor e imaginario tomada con un FMRI

Fuente: (Fedjaev, 2017)

4.2. PREPROCESAMIENTO DE SEÑALES

En las señales de EEG es importante realizar un preprocesamiento de señales ya que naturalmente estas señales tienen una ratio baja de signal-to-noise y sufre de interferencia de varias fuentes de ruido, como las líneas de poder y un mal posicionamiento de los electrodos, por ende, es una buena práctica filtrar los datos de EEG previo cualquier extracción o pasos de clasificación. Para la eliminación de estos artefactos y ruidos en las señales, es común utilizar los siguientes filtros.

4.2.1. Filtro de Band-Stop

El filtro de Band-Stop es un filtro que pasa la mayoría de las frecuencias inalteradas, pero atenúa aquellas en un rango especificado a un nivel muy bajo, como se puede observar en la Figura 3. Figura 4 Aplicación del Filtro Notch al canal 1 del paciente SL01-T01

Fuente: Autor

Page 24: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

24

Este filtro puede ser representado como la combinación de los filtros low-pass y high-pass. Dando como resultado la función de transferencia,

𝐻(𝑠) = 𝑠2 + 𝑤𝑧

2

𝑠2 + 𝑤𝑝

𝑄𝑠 + 𝑤𝑝

2

Donde 𝑤𝑧 es la frecuencia circular cero y 𝑤𝑝 es la frecuencia de polo circular y 𝑄 es

el factor-Q. El filtro de Notch reformulado para que sea un estándar es,

𝐻(𝑠) = 𝑠2 + 𝑤0

2

𝑠2 + 𝑤𝑐𝑠 + 𝑤𝑝2

4.2.2. Filtro High Pass

Es un filtro electrónico que pasa una señal con una frecuencia alta con una frecuencia concreta de corte y atenúa las señales con frecuencia inferiores a la frecuencia de corte, un filtro de high pass es modelado frecuentemente como un sistema linear invariante al tiempo. (Watkinson, 1998)

Figura 5 Aplicación del Filtro High-Pass al canal 1 del paciente SL01-T01

Fuente: Autor

Page 25: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

25

4.2.3. Normalización

La normalización es un factor importante a la hora de procesar datos y aplicar modelos de Deep Learning, ya que ayuda ajustar valores en diferentes escalas, pudiéndolos llevar a una escala de común. (Freedman et al., 2007) En el caso de la normalización por puntajes, la intención es alinear los valores a una distribución normal, que funciona muy bien para poblaciones que están distribuidas normalmente, como se puede observar en la Figura 5. Figura 6 Ejemplo de Normalización de datos.

Fuente: (Codecademy, 2020) La definición de normalización está dada por,

𝑥𝑖∗(𝑡) =

𝑥𝑖(𝑡) − 𝜇(𝑥𝑖)

𝜎(𝑥𝑖)

4.3. REDES NEURONALES ARTIFICIALES

Las redes neuronales artificiales son un sistema de procesamiento de información representado en forma de grafo, inspirado en la estructura biológica del cerebro humano, imitando las redes neuronales biológicas (Hopfield, 1988).Estas redes neuronales artificiales buscan imitar el comportamiento de las biológicas reensamblando el conocimiento mediante un proceso de aprendizaje donde la red neuronal artificial, guarda esta información en las conexiones de la propia red. (Goodfellow et al., 2016)

Page 26: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

26

Las RNA se constituyen en tres componentes fundamentales que las ayudan a ser muy usadas en diferentes campos del machine learning: reconocimiento de patrones, series de tiempo y clasificación, estos tres pilares son; la neurona, la capa y la función de costo.

4.3.1. Neurona

Las neuronas son la unidad fundamental de toda Red Neuronal Artificial y su trabajo es simular el comportamiento de una neurona biológica, ya que estas comparten la misma estructura de captación de información y de envió de la misma. El trabajo de la neurona es recibir una o varias entradas de datos para sumarlos y producir una salida de información, usualmente cada entrada contribuye a la salida individualmente, y para la suma de a través de una función no linear conocida como función de activación. (Goodfellow et al., 2016)

4.3.1.1. Estructura

La estructura de una neurona artificial está definida por, dada una neurona artificial se van a tener 𝑚 + 1 entradas con señales de 𝑥0 hasta 𝑥𝑚 y los pesos 𝑤0 hasta 𝑤𝑚, siendo 𝑚 la cantidad de entradas de las entradas de la red neuronal. (Krizhevsky et al., 2012) Y la salida de la neurona n-enésima está dada por la suma de las entradas y aplicada la función de activación escogida

𝑦𝑛 = 𝜎(∑ 𝑤𝑚𝑗𝑥𝑗𝑚𝑗=0 )

Figura 7 Estructura Fundamental de una Red Neuronal

Fuente: Autor

Page 27: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

27

4.3.2. Función de activación

La función de activación es un conjunto de funciones que se usan en las neuronas que se encuentran localizadas en las capas ocultas de la Red Neuronal, estas funciones se encargan de procesar la información que entra a la red y que es utilizada para su entrenamiento, la selecciona de estas funciones consiste en prueba y error (Goodfellow et al., 2016),la mayoría de estas neurona ocultas se puede describir como un vector de entradas 𝑥, computando una transformación afín

a 𝑊𝑇ℎ + 𝑏 y luego aplicando una función no linear de element-wise 𝑔(𝑧). Estas funciones son las que permiten al modelo entrenarse y convertir los datos recibidos en información útil y también lo que permite diferenciar una neurona de otra (Goodfellow et al., 2016), ya que las capas de neuronas pueden tener funciones de activación diferentes. Las tres más comunes usadas son:

4.3.2.1. ReLU

La función Rectified Linear Unit es un límite a cero Figura 7, que trae consigo una convergencia acelerada en un descenso del gradiente estocástico, este factor de aceleración es de 6 según (Krizhevsky et al., 2012), dado por su linealidad y su forma de no-saturación. Figura 8 Gráfica de ReLu

Fuente: Autor

Comparada con las funciones Tanh/Sigmoide que radican una cantidad de operaciones superior (Stanford, n.d.), la función ReLU es fácil de implementar ya que solo limita la matriz de activación a cero y se define por,

𝑓(𝑥) = 𝑚𝑎𝑥 (0, 𝑥)

Page 28: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

28

4.3.2.2. Tanh

La Tanh es una función no lineal que comprime el valor real de un numero en un rango entre [−1, 1] (Stanford, n.d.).Como la función Sigmoide, la activación se satura, pero a diferencia la salida es centrada en el cero. Figura 9 Gráfica de la tangente hiperbólica

Fuente: Autor

En la practica la no-linealidad de la función Tanh es preferible a la de la Sigmoide, y su definición es,

𝑡𝑎𝑛ℎ (𝑥) = 2𝜎(𝑥) − 1 Se puede observar que la Tanh es una escalación de la función Sigmoide y de esta manera sigue conteniendo sus características principales.

4.3.3. Función de costos

Las funciones de costo son aquellas que se utilizan en las neuronas de salida para calcular la probabilidad, con el fin de calcular la probabilidad de las respuestas posibles. Estas funciones de costo se utilizan únicamente en la capa de salida, ya que es en ella donde se podrán calcular la distribución de probabilidad 𝑝(𝑦 |𝑥, 𝜃) y seleccionar la respuesta de la red neuronal, dándole una transformación final a los datos. Para cada tipo de problema existen una serie de funciones de costo que son recomendadas para el entrenamiento de estas redes Tabla 1. Tabla 2 Uso de funciones de costos

Función Uso

Lineal Segmentación

Sigmoide Clasificación Binaría

Softmax Clasificación Multiclase

Fuente: autor

Page 29: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

29

Estas funciones de costo están relacionadas directamente con las técnicas de regularización, utilizando el decaimiento de pesos, que es multiplicar los pesos por un valor ligeramente menor a 1, para de esta manera prevenir que los pesos crezcan de manera rápida a valores muy altos. (Goodfellow et al., 2016)

4.3.3.1. Linear

Una función de activación que está basada en la no no-linealidad, que comúnmente se conoce como función lineal. Esta función está definida por dados unas características ℎ, una capa de neuronas lineales crea un vector 𝑦𝑠 = 𝑊𝑇ℎ + 𝑏, estas funciones lineales son comúnmente usadas para producir la media de una distribución gaussiana condicional,

𝑝(𝑦 | 𝑥) = ℵ(𝑦; 𝑦𝑠, 𝐼) Maximizando el log-likelihood es equivalente a minimizar el error cuadrático medio. (Goodfellow et al., 2016) Figura 10 Representación de una función Lineal y=cx

Fuente: Autor

Una de las cualidades más importantes de esta función es que no se satura lo que la hace conveniente para los algoritmos de optimización utilizados en los modelos de Deep Learning tales como Gradient Descent, pero como debilidad está el hecho de que con esta linealidad es complicado satisfacer restricciones más complejas.

4.3.3.2. Sigmoide

La función Sigmoide es utilizada cuando se quiere obtener una distribución de Bernoulli en la capa de salida, es decir se desea tener una respuesta binaria al problema plantado con un rango [0, 1] y que la suma de la salida sea igual a 1, siendo definida la probabilidad de 𝑦 dado 𝑥 es,

0 ≤ 𝑃(𝑦 = 1 | 𝑥) ≤ 1

Page 30: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

30

Comparada Sigmoide con la función Lineal, se evidencia que,

𝑃(𝑦 = 1 | 𝑥) = {0, {1, 𝑤𝑇ℎ + 𝑏} } Puede generar una distribución valida pero que no se puede entrenar de manera efectiva con el descenso del gradiente, ya que cada vez que 𝑤𝑇ℎ + 𝑏 salga de los intervalos de unidad, el gradiente del output será 0.

𝑊𝑇ℎ + 𝑏 => 0 Y esto causa que el gradiente tienda a 0, lo que lleva a que el modelo no aprenda correctamente, sin posibilidad de mejorar la calidad de sus pesos. Para esto es mejor utilizar una aproximación diferente que permita que siempre se tenga un gradiente fuerte cuando el modelo tenga una respuesta incorrecta, (Goodfellow et al., 2016)

Figura 11 Gráfica de función sigmoide

Fuente: Autor

Esto se logra utilizando la función Sigmoide definida,

𝑦𝑠 = 𝜎(𝑤𝑇ℎ + 𝑏)

𝜎(𝑥) = 1

1 + 𝑒𝑥𝑝 (−𝑥)

Page 31: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

31

4.3.3.3. Softmax

La función Softmax es la utilizada para las distribuciones de salida multiclases, comúnmente conocidos como problemas de clasificación multiclase, donde se busca obtener la distribución de probabilidades sobre una variable discreta 𝑛. Esta función se puede ver como la generalización de la función. (Goodfellow et al., 2016) Al ser la generalización de la función Sigmoide donde la probabilidad de 𝑦 era un valor entre 0 y 1 en la ecuación X, en la función Softmax se calcula el valor para cada posible respuesta,

𝑦𝑠𝑖 = 𝑃(𝑦 = 𝑖 | 𝑥)

y donde,

∑ 𝑃(𝑦 = 𝑘 | 𝑥)

𝑖

𝑘=0

= 1

Estas propiedades convierten a la función Softmax en una generalización más potente y útil para modelos de clasificación. Y su definición es,

𝑠𝑜𝑓𝑡𝑚𝑎𝑥(𝑧)𝑖 = 𝑒𝑥𝑝 (𝑧𝑖)

∑ 𝑒𝑥𝑝 (𝑧𝑗)𝑗

Donde 𝑧𝑖 está definida como la de probabilidades normalizadas con 𝑙𝑜𝑔,

𝑧𝑖 = 𝑙𝑜𝑔��(𝑦 = 𝑖 | 𝑥)

4.4. APRENDIZAJE PROFUNDO

El aprendizaje profundo es un área del aprendizaje de Maquina que implementa los conceptos de neurona y capa, apilándolas unas sobre otras, creando de esta manera grafos interconectados de alta profundidad, esto con el fin de mapear un vector de entrada por uno de salida, tal como lo haría una persona en la realidad. Este tipo de aprendizaje es muy eficiente a la hora de abstraer comportamientos humanos a una máquina. (Goodfellow et al., 2016)

4.4.1. Red Neuronal Recurrente Clásica.

Las redes neuronales recurrentes (RNN) son un tipo de red neuronal especializada en el procesamiento de datos secuenciales (Rumelhart et al., 1986). Al contrario

Page 32: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

32

que otro tipo de redes neuronales la RNN se encarga de procesar una secuencia

de variables de la forma 𝑥(1), … , 𝑥(𝑡), donde el rango de 𝑡 va desde 1 a 𝜏. Una de las características más importantes es que puede recibir datos que no tengan un tamaño definido, ya que cuenta comparte los parámetros, ya que cada salida es una función con parámetros de la anterior salida, esto da como resultados un grafo computacionalmente profundo Figura 11 y con la capacidad de generalizar y recordar ciertos datos del pasado para tomar decisiones del futuro. (Goodfellow et al., 2016)

Figura 12 Izquierda, RNN contraída. Derecha, RNN desplegada en el grafo profundo

Fuente: Autor

Los componentes fundamentales en una RNN observados en la composición de un grafo computacional, está en cargada de mapear una serie de valores 𝑥 ha su respectivo 𝑦, compuestas por siete bloques fundamentales:

o La secuencia de entradas 𝑥, siendo el input que se quiere mapear a una respuesta al final de la red.

o La secuencia de salidas 𝑜 luego de recorrer toda la red.

o La función de perdida 𝐿 calculada al final de la red con los valores reales y la salida producida por la red, dada por la función log-likelihood negativa y que internamente al valor de 𝑜 aplica una función Softmax, está midiendo que tan lejos esta 𝑜 del valor real 𝑦.

��(𝑡) = 𝑠𝑜𝑓𝑡𝑚𝑎𝑥(𝑜(𝑡))

Page 33: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

33

𝐿({𝑥(1), … , 𝑥(𝜏)}, {𝑦1, … , 𝑦𝑡}) = ∑ 𝐿𝑡

𝑡

= − ∑ 𝑙𝑜𝑔𝑝𝑚𝑜𝑑𝑒𝑙(𝑦𝑡 |{𝑥(1), … , 𝑥(𝑡)})

𝑡

o Los valores reales de salida 𝑦, que la red debe calcular. o La matriz de entrada parametrizada 𝑈.

o La matriz de pesos a capa oculta a capa oculta 𝑊. o La matriz parametrizada de pesos de capa oculta a salida 𝑉 o Específicamente las matrices 𝑈, 𝑊 y 𝑉 son las que permiten a las RNN

compartir sus parámetros y tener esa capacidad de lidiar con datos de tipo secuencial.

El proceso de entrenamiento de las RNN implica que para cada paso de tiempo entre el rango 𝑡 = 1 a 𝑡 = 𝜏, se apliquen las siguientes formulas (Goodfellow et al., 2016):

𝑎(𝑡) = 𝑏 + 𝑊ℎ(𝑡−1) + 𝑈𝑥(𝑡)

ℎ(𝑡) = 𝑡𝑎𝑛ℎ (𝑎(𝑡))

𝑜(𝑡) = 𝑐 + 𝑉ℎ(𝑡)

�� = 𝑠𝑜𝑓𝑡𝑚𝑎𝑥(𝑜(𝑡))

4.4.2. Red Long Short-Term Memory (LSTM)

Las redes Long Short-Term Memory son un tipo especial de RNN, capaz de aprender dependencias a largo plazo, inicialmente propuestas por (Hochreiter & Schmidhuber, 1997). Estas redes están especialmente diseñadas para saltarse el problema de la dependencia a largo plazo, recordando información por largos periodos de tiempo es un comportamiento estándar en su arquitectura, no es algo que deba aprender (Olah, 2015) mediante iteraciones.

Page 34: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

34

Figura 13 Arquitectura LSTM

Fuente: (Olah, 2015)

Las LSTM son especiales ya que en lugar de tener una capa de red neuronal por calda celda, tiene cuatro, estas interactuando unas con otras para compartir información y guardar en espacios de memoria aquella información que es importante en ese momento de su entrenamiento. El poder de las LSTM viene principalmente de los estados de sus celdas, que es aquella información que se comparten unas celdas a otras y que interactúan mínimamente con la información procesada por cada paso del tiempo, esta información es la que se guarda en un largo plazo de tiempo y la que le permite saltarse el problema descrito anteriormente. Teniendo el poder de modificar, borrar o añadir nueva información a este estado de celda, de igual forma la LSTM tiene tres puertas que protegen y controlan este estado de celda, compuestas por una interacción con la función sigmoide, y operaciones de producto punto con las salidas de las otras 2 redes neuronales internas. A la hora de entrenar una LSTM, el primer paso es escoger que información va a aportar esta entrada nueva al estado de la celda, esto se realiza aplicando una función sigmoide en la capa llamada “forget gate layer”. En la Figura 13 se pude ver este proceso, donde ℎ𝑡−1 y 𝑥𝑡 cruzan por la “forget gate layer” y dan como salida un numero entre 0 y 1, donde 1 significa que se debe guardar esta información y 0 lo contrario. (Hochreiter & Schmidhuber, 1997)

𝑓𝑡 = 𝜎(𝑊𝑓 ∙ [ℎ𝑡−1, 𝑥𝑡] + 𝑏𝑓)

Page 35: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

35

Figura 14 Primer paso de la LSTM

Fuente: (Olah, 2015) El siguiente paso consiste en dos partes, primero una capa de sigmoide que tiene como nombre “capa de puerta de entrada”, la cual decidí cuales valores necesitan una actualización, y por una capa de 𝑡𝑎𝑛ℎ que se encarga de crear un vector de

nuevos candidatos 𝐶��.

𝑖𝑡 = 𝜎(𝑊𝑖 ∙ [ℎ𝑡−1, 𝑥𝑡] + 𝑏𝑖)

𝐶�� = 𝑡𝑎𝑛ℎ (𝑊𝐶 ∙ [ℎ𝑡−1, 𝑥𝑡] + 𝑏𝐶) Figura 15 Segundo paso de la LSTM

Fuente: (Olah, 2015) El tercer paso consiste en actualizar el valor del estado de la celda con los nuevos valores calculados a partir de la entrada nueva al sistema y que paso por las capas correspondientes,

𝐶𝑡 = 𝑓𝑡 ∗ 𝐶𝑡−1 + 𝑖𝑡 ∗ 𝐶��

Page 36: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

36

El último paso que realiza la LSTM es dar una salida que será utilizada en la siguiente celda para repetir hasta el momento 𝜏, esta consiste en utilizar la salida de la celda anterior y aplicarle una capa de sigmoide, y al estado de celda actual aplicarle una función 𝑡𝑎𝑛ℎ, para por último realizar un producto punto entre estas dos salidas y de esta manera se tendrá la salida de esta celda. (Hochreiter & Schmidhuber, 1997)

𝑜𝑡 = 𝜎(𝑊𝑜 ∙ [ℎ𝑡−1, 𝑥𝑡] + 𝑏𝑜)

ℎ𝑡 = 𝑜𝑡 ∗ 𝑡𝑎𝑛ℎ (𝐶𝑡) Figura 16 Último paso de la LSTM

Fuente: (Olah, 2015)

Page 37: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

37

5. MARCO METODOLÓGICO

En el marco metodológico se aborda primeramente las metodologías encontradas para el desarrollo de proyectos con base en Big Data o proyectos enfocados al Machine Learning, esto con el fin de implementar las mejores prácticas utilizadas a nivel internacional. De igual forma se hace el desarrollo de los primeros pasos en la elaboración del proyecto, incluyendo la recolección de datos y su procesamiento, para obtener el conjunto final que se utilizara para el entrenamiento. Para el desarrollo de este proyecto podrían utilizarse las siguientes metodologías:

o Metodología CRISP-DM

o Metodología SEMMA

o Metodología KDD

En el cuadro comparativo se presentan las ventajas y desventajas de usar estas metodologías en proyectos que impliquen manejos de datos e implementación de modelos de Machine Learning. Tabla 3 Cuadro Comparativo Metodologías para la Minería de Datos

Ventajas Desventajas

CRISP-DM o Profundización en las tareas y actividades a ejecutar en las etapas del proceso.

o La sucesión de sus etapas no es necesariamente rígida, lo que la que convierte en una metodología flexible y ágil.

o Solo plantea tareas y actividades, pero no cómo desarrollarlas.

SEMMA o Enfocada en aspectos técnicos.

o Al ser propuesta por una empresa, tiene software que ayuda en su ejecución, brindando herramientas para llevar un flujo de trabajo estable.

o Solo es una guía general del proceso que debe seguirse para alcanzar un objetivo.

KDD o Los pasos para seguir son extensos y detallados.

o El resultado final cuenta con amplia documentación y seguimiento de los procesos seguidos, por ende, permite replicarse de manera más rápida y fidedigna.

o Solo es una guía general del proceso que debe seguirse para alcanzar un objetivo.

o Requiere un alto conocimiento sobre el área de estudio.

Fuente: (Moine et al., 2011)

Page 38: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

38

Como se presenta en el cuadro comparativo, todas las metodologías tienen sus ventajas, sin embargo, para este proyecto se seleccionó la metodología CRISP-DM, ya que permite la interacción y la flexibilidad de poder cambiar y verificar en que pasos se cometen errores y solucionarlos.

Usando esta metodología es posible dar cumplimiento a las siguientes actividades planteadas teniendo en cuenta los objetivos específicos:

o Recopilación de un conjunto de datos de señales cerebrales de movimientos inferiores.

o Etiquetado y caracterización de los datos teniendo en cuenta el movimiento que estaba realizándose en ese momento.

o Limpieza y tabulación de los datos obtenidos en la base de datos seleccionada.

o Programación de los algoritmos de preprocesamiento para los datos recolectados.

o Ejecución de los algoritmos codificados.

o Observación de los resultados obtenidos de los algoritmos.

o Extracción de características de las acciones a clasificar.

o Tabulación de los datos preprocesados obtenidos en la base de datos de entrenamiento.

o Conceptualización de la arquitectura a utilizar.

o Modelamiento de la arquitectura de aprendizaje profundo.

o Diseño de la arquitectura de aprendizaje profundo a utilizar.

o Codificación en Python de la red neuronal y modelo de machine learning para la clasificación de la señal.

o Entrenamiento de la red neuronal diseñada con los datos adquiridos y la arquitectura diseñada.

o Realización de pruebas del algoritmo entrenado.

o Análisis de los resultados obtenidos en las pruebas.

Las etapas para implementar esta metodología en un proyecto son las siguientes: (Rodrigues, 2020)

o Entender del negocio: Tiene como objetivo dar contexto sobre las metas y que el desarrollador o ingeniero tenga una noción sobre la relevancia de los datos en ese modelo de negocio.

Page 39: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

39

o Entender los datos: Tiene como objetivo entender qué se puede esperar y obtener con los datos, validando la calidad de los datos en diferentes términos, como la distribución, completitud de los datos y la sensibilidad de estos.

o Preparar los datos: Es el procesamiento de los datos haciendo uso de procesos Extracción, Cargado y Transformación (ETL) convirtiendo las piezas de datos, haciéndolos más útil para los algoritmos de modelamiento.

o Modelar: Es uno de los componentes principales en cualquier proyecto de Machine Learning, si los pasos anteriores fueron realizados correctamente es que este paso será relativamente corto.

o Evaluar: En este paso se verifica si los pasos son válidos y correctos, en caso de que los resultados sean incorrectos, esta metodología permite regresar atrás al primer paso, con tal de saber por qué los resultados están erróneos.

o Desplegar: Consiste en presentar los resultados de una manera entendible para el usuario final, entendiéndose que se ha alcanzado el objetivo. Es el único paso donde no se incluye un ciclo para retroalimentarse.

Figura 17 Diagrama de etapas de CRISP-DM

Fuente: (Spss & Guide, 2016)

Page 40: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

40

5.1 DEFINICIÓN DE STACK TECNOLOGICO

Para el correcto desarrollo de este proyecto es necesario el uso de diferentes tecnologías para el desarrollo de cada una de las fases. Estas tecnologías son Python, Tensorflow, Google Cloud Platform, Scipy y Scikit-Learn.

5.1.2 Python

Python es un lenguaje de propósito general, interpretado y de alto nivel. Creado por Guido Van Rossum y lanzado inicialmente en 1991, el diseño de Python se centra mayormente en la filosofía de reutilización de código y la legibilidad, ayudando a los programadores con una lógica limpia y un código escalable en proyectos grandes o pequeños. (Kuhlman, 2013) El proyecto se realizará en su totalidad haciendo uso del lenguaje de programación Python ya que permite mayor flexibilidad en la interacción con diferentes componentes de datos y librerías que se necesitan tanto para el entrenamiento y uso de los modelos entrenado, adicionalmente con Google Cloud Platform se tiene una integración perfecta con los módulos necesarios para el entrenamiento y la puesta en producción del modelo entrenado.

5.1.3 Tensorflow

Tensorflow es una librería gratuita y de código abierto enfocada en el flujo de datos y la programación diferencial, al igual que es una librería de matemática simbólica y es usada principalmente para aplicaciones en machine Learning como redes neuronales. (Tensorflow, 2015) El uso de esta librería en el proyecto viene dado a su gran comunidad y aportes constantes a la mejora en la velocidad de entrenamiento y despliegue de modelos en entornos de producción que ayudarán acelerar el proceso de despliegue y pruebas del modelo, adicionalmente la flexibilidad de sus componentes permitirá modificar y mejorar los modelos desarrollados.

5.1.4 Google Cloud Platform

Google Cloud Platform (GCP) es un producto ofrecido por Google, siendo una suite de servicios de cómputo en la nube que corren sobre la misma infraestructura que Google usa para proveer sus servicios a los usuarios finales, como Google Search, Gmail, file storage y YouTube. (Google, 2020) GCP será usado principalmente para el entrenamiento de modelos y almacenamiento de datos generados por el mismo, adicionalmente su capacidad de acoplo con librerías como Tensorflow permite una mayor eficacia y rapidez a la hora de implementar estas tecnologías.

Page 41: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

41

5.1.5 Scipy

SciPy es una librería de Python de código abierto usada principalmente para computación científica y computación técnica. Contiene módulos de optimización, algebra lineal, integración, interpolación, funciones especiales, transformadas de Fourier y procesamiento de imágenes, y está escrita principalmente sobre Numpy. (Scipy, 2020) SciPy ayuda al tratamiento de señales ya que son la principal fuente de datos que se utilizaran a la hora de entrenar los algoritmos y generar los datos que se utilizaran en el momento de realizar las pruebas respectivas.

5.1.6 Scikit-Learn

Scikit-Learn es una librearía de Python de código abierto con características principales como algoritmos de clasificación, regresión y clustering, incluyendo máquinas de soporte vectorial, bosques aleatorios y k-meas, y está diseñada para trabajar en conjunto con librearías que hagan uso de Numpy. (Scikit-Learn, 2020) Se usará principalmente para implementar algoritmos básicos para realizar un análisis estadístico primario el cual dará una perspectiva general de los datos que fueron obtenidos anteriormente.

5.2 DEFINICIÓN DE CASOS DE USO

A continuación, se presentan los diagramas de caso de uso con los cuales se desarrollarán los componentes de software de este proyecto de grado.

Page 42: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

42

Figura 18 Diagrama de Casos de Uso

Fuente: El autor.

Tabla 4 Casos de Uso

No Caso de Uso Incluye Actor(es)

1 Carga de información en batch.

4, 5, 3 Usuario

2 Carga de información en tiempo real.

4, 5 Usuario

3 Visualizar Predicción.

4, 5, 6 Usuario

4 Preprocesamiento de datos.

5 Visualizar señales.

6 Guardar información en la nube.

Fuente: El autor.

Page 43: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

43

5.3 DESCRIPCIÓN DE CASOS DE USO

Seguidamente, se hace una descripción de los casos de uso que se identificaron mediante los flujos básicos y alternos desarrollando diagramas de actividades de UML, incluyendo información asociada como los actores, precondiciones y postcondiciones, integrando además los objectos de interacción entre diferentes componentes de programación haciendo uso de diagramas de secuencia de UML.

5.3.1 Carga de información en batch

Este caso de uso permite la carga de información en lote mediante la API, aceptando formatos como CSV y JSON.

Figura 19 Diagrama de actividades del Caso de Uso Carga de Información en Batch

Fuente: el autor.

Actores

Usuario.

Precondiciones

El archivo debe cumplir con la estructura suministrada en la documentación y en los formatos aceptados.

Flujo Básico

1) El usuario selecciona la carpeta contenedora de los archivos. 2) La API presenta las opciones de salida de la información. 3) El usuario selecciona la ruta de salida de información. 4) La aplicación sube a GCP los archivos seleccionados por el usuario. 5) La aplicación da por finalizado la configuración de carga de archivos.

Page 44: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

44

Flujo Alternativo 1

Después del paso 3:

6) La aplicación detecta que los archivos que se desean cargar no corresponden con el esquema ni el tipo de archivo soportado y envía un mensaje de error en la carga.

Flujo Alternativo 2

Después del paso 4:

7) No se cargan correctamente los datos a GCP y se envía un mensaje de error de carga.

Descripción de Objetos e Interacciones

Figura 20 Diagrama de objetos e interacción del caso de uso carga de archivos en lotes

Fuente: autor

Page 45: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

45

Implementación

Figura 21 Implementación del caso de uso carga de archivos en lotes

Fuente: autor

5.3.2 Carga de información en tiempo real

Este caso de uso permite la carga de información en tiempo real desde un archivo de salida proveniente de BCI.

Page 46: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

46

Figura 22 Diagrama de actividades del Caso de Uso Carga de Información en Tiempo Real

Fuente: el autor.

Actores

Usuario.

Precondiciones

El archivo de salida que genera BCI debe cumplir con el esquema y formato de archivo suministrado en la documentación.

Flujo Básico

1) El usuario selecciona la ruta de salida del archivo de BCI. 2) La API presenta las opciones de salida de la información. 3) El usuario selecciona la ruta de salida de información. 4) La aplicación crea un hilo de subida de información constante a la GCP. 5) La aplicación da por finalizado la configuración de carga de archivos.

Flujo Alternativo 1

después del paso 1:

6) La aplicación detecta que los archivos que se desean cargar no corresponden con el esquema ni el tipo de archivo soportado y envía un mensaje de error en la carga.

Flujo Alternativo 2

Page 47: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

47

Después del paso 4:

7) No se cargan correctamente los datos a GCP y se envía un mensaje de error de carga.

Descripción de Objetos e Interacciones

Figura 23 Descripción de objetos e interacción del Caso de Uso Carga de Información en Tiempo Real

Fuente: autor

Page 48: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

48

Implementación

Figura 24 Implementación del Caso de Uso Carga de Información en Tiempo Real

Fuente: autor

5.3.3 Visualizar predicción

Este caso de uso permite la visualización de la información cargada, donde se podrán visualizar las transformaciones aplicadas y la salida del modelo.

Page 49: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

49

Figura 25 Diagrama de actividades del Caso de Uso Visualizar Predicción.

Fuente: autor

Actores

Usuario.

Precondiciones

El actor ya debió seleccionar una fuente de información que se utilizara para cargar las gráficas de información.

Flujo Básico

1) El usuario ingresa a la interfaz gráfica . 2) El usuario puede aplicar filtros para visualizar la información. 3) El sistema queda en ciclo hasta que la fuente de información se agota o se

para el proceso. 4) El sistema genera un archivo con los datos de salida generados por el

modelo.

Descripción de Objetos e Interacciones

Page 50: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

50

Figura 26 Diagrama de objetos e interacción del Caso de Uso Visualizar Predicción

Fuente: autor

Implementación

Figura 27 Implementación del Caso de Uso Visualizar Predicción

Fuente autor

Page 51: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

51

5.3.4 Preprocesamiento de datos

Este caso de uso permite el procesamiento de los datos ingresados antes de enviarlo al flujo de procesamiento principal de datos y posteriormente al modelo.

Figura 28 Diagrama de actividades del Caso de Uso Preprocesamiento de datos.

Fuente: el autor

Actores

Este caso de uso no es llamado directamente por ningún actor, su llamado se hace a través de los casos de uso de carga de datos tanto en batch y tiempo real, de igual forma por la visualización de datos.

Precondiciones

Archivo en formato estándar y cargado en memoria.

Flujo Básico

1) Carga de datos. 2) Conversión de formato estándar a espacio en memoria. 3) Aplicación de algoritmos de preprocesamiento y normalización de datos. 4) Salida de datos. 5) Ingreso de datos en el flujo principal de procesamiento.

Flujo Alternativo

Después del paso 3:

Page 52: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

52

6) Si los datos de salida no cumplen con los tipos de datos requeridos se envía un mensaje de error.

Descripción de Objetos e Interacciones

Figura 29 Diagrama de objetos e interacción del Caso de Uso Preprocesamiento de datos

Fuente: autor

Page 53: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

53

Implementación

Figura 30 Implementación del Caso de Uso Preprocesamiento de datos

Fuente: autor

5.3.5 Visualizar señales

Este caso de uso la visualización de las señales que son ingresadas en forma de lote o tiempo real.

Page 54: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

54

Figura 31 Diagrama de actividades del Caso de Uso Visualizar señales

Fuente: el autor.

Actores

Este caso de uso no es llamado directamente por ningún actor, su llamado se hace a través de los casos de uso de carga de datos tanto en batch y tiempo real, de igual forma por la visualización de datos.

Precondiciones

Archivo o fuente de información la cual se utilizará para visualizar la información.

Flujo Básico

1) Carga de datos de archivo en lote o tiempo real. 2) Visualización de los datos con las gráficas preestablecidas. 3) Entrada del usuario de filtros. 4) Exportar archivo de visualización a PNG. 5) Finalizar la visualización de la información cuando la fuente de información

deja de enviar datos.

Flujo Alternativo

Después del paso 2: 6) La fuente de información es eliminada.

Descripción de Objetos e Interacciones

Page 55: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

55

Figura 32 Diagrama de objetos e interacción del Caso de Uso Visualizar señales

Fuente: autor

Implementación

La implementación de la visualización de las señales es la misma implementación que se le da en la visualización de las predicciones únicamente, cambia los datos que son suministrados y etiqueta suministrada.

5.3.6 Guardar información en la nube

Este caso de uso se encarga de la persistencia de datos generados por los algoritmos.

Page 56: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

56

Figura 33 Diagrama de actividades del Caso de Uso Guardar Información en la Nube

Fuente: el autor

Actores

Este caso de uso no es llamado directamente por ningún actor, su llamado se hace a través del caso de uso visualización de datos.

Precondiciones

Información de salida de los algoritmos sin errores de formato ni de salida de archivos.

Flujo Básico

1) Carga de información a partir de la salida estándar del algoritmo de DL. 2) Procesamiento y compresión de datos. 3) Conexión a los servidores de GCP para persistencia en la nube. 4) Salida de archivo local y URL generada para el archivo en la nube.

Flujo Alternativo

Después del paso 3:

Page 57: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

57

5) Si el usuario no cuenta con conectividad el archivo será generado únicamente localmente y se mostrará un mensaje de advertencia al usuario.

Descripción de Objetos e Interacciones

Figura 34 Diagrama del Caso de Uso Guardar Información en la Nube

Fuente: autor

Implementación

Figura 35 Implementación del Caso de Uso Guardar Información en la Nube

Fuente: autor

Page 58: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

58

5.4 LEVANTAMIENTO DE DATOS

Como punto de partida del proyecto de investigación se planteó el preprocesamiento de los datos, dichos datos utilizados fueron extraídos de un estudio centrado en la metodología y validación técnica de los mismos.

5.4.1 Recolección de datos

La recolección de datos fundamentalmente proviene del primer estudio realizado en captura de información cerebral durante caminatas cortas de un grupo de personas de estudio. Cada uno de los intentos consto de tres condiciones fundamentales; parado, marcha y marcha con un bucle cerrado en el BCI, cada uno de los sujetos del estudio utilizaron su actividad cerebral para controlar un avatar virtual en tiempo real. Utilizando 64 canales en su cuero cabelludo dando una visualización robusta de toda la actividad cerebral, cada señal fue recolectada con una precisión decimal de 3 dígitos. De igual forma el primer dato en la secuencia guardada en los archivos de salida es la marca de tiempo con la cual se relacionará las etiquetas de salida. 0.139 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000

0.142 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000

0.153 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000

0.163 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000

Page 59: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

59

0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000

5.4.2 Muestra de datos

Los datos recolectados cuentan con 64 canales distribuidos por la corteza craneal de los sujetos de prueba utilizados

5.4.3 Método experimental

El método consistió en la selección de 8 individuos saludables (tres hombres y cinco mujeres, entre los 19 y 29 años) sin ninguna historia en desordenes neurológicos o patologías en las extremidades inferiores. A la hora de recolectar los datos, cada uno de los sujetos realizo intentos en los que caminada en una marchar mientras controlaban un avatar virtual en una pantalla de computador. Los sujetos estuvieron en esto durante 2 minutos al principio y finalizo el intento con fines de calibrar las mediciones del EEG, luego de calibrar el dispositivo los sujetos caminaron en marcha a 0.45 m/s en dos fases: caminata y caminata con el BCI incorporado. En la fase de caminata con el BCI incorporado el avatar virtual se cambia a modo de control por el sujeto, teniendo de esta manera un ciclo cerrado completo con BCI.

Figura 36 Configuración experimental

Fuente: (He et al., 2018)

Page 60: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

60

5.4.4 Datos

Los datos fueron recolectados a 100 Hz, y la malla de canales fueron modificados del estándar productos cerebrales enfocados en EEG, como se puede observar en la figura 25. La fase de mayor importancia para la recolección de datos fue el ciclo cerrado de BCI, siendo usado para controlar totalmente el avatar por el sujeto, las fluctuaciones de amplitud de los potenciales corticales bajos en la banda delta (0.1 – 3 Hz) fue usada como señal neuronal. Un filtro de Kalman (UFK) fue implementado como un decodificador que usa observaciones de EEG para estimar las variables de estado, esta es definida como

𝑥𝑡 = [𝜃𝑟ℎ , 𝜃𝑟𝑘 , 𝜃𝑟𝑎, 𝜃𝑙ℎ , 𝜃𝑙𝑘 , 𝜃𝑙𝑎]𝑇 donde 𝜃 representa el ángulo de junta en el tiempo t. Los subíndices l y r representan izquierda y derecha; h, k y a representa cadera, rodilla y tobillo respectivamente. Normalmente un filtro de Kalman empieza con la estimación del estado actual:

𝑥𝑟′ = 𝐹𝑥𝑡−1

𝑃𝑡′ = 𝐹𝑃𝑡−1𝐹𝑇 + 𝑄

5.4.5 Validación técnica

La validación técnica de los datos de EEG, es un punto importante a la hora de entrenar y preprocesar los datos obtenidos a partir de los experimentos realizados, primeramente, los electrodos fueron ubicados de manera segura y fuerte al cuero cabelludo de los individuos de prueba. Adicional, la impedancia en la mayoría de los canales fue mantenida por debajo de 60 𝑘Ω, siendo medida antes y después de la recolección de datos, siendo la medición inicial de la impedancia en una media empírica de 23.7 ± 13.4 𝑘Ω en todos los sensores, individuos e intentos y de 20 𝑘Ω en la mayoría de los canales al final, con una media empírica de 13.4 ± 14.1 𝑘Ω.

5.5 PROCESAMIENTO DE SEÑALES

Con el fin de obtener una mejor calidad de datos y eliminar posibles disonancias y ruidos que fueron captados durante la toma de datos o diversos agentes externos que pudieron afectar al dato final se realizó el procesamiento de señales aplicando las siguientes técnicas.

5.5.1 Filtro Band-Stop

Se aplico un filtro band-stop a la totalidad de los datos obteniendo los siguientes resultados:

Page 61: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

61

Figura 37 Imagen de representación de filtro band-stop con los datos obtenidos.

Fuente: autor En los gráficos presentados en la figura 26 se obtienen dos representaciones, el grafico azul hace referencia a los datos sin procesar ingresados directamente a la clase Loader para ser procesados en primera instancia por el filtro band-stop, y el grafico verde hace referencia a la salida luego de aplicar el filtro.

Figura 38 Código para creación y utilización del filtro

Fuente: autor Para la implementación del filtro band-stop se hizo uso de la librería SciPy, específicamente el módulo signal y la función iirnotch la cual recibe los parámetros w0 siendo la frecuencia a partir de la cual se empezarán a eliminar frecuencias no deseadas, Q factor de calidad y fs la frecuencia de muestreo del sistema digital. Estos valores fueron configurados manualmente utilizando los valores 50, 30 y 100

Page 62: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

62

respectivamente, teniendo como referencia el trabajo Decoding EGG Brain Signals Using Recurrent Neural Networks (Fedjaev, Juri). Adicionalmente de las imágenes de salida los filtros guardan una copia de los datos en memoria en un tipo de archivo csv para ser posteriormente utilizado por el modelo en el entrenamiento.

5.5.2 Filtro High-Pass

Se aplico un filtro high-pass a la totalidad de los datos obteniendo los siguientes resultados:

Figura 39 Imagen de representación de filtro high-pass con los datos obtenidos.

Fuente: autor En los gráficos presentados en la figura 28 se obtienen dos representaciones, el grafico azul hace referencia a los datos sin procesar ingresados directamente a la clase Loader esos datos ya fueron procesados por el filtro de band-stop por ende son la salida que nos arroja dicho filtro, y el grafico verde hace referencia a la salida luego de aplicar el filtro.

Page 63: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

63

Figura 40 Código para creación y utilización del filtro high-pass

Fuente: autor Para la implementación del filtro high-pass se hizo uso de la librería SciPy, específicamente el módulo signal y la función butter la cual recibe los parámetros N siendo el orden del filtro, Wn la frecuencia crítica, btype el tipo de filtro, analog un tipo de dato booleano refiriéndose a si es o no es un filtro de tipo analógico y output el tipo de salida del filtro. Estos valores fueron configurados manualmente utilizando los valores 5, 0.5, hp, sos y True respectivamente, teniendo como referencia el trabajo Decoding EGG Brain Signals Using Recurrent Neural Networks (Fedjaev, Juri). Adicionalmente de las imágenes de salida los filtros guardan una copia de los datos en memoria en un tipo de archivo csv para ser posteriormente utilizado por el modelo en el entrenamiento.

5.5.3 Normalización

El proceso de normalización en un conjunto de datos se hizo usando la librería Scikit-Learn, específicamente el módulo de preprocessing el cual cuenta con un escalador estándar.

Figura 41 Código de normalización de los datos

Fuente: autor

Esto convirtiendo los datos en un valor de 0 a 1 manteniendo la escala entre ellos, ayudando a mantener los datos atípicos en ordenes de magnitud menores a si se entrenara el modelo con los datos regulares.

Page 64: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

64

6. ARQUITECTURA DE RED NEURONAL

En este capítulo se aborda la implementación y el diseño de la red neuronal para el desarrollo del proyecto, abordando de igual forma su implementación inmediata en el framework Tensorflow. La arquitectura principal de la red neuronal que se utilizara para el entrenamiento con los datos adquiridos es la arquitectura LSTM, la cual fue definida a profundidad en el capítulo 5 específicamente en el apartado 5.4.2, la cual es una red específicamente para atacar problemas de series de tiempo, las ondas cerebrales al ser una variación de los pulsos eléctricos emitidos por el cerebro a la hora de realizar acciones distintas, podemos utilizar estas redes para aproximar un evento futuro el cual será si la persona quiere o no mover sus extremidades inferiores. Para la implementación de la lógica matemática y las derivaciones necesarias se hizo uso de la librería Tensorflow en su versión 2.3 y más específicamente de su API keras.

6.1 Capas

La capa principal en la arquitectura desarrollada para cumplir la tarea planteada es la especificada en el módulo de keras en Tensorflow, específicamente keras.layers.LSTM, que gracias a su facilidad de uso y flexibilidad a la hora del entrenamiento permite tener una velocidad de entrenamiento 5 veces mayor haciendo uso de su homóloga keras.layers.CuDNNLSTM la cual es la implementada finalmente en el modelo realizado, para implementar esta capa únicamente debe ser importado directamente desde Tensorflow y el módulo keras y añadirla directamente desde la API Funcional o un modelo personalizado.

Figura 42 Capas individuales de la Red Neuronal

Fuente: autor

Page 65: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

65

6.2 Funciones de activación

Si bien la especificación formal de las LSTM se recomienda usar como función de activación tanh en el caso específico para la arquitectura desarrollada se hará uso de la función de activación ReLu, ya que le permite al modelo aprender dependencias no lineales, obteniendo mejor rendimiento a la hora de verse enfrentada con datos en series de tiempos volátiles como se tienen en el caso de uso especificado para este proyecto.

6.3 Modelo

Para obtener una arquitectura de red neuronal completa haciendo uso de la API de Tensorflow en este proyecto haciendo uso de la API funcional, definiendo únicamente una clase en Python con el nombre NeuralNet heredando de la clase tf.keras.Model esto para hacer uso de los métodos heredados de la API funcional de Tensorflow. Es importante tener en cuenta que el método call es el que la API utiliza al momento de construir la arquitectura completa, adicionalmente este método es el que es utilizado para entrenar el modelo.

Figura 43 Clase final de la red neuronal y su función call

Fuente: autor

Page 66: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

66

Finalmente, a la hora de construir la arquitectura con los métodos de alto nivel de la API de Tensorflow se podrá observar la cantidad de capas y parámetros que serán entrenados, referencia a la figura 43.

Figura 44 Resumen de la Red Neuronal dado por Tensorflow

Fuente: autor

En la figura 43 podemos observar cómo se encuentran construidas ya a nivel de API cada una de las capas de LSTM, Dense, Batch Normalization y Dropout, y con una cantidad de parámetros de 38.168.204 de los cuales únicamente 38.166.156 serán parámetros que se utilizarán en el entrenamiento.

Page 67: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

67

7. RESULTADOS OBTENIDOS

En el desarrollo del proyecto presentado, y con el fin de cumplir a su totalidad los objetivos específicos para a su vez cumplir el objetivo general y por el cual se desarrolló este proyecto, se obtuvieron resultados pertinentes y necesarios para responder a la pregunta de investigación y finalizar el proyecto exitosamente. Estos resultados se dividen en componentes de datos e implementación de la solución tecnológica.

7.1 CONJUNTO DE DATOS EN BRUTO Y PREPROCESAMIENTO DE INFORMACIÓN.

El primer y más importante objetivo para cumplir dentro de un proyecto en el área de la inteligencia artificial y macrodatos, es la obtención y procesamiento de datos. Para esto en la búsqueda de referencia bibliográficas para el desarrollo del proyecto se encontró una especifica donde hacía alusión a la recolección de datos en crudo de ondas EEG, este proceso se explica de una mejor manera en la sección 5.4 en este documento. Si bien el conjunto de datos en crudo es un gran avance en el proyecto, estos datos necesitan ser procesados con algoritmos y filtros correspondientes esto con el fin de que el sistema de IA (Inteligencia Artificial) tenga mejores resultados, para esto se desarrolló un algoritmo de preprocesamiento de datos, este algoritmo se realizó implementando filtros de señales y técnicas de normalización de datos, este proceso se explica más profundamente en la sección 5.5. Finalmente, el conjunto de datos de salida de este algoritmo nos da como resultado un conjunto de datos totalmente procesado y listo para ser entregado al sistema de IA, cumpliendo satisfactoriamente el objetivo específico número 1.

7.2 CARACTERIZACIÓN DE LAS ONDAS EEG

Un componente fundamental a la hora de realizar un entrenamiento de redes neuronales es el conjunto de entrenamiento y las salidas esperadas, el conjunto de entrenamiento ya fue descrito en la sección 7.1, pero las salidas esperadas son esas características las cuales queremos que la arquitectura de aprendizaje profundo aprenda para posteriormente realizar predicciones basadas en ellas. El conjunto mencionado en la sección 5.4 y 7.1 adicionalmente contiene estas características y salida esperada, para obtener esta información y sincronizarla con los datos preprocesados ya que toda esta información se encuentra en archivos de texto plano separados, para esto se implemento la extracción de datos y se añadieron al conjunto de salida preprocesado, cumpliendo satisfactoriamente el objetivo específico número 2.

Page 68: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

68

7.3 ARQUITECTURA DE APRENDIZAJE PRONFUNDO

El componente central del proyecto y por tanto de la pregunta de investigación es la arquitectura de aprendizaje profundo que se utilizara para entrenar con el conjunto de los resultados obtenidos anteriores. Para esto se realizo una investigación y un marco teórico y conceptual correspondiente al tipo de red neuronal especifica que se utilizo para el desarrollo de este proyecto que son las redes neuronales recurrentes, el estudio y entendimiento de este tipo de redes fue fundamental para definir y acotar como sería la arquitectura final, esta arquitectura es explicada a profundidad en el capitulo 6. Dando así cumplimiento satisfactorio al objetivo específico número 3

7.4 IMPLEMENTACIÓN DE LA ARQUITECTURA DE APRENDIZAJE PRONFUNDO

La implementación de la arquitectura de aprendizaje profundo es el componente de materialización de las ideas y la investigación desarrollada para la construcción y entendimiento de las redes neuronales recurrentes, para la implementación de esta red neuronal se hizo uso de las tecnologías descritas en la sección 5.1, esta se hizo en Python y con el framework Tensorflow, cumpliendo de manera satisfactoria el objetivo específico número 4.

7.5 ENTRENAMIENTO DE LA RED NEURONAL

Para el entrenamiento de la red neuronal se hizo uso de los resultados obtenidos anteriormente, tanto el conjunto de datos preprocesados y la implementación de la arquitectura de aprendizaje profundo. Para este entrenamiento se hizo uso de tecnologías en la nube como Google Cloud Platform, teniendo como resultado final gráficos, datos de entrenamiento y finalmente la arquitectura de aprendizaje profundo totalmente entrenada, el análisis de el entrenamiento se puede ver en el capitulo 8, de esta manera cumpliendo satisfactoriamente el objetivo específico número 5.

7.6 PRUEBAS DE LA RED NEURONAL ENTRENADA

La prueba de la red neuronal entrenada en un subconjunto de datos no dados en el momento de entrenamiento es una buena practica en los proyectos de IA, ya que estos ayudan a tener un mejor entendimiento del progreso y la precisión con la que la red neuronal cumple el objetivo con el que fue diseñada, dando de esta manera una respuesta afirmativa a la pregunta de investigación del proyecto. Esta prueba fue realizada con un subconjunto de datos y se obtuvieron resultados favorables, para una interpretación más profunda de estos resultados ir a la sección 8.2.

Page 69: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

69

8. ANALISIS DE RESULTADOS

Este capítulo contiene el análisis de los resultados obtenidos tanto en el entrenamiento de la red neuronal como en los resultados al momento de validación con el conjunto principal de datos.

8.1 ENTRENAMIENTO DE LA RED NEURONAL

Para realizar el entrenamiento de la red neuronal planteada se hizo uso de la Nube Publica Google Cloud Platform, esto por la facilidad con la que se integraba al framework Tensorflow al momento de entrenamiento y validación de los modelos con la herramienta Tensorboard. Para cumplir con la meta de un entrenamiento rápido e iterativamente capaz de realizar alteración y cambios en los datos y red, se hizo uso de una máquina virtual en el servicio Compute Engine la cual contaba con 32 vCPU y 128 GB de memoria RAM, siendo utilizada durante 3 días para el entrenamiento y la validación del modelo de Deep Learning, los costos asociados a esta máquina y la cuenta de almacenamiento se pueden ver reflejados en la figura 44, teniendo un costo total de $ 26.77 dólares americanos al cambio a pesos siendo $ 103.582

Figura 45 Costos diarios en el entrenamiento de la Red Neuronal

Fuente: autor En la fase de entrenamiento se utilizó un 12 % de los datos totales, esto para evitar un acoplamiento a los datos y el modelo pudiera generalizar de una mejor manera el comportamiento, dejando un 88 % de los datos divididos por muestras de pacientes para realizar una validad del entrenamiento. En la fase de entrenamiento

Page 70: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

70

con el conjunto seleccionado se dividió nuevamente en un 80 % para entrenamiento y el restante 20 % en una fase de validación propia del modelo, esto con el fin que los gradientes y la matriz de sesgo tuvieran variaciones teniendo en cuenta las perdidas respecto al subconjunto de validación e iterando en el modelo durante 100 pasos por cada uno de los datos utilizados para el entrenamiento, obteniendo los siguientes resultados.

Figura 46 Grafica de precisión del modelo en entrenamiento

Fuente: autor

Figura 47 Grafica de la perdida obtenida en el entrenamiento

Fuente: autor Las figuras 46 y 47 hacen referencia a la precisión y la perdida respectivamente y el color rosado a los datos de entrenamiento y el celeste al subconjunto de validación, finalizando con una precisión del 90 % en el subconjunto de validación y 0.83 en la pérdida del modelo, un detalle importante es que en la perdida ha estado subiendo en la fase de entrenamiento, claramente es un problema de oversampling, pero de igual forma tiene sentido ya que el entrenamiento se hizo con un conjunto de datos inferior esto para evitar un overfitting, si bien estos datos son representativos, en la sección de pruebas con el conjunto de validación se respaldarán estos resultados con el supra conjuntó de validación mayor, ya que es

Page 71: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

71

importante recordar que una de las variables que afecta al modelo es el propio sujeto del cual se están obteniendo los resultados. Gracias a la herramienta integrada Tensorboard, nos permite una visualización mejor del grafo de operación y de pasos que sigue cada una de nuestras entradas en la red neuronal, al igual que darnos una visión general del flujo de datos.

Figura 48 Ilustración en alto nivel del grafo de la Red Neuronal

Fuente: autor En la figura 48 podemos observar como la red neuronal planteada en el capítulo anterior denotada como neural_net es una caja negra a la que le entregamos una entrada y esta nos da una salida la cual medimos y guardamos información sobre las métricas.

Page 72: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

72

Figura 49 Grafo detallado del interior de la Red Neuronal

Fuente: autor

En la figura 49 se puede observar un ciclo interno dentro de la red neuronal, se pueden detallar componentes fundamentales a la hora de entrenamiento de la red neuronal tales como la normalización por lote y el Dropout de ciertos componentes de la arquitectura para que la red aprenda homogéneamente de las características de la entrada.

Figura 50 Grafica de la distribución de perdidas en la normalización por lotes en el entrenamiento

Fuente: autor

Page 73: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

73

En la figura 50 podemos ver la distribución de la pérdida y la inferencia de la normalización por lotes a la hora de entrenamiento, como se puede observar al inicio del entrenamiento la distribución de la normalización tenía un pico lo cual da entender que la perdida y los datos no están teniendo buenos resultados, pero a medida que se sigue con el entrenamiento y va llegando al final del mismo, vemos como la gráfica se suaviza y los resultados mejoran como se observa en la figura 50.

8.2 PRUEBAS EN EL CONJUNTO DE VALIDACIÓN

Figura 51 Histograma de los resultados obtenidos en los conjuntos de validación

Fuente: autor

Para el conjunto de validación se utilizó un 88 % de los datos recolectados, siendo una muestra mayor a la que se utilizó para el entrenamiento de la red neuronal. Como se puede observar en la figura 51 la relación de porcentajes de precisión con respecto a los datos obtenidos en el conjunto de entrenamiento y micro validación son similares, teniendo únicamente una imprecisión de ± 5 puntos porcentuales y con una media total con todos los subgrupos de 84.32 %. Como se puede observar en el conjunto de datos SL04-T01 se obtuvo un valor atípico en el conjunto de validación teniendo un 91 % de precisión en los valores, esto puede suceder porque el conjunto de entrenamiento tenía más datos de ese subconjunto.

Page 74: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

74

8.3 PROCESAMIENTO DE DATOS

El procesamiento de datos es un paso importante a la hora de entrenar y analizar datos de cualquier índole, como se explicó en la sección 5.5, en el procesamiento de datos se hizo uso de una clase personalizada, en la cual se implementaban cada uno de los datos con los filtros ya mencionados.

Figura 52 Clase de preprocesamiento de datos

Fuente: autor Los datos procesados fueron guardados al final en un tipo de archivo especial para su fácil uso con otras librerías como Pandas la cual se utilizó para cargar los datos antes del entrenamiento. Los datos procesados pueden encontrarse en el anexo 4, donde se encuentran los archivos no procesados en extensión .txt y los datos procesados en tipo de archivo .csv

Page 75: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

75

8.4 CONJUNTO DE ENTRENAMIENTO

Para el conjunto de entrenamiento se usó una técnica de aleatorización de datos, para seleccionar el conjunto inicial de datos de entrenamiento, esto tomando los 24 archivos de datos que contiene el conjunto de datos. Luego de obtener los datos aleatorios se hizo uso de la librería scikitlearn específicamente el módulo sklearn.model_selection.train_test_split en el cual debemos proveer los conjuntos de datos y la salida esperada, adicionalmente se debe proveer un argumento test_size el cual será un porcentaje con el cual se dividirá los datos de entrenamiento y de pruebas, para el caso de este proyecto se hico una división de 80 % para entrenamiento y 20 % para pruebas sobre el conjunto de datos inicial.

Figura 53 Función de división de conjuntos de datos

Fuente: autor La función de la figura 53, nos provee de la división tanto de los datos de entrenamiento y los resultados obtenidos, como los datos de prueba y sus respectivas salidas, esto para validar la precisión del modelo.

8.5 DIAGRAMA DE DESPLIEGUE

La figura 54 contempla el diagrama de flujo completo de los componentes tecnológicos y como estos interactúan entre sí para obtener resultados de la red neuronal entrenada.

Figura 54 Diagrama de Despliegue de componentes tecnológicos

Fuente: autor

Page 76: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

76

9. CONCLUSIONES

En el desarrollo del proyecto y los objetivos específicos necesarios para el cumplimiento en su totalidad del objetivo general y la pregunta de investigación se pudieron evidenciar múltiples retos. El primer y más complejo reto fue la adquisición de datos y procesamiento de información, debido a la situación de salud y pandemia mundial la adquisición de datos médicos y el desplazamiento a centros de salud fue totalmente imposible, por esto se optó por buscar en bases de datos de artículos científicos trabajos en los cuales se recolectaran este tipo de datos, estas búsquedas dieron fruto y se encontró un artículo enfocado completamente en la recolección de datos, cumpliendo de manera exitosa el primer y más importante paso en el proyecto, como se puede observar en la sección 5.4 y 5.5 en este proyecto. Para el desarrollo de los siguientes objetivos, la experiencia del autor del proyecto fue indispensable específicamente al momento de la implementación y el entrenamiento, donde se utilizaron las ultimas y más avanzadas tecnologías tanto en el plano del Deep Learning como en tecnologías en la Nube. Finalmente, cumpliendo todos los objetivos específicos necesarios para resolver la pregunta de investigación y teniendo en cuenta el análisis de resultados de entrenamiento y pruebas de la red neuronal entrenada, se concluye que se cumplió exitosamente la finalidad del proyecto y se dio respuesta a la pregunta de investigación ya que el balance general de precisión de la red neuronal fue de un 85.4 % en los conjuntos de prueba como se puede observar en la sección 8.2, se evidencia de esta manera que el problema planteado fue resuelto con una red neuronal recurrente.

Page 77: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

77

10. RECOMENDACIONES

Los resultados obtenidos al final tanto del entrenamiento como de la implementación fueron acordes a los objetivos y los resultados obtenidos. Uno de los puntos más importantes a detallar son las mejoras que se le pueden realizar a la arquitectura de red neuronal planteada, si bien se obtuvieron resultados de más del 80 % de precisión en los conjuntos de validación, esto puede ser mejorado haciendo uso de celdas aún más avanzadas como las celdas GRU, las cuales tienen un rendimiento mejor en ciertos casos de uso, adicionalmente en los últimos meses ha empezado una nueva corriente en la cual se utiliza arquitecturas novedosas como los Transformers los cuales hacen uso del patrón encoder-decoder para resolver tareas de todo tipo, la combinación de diferentes arquitecturas puede ayudar al modelo a una mejor generalización de la tarea a realizar. Si bien los datos fueron recolectados de una manera adecuada y siguiendo todos los lineamientos técnicos correspondientes, se tuvo que realizar una depuración y procesamiento de la señal anterior al entrenamiento o cualquier fase de implementación, ya que, al ser recolectados con un método no invasivo, estos datos tienen registros en las señales derivados del movimiento del cuero cabelludo o campos eléctricos cerca del sujeto del cual fueron recolectados, ya que la premisa sobre la que se basa este proyecto es realizar la predicción usando datos de este índole por su bajo costo, en los últimos meses empresas como NeuralLink han hecho avances significativos en el área de las interfaces cerebro máquina que dan lugar a interfaces mucho más baratas y con una calidad en los datos mucho mejor, ya que son recolectadas directamente del córtex cerebral. (NeuraLink, 2020) Otro factor de incidencia a la hora de realizar proyectos basados en inteligencia artificial son los tiempos de entrenamiento y la facilidad con la que se puede iterar entre modelos o los conjuntos de entrenamiento utilizados para la implementación, es el tiempo en el que estos modelos son entrenados, para este proyecto el tiempo estimado que se utilizó para el entrenamiento de la red neuronal en su totalidad fue de 12 horas, esto haciendo uso de la nube para acelerar el proceso que en una maquina local hubiera sido totalmente distinto, durando mucho más tiempo del que se alcanzó finalmente. Se recomienda utilizar una implementación personalizada o la API más abajo de nivel de Tensorflow para obtener una mejor implementación del uso de GPU ya que la existente actualmente para las celdas de LSTM hace un uso medio de GPU, esto se puede solventar cumpliendo las características descritas en la documentación para hacer uso de CuDNN, ya que para el entrenamiento y la implementación del modelo de DL para este proyecto hizo uso de técnicas para mejorar los resultados finales, como cambiar la función de activación y de la capa densa, no se usó de manera óptima este recurso tan importante como lo es la GPU. Para una implementación con la misma arquitectura aquí presentada pero en un conjunto de datos totalmente diferentes a los utilizados en este proyecto, es

Page 78: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

78

necesario únicamente modificar la entrada del modelo, esto puede ser realizado en el código de implementación que se encuentra en el anexo 4, donde se debe cambiar en el constructor de la clase la entrada actual (1, 1, 65) por la entrada que se tenga en los datos nuevos, dependiendo si se tienen más o menos canales en los datos recolectados. La implementación de estas tecnologías en un entorno medico real es una oportunidad de prueba sin igual, ya que ayudaría a mejorar la precisión del modelo ya que se enfrentaría a un entorno real, dando una oportunidad de mejora y de avance en el área de estudio.

Page 79: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

79

BIBLIOGRAFÍA

Koutník, J., Greff, K., Gomez, F., & Schmidhuber, J. (2014). A clockwork RNN. 31st International Conference on Machine Learning, ICML 2014, 5, 3881–3889.

Schmidhuber, J. (2015). Deep Learning in neural networks: An overview. Neural Networks, 61, 85–117. https://doi.org/10.1016/j.neunet.2014.09.003

Cho, K., Van Merriënboer, B., Gulcehre, C., Bahdanau, D., Bougares, F., Schwenk, H., & Bengio, Y. (2014). Learning phrase representations using RNN encoder-decoder for statistical machine translation. EMNLP 2014 - 2014 Conference on Empirical Methods in Natural Language Processing, Proceedings of the Conference, 1724–1734. https://doi.org/10.3115/v1/d14-1179

Bayer, J., & Osendorfer, C. (2014). Learning Stochastic Recurrent Networks. 1–9. http://arxiv.org/abs/1411.7610

Xu, K., Ba, J. L., Kiros, R., Cho, K., Courville, A., Salakhutdinov, R., Zemel, R. S., & Bengio, Y. (2015). Show, attend and tell: Neural image caption generation with visual attention. 32nd International Conference on Machine Learning, ICML 2015, 3, 2048–2057.

Gregor, K., Danihelka, I., Graves, A., Rezende, D. J., & Wierstra, D. (2015). DRAW: A recurrent neural network for image generation. 32nd International Conference on Machine Learning, ICML 2015, 2, 1462–1471.

Greff, K., Srivastava, R. K., Koutnik, J., Steunebrink, B. R., & Schmidhuber, J. (2017). LSTM: A Search Space Odyssey. IEEE Transactions on Neural Networks and Learning Systems, 28(10), 2222–2232. https://doi.org/10.1109/TNNLS.2016.2582924

Chung, J., Kastner, K., Dinh, L., Goel, K., Courville, A., & Bengio, Y. (2015). A recurrent latent variable model for sequential data. Advances in Neural Information Processing Systems, 2015-Janua, 2980–2988.

Kalchbrenner, N., Danihelka, I., & Graves, A. (2016). Grid long short-term memory. 4th International Conference on Learning Representations, ICLR 2016 - Conference Track Proceedings, 1–14.

Yao, K., Cohn, T., Vylomova, K., Duh, K., & Dyer, C. (2015). Depth-Gated LSTM. 1–5. http://arxiv.org/abs/1508.03790

Page 80: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

80

Hochreiter, S., & Schmidhuber, J. (1997). Long Short-Term Memory. Neural Computation, 9(8), 1735–1780. https://doi.org/10.1162/neco.1997.9.8.1735

Wang, L., Xu, G., Wang, J., Yang, S., & Yan, W. (2007). Feature extraction of mental task in BCI based on the method of approximate entropy. Annual International Conference of the IEEE Engineering in Medicine and Biology - Proceedings, 1941–1944. https://doi.org/10.1109/IEMBS.2007.4352697

Gowreesunker, B. V., Tewfik, A. H., Tadipatri, V. A., Ashe, J., Pellize, G., & Gupta, R. (2011). A subspace approach to learning recurrent features from brain activity. IEEE Transactions on Neural Systems and Rehabilitation Engineering, 19(3), 240–248. https://doi.org/10.1109/TNSRE.2011.2106802

Gandhi, V., Arora, V., Behera, L., Prasad, G., Coyle, D. H., & Mcginnity, T. M. (n.d.). A RECURRENT QUANTUM NEURAL NETWORK MODEL ENHANCES THE EEG SIGNAL FOR AN IMPROVED BRAIN- COMPUTER INTERFACE.

Shuhanaz, M., Azalan, Z., Paulraj, M. P., & Yaacob, S. (n.d.). Classification of Hand Movement Imagery Tasks for Brain Machine Interface Using Feed-Forward Network. 2014 2nd International Conference on Electronic Design (ICED), 3, 431–436. https://doi.org/10.1109/ICED.2014.7015844

Elgharabawy, A., & Wahed, M. A. (2016). Decoding Of Finger Movement Using Kinematic Model Classification And Regression Model Switching. 2016 8th Cairo International Biomedical Engineering Conference (CIBEC), 84–89. https://doi.org/10.1109/CIBEC.2016.7836126

Thomas, J., Maszczyk, T., Sinha, N., Kluge, T., & Dauwels, J. (2017). Deep Learning-based Classification for Brain-Computer Interfaces. 234–239.

Rathore, H., & Al-ali, A. K. (2020). SPECIAL SECTION ON NEW TRENDS IN BRAIN A Novel Deep Learning Strategy for Classifying Different Attack Patterns for Deep Brain Implants. IEEE Access, 7, 24154–24164. https://doi.org/10.1109/ACCESS.2019.2899558

Colamarino, E., Muceli, S., Ibanez, J., Mrachacz-Kersting, N., Mattia, D., Cincotti, F., & Farina, D. (2019). Adaptive learning in the detection of Movement Related Cortical Potentials improves usability of associative Brain-Computer Interfaces. Proceedings of the Annual International Conference of the IEEE Engineering in Medicine and Biology Society, EMBS, 3079–3082. https://doi.org/10.1109/EMBC.2019.8856580

Page 81: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

81

Kapsalyamov, A., Hussain, S., Sharipov, A., & Jamwal, P. (2019). Brain–computer interface and assist-as-needed model for upper limb robotic arm. Advances in Mechanical Engineering, 11(9), 1–9. https://doi.org/10.1177/1687814019875537

Witten, I. H., Frank, E., & Hall, M. a. (2011). Data Mining: Practical Machine Learning Tools and Techniques (Google eBook). In Complementary literature None. http://books.google.com/books?id=bDtLM8CODsQC&pgis=1

Hinton, G. E., & Salakhutdinov, R. R. (2006). Reducing the dimensionality of data with neural networks. Science, 313(5786), 504–507. https://doi.org/10.1126/science.1127647

Jozefowicz, R., Zaremba, W., & Sutskever, I. (2015). An empirical exploration of Recurrent Network architectures. 32nd International Conference on Machine Learning, ICML 2015, 3, 2332–2340.

Luigjes, J., Segrave, R., de Joode, N., Figee, M., & Denys, D. (2019). Efficacy of Invasive and Non-Invasive Brain Modulation Interventions for Addiction. In Neuropsychology Review (Vol. 29, Issue 1, pp. 116–138). Neuropsychology Review. https://doi.org/10.1007/s11065-018-9393-5

Lecun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. Nature, 521(7553), 436–444. https://doi.org/10.1038/nature14539

DANE. (2010). SANTANDER. DANE. https://www.dane.gov.co/index.php/estadisticas-por-tema/demografia-y-poblacion/discapacidad

Schulz, H., & Behnke, S. (2012). Deep Learning: Layer-Wise Learning of Feature Hierarchies. KI - Künstliche Intelligenz, 26(4), 357–363. https://doi.org/10.1007/s13218-012-0198-z

He, Y., Luu, T. P., Nathan, K., Nakagome, S., & Contreras-Vidal, J. L. (2018). Data Descriptor: A mobile brainbody imaging dataset recorded during treadmill walking with a brain-computer interface. Scientific Data, 5, 1–10. https://doi.org/10.1038/sdata.2018.74

Yoshua Bengio, Patrice Simard, & Paolo Frasconi. (2014). Learning Long-term Dependencies with Gradient Descent is Difficult. IEEE Transactions on Neural Network, 5(2), 157. http://www.dsi.unifi.it/~paolo/ps/tnn-94-gradient.pdf

Flach, P. (2012). The Art and Science of Algorithms that Make Sense of Data (Vol. 2010).

Page 82: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

82

Universitario, B. (2018). UNAB recibe reconocimiento por garantizar derecho a la educación de personas con discapacidad. 1. https://www.unab.edu.co/publicaciones/unab-recibe-reconocimiento-garantizar-derecho-la-educación-personas-discapacidad

World Economic Forum. (2019). Man with quadriplegia is able to control his prosthetic arms using just his thoughts. https://www.weforum.org/agenda/2019/10/man-with-quadriplegia-is-able-to-control-his-prosthetic-arms-using-just-his-thoughts/

Christopher & Dana Reeve Foundation. (2013). Prevalence of paralysis in the United States. https://www.christopherreeve.org/living-with-paralysis/stats-about-paralysis

More, A. (2019). Brain Computer Interface (BCI) Market 2019: Global Industry Size, Share, Future Challenges, Revenue, Demand, Industry Growth and Top Players Analysis to 2025. Market Watch. https://www.marketwatch.com/press-release/brain-computer-interface-bci-market-2019-global-industry-size-share-future-challenges-revenue-demand-industry-growth-and-top-players-analysis-to-2025-2019-08-20

NICHD - Eunice Kennedy Shriver National Institute of Child Health and Human Development (NICHD). (2015). ¿Cuántas personas tienen una lesión de la médula espinal (SCI por sus siglas en inglés)? https://espanol.nichd.nih.gov/salud/temas/spinalinjury/informacion/riesgo

National Spinal Cord Injury Statistical Center. (2017). Lesión de la médula espinal Referencia rápida de datos y cifras. Spain Rehabilitation Center, 4–5. https://www.nscisc.uab.edu/public/SCI Facts and Figures at a Glance - 2017 - Spanish.pdf

Center, N. S. C. I. S. (2014). 2014 Annual Report Complete Public Version. 106.

Fazel-Rezai, R., Allison, B. Z., Guger, C., Sellers, E. W., Kleih, S. C., & Kübler, A. (2012). P300 brain computer interface: Current challenges and emerging trends. Frontiers in Neuroengineering, 5(JUNE), 1–30. https://doi.org/10.3389/fneng.2012.00014

Decety, J. (1996). The neurophysiological basis of motor imagery. Behavioural Brain Research, 77(1), 45–52. https://doi.org/https://doi.org/10.1016/0166-4328(95)00225-1

Page 83: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

83

Pfurtscheller, G., & Neuper, C. (2001). Motor imagery and direct brain-computer communication. Proceedings of the IEEE, 89(7), 1123–1134. https://doi.org/10.1109/5.939829

Fedjaev, J. (2017). Decoding EEG Brain Signals using Recurrent Neural Networks [Technische Universit¨at M¨unchen]. https://mediatum.ub.tum.de/doc/1422453/552605125571.pdf

Watkinson, J. (1998). The art of sound reproduction. https://archive.org/details/artofsoundreprod0000watk

Freedman, D., Pisani, R., & Purver, R. (2007). Statistics (Septima).

Hopfield, J. J. (1988). Artificial neural networks. IEEE Circuits and Devices Magazine, 4(5), 3–10. https://doi.org/10.1109/101.8118

Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.

Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). ImageNet classification with deep convolutional neural networks. Advances in Neural Information Processing Systems, 2, 1097–1105.

Rumelhart, D. E., Hinton, G. E., & Williams, R. J. (1986). Learning representations by back-propagating errors. Nature, 323(6088), 533–536. https://doi.org/10.1038/323533a0

Hochreiter, S., & Schmidhuber, J. (1997). Long Short-Term Memory. Neural Computation, 9(8), 1735–1780. https://doi.org/10.1162/neco.1997.9.8.1735

Olah, C. (2015). Understanding LSTM Networks. http://colah.github.io/posts/2015-08-Understanding-LSTMs/

Stanford. (n.d.). Convolutional Neural Networks for Visual Recognition. 2020. Retrieved April 20, 2020, from https://cs231n.github.io/neural-networks-1/

Codecademy. (2020). Normalization. https://www.codecademy.com/articles/normalization

Kuhlman, D. (2013). A Python Book. A Python Book, 1–227.

Rodrigues, I. (2020). CRISP-DM methodology leader in data mining and big data. https://towardsdatascience.com/crisp-dm-methodology-leader-in-data-mining-and-big-data-467efd3d3781

Page 84: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

84

IEEE. (2020). IEEE Member Digital Library. https://www.ieee.org/content/dam/ieee-org/ieee/web/org/pubs/productmarketing/member-digital-library.pdf

Service, A. W. (2020). SageMaker (p. 1). https://aws.amazon.com/es/sagemaker/pricing/

HAYS. (2020). ANÁLISIS DE TENDENCIAS & SALARIOS, AMÉRICA LATINA 2020. https://www.hays.com.br/documents/63221/0/Hays+Analisis+de+Tendencias+LATAM+2020+CO.pdf

Moine, J. Mi., Haedo, A., & Gordillo, S. (2011). Estudio comparativo de metodologías para minería de datos. XIII Workshop de Investigadores En Ciencias de La Computación, 278–281. http://sedici.unlp.edu.ar/handle/10915/20034

Scopus. (2020). Pricing. https://www.elsevier.com/about/policies/pricing

Oxford. (2020). Purchase. https://academic.oup.com/jcr/subscribe

Spss, I. B. M., & Guide, M. C. (2016). IBM SPSS Modeler CRISP-DM.

Tensorflow. (2015). TensorFlow: Open source machine learning. Youtube. https://www.youtube.com/watch?v=oZikw5k_2FM

Google. (2020). ¿Por qué Google Cloud? Google Cloud Blog. https://cloud.google.com/why-google-cloud

Scipy. (2020). Scipy.org. https://scipy.org/

Scikit-Learn. (2020). Machine Learning in Python. https://scikit-learn.org/stable/index.html

NeuraLink. (2020). Interfacing with the Brain. https://neuralink.com/approach/

Page 85: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

85

ANEXOS

ANEXO 1. CÓDIGO DESARROLLADO PARA LA CARGA Y PROCESAMIENTO DE DATOS.

Page 86: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

86

Page 87: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

87

Page 88: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

88

ANEXO 2. GRÁFICOS GENERADOS A PARTIR DE LOS DATOS PREPROCESADOS.

Page 89: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

89

Page 90: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

90

Page 91: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

91

Page 92: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

92

Page 93: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

93

Page 94: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

94

Page 95: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

95

Page 96: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

96

Page 97: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

97

Page 98: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

98

Page 99: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

99

Page 100: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

100

Page 101: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

101

Page 102: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

102

Page 103: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

103

Page 104: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

104

Page 105: ALGORITMO PARA LA CLASIFICACIÓN DE ONDAS CEREBRALES ...

105

ANEXO 3. CONJUNTO DE DATOS EN BRUTO Y PROCESADOS. Teniendo en cuenta los lineamientos de privacidad de datos y los algoritmos propios implementados para procesar y armar los conjuntos de datos, para obtener acceso a este conjunto de datos por favor enviar un correo electrónico a [email protected] con el asunto “SOLICITUD CONJUNTO DE DATOS”. ANEXO 4. CÓDIGO DE IMPLEMENTACIÓN RED NEURONAL Y SOFTWARE DE USO. Teniendo en cuenta los lineamientos de privacidad de datos y derechos de autor, para obtener acceso a este código fuente por favor enviar un correo electrónico a [email protected] con el asunto “SOLICITUD CÓDIGO FUENTE”.