Identificación de individuos mediante su interacción con el dispositivo de apertura de una puerta aplicando técnicas de Deep Learning
Abstract
Departamento de Informática (Arquitectura y Tecnología de Computadores, Ciencias de la Computación e Inteligencia Artificial, Lenguajes y Sistemas Informáticos)
Full text
Universidad de Valladolid Máster universitario Ingeniería Informática Trabajo Fin de Máster Identificacion de individuos mediante su interaccion con el dispositivo de apertura de una puerta aplicando tecnicas de Deep Learning Realizado por Aitor Ojeda Bilbao z z z Universidad de Valladolid 16 de septiembre de 2021 Tutores: D. César Llamas Bello y D. Jesús M. Vegas Hernández
I Resumen La inteligencia ambiental tiene como objetivo realizar la integración de enfoques inteligentes en diferentes tipos de infraestructuras IoT, principalmente, utilizando objetos de la vida cotidiana de cualquier entorno. La hipótesis principal del trabajo es identificar cuáles son las mejores aproximaciones, para realizar una autenticación de usuarios en el momento en que éstos interactúen con la manilla de una puerta, aplicando técnicas de Deep Learning, más concretamente, redes neuronales. Esta propuesta contribuye a la creación de un método diferente para identificar a las personas de una manera más fluida, y centrada en la privacidad del usuario, para que pueda ser utilizada en cualquier tipo de escenario sin necesidad de ningún dispositivo o sistema adicional. En este caso, utilizamos los datos recopilados en un trabajo anterior, generados por acelerómetros y giroscopios integrados en la manilla de una puerta, donde se obtuvo un conjunto de datos que comprendía muestras de 47 individuos. Se adopta un enfoque centrado en redes neuronales recurrentes, y redes neuronales profundas, extrayendo las características de ambas soluciones, y estableciendo la mejor combinación de los valores que tienen los parámetros. Se ha realizado un estudio de los reultados obtenidos de los diferentes métodos aplicados sobre diferentes conjuntos de datos y características para evaluar el comportamiento de este reto de identificación. Los valores observados de las métricas utilizadas, como la precisión, muestran unos resultados muy interesantes por encima de 0,93 utilizando redes neuronales profundas. Descriptores Autenticación, manilla de puerta, IoT, Deep Learning, Redes Neuronales, Redes Neuronales Profundas, Redes Neuronales Recurrentes.
II Abstract Ambient intelligence aims to perform the integration of intelligent approaches in different types of IoT infrastructures, mainly using everyday objects of any environment. The main hypothesis of the work is to identify which are the best approaches, to perform a user authentication at the moment they interact with a door handle, applying Deep Learning techniques, more specifically, neural networks. This proposal contributes to the creation of a different method to identify people in a more fluid way, and focused on user privacy, so that it can be used in any type of scenario without the need for any additional device or system. In this case, we use data collected in a previous work, generated by accelerometers and gyroscopes embedded in a door handle, where a dataset comprising samples of 47 individuals was obtained. An approach focusing on recurrent neural networks, and deep neural networks is adopted, extracting the characteristics of both solutions, and establishing the best combination of the values that the parameters have. A study of the results obtained from the different methods applied on different data sets and features has been carried out to evaluate the performance of this identification challenge. The observed values of the metrics used, such as accuracy, show very interesting results above 0.93 using deep neural networks. Keywords authentication, door handle, IoT, Deep Learning, Neural Networks,Deep Neural Networks, Recurrent Neural Networks, Neural Networks
Índice general Índice general III Índice de figuras V Índice de tablas VI 1. Introducción 1 1.1. Motivación .................................... 2 1.2. Objetivos .................................... 3 1.3. Metodología ................................... 4 1.4. Estructura del documento ........................... 4 2. Estado del arte 6 2.1. Trabajos relacionados .............................. 6 2.2. Conceptos teóricos ............................... 11 3. Técnicas y herramientas 18 3.1. Técnicas y herramientas de desarrollo ..................... 18 3.2. Bibliotecas de Deep Learning utilizadas .................... 20 3.3. Herramientas alternativas ........................... 21 4. Desarrollo del trabajo de investigación 23 4.1. Preparación del entorno de ejecución ..................... 23 4.2. Preparación de datos. Exploración, limpieza y transformación ....... 24 4.3. Protocolo experimental ............................. 28 4.4. Pruebas y evaluación de los modelos ..................... 33 5. Conclusiones y líneas de trabajo futuras 39 5.1. Conclusiones ................................... 39 5.2. Limitaciones y trabajo futuro ......................... 40 III
Índice general IV Apéndices 41 Apéndice A Plan de Proyecto 42 A.1. Introducción ................................... 42 A.2. Planificación temporal ............................. 43 A.3. Estudio de viabilidad .............................. 44 Apéndice B Documentación del Desarrollador 45 B.1. Introducción ................................... 45 B.2. Ejecución del código desarrollado ....................... 48 Bibliografía 49
Índice de figuras 2.1. Ramas que forman la inteligencia artificial (IA). ................. 12 2.2. Comparación general del funcionamiento del Machine Learning y del Deep Learning. ...................................... 13 2.3. Esquema por capas de una red neuronal. ..................... 15 2.4. Esquema de funcionamiento de una célula LSTM. ................ 17 4.5. Despliegue de lataforma de adquisición. ...................... 25 4.6. Aceleración (Ax(g)) y velocidad angular (Wz(0/s)) de los datos adquiridos de tres sujetos de estudio diferentes, que interactúan con la manija de la puerta siguiendo las instrucciones dadas ......................... 26 4.7. Descripción estadística de los datos de las coordenadas ............. 27 4.8. Función de pérdida con el optimizador Rmsprop ................. 31 4.9. Función de pérdida con el optimizador Adam .................. 32 4.10. Matriz de confusión ................................ 34 4.11. Variación de la precisión de los modelos de deep learning al aumentar el tamaño del conjunto de datos ................................ 37 B.1. Interfaz de inicio de la aplicación Anaconda.................... 46 V
Índice de tablas 4.1. Descripción de los atributos ............................ 27 4.2. Descripción de los nuevos atributos añadidos ................... 28 4.3. Fases del protocolo experimental ......................... 29 4.4. Métricas de evaluación ............................... 34 4.5. Resultados de la clasificación con diferentes conjuntos de datos (intentos) por usuario ........................................ 35 A.1. Estimación de la duración de las actividades de la estancia en el GIR ..... 43 VI
Estado del arte 7 Por otro lado, la empresa Fujitsu, como creadora de escáneres de las venas de la palma de la mano en el mercado, anunció en 2018 que reemplazaría las contraseñas y las tarjetas inteligentes para 80.000 empleados en su sede japonesa por su escáner de venas de la palma PalmSecure [9]. Con estos esfuerzos que muestran un alto potencial, establecemos a la autenticación biométrica de las venas de la palma de la mano como una solución relacionada con el problema planteado, y que nos sirva como planteamiento para poder abordar el objetivo principal de este trabajo. Siguiendo en la misma línea, actualmente, los dispositivos que se han convertido en los grandes protagonistas para poder realizar autenticaciones de usuario basadas en biometría, sin necesidad de realizar una acción específica de autenticación, son los dispositivos portátiles. Éstos dispositivos, como son las pulseras de actividad, los relojes inteligentes, o incluso gafas inteligentes, son considerados dispositivos que permiten realizar una conexión a internet, e intercambiar datos del usuario que lo lleva puesto sin necesidad de la interacción humana. En el estudio realizado por Kuo-Hui Yeh y Chunhua Su [ 10 ] demuestran que con los dispositivos portátiles, se pueden tomar una serie de diferentes datos biométricos muy relevantes que permiten realizar una autenticación de usuarios. Concretamente, su estudio se basa en la autenticación continua, es decir, a través de los datos que van recopilando en tiempo real, haciendo que el sistema aprenda continuamente acerca del usuario que lleva puesto el dispositivo. Lo han llevado a cabo analizando la forma de andar del usuario, utilizando un sistema especial que recopila información acerca de la presión ejercida por el usuario a la hora de dar un paso, utilizando unas zapatillas especializadas para dicho fin. Los resultados que obtuvieron en el estudio fueron bastante buenos, descubriendo que la técnica utilizada superaba otros estudios de autenticación mediante datos biométricos, como el iris y los movimientos del ojo [ 11 ], el oido [ 12 ], o la cara [ 13 ]. Según el experimento, el índice de la precisión de la verificación de entidades en el sistema de autenticación propuesto tiene un valor medio comprendido en un rango del 83,88 % y del 99,60 %, aplicando 14 muestras diferentes mediante 2 clasificadores que son Naive Bayes y SVM con Gaussian radial basis function (SVM-GRBF) respectivamente. Por tanto, concluyen que los datos biométricos estudiados son muy relevantes a la hora de realizar una autenticación mediante dispositivos cotidianos, como puede ser una zapatilla.
Estado del arte 8 Autenticación de usuarios mediante técnicas basadas en deep learning Para proponer una solución correcta al problema estudiado, debemos de tener en cuenta todos los enfoques posibles acerca del problema, y uno de ellos se basa en la utilización del Deep Learning para la autenticación de usuarios.Los últimos avances tecnológicos realizados han demostrado la buena eficacia de los modelos de aprendizaje profundo para la biometría móvil. En el caso del trabajo realizado por N. Reddy y A. Rattani [ 14 ] realizan una evaluación y una comparación sobre los diferentes modelos de aprendizaje profundo en dos términos distintos: eficiencia y precisión, cuando se utilizan para la autenticación biométrica de usuarios en dispositivos móviles. Para ello, se han utilizado arquitecturas de modelos de deep learning pre-entrenadas como son VGG, ResNet, DenseNet y modelos propuestos para aplicaciones de visión móvil, como MobileNetV1, MobileNetV2 y NasNet-mobile. Estos modelos se han comparado con respecto a su rendimiento y coste computacional. Además de estos modelos, han propuesto un modelo de aprendizaje profundo compacto y rápido para operaciones eficientes en dispositivos móviles con recursos limitados, realizando investigaciones con el fin de adaptarlo lo máximo posible al conjunto de datos. Los resultados principales obtenidos presentaban que ResNet-50, DenseNet-50 y los modelos personalizados tuvieron un rendimiento mejor en todos los experimentos. Sin embargo, el modelo personalizado propuesto es 35 veces más pequeño y tiene 15,6 veces menos operaciones en comparación con el modelo ResNet-50 y, por tanto, ofrece la mejor relación entre rendimiento y coste computacional, dentro de los límites del estudio y del caso de uso realizados. Además, el modelo propuesto superó a la mayoría de las arquitecturas compactas centradas en los móviles, como MobileNet-V1 y MobileNet-V2, en la mayoría de los experimentos realizados. La conclusión obtenida es que, para poder realizar un modelo de deep learning más eficiente, es necesario adaptarlo al problema estudiado, en vez de utilizar modelos prediseñados que pueden dar resultados menos satisfactorios. Por otro lado, podemos destacar las redes neuronales como método de autenticación, una práctica que se ha ido extendiendo actualmente sobre los sistemas basados en biometría, y que resulta una herramienta muy práctica y fiable para dicho fin. En este contexto, en el estudio realizado por Ilias Chamatidis y Aggeliki Katsika [ 15 ], plantean de nuevo una comparación de métodos de Machine Learning y Deep Learning, llevando a cabo uno de los enfoques más recientes de la autenticación biométrica, como es el uso de electrocardiogramas (ECG), ya que están estrechamente relacionados con las características únicas del corazón de cada persona.
Estado del arte 9 En dicho trabajo se presenta un marco para la autenticación eficiente y utilizable para la autenticación de usuarios, basado en el ECG. El ECG se preprocesa para eliminar cualquier ruido o distorsión y luego se extrae un conjunto múltiple de características, a través de varias transformaciones. Este conjunto de características se utiliza como entrada para los modelos de clasificación y los resultados se comparan para encontrar la combinación transformación-clasificador más eficaz. Además, utilizan redes neuronales para crear los modelos de clasificación que predicen si un ECG pertenece a una persona específica o no, basándose en la combinación de los conjuntos de características extraídos. Los resultados que obtuvieron son diversos, donde recalcan que los modelos de Machine Learning para el conjunto de datos estudiado presentan unas mejores métricas, como el área bajo la curva, comprendiendo resultados entre 81% y 95%, mientras que los modelos de redes neuronales profundas no alcanzan una precisión más alta del 80 %. Estos resultados demuestran que los modelos de aprendizaje profundo necesitan una mayor cantidad de datos para proporcionar una precisión más elevada en comparación con la mayoría de las otras técnicas utilizadas, si hay suficientes datos para entrenarlas. Es por ello que debemos de tener en cuenta esta conclusión en el presente trabajo, y elaborar la mejor solución en base a esta información y la anteriormente estudiada. Autenticación de usuarios a través de sistemas conectados a una puerta Continuando con los diferentes enfoques, existen pocos artículos acerca de la autenticación de usuarios a través del mecanismo de una puerta. Fujinami [ 16 ] utiliza acelerómetros combinados, unidos a una puerta y a la muñeca de un usuario para identificar a la persona que abre la puerta. Esta identificación se realiza en el momento en el que usuario realiza 3 funciones principales: abrir la puerta, sentarse en la silla, y ponerse a escribir. Una red neuronal recibió las tres señales del acelerómetro como entradas, obteniendo una precisión global del reconocimiento, es decir, el rendimiento de la segunda capa en el diagrama de flujo de identificación, del 96%. En el contexto de identificación del usuario que abrió la puerta, se identificó correctamente en todos los casos. La identificación del usuario de la silla se reconocía correctamente si sólo había una persona sentada, por lo que no era adecuado para múltiples usuarios utilizando el mismo patrón de comportamiento. Sin embargo, en una investigación más profunda, Piltaver [ 17 ] describe un enfoque diferente que permite reconocer a una persona que entra dentro de una habitación, utilizando sólo los valores de la aceleración de la puerta. El enfoque analiza la señal de la aceleración en 2 ámbitos: el tiempo y la frecuencia.
Estado del arte 10 Para cada ámbito se desarrollaron dos tipos de métodos: basado en características, que utiliza características para describir la aceleración y a continuación utiliza el método de clasificación para identificar a la persona; y basado en señales, que utiliza la señal de aceleración como entrada y encuentra las más similares para identificar a la persona. Estos dos métodos obtuvieron unos resultados en torno al 90 % de precisión, confirmando que es posible identificar a una persona que entra en una habitación utilizando sólo la aceleración de la puerta. El problema fundamental es que, en estos dos casos, la identificación del usuario se realiza una vez que la persona ya ha entrado en la habitación, por lo que estos enfoques no son adecuados para ser utilizados en un sistema de autenticación o control de acceso. Debemos centrarnos en un método que permita la autenticación temprana de los usuarios, es decir, antes de que se abra la puerta, debemos centrarnos en la interacción con la manija de la puerta, y elaborar un escenario que sea capaz de recoger datos relevantes acerca de ello. Autenticación de usuarios a través de la interacción con el mecanismo de apertura de una puerta J.Vegas y C.Llamas [ 7 ], realizaron una investigación acerca de si la interacción con una manilla de una puerta, era suficiente para realizar una autenticación de usuarios, mediante técnicas más clásicas de Machine Learning. La plataforma de adquisición de datos estaba formada por un módulo MEMS, compuesto por un acelerómetro y un giroscopio, recopilando información a través de un sensor 6-DOF, que permitía que los datos estuvieran disponibles a través de una red inalámbrica. Este problema fue planteado sin que el usuario hubiera entrado del todo en la estancia, si no que, en el momento en el que interacciona con la manilla de la puerta, pueda producirse la autenticación. La hipótesis principal planteada fue cierta, descubiriéndose mediante diferentes tipos de métricas y métodos, que realizando una clasificación con diferentes tipos de algoritmos de Machine Learning, se obtenía un valor medio de área bajo la curva (AUC) de un 85%, siendo un valor más que suficiente para que la hipótesis fuera cierta. Gracias a la información recabada en el artículo anterior, podemos afirmar que mediante la identificación adecuada de patrones de comportamiento, es posible realizar autenticaciones de usuario, por tanto, para demostrar de una mejor forma esto, en este trabajo se plantea una solución alternativa, realizar una autenticación de usuarios implementando métodos basados en Deep Learning.
Estado del arte 11 Éstos métodos extraen complejas características del comportamiento a través de herramientas como acelerómetros y giroscopios [ 18 ]. Utilizan redes neuronales con múltiples capas de operaciones para aprender las características de los datos [ 19 ], ya que el Deep Learning tiene la capacidad de aprender automáticamente la representación de los datos más destacada, sin necesidad de una ingeniería de características manual, por lo que es un enfoque muy apropiado para tratar datos de los sensores[20]. 2.2. Conceptos teóricos Una vez hemos visto los diferentes enfoques y métodos en la autenticación de usuarios, además de los puntos de partida para la realización de este trabajo, debemos de hacer una pequeña explicación acerca de las técnicas que se llevarán a cabo en este estudio, para continuar con la resolución del problema planteado. Machine Learning El Machine Learning (aprendizaje automático) es un subcampo de las ciencias de la computación y una rama de la inteligencia artificial, cuyo objetivo es desarrollar técnicas que permitan que las computadoras aprendan por sí solas. Un sistema aprenderá a medida de que su desempeño mejora con la experiencia, y mediante el uso de diferentes tipos de datos, es decir, cuando estas habilidades no estaban presentes en el primer desarrollo del sistema. Los pasos que siguen este tipo de modelos son principalmente 3: realizar una observación de datos, construir un modelo basado en esos datos, y finalmente utilizar ese modelo a la vez como una hipótesis acerca del tema a tratar y una pieza de software que pueda resolver problemas. En la Figura 2.1 podemos observar los campos que abarca la inteligencia artificial, siendo el machine learning uno de ellos, y a su vez, dentro de él, podemos encontrar el Deep Learning (aprendizaje profundo), que estudiaremos más adelante y será la base principal de la realización de este trabajo. Por otro lado, el Machine Learning también está muy relacionado con el reconocimiento de patrones de comportamiento. El Machine Learning puede ser visto además como una técnica para automatizar algunas partes de los métodos científicos mediante métodos matemáticos. Por lo tanto es un proceso de inducción del conocimiento, es decir, una forma de razonamiento en que la verdad de las premisas apoyan la conclusión, pero no la garantizan. Este factor fundamental será muy importante para la realización de este trabajo, ya que el problea fundamental estudiado es el análisis de un patrón de comportamiento. Finalmente, el Machine Learning tiene una amplia gama de aplicaciones en diferentes ámbitos (educación, sanidad, industria, ocio, etc), entre las que podemos destacar motores de búsqueda, diagnósticos médicos, detección de fraude en el uso de tarjetas de crédito, recomendaciones de películas/series en base a lo que ha visto el usuario, análisis del mercado de valores, clasificación de secuencias de ADN, reconocimiento del habla y del lenguaje escrito, etc.
Estado del arte 12 Figura 2.1: Ramas que forman la inteligencia artificial (IA). Recuperado de https://levity.ai/blog/difference-machine-learning-deep-learning Deep Learning El Deep Learning (aprendizaje profundo) es un subcampo del aprendizaje automático, como ya habíamos comentado, que se ocupa de los algoritmos inspirados en la estructura y el funcionamiento del cerebro llamados redes neuronales artificiales. El aprendizaje puede ser de 3 tipos: supervisado, semi-supervisado y no supervisado, aun que el modelo más utilizado y más común es el aprendizaje supervisado. Las redes neuronales artificiales (RNA) se basan en el procesamiento de la información y los nodos de comunicación distribuidos en los sistemas biológicos que conocemos. Estas redes tienen varias diferencias con los cerebros biológicos, en concreto, las redes neuronales tienden a ser estáticas y simbólicas, mientras que el cerebro biológico de la mayoría de los organismos vivos es dinámico (plástico) y analógico [21].
Estado del arte 13 Cuando nos referimos a aprendizaje profundo, se refiere al uso de múltiples capas en la red neuronal, una variante moderna que se ocupa de un número ilimitado de capas de tamaño acotado, lo que permite una aplicación práctica y una implementación optimizada, al tiempo que conserva la universalidad teórica en diferentes condiciones y situaciones. También es posible que dichas capas puedan ser heterógeneas, y que puedan desviarse en gran medida de los modelos de conexiones biológicamente estudiados, siempre teniendo en cuenta la eficiencia, la capacidad de entrenamiento y la comprensibilidad, que forman los 3 pilares fundamentales de este campo. Para poder ilustrar mejor este funcionamiento, en la Figura 2.2 podemos observar una comparación entre los 2 métodos explicados, el machine learning y el deep learning, destacando la principal diferencia entre ambos. Mientras que en el machine learning una persona se encarga de realizar la extracción de características y patrones, y posteriormente el modelo realiza una clasificación con dicha información extraída , el deep learning lo hace automáticamente, aprendiendo por su propio pie el reconocimiento de dichos patrones y las características que presentan los datos sin necesidad de la interacción humana, junto con la creación de los modelos de clasificación, realizando un aprendizaje continuo desde la inclusión de los datos. El único punto que debe de realizar una persona es la adaptación de los datos de entrada para que puedan usarse correctamente en los modelos que se vayan a utilizar. Figura 2.2: Comparación general del funcionamiento del Machine Learning y del Deep Learning. Recuperado de https://towardsdatascience.com/why-deep-learning-is-needed-overtraditional-machine-learning-1b6a99177063
Estado del arte 14 Existen diferentes arquitecturas de Deep Learning, entre las que podemos destacar varias como las redes neuronales profundas, las redes de creencias profundas, el aprendizaje de refuerzo profundo, las redes neuronales recurrentes y las redes neuronales convolucionales. Estos tipos de arquitecturas se han aplicado en diferentes ámbitos como la visión por ordenador, el reconocimiento del habla, el procesamiento del lenguaje natural, la traducción automática, la bioinformática, el diseño de fármacos y el análisis de imágenes médicas, entre otros, en los que han producido resultados comparables y, en algunos casos, superiores al rendimiento producido por los expertos humanos [ 22 ]. Más concretamente, en este trabajo haremos uso de los dos modelos más conocidos: las redes neuronales profundas y las redes neuronales recurrentes, ya que el problema a tratar se adapta a las descripciones de uso de ambas y podremos dar un enfoque diferente, analizando los resultados del rendimiento de ambas redes neuronales. En la siguiente sección explicaremos un poco más en detalle cada una de ellas, para ilustrar su funcionamiento y el por qué de su utilización. Redes neuronales profundas Las redes neuronales clásicas o profundas (Deep Neural Networks), también conocidas como redes neuronales totalmente conectadas, se identifican principalmente por sus perceptrones multicapa, en los que las neuronas están conectadas a la capa continua, existiendo múltiples capas entre la entrada y la salida. Existen diferentes tipos, pero todos tienen la misma serie de componentes: neuronas, sinapsis, pesos, sesgos y funciones. Estos componentes permiten funcionar a los modelos de manera similar al cerebro humano, y se pueden entrenar como cualquiero otro algoritmo de Machine Learning. Las DNN suelen ser redes de avance en las que los datos pasan de la capa de entrada a la de salida sin hacer un bucle de retorno, es decir, volver a utilizar los valores anteriores. En primer lugar, la DNN crea un mapa de neuronas virtuales y asigna valores numéricos aleatorios, llamados “pesos”, a las conexiones entre ellas. Los pesos y las entradas se multiplican y devuelven una salida entre 0 y 1. Si la red no reconociera con precisión un patrón concreto, un algoritmo ajustaría los pesos. Así, el algoritmo puede hacer que ciertos parámetros sean más significativos, hasta que determine la manipulación matemática correcta para procesar completamente los datos.
Estado del arte 15 Para ilustrar de una mejor forma este tipo de funcionamiento, en la Figura 2.3 podemos observar el esquema de capas de una red neuronal profunda, y cómo la información va pasando por todas ellas hasta que se genera una salida final. Figura 2.3: Esquema por capas de una red neuronal. Recuperado de https://www.researchgate.net/figure/A-general-model-of-a-deep-neuralnetwork-It-consists-of-an-input-layer-some-here-two_fig1_308414212 Las 2 principales funciones que utilizan este tipo de red neuronal son la función lineal, que representa una sola línea que multiplica sus entradas por un multiplicador constante; y la función no lineal, que está más extendida, y se puede dividir en 3 tipos: Curva Sigmoide . Función interpretada como una curva en forma de S y con un rango de 0 a 1. Tangente hiperbólica . Hace referencia también a la curva en forma de S, pero con un rango de -1 a 1. Unidad Lineal Rectificada (ReLU) . Es una función de un solo punto que se posiciona en 0 cuando el valor de entrada es menor que el valor establecido y aumenta el rendimiento si el múltiplo lineal de la entrada dada es mayor que el valor establecido. Esta función es la más conocida, y es específicamente buena para tratar problemas de clasificación, como podremos comprobar más adelante. Este tipo de red neuronal funciona muy bien para realizar tareas de clasificación y regresión de datos, por lo que lo hace un enfoque muy adecuado para el problema que estamos planteando en este trabajo.
Estado del arte 16 Redes neuronales recurrentes Las redes neuronales recurrentes (RNN) son otro tipo de técnica de Deep Learning, perteneciente a la clase de redes neuronales artificiales, en las que las conexiones entre los nodos forman una malla o grafo dirigido a lo largo de una secuencia temporal. Gracias a esto, le permite mostrar un comportamiento dinámico temporal, y procesar diferentes secuencias de entrada de longitud variable. Las RNN utilizan el conocimiento obtenido de su estado anterior como valor de entrada para la predicción actual, por lo tanto, puede ayudar a conseguir una memoria a corto plazo en una red, lo que permite su utilización en sistemas de datos basados en el tiempo, siendo capaz no sólo de procesar puntos de datos individuales, si no también secuencias enteras de datos, como el habla [ 23 ] o el vídeo [ 24 ].Dentro de este tipo de redes neuronales, podemos destacar los 2 tipos más significativos: Long Sort-Term Memory (LSTM). Este tipo de red es muy útil a la hora de realizar una predicción de datos en secuencias temporales, utilizando la memoria. Una unidad LSTM común se compone de una célula, una puerta de entrada, una puerta de salida y una puerta de olvido. La célula recuerda valores a lo largo de intervalos de tiempo arbitrarios y las tres puertas regulan el flujo de información que entra y sale de la célula. Es por ello que estas series son idóneas para clasificar, procesar y hacer predicciones a partir de datos de series temporales, ya que puede haber desfases de duración desconocida entre los eventos importantes de una serie temporal. En la Figura 2.4 se muestra este tipo de funcionamiento, ilustrando como se procesa la informacion y que pasos se siguen dentro de una célula LSTM. RNNs con puerta de entrada (GRU). Este tipo de RNN es parecido al enfoque de memoria a corto plazo (LSTM), aun que implementa menos parámetros que el modelo LSTM ya que carece de una puerta de salida. El rendimiento de la GRU en ciertas tareas, como el procesamiento del lenguaje natural resultó ser similar al de la LSTM [ 25 ]. Sin embargo, las GRU sí que han demostrado un mejor rendimiento en ciertos conjuntos de datos más pequeños y menos frecuentes [26].
4: Desarrollo del trabajo de investigación En este capítulo se describirán los aspectos más relevantes e interesantes del desarrollo del trabajo de investigación, exponiendo las partes más importantes del mismo y explicando detalladamente los caminos tomados para las soluciones y la justificación de los mismos. Además de las explicaciones, se incluirán documentos gráficos y estadísticos para realizar una completa explicación del contenido. Todos los documentos asociados al desarrollo del proyecto podrán encontrarse en el siguiente enlace: https://github.com/aitorojeda/DatosTFM.git ; debidamente estructurado en carpetas, entre ficheros de datos y código de desarrollo. 4.1. Preparación del entorno de ejecución Antes de comenzar con la preparación de los datos, debíamos de configurar un entorno de trabajo estable para poder realizar todas las operaciones necesarias sobre los datos, además de realizar todas las tareas del trabajo de investigación sobre dicho entorno. El entorno de trabajo que se utilizará para el desarrollo será Anaconda Navigator, un entorno local que nos permitirá desplegar varias herramientas de trabajo diseñadas específicamente para la ciencia de datos, como Jupyter, Pycharm y Spyder entre otras muchas. Para el desarrollo del código, utilizaremos cuadernos de Jupyter, usando como módulo principal Pyspark, y Python como lenguaje de programación. Las tareas principales que se han llevado a cabo para la puesta a punto de este entorno de trabajo son las siguientes: 23
Desarrollo del trabajo de investigación 24 Descarga del entorno de trabajo Anaconda Navigator Creación de un entorno propio de ejecución local Instalación de las librerías principales con las que se van a trabajar, explicadas previamente en el Capítulo 2.2. Ejecución y comprobación del funcionamiento de los diferentes modulos a utilizar En el Apéndice Bse explicará con más detalle los pasos a seguir para la instalación, además de los comandos necesarios para poner a punto el entorno de trabajo y comenzar a trabajar con él. 4.2. Preparación de datos. Exploración, limpieza y transformación En primer lugar, para empezar a trabajar en un modelo de red neuronal, debemos de adaptar nuestros datos, explorar los diferentes valores que pueden tomar los mismos, limpiarlos de registros corruptos, inconsistentes o vacíos, y transformarlos, para así poder introducirlos dentro de una red neuronal de la manera más correcta y completa posible, ya que éstos modelos requieren ciertos tipos de datos, y estructurados de diferentes formas para comenzar a realizar el aprendizaje. Exploración de los datos Nuestro conjunto de datos original consta de una serie de vectores formados a partir de velocidades angulares y de aceleraciones, convenientemente etiquetados con tiempo en microsegundos. Un total de 47 personas (13 mujeres y 34 hombres) de entre 18 y 68 años colaboraron en la elaboración de este conjunto de datos. Independientemente de si el sujeto era diestro o zurdo, se pidió a los individuos que interactuaran de la manera más natural posible con una manija de puerta para diestros durante 20 repeticiones en una puerta firmemente cerrada. La plataforma de adquisición de datos contaba con un pequeño módulo MEMS conectado a la manija de la puerta (de palanca común) controlada por una pequeña computadora fijada a la puerta. La plataforma está formada por una Raspberry Pi como placa principal 2 +, junto con el elemento principal que actúa como sensor, una MPU 9250 (Unidad de procesamiento de movimiento) que se puede encontrar en algunos teléfonos inteligentes. En la Figura 4.5 podemos observar cómo se colocaron dichos dispositivos en la puerta, adhiriendo a la manilla de la misma mediante un cableado especial conectado a la raspberry.
Desarrollo del trabajo de investigación 25 Figura 4.5: Despliegue de lataforma de adquisición. Se pidió a los sujetos que intentaran abrir una puerta cerrada, y para ello, debían de seguir los siguientes pasos: 1. Comenzar a una distancia de 3 m justo en frente de la puerta. 2. Caminar como lo hacen habitualmente con la intención de actuar sobre la manija de la puerta. 3. Actuar sobre la manija de la puerta 4. Esperar un tiempo muy corto con la palanca en la posición de tope final 5. Liberar la fuerza mientras se maneja la manija de la puerta 6. Alejar la mano En relación a estas etapas, debemos de destacar el comportamiento de los usuarios con los datos. En la figura 4.6, en las gráficas correspondientes a la aceleración en el eje X (a(g)), y a la velocidad angular en el eje Z (w(0/s)), observamos las diferentes etapas que compone el proceso de toma de datos con 3 usuarios distintos, y como varían los datos a medida que los usuarios interaccionan con la manilla de la puerta.
Desarrollo del trabajo de investigación 26 Figura 4.6: Aceleración (Ax(g)) y velocidad angular (Wz(0/s)) de los datos adquiridos de tres sujetos de estudio diferentes, que interactúan con la manija de la puerta siguiendo las instrucciones dadas . Una vez definida la fuente de datos de nuestro trabajo, debemos indicar la estructura en la que se encuentran los mismos. Los datos del corpus están formados por 47 ficheros, divididos por cada usuario, del 1 al 47, y dentro de cada directorio de los usuarios, se encuentran 20 ficheros, uno por cada intento del usuario que se ha descrito anteriormente. En total contamos con 940 ficheros de datos, en formato csv, con 1495 registros por cada fichero. Las columnas que conforman cada fichero son las siguientes:
Desarrollo del trabajo de investigación 27 Nombre Tipo de valor Tipología Descripción num Int Cuantitativo discreto Número de registro time(us) Int Cuantitativo continuo Tiempo en microsegundos accX(g) Float Cuantitativo continuo Aceleración en eje X accY(g) Float Cuantitativo continuo Aceleración en eje Y accZ(g) Float Cuantitativo continuo Aceleración en eje Z gyrX(o/s) Float Cuantitativo continuo Velocidad angular en X gyrY(o/s) Float Cuantitativo continuo Velocidad angular en Y gyrZ(o/s) Float Cuantitativo continuo Velocidad angular en Z Tabla 4.1: Descripción de los atributos Debido a la complicación que supone tener separados los ficheros de datos, para una mayor comodidad y mejor análisis, se ha procedido a juntar todos y cada uno de los ficheros que forman el corpus de datos en un único fichero con el que trabajaremos posteriormente. Con todos los datos concatenados en un fichero, podemos observar en la figura 4.7, una descripción estadística de los mismos de carácter general, con el número de registros totales, la media, la desviación estándar, el mínimo y el máximo de cada atributo, y los percentiles 0.25, 0.50, y 0.75. Si los datos los hubiéramos tratado de manera independiente, este análisis no habría resultado relevante en el estudio ya que los valores obtenidos serían para cada fichero de datos, y no de una manera más general. Figura 4.7: Descripción estadística de los datos de las coordenadas
Desarrollo del trabajo de investigación 28 Limpieza y transformación de los datos Para continuar con la preparación de los datos, se ha realizado un análisis para cada atributo en el que se comprueban registros vacíos o incorrectos. Gracias a dicho análisis, se ha podido observar que todos los datos son correctos, y no incluyen ningún registro vacío, debido a que previamente, en el trabajo anteriormente mencionado, se han ocupado del tratamiento completo de los datos. El último punto de preparación de los datos es la transformación que se ha realizado sobre los mismos. Los ficheros de datos incluían en el nombre un número, que indicaba el intento del usuario asociado al mismo. También, dichos ficheros estaban recogidos en directorios donde se indicaba el número de cada usuario. Es por ello que, para seguir conservando esta información, se han incluído 2 atributos más al conjunto de datos, para cada uno de los ficheros del corpus: Nombre Tipo de valor Tipología Descripción User_ID Int Cuantitativo discreto Número que identifica al usuario Attemp Int Cuantitativo discreto Intento de cada usuario Tabla 4.2: Descripción de los nuevos atributos añadidos Estos atributos nos servirán como clase para poder identificar a los usuarios, y como claves de partición para reducir el conjunto de datos y probar diferentes combinaciones de intentos. El rango que pueden alcanzar estos dos atributos son: User_ID. De 1 a 47. Attemp. De 1 a 20. Además de estas transformaciones, se ha procedido a borrar del conjunto de datos la columna denominada “num", debido a que no aportaba ningún tipo de relevancia al conjunto de datos y simplemente era un identificador de registros, con un rango de 1 a 1495 en cada fichero de datos. 4.3. Protocolo experimental En primer lugar vamos a realizar la descripción de los diferentes modelos de Deep Learning que se han creado durante la etapa de investigación, con el objetivo claro de probar nuestra hipótesis principal: utilizar redes neuronales para realizar una autenticación de usuarios. Durante el comienzo de la fase de desarrollo, se plantearon diversas soluciones iniciales para el problema estudiado, siendo la Tabla 4.3 una pequeña representación de las diferentes fases que se han abordado durante el desarrollo.
Desarrollo del trabajo de investigación 29 Fase del desarrollo Descripción Modelo inicial Creación del primer modelo utilizado Investigación de parámetros Estudio y optimización de parámetros Evaluación del modelo Evaluación del modelo con diferentes técnicas Tabla 4.3: Fases del protocolo experimental Modelo inicial En esta etapa se han llevado a cabo diferentes operaciones con el objetivo de la creación de un primer modelo que nos pudiera servir de referencia para nuestro objetivo principal. Para ello, se ha elaborado un modelo con una capa “LSTM” (Long Sort-Term Memory). Como ya se ha explicado en el capítulo 1.4, la arquitectura principal de este modelo se basa principalmente en redes neuronales recurrentes, lo que nos permitirá realizar un modelo adaptado a series temporales con los datos que poseemos. Se ha utilizado este tipo de capa sobre la red neuronal, para comprobar cómo era su funcionamiento dentro de la red y estudiar cómo se comportaría la red aplicando este tipo de técnica, debido a que no se había realizado ningún estudio previo de los parámetros a aplicar. El resultado obtenido no fue demasiado bueno, debido a que se obtenía más o menos un 38% de precisión, lo que no es un resultado relevante para la investigación realizada. Por ello, se decidió dejar apartado este tipo de técnica y hacer un estudio más profundo acerca de las necesidades, parámetros y valores que necesitaba el modelo. Estudio y optimización del modelo Conocido el funcionamiento preliminar del modelo, realizamos un pequeño estudio acerca de los métodos y parámetros que mejor se ajustarían al problema estudiado. Nuestra hipótesis principal es investigar acerca de si es posible mediante técnicas de deep learning realizar una autenticación de usuarios. Por tanto, el problema que mejor se ajusta a esta hipótesis es el enfoque multiclase, en el cual tenemos diferentes datos para cada una de las clases, y queremos hacer una clasificación más o menos precisa si la red es capaz de identificar a los usuarios con los datos suministrados para ello. Siguiendo esta línea, las clases hacen referencia a los diferentes usuarios que tenemos, y los atributos estudiados (las columnas de los ficheros de datos) son las características a tener en cuenta de cada usuario, es decir, los datos que alimentarán el modelo para realizar dicha clasificación. Los parámetros utilizados son los siguientes: Tipo de modelo . Un modelo es la estructura de datos básica de Keras, la librería de deep learning utilizada para este trabajo. Los modelos de Keras definen cómo organizar las capas del modelo,en este caso, creándolas en orden secuencial, lo que nos permite crear modelos capa por capa en dicho orden. Pero uno de los inconvenientes es que no nos permite crear modelos que tengan múltiples entradas o salidas, siendo
Desarrollo del trabajo de investigación 30 buena esta aproximación para una pila simple de capas que tienen 1 tensor de entrada y 1 tensor de salida, como es este caso. Función de activación. La función de activación de un nodo define la salida de ese nodo dada una entrada o conjunto de entradas. Un circuito integrado estándar puede verse como una red digital de funciones de activación que pueden estar en“ON” (1) u “OFF” (0), dependiendo de la entrada. Esto es similar al perceptrón lineal de las redes neuronales. Sin embargo, sólo las funciones de activación no lineales permiten a estas redes calcular problemas no triviales utilizando sólo un pequeño número de nodos, y tales funciones de activación se denominan no lineales. Optimizador .Los optimizadores son algoritmos o métodos utilizados para minimizar una función de error (función de pérdida) o para maximizar la eficiencia de la producción. Consisten en funciones matemáticas que dependen de los parámetros de aprendizaje del modelo, es decir, los pesos y los sesgos. Los optimizadores ayudan a saber cómo cambiar los pesos y la tasa de aprendizaje de la red neuronal para reducir las pérdidas. Existen múltiples algoritmos de optimización: Adam, rmsprop, adagrad, SGD, nadam, etc. Función de pérdida . Hace referencia al parámetro que nos permite minimizar el error de la función de optimización. La función de pérdida tiene un trabajo importante, ya que debe destilar fielmente todos los aspectos del modelo en un solo número, de tal manera que las mejoras en ese número sean un signo de un mejor modelo. También existen múltiples funciones de pérdida, cada una adaptada al problema que se plantea: Regression Loss Function, Mean Squared Error, Mean Squared Logarithmic Error Loss, Mean Absolute Error Loss, Binary Classification Loss Function, Binary Cross Entropy Loss, etc. En este caso, utilizaremos la función Categorical cross-entrophy, debido a que es la función de pérdida que más se ajusta al problema que estamos tratando. Épocas. El número de épocas es un hiperparámetro que define el número de veces que el algoritmo de aprendizaje trabajará a través de todo el conjunto de datos de entrenamiento. Una época significa que cada muestra del conjunto de datos de entrenamiento ha tenido la oportunidad de actualizar los parámetros del modelo interno. Este número es variable y depende del problema y el volumen de datos, se puede establecer un valor mayor o menor. Tamaño del lote . El tamaño del lote es un hiperparámetro que define el número de muestras con las que se trabaja antes de actualizar los parámetros internos del modelo. Es por ello que un lote es como un bucle “for” que itera sobre una o más muestras y hace predicciones. Al final del lote, las predicciones se comparan con las variables de salida esperadas y se calcula un error. A partir de este error, el algoritmo de actualización se utiliza para mejorar el modelo, por ejemplo, para moverse hacia abajo a lo largo del gradiente de error. Este hiperparámetro puede ser de varios tipos:
Desarrollo del trabajo de investigación 31 • Descenso de gradiente por lotes. Tamaño del lote = Tamaño del conjunto de entrenamiento •Descenso de gradiente estocástico. Tamaño del lote = 1 • Descenso de gradiente en mini lotes. 1 <Tamaño del lote <Tamaño del conjunto de entrenamiento Con los hiperpárametros ya descritos que se van a utilizar para la creación de un modelo más ajustado a nuestro problema, podemos realizar algunas observaciones acerca de los valores más óptimos de algunos de ellos. Respecto a la función de activación, los valores elegidos son las funciones “Softmax” y “Relu”, debido a que la primera de ellas asegura que los valores de salida se encuentran en un rango del 0 al 1, para poder realizar la predicción de las clases correctamente, y la segunda, debido a que es la función más conocida gracias a su simplicidad en el cálculo de los pesos. Además el probblema tratado es de tipo multiclase, y son las funciones que mejor se ajustan para dicho problema. Sin embargo para el optimizador, se han utilizado diferentes valores, pero el que mejor se comportaba es el optimizador adam , debido a que la función de pérdida y la función de precisión, tienen un mayor relación y la distribución es más representativa, ya que por ejemplo con el optimizador rmsprop , la función de pérdida alcanzaba picos en el entrenamiento del modelo, y los valores no eran demasiado buenos, como podemos observar en la siguientes gráficas. Figura 4.8: Función de pérdida con el optimizador Rmsprop
Desarrollo del trabajo de investigación 32 Figura 4.9: Función de pérdida con el optimizador Adam Por otro lado, también se han probado una combinación de diferentes valores en el hiperparámetro “épocas”. Debido a que tenemos una gran cantidad de datos, y con un grado alto de similitud entre ellos, no podemos utilizar un número elevado de las mismas debido a que podríamos encontrarnos con el problema del sobreajuste o sobreentrenamiento. Esto quiere decir cuando se modela los datos de entrenamiento demasiado bien, aprendiendo detalles de estos que no son generales. Esto es debido a que sobreentrenamos nuestro modelo y éste estará considerando como válidos solo los datos idénticos a los de nuestro conjunto de entrenamiento, incluidos sus defectos. Por tanto, los mejores valores para este hiperparámetro son entre 5 y 12. También, debemos destacar los mejores valores estudiados para el tamaño del lote. Éstos deben de ser valores medianamente elevados, debido a que el volumen de datos disponibles son muchos, y si el tamaño del lote es pequeño, el entrenamiento de cada modelo puede tardar demasiado. Es por ello que los valores aproximados que se utilizarán para evaluar el modelo serán 512 y 1024, dependiendo del volumen de datos que tengan los conjuntos de entrenamiento y test.
5: Conclusiones y líneas de trabajo futuras 5.1. Conclusiones Este trabajo expone una forma concreta de realizar una autenticación de usuarios, a través de la interacción de los mismos con la manilla de una puerta, mediante la creación de modelos basados en técnicas de Deep Learning. Son varias las contribuciones de este trabajo de investigación en el ámbito descrito. En primer lugar, hasta donde podemos saber, este es el primer estudio que emplea modelos de redes neuronales profundas para realizar una autenticación de usuarios a través del mecanismo de apertura de una puerta, demostrando un rendimiento bastante bueno frente a otro tipo de técnicas de autenticación como son los algoritmos tradicionales de Machine Learning. En segundo lugar, hemos realizado una investigación completa, acerca de las mejores técnicas, y de la mejor combinación de valores de los parámetros utilizados en las redes neuronales profundas, además de probar el funcionamiento de los modelos basados en redes neuronales recurrentes, utilizando LSTM como capa principal en los mismos. Por otro lado, también se ha realizado una preparación de datos para poder adapatarlos a los modelos de las redes neuronales utilizadas, así como una investigación sobre el origen de los mismos, y de las características que s epodían aportar para que los modelos utilizados obtuvieran un mejor rendimiento. Además de ello, se ha propuesto un enfoque similar para el problema planteado por J. Vegas y C. LLamas [ 7 ], en su trabajo sobre la autenticación de usuarios, empleando en este estudio técnicas de Deep Learning, en vez de algoritmos más clásicos propios de Machine Learning. 39
Conclusiones y líneas de trabajo futuras 40 En particular, se ha demostrado además cómo es el rendimiento de los diferentes modelos de redes neuronales profundas en relación con los conjuntos de datos utilizados y con el número de datos de entrada de los mismos, obteniendo un buen rendimiento para conjuntos de datos inferiores al millón de registros, con resultados de accuracy de 97.27%, o f1 Score de 97.01%. Por otro lado, también se ha llegado a la conclusión de que los algoritmos de Deep Learning ofrecen mejores tasas de precisión que los algoritmos de Machine Learning clásicos recogidos en el artículo [ 7 ], demostrando así su gran potencial para realizar tareas de autenticación utilizando diferentes tipos de patrones de comportamiento. 5.2. Limitaciones y trabajo futuro Este estudio presenta algunas limitaciones que pueden considerarse como trabajo futuro. En primer lugar, destacar que el estudio se ha centrado en realizar una clasificación de usuarios, para obtener las mejores técnicas y características sobre los modelos que se deden de aplicar en una autenticación de usuarios. Esta clasificación se ha realizado en un entorno local, disponiendo de una cantidad limitada de datos. Por tanto, para poder afirmar las conclusiones descritas en este artículo, deberíamos recabar más información, y no sólo realizar un modelo en un contexto cerrado, si no que se permita realizar una autenticación con un mayor número de usuarios. Por otro lado, otra de las limitaciones del estudio es que no se ha probado en una situación real, por tanto debemos de utilizar las técnicas y plataformas de adquisición de datos usadas en el trabajo previo a este estudio para determinar el comportamiento del modelo en un marco real de ejecución. Además, para poder poner en práctica las técnicas utilizadas en este estudio, es necesario plantear un sistema de control de acceso en tiempo real, que nos permita realizar una autenticación de usuarios al instante, o a pocos segundos de la interacción del usuario con la manilla de la puerta, ya que las técnicas utilizadas no permiten realizarlo, debido a la gran cantidad de tiempo empleado por los modelos para evaluación de los mismos, y comprobar su funcionamiento con un conjunto pequeño de datos. Finalmente, para poder plantear el escenario anterior, debemos de recurrir a técnicas más avanzadas de adquisición y computación de datos, utilizando computación en la nube, u entornos con gran capacidad de cálculo para que, cuando un usuario interactúe con el mecanismo, el sistema sea capaz de autenticarlo correctamente en un periodo de tiempo relativamente bajo, y que el usuario no tenga que estar esperando una respuesta por parte del sistema durante mucho tiempo. Este tipo de solución incluiría técnicas más avanzadas de procesamiento de datos, además de modelos de sistemas en tiempo real, conectado con un dispositivo de adquisición de datos más potente, es decir, la elaboración de un sitema completo para realizar la autenticación de usuarios con la información que se ha expuesto en este artículo.
Apéndices 41
Apéndice A Plan de Proyecto Para poder afrontar de manera correcta el proyecto, se ha llevado a cabo una planificación del mismo, en la que podremos distinguir diferentes fases de la planificación. A.1. Introducción El enfoque que vamos a tener en cuenta para el trabajo de investigación será el de “Desarrollo en cascada”. Siendo uno de los modelos clásicos de desarrollo del sistema, puede ser muy favorable para el proyecto, debido a que en cada fase de la planificación, y a medida que avanza el proyecto, este modelo crea comprobaciones para verificar que se han cumplido los requisitos establecidos en el primer momento. Los jefes del proyecto al final de cada fase, además de las personas encargadas del desarrollo, son los encargados de revisar el progreso del mismo e identificar si el trabajo realizado es válido, habiéndose cumplido los requisitos establecidos. En este trabajo, podemos distinguir diferentes fases: Investigación. En esta actividad se han realizado labores específicas de investigación relacionadas con el Deep Learning y las Redes Neuronales, como su funcionamiento, qué tipos de datos admiten, etc. Preparación del entorno. En esta actividad se ha planteado un entorno de trabajo local y flexible para poder trabajar con los datos de manera cómoda y ordenada, por ello era necesario establecer un entorno de trabajo óptimo que nos permitiera la mejor manera de manipulación de los datos con los que hemos trabajado. Exploración de datos. En este punto se han estudiado los datos del conjunto original, los tipos con los que estaban guardados los datos,y que ltareas de preparación debían de realizarse sobre ellos. Adaptación de datos. Esta actividad se basa en la adaptación de los datos a las redes neuronales más conocidas, teniendo como primer ejemplo el algoritmo LSTM. 42
Apéndice A. Plan de Proyecto 43 Pruebas iniciales. Además de la adaptación de los datos y la limpieza de los mismos, también se ha realizado una pequeña prueba para comprobar la efectividad del algoritmo LSTM con los datos del corpus, sin realizar ningún tipo de modificación. Estudio y evaluación de parámetros. Esta tarea ha consistido en realizar una investigación profunda acerca de los mejores valores para los parámetros de las redes neuronales, además de ir comprobando su funcionamiento en un modelo de red neuronal profunda. Elaboración y evaluación de los modelos finales. Esta actividad se compone de las evaluaciones con diferentes métricas de rendimiento, realizadas sobre los diferentes modelos creados, con las características estudiadas en la actividad anterior. A.2. Planificación temporal La planificación temporal que se ha planteado en el proyecto la podemos observar en la Tabla A.1. Actividad Duración Investigación 7 días Preparación del entorno 7 días Exploración de datos 14 días Adaptación de datos 7 días Pruebas iniciales 7 días Estudio/Evaluación de parámetros 14 días Elaboración/Evaluación modelos finales 14 días Tabla A.1: Estimación de la duración de las actividades de la estancia en el GIR Podemos destacar como las operaciones que más trabajo suponen son la exploración de datos, el estudio y evaluación de parámetros, y la elaboración/evaluación de modelos finales, debido a que tienen un peso mayor sobre el desarrollo, y debemos de estimar con el tiempo suficiente para que las tareas estén completadas antes de empezar con la siguiente, y comprobar que todos los objetivos de cada una se han cumplido al final de las mismas.
Apéndice A. Plan de Proyecto 44 A.3. Estudio de viabilidad Antes de realizar un proyecto, debemos de analizar si es posible su ejecución y desarrollo. Por ello, debemos de realizar un estudio sobre la viabilidad del mismo, indicando los motivos principales de por qué el desarrollo de este estudio es viable. Debemos destacar que este estudio es una solución alternativa al trabajo realizado por J. Vegas y C. LLamas [ 7 ], en el que la hipótesis principal se centra en si la forma en que un usuario interactúa con una manija de puerta es adecuada para ser utilizada en la tarea de identificación, utilizando técnicas clásicas de Machine Learning. Afirmando esta hipótesis, obteniendo resultados favorables del área bajo la curva (AUC), con unos valores en torno a 0.90, podemos concluir en que existe la posibilidad de realizar una solución alternativa, implementando algoritmos y técnicas propias de Deep Learning, que es en lo que se centrará este estudio, con el objetivo principal de desarrollar un modo de identificación de individuos, mediante la interacción de los mismos con el dispositivo de apertura de una puerta. Viabilidad económica Respecto a la viabilidad económica del estudio, debemos decir que al tratarse de un trabajo donde se ha trabajado con datos e información ya adquiridos, y que estaban en poder del grupo de investigación, no ha sido necesario adquirir ningún elemento que suponga costes en el trabajo, además de que todos los recursos utilizados, tanto las herramientas de desarrollo como las librerías, son de código abierto y están accesibles para cualquier persona que quiera utilizarlos.
Apéndice B Documentación del Desarrollador En este apéndice se incluye la documentación necesaria para que el desarrollador de aplicaciones pueda comprender la estructura de la solución software aportada y poder modificarla lo que sea necesario para conseguir la solución al problema. B.1. Introducción El código del proyecto se encuentra en el repositorio de github https://github.com/ aitorojeda/DatosTFM.git , organizado en 2 directorios diferentes: Ficheros de datos, donde podremos encontrar los datos que se han usado en el trabajo; y Ficheros de código, donde encontraremos los ficheros de código utilizados para el desarrollo del mismo. Como ya se ha explicado en la Sección 4.1, el entorno que se ha utilizado para el desarrollo ha sido Anaconda Navigator. Se trata de un entorno local que nos permite explotar los recursos disponibles en nuestra máquina personal sin necesidad de recurrir a recursos de terceros o utilizar software en la nube, con todas las restricciones de recursos que eso supone. Además de dicho entorno, se utilizará conjuntamente Jupyter y Pyspark, que son las herramientas fundamentales para el desarrollo del trabajo, y con las que se han podido realizar todas las tareas asociadas al trabajo. A continuación, se explicarán los pasos de manera más detallada para poner a punto el entorno local, y comenzar a ejecutar el código desarrollado. Es importante que antes de realizar la instalación, este descargada e instalada la última versión de Python, ya que es el lenguaje que se ha utilizado en el desarrollo del trabajo. 45
Apéndice B. Documentación del Desarrollador 46 Descarga e instalación del entorno Para descargar el entorno, debemos de seguir los siguientes pasos: Lo primero que debemos de hacer es dirigirnos a nuestro navegador, y buscar “Descargar Anaconda Navigator” , donde haremos click en el primer enlace. Una vez dentro de la página, elegiremos el instalador apropiado para nuestro sistema operativo, (Windows, MAC, Linux), y descargaremos el instalador. Con el instalador ya descargado, lo abrimos, y seguimos los pasos y las instrucciones de la guía de instalación, para completar la instalación del entorno. Lo primero que debemos de hacer es dirigirnos a nuestro navegador, y buscar “ Descargar Anaconda Navigator” , donde haremos click en el primer enlace. Una vez dentro de la página, elegiremos el instalador apropiado para nuestro sistema operativo, (Windows, MAC, Linux), y descargaremos el instalador. Cuando éste se haya descargado, lo abriremos y seguiremos los diferentes pasos que nos aparecen en la guía para completar la instalación. Por último, si abrimos la aplicación, en la Figura B.1 podemos observar la imagen de la interfaz principal de la misma. Figura B.1: Interfaz de inicio de la aplicación Anaconda.
Apéndice B. Documentación del Desarrollador 47 Creación de un entorno de trabajo Con el entorno ya descargado e instalado, debemos abrirlo y crear un entorno de trabajo, en vez de utilizar el entorno que aparece por defecto, debido a que podemos realizar diferentes tipos de trabajos, y tener en cada uno instaladas librerías diferentes. Para ello, debemos abrir Anaconda, pinchar en la sección “Environments”, y hacer click en el icono de “Create”. Nos aparecerá una pestaña nueva, en la que podremos elegir el Lenguaje (Python 3.8), y el nombre que le pondremos al entorno. Una vez hecho, le daremos a “Create” y esperaremos a que se instalen todas las dependencias necesarias en el nuevo entorno. Para finalizar, nos dirigiremos a la página de inicio de la herramienta, e instalaremos todos los módulos que vayamos a utilizar en el desarrollo del proyecto (Jupyter, Pycharm, Spyder, etc), en este caso, solo haremos la instalación de Jupyter, y al finalizar, ya podremos crear o modificar ficheros para comenzar a trabajar. Instalación de los componentes necesarios Para el desarrollo de este trabajo, ha sido necesario realizar la instalación de diversas librerías y herramientas propias de Python y de Deep Learning, por tanto, vamos a explicar los pasos necesarios y los comandos específicos para su instalación. Buscamos en nuestro equipo la consola de comandos de Anaconda: Anaconda Prompt, y la abrimos para introducir una serie de comandos. A continuación, elegimos el entorno creado: conda activate <nombre del entorno> Una vez dentro de nuestro entorno, instalamos las librerías numpy, matplotlib, scipy, pandas ysklearn utilizando el comando: conda install <nombre librería> Comprobamos que se han instalado utilizando el siguiente comando: conda list También, debemos instalar Pyspark para utilizar algunas funciones que incluye la herramienta, simplemente deberíamos instalar el paquete (pyspark) con el comando mostrado anteriormente. Por último, instalamos las librerías de Deep Learning necesarias, que son tensorflow ykeras. Una vez se han instalado todas las librerías y herramientas necesarias, ya se puede empezar a trabajar en el desarrollo del código.
Apéndice B. Documentación del Desarrollador 48 B.2. Ejecución del código desarrollado Una vez ya tenemos montado todo nuestro entorno de trabajo, para ejecutar el código, podemos realizarlo de 2 maneras diferentes: Ejecución desde Jupyter online. Para ejecutar el código sin necesidad de descargar ningún tipo de software, debemos de seguir los siguientes pasos: 1Buscar en el navegador “Jupyter notebook online” y hacer click en la primera página. 2Hacer click en el apartado “Try Jupyter Lab”. 3 Cuando se haya iniciado el repositorio, justo debajo de la barra de herramientas, hacer click en el icono “Upload Files”, elegir el fichero de código que vayamos a utilizar y, una vez se haya cargado, ya podremos comenzar a editar y ejecutar el código. Ejecución desde Jupyter desde el entorno local. Como ya hemos configurado un entorno, podemos empezar a ejecutar el código de desarrollo siguiendo los siguientes pasos: 1 Abrir anaconda navigator, y en la pestaña de “Environments”, hacer click en el entorno que se ha creado para el desarrollo. 2 Una vez cargado el entorno, elegiremos la herramienta Jupyter y esperaremos a que aparezca una ventana del navegador donde se haya cargado la herramienta. 3 Con la herramienta ya cargada, elegiremos el fichero a ejecutar de nuestra estructura de ficheros local, y ya podremos consultar, modificar, y ejecutar por módulos (o de manera completa) el código de desarrollo.