• No se han encontrado resultados

Estudio y análisis de las arquitecturas de redes neuronales aplicadas a agentes conversacionales

N/A
N/A
Protected

Academic year: 2020

Share "Estudio y análisis de las arquitecturas de redes neuronales aplicadas a agentes conversacionales"

Copied!
136
0
0

Texto completo

(1)UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA Y DISEÑO INDUSTRIAL Grado en Ingeniería Electrónica y Automática Industrial TRABAJO FIN DE GRADO ESTUDIO Y ANÁLISIS DE LAS ARQUITECTURAS DE REDES NEURONALES APLICADAS A AGENTES CONVERSACIONALES Mario Rodríguez Cantelar. Cotutor (si lo hay): Departamento:. Tutor: Pablo San Segundo Carrillo Departamento: Ingeniería Electrónica y Automática. Madrid, Septiembre de 2018.

(2)

(3) UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA Y DISEÑO INDUSTRIAL Grado en Ingeniería Electrónica y Automática Industrial TRABAJO FIN DE GRADO ESTUDIO Y ANÁLISIS DE LAS ARQUITECTURAS DE REDES NEURONALES APLICADAS A AGENTES CONVERSACIONALES. Firma Autor. Firma Cotutor (si lo hay). Firma Tutor.

(4)

(5) v Copyright ©2018. Mario Rodríguez Cantelar Esta obra está licenciada bajo la licencia Creative Commons Atribución-NoComercial-SinDerivadas 3.0 Unported (CC BY-NC-ND 3.0). Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by-nc-nd/3.0/deed.es o envíe una carta a Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, EE.UU. Todas las opiniones aquí expresadas son del autor, y no reflejan necesariamente las opiniones de la Universidad Politécnica de Madrid..

(6)

(7) vii. TÌtulo: Estudio y Análisis de las Arquitecturas de Redes Neuronales Aplicadas a Agentes Conversacionales Autor: Mario Rodríguez Cantelar Tutor: Pablo San Segundo Carrillo. EL TRIBUNAL Presidente: Vocal: Secretario:. Realizado el acto de defensa y lectura del Trabajo Fin de Grado el día ....... de .................... de ... en .........., en la Escuela Técnica Superior de Ingeniería y Diseño Industrial de la Universidad Politécnica de Madrid, acuerda otorgarle la CALIFICACIÓN de:. VOCAL. SECRETARIO. PRESIDENTE.

(8)

(9) Agradecimientos En primer lugar, quiero mostrar mi agradecimiento a la Universidad Politécnica de Madrid por estos años en los que he disfrutado aprendiendo. A mi tutor del trabajo, Pablo San Segundo Carrillo, quiero agradecerle el apoyo y el haberme otorgado la oportunidad de poder realizar un proyecto que me ha apasionado. dedicación que me ha dado durante los últimos meses. A Francisco Ruzafa Costas, le agradezco todo el apoyo que me ha brindado, el tiempo que me ha dedicad desde el inicio del proyecto y todo lo que he aprendido de él, sin su ayuda esto no habría sido posible. A mi familia, amigos y pareja tengo que darles las gracias por el apoyo que me han dado. Siempre que los he necesitado, he podido contar con ellos.. I want the world to be better because I was here. -Willard C. Smith. ix.

(10)

(11) Resumen La comunicación entre personas es uno de los aspectos más importantes para la sociedad y, más concretamente, el lenguaje es uno de los principales medios para el entendimiento. En este proyecto, vamos a ahondar sobre el Procesamiento del Lenguaje Natural Procesamiento del Lenguaje Natural (NLP), encargado de la conversación hombre-máquina. Este concepto ha crecido ampliamente durante los últimos 10 años debido a sus diversas aplicaciones, tales como los agentes conversacionales, los cuales se encargan de analizar y contextualizar una frase de entrada y poder ofrecer la respuesta más acertada posible. Los agentes conversacionales más avanzados están siendo estudiados para conseguir poder desenvolverse en cualquier circunstancia, ambiente o idioma en una conversación con personas de todo el mundo. Los estudios más punteros están estudiando las emociones como posible incorporación en el mundo de los agentes conversacionales, haciendo más natural la conversación y también ayudando en campos como el de la salud, por ejemplo, como apoyo psicológico. Más brevemente, un agente conversacional puede ser entendido fácilmente como un programa que simula las conversaciones humanas, aportando respuestas previamente aprendidas ante una entrada realizada por un humano. Los agentes conversacionales están en auge actualmente, siendo muy habitual poder interaccionar con uno en ambientes controlados. A fin de implementar apropiadamente los agentes conversacionales, diferentes técnicas de aprendizaje profundo han de ser usadas. De este modo, los agentes conversacionales usan redes y modelos de aprendizaje profundo para generar sus salidas, con resultados muy prometedores. En este proyecto vamos a estudiar uno de ellos, el modelo de agente conversacional Retrieval-Based, compuesto de una Red Neuronal Recurrente, a su vez formada por neuronas de tipo LSTM (Long Short Term Memory Network). Durante el estudio se llevará a cabo por una parte, un análisis teórico, en el que se estudiarán tanto la arquitectura como los parámetros que definen este tipo de redes; y por otra parte, un análisis práctico, evaluando su funcionamiento y el impacto de los parámetros en el mismo. Aunque los agentes conversacionales se ha estudiado en profundidad y abordado sus principales debilidades, todavía no están completamente maduros. Hemos identificado que los principales problemas provienen de la limitación y rigidez en las respuestas, así como de los errores en las respuestas y su apariencia automática, que es intrínsecamente antinatural. Por lo tanto, una parte importante de la comu-. xi.

(12) xii. Capítulo 0. Resumen. nidad investigadora está trabajando en cómo hacer que las conversaciones sean más naturales y resulten más atractivas para los interlocutores humanos. El objetivo de este proyecto es el estudio de todos los parámetros que influyen en los agentes conversacionales, comúnmente llamados chatbots. El proyecto está cimentado en un agente conversacional basado en un encoder dual de LSTM para la generación de respuestas automáticas de diálogo. El dataset escogido es el Ubuntu Dialog Corpus Ubuntu Dialog Corpus (UDC) debido a su extensión y a su carácter de dominio público. La razón por la que se usa el modelo Dual Encoder es porque su viabilidad como agente conversacional ha sido demostrada y los resultados a replicar son superiores a otros modelos de redes neuronales recurrentes. Las herramientas empleadas para el desarrollo y análisis han sido, TensorFlow para implementación y el entrenamiento del código, y TensorBoard para una fácil visualización de los datos obtenidos. Todo el proyecto está escrito en el lenguaje de programación Python. La herramienta TensorFlow es, hoy por hoy, la más utilizada en el campo del aprendizaje profundo por la enorme cantidad de posibilidades que ofrece como la facilidad de uso, una extensa documentación y una gran comunidad de programadores. Algunos ejemplos directos de vanguardia de esta herramienta, en relación a este proyecto son Google’s Smart Reply o Google Translate. El modelo Retrieval-Based aporta la ventaja de poder relacionar y comparar un contexto de entrada con una respuesta de salida, y asignarle un vector a estas relaciones, el cual en función de su tamaño nos dirá la calidad de la respuesta en relación a la entrada. En cuanto a las neuronas de tipo LSTM usadas en el modelo son muy adecuadas por la memoria de contexto que presentan durante la conversación, dándonos una mejora significativa en los resultados a la hora de conversar con el agente conversacional. Un poco más detalladamente, un agente conversacional se divide en dos fases: la primera se convierte el dataset en un vocabulario, donde cada palabra está representada por un vector numérico; la segunda, se divide el dataset y se entrena una red con frases de entrada y de respuesta, donde las frases en lugar de estar formadas por palabras (strings), están formadas por vectores que representan palabras (word embedding) para optimizar el coste computacional. Después de entrenar el modelo se estima la calidad del mismo mediante métricas de evaluación. Algunos de los parámetros generales más destacables de un agente conversacional son el número de capas y neuronas por capa (siendo esta una matriz) que se usa en red neuronal, estos determina la capacidad de aprendizaje de la misma, la tasa de aprendizaje nos indica la velocidad con que convergerá la red hacia el ratio de solución, el tamaño del batch (lote) nos dice la cantidad de frases de entrada que compara en cada step (iteración) en su aprendizaje y, por último, la función de coste (pérdidas) calculada a lo largo del entrenamiento para ver lo que se asemeja la solución predicha a la real. Palabras clave: agente conversacional, modelo retrieval-based, conversación, LSTM, red neuronal recurrente, tensorflow, tensorboard, machine learning, deep learning, inteligencia artificial..

(13) Abstract Communication between people is one of the most important aspects for society and more specifically the language is one of the main means for understanding. In this project we are going to delve into the concept of Natural Language Processing (NLP), which is in charge of the human-machine conversation. This concept has widely grown during the last 10 years due to its diverse applications, such as conversational agents, which are the responsible of analyzing and contextualizing an input phrase and are able to offer the most accurate answer. The most advanced conversational agents are being studied in order to enable its usage in any circumstance, in environment or language in a conversation with people from all over the world. Most novel works in the literature are studying emotions as a possible incorporation in the world of conversational agents, making conversation more natural and also helping in fields such as health, for example, as psychological support. Summarizing, a conversational agent can be understood easily as a software that simulates human conversations, providing previously learned answers to an input made by a human. Conversational agents are currently very popular, nowadays it is greatly common to interact with one in controlled environments. In order to properly implement a conversational agent, several deep learning techniques are required. In this way, conversational agents rely on networks and models to generate their outputs, with very promising results. In this project we are going to use specific type of conversational agent model, the Retrieval-Based conversational agent model, composed of a Recurrent Neural Network, in turn consists of LSTM (Long Short Term Memory network) neurons. In this project, a theoretical analysis is carried out, on the one hand, which will study both the architecture and the parameters that define this type of networks; and on the other hand, a practical analysis is performed by evaluating its functionality and the impact of the parameters in it. Although conversational agents have been studied in depth, and their main weaknesses have been addressed, they are still not completely mature. We have identified that the main problems come from the limitation and rigidity in the answers, as well as the answering errors and their automatic appearance, which is inherently unnatural. Thus, an important part of the research community is working on how to make conversations more natural and more attractive to human interlocutors. The objective of this project is the study of all the parameters that influence the conversational agents, commonly called chatbots. The project is founded on xiii.

(14) xiv. Capítulo 0. Abstract. a conversational agent based on a dual LSTM encoder has been used to generate automatic dialogue responses. We have chosen the Ubuntu Dialog Corpus (UDC) dataset for our dialogue responses, as it is one of the largest public dialog datasets available. The reason why the Dual Encoder model is used is because its viability as a conversational agent has been reported and the results to be replicated are higher to other models of recurrent neural networks. The tools used for programming and analysis were TensorFlow for the implementation and training of the code and TensorBoard for an easy visualization of the obtained data. The whole project is written in the programming language Python. Currently, the most used tool in the field of deep learning is TensorFlow, because of the large number of possibilities offered, the ease of use and has extensive documentation and a large community of programmers. Some cutting-edge direct examples of this tool, in relation to this project are Google’s Smart Reply or Google Translate. The Retrieval-Based model provides the advantage of being able to relate and compare an input comment with an output response, and assign this relationship to a vector, which according to its size will tell us the quality of the response in relation to the input. As for the LSTM neurons used in the model, they are very suitable for the context memory they present during the conversation, giving us a significant improvement in the results when talking with the conversational agent. A little more in detail, a conversational agent is divided into two phases: the first one turns the dataset into a vocabulary, where each word is represented by a numerical vector; the second, divide the dataset and train a network with input and response phrases, where the sentences instead of being composed of words (strings), are composed of vectors that represent words (word embedding) to optimize the computational cost. After training the model the quality of the model is estimated through evaluation metrics. Some of the most remarkable general parameters of a conversational agent are the number of layers and neurons per layer (this being a matrix) that is used in the neural network, these determine their learning capacity, the learning rate tells us the speed with which the network will converge towards the solution ratio, the size of the batch tells us the number of input phrases that it compares in each iteration or step in its learning and finally the cost or loss function that is calculated along the training to know how much the predicted solution resembles the real one.. conversational agent, retrieval-based model, conversation, LSTM, recurrent neural network, tensorflow, tensorboard, machine learning, deep learning, artificial intelligence.. Keywords:.

(15) Índice general Agradecimientos. ix. Resumen. xi. Abstract. xiii. 1 Introducción 1.1 Motivación del proyecto . 1.2 Objetivos . . . . . . . . . 1.3 Materiales utilizados . . . 1.4 Estructura del documento. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. 2 Estado del arte 2.1 Procesamiento del Lenguaje Natural (NLP) . . . . . . . . . . . . 2.1.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 Sistemas basados en Reglas . . . . . . . . . . . . . . . . . . 2.1.3 Machine learning . . . . . . . . . . . . . . . . . . . . . . . 2.1.4 Algoritmos de Machine Learning . . . . . . . . . . . . . . . 2.1.5 Deep learning o Aprendizaje Automático (DL) . . . . . . . 2.1.6 Redes neuronales recurrentes (RNN) . . . . . . . . . . . . . 2.1.7 Topología: Arquitectura y disposición neuronal de las RNN 2.2 Gestión del diálogo: Redes LSTM . . . . . . . . . . . . . . . . . . 2.2.1 Historia y actualidad . . . . . . . . . . . . . . . . . . . . . 2.2.2 El problema de las dependencias a largo plazo . . . . . . . 2.2.3 LSTMs RNN . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4 Variantes en las LSTM . . . . . . . . . . . . . . . . . . . . 2.2.5 Futuro de las LSTMs RNN . . . . . . . . . . . . . . . . . . 2.3 Agentes conversacionales . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Clasificación general . . . . . . . . . . . . . . . . . . . . . . 2.4 Taxonomía de los modelos: Tipos de agentes conversacionales . . 2.4.1 Retrieval-Based bots vs. Generative bots . . . . . . . . . . 2.4.2 Conversaciones largas vs. cortas . . . . . . . . . . . . . . . 2.4.3 Dominio abierto, semiabierto y cerrado . . . . . . . . . . . 3 Marco Teórico 3.1 LSTM: Modelo basado en recuperación y algoritmos . . . 3.2 Dataset: Ubuntu Dialog Corpus (UDC) . . . . . . . . . . 3.3 Word embedding . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 Modelo del word embedding: GloVe . . . . . . . . . 3.3.2 Representación del word embedding: t-SNE y PCA . xv. . . . . .. . . . . .. . . . . .. . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .. 1 1 2 2 3. . . . . . . . . . . . . . . . . . . . .. 5 5 5 6 6 7 10 12 13 14 14 15 16 17 18 18 19 19 19 21 21. . . . . .. 23 23 25 26 28 28.

(16) Índice general. xvi. 3.4 Fundamentos teóricos del modelo Dual Encoder LSTM . . 3.4.1 Funcionamiento del modelo . . . . . . . . . . . . . . 3.4.2 Arquitectura del modelo . . . . . . . . . . . . . . . 3.4.3 Parámetros de la red . . . . . . . . . . . . . . . . . 3.4.4 Entrenamiento de la red: Conceptos generales . . . . 3.4.5 Función de puntuación de las predicciones: Recall@k 3.5 Herramientas y metodología . . . . . . . . . . . . . . . . . 3.5.1 Sistema operativo . . . . . . . . . . . . . . . . . . . 3.5.2 Gestor de entornos . . . . . . . . . . . . . . . . . . 3.5.3 Control de versiones . . . . . . . . . . . . . . . . . . 3.5.4 Lenguaje de programación . . . . . . . . . . . . . . 3.5.5 Entorno de Desarrollo Integrado (IDE) . . . . . . . 3.5.6 Biblioteca . . . . . . . . . . . . . . . . . . . . . . . 3.5.7 Librerías . . . . . . . . . . . . . . . . . . . . . . . . 3.5.8 Administrador de archivos . . . . . . . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . .. 31 31 32 34 34 39 40 40 41 41 42 42 44 44 46. 4 Desarrollo del proyecto 4.1 Archivos y ficheros . . . . . . . . . . . 4.2 Preprocesamiento de los datos . . . . . 4.3 Función de entrada . . . . . . . . . . . 4.4 Creando el modelo . . . . . . . . . . . 4.5 Entrenamiento, validación y evaluación 4.6 Métrica de evaluación: Recall@k . . . 4.7 Predicciones: Evaluar el modelo . . . . 4.8 Grafo del modelo . . . . . . . . . . . .. . . . . . . . . del . . . . . .. . . . . . . . . . . . . . . . . . . . . modelo . . . . . . . . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. 49 49 50 51 52 53 55 57 59. 5 Resultados y discusión 5.1 Resultados . . . . . . . . . . . . 5.2 Entrenamiento, validación y test 5.2.1 Grupo 1: Train 1, 2 y 3 . . 5.2.2 Grupo 2: Train 4 y 5 . . . 5.2.3 Grupo 3: Train 6 y 7 . . . 5.2.4 Grupo 4: Train 8 y 9 . . . 5.2.5 Grupo 5: Train 10, 11 y 12 5.2.6 Grupo 6: Train 13 y 14 . . 5.2.7 Grupo 7: Train 15, 16 y 17 5.2.8 Grupo 8: Train 18 y 19 . . 5.2.9 Grupo 9: Train 20 y 21 . . 5.3 Resultados con PCA y t-SNE . . 5.3.1 Representación en PCA . . 5.3.2 Representación en t-SNE . 5.4 Predicciones: Evaluar el modelo . 5.5 Discusión . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. 63 63 65 65 66 68 69 70 72 74 75 77 79 79 80 86 88. 6 Gestión del proyecto 6.1 Ciclo de vida . . . . . . . . . 6.2 Planificación . . . . . . . . . 6.2.1 Planificación temporal 6.2.2 Planificación inicial . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. 91 91 93 93 93. . . . .. . . . ..

(17) Índice general. 6.2.3 Planificación final . 6.3 Presupuesto . . . . . . . . 6.3.1 Personal . . . . . . 6.3.2 Material . . . . . . 6.3.3 Resumen de costes .. xvii. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. 93 95 95 95 96. 7 Conclusiones y líneas futuras 97 7.1 Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 7.2 Líneas futuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 7.2.1 Desafíos comunes . . . . . . . . . . . . . . . . . . . . . . . . . . 98 A Anexo documentación. 101. B Anexo cursos. 103. C Entorno socio-económico. 105. Acrónimos. 107. Bibliografia. 109.

(18)

(19) Índice de figuras 2.1 2.2 2.3 2.4 2.5 2.6 2.7. Arquitectura de una red neuronal simple y profunda. [1] . . . . . . . . Arquitectura de una red neuronal recurrente. [2] . . . . . . . . . . . . . Arquitectura de una red neuronal recurrente genérica. [3] . . . . . . . . Representación del problema en las largas dependencias en una RNN. [2] Arquitectura interna de una red neuronal recurrente de tipo LSTM. [2] Notación de la red neuronal recurrente de tipo LSTM. [2] . . . . . . . Arquitectura de una red neuronal recurrente de tipo Seq2Seq para traducciones. [4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3.1 Disposición datos de entrenamiento del archivo en formato CSV. [5] . 3.2 Disposición datos de evaluación y evaluación del archivo en formato CSV. [5] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Relación lineal de Word embedding. [6] . . . . . . . . . . . . . . . . . 3.4 Visualización t-SNE de palabras embebidas. Izquierda: Región números; Derecha: Región de empleos. [7]. . . . . . . . . . . . . . . . . . . 3.5 Visualización t-SNE del espacio de palabras semánticas. [8] . . . . . . 3.6 Visualización PCA. Los datos normalizados y proyectados después de PCA, no perpendicularmente. [9] . . . . . . . . . . . . . . . . . . . . 3.7 Visualización PCA. Los datos normalizados y proyectados después de PCA, perpendicularmente. [9] . . . . . . . . . . . . . . . . . . . . . . 3.8 Visualización PCA. Los datos normalizados y proyectados después de PCA en 2D. [10] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9 Visualización PCA vs. t-SNE. Agrupamiento en 2 dimensiones usando t-SNE vs PCA. [11] . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.10 Arquitectura interna de una LSTM de tipo Dual Encoder. [5] . . . . 3.11 Visualización gráfica del Descenso del Gradiente. [12] . . . . . . . . . 3.12 Variación de la tasa de aprendizaje. . . . . . . . . . . . . . . . . . . . 3.13 Tux, logotipo de Linux. . . . . . . . . . . . . . . . . . . . . . . . . . 3.14 Logotipo de Anaconda. . . . . . . . . . . . . . . . . . . . . . . . . . 3.15 Logotipo de GitHub. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.16 Logotipo de Bitbucket. . . . . . . . . . . . . . . . . . . . . . . . . . . 3.17 Logotipo de Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.18 Logotipo de Pycharm IDE. . . . . . . . . . . . . . . . . . . . . . . . 3.19 Logotipo de Visual Studio Code. . . . . . . . . . . . . . . . . . . . . 3.20 Logotipo de Gedit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.21 Logotipo de TensorFlow. . . . . . . . . . . . . . . . . . . . . . . . . . 3.22 Logotipo de Numpy. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.23 Logotipo de Pandas. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.24 Logotipo de TFLearn. . . . . . . . . . . . . . . . . . . . . . . . . . . xix. 11 12 13 15 16 16 20. . 26 . 26 . 27 . 28 . 29 . 29 . 30 . 30 . . . . . . . . . . . . . . . .. 31 32 36 36 40 41 41 42 42 42 43 43 44 45 45 45.

(20) xx. Índice de figuras. 3.25 Logotipo de Jupyter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.26 Logotipo de Google Colab. . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.1 Distribución directorios y archivos del proyecto. . . . . . . . . . . . . . 4.2 Gráfica que muestra las pérdidas respecto de los steps a lo largo del entrenamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Gráfica que muestra el recall@1 respecto de los steps a lo largo del entrenamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Predicción de un ejemplo del UDC, de la respuesta y los 9 distractores a una respuesta concreta. . . . . . . . . . . . . . . . . . . . . . . . . . 4.5 Predicción de un ejemplo introducido por el usuario. . . . . . . . . . . 4.6 Grafo que muestra el flujo de datos del modelo durante el entrenamiento. 4.7 Grafo que muestra el flujo de datos del modelo durante la evaluación. . 5.1 Pérdidas en los entrenamientos 4 y 5. . . . . . . . . . . . . . . . . . . 5.2 Recall@k en el Train 4. . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Recall@k en el Train 5. . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 Pérdidas Recall@10 para todos los entrenamientos. . . . . . . . . . . 5.5 Pérdidas en los entrenamientos 6 y 7. . . . . . . . . . . . . . . . . . . 5.6 Recall@k en el Train 6. . . . . . . . . . . . . . . . . . . . . . . . . . 5.7 Recall@k en el Train 7. . . . . . . . . . . . . . . . . . . . . . . . . . 5.8 Pérdidas en los entrenamientos 8 y 9. . . . . . . . . . . . . . . . . . . 5.9 Recall@k en el Train 8. . . . . . . . . . . . . . . . . . . . . . . . . . 5.10 Recall@k en el Train 9. . . . . . . . . . . . . . . . . . . . . . . . . . 5.11 Pérdidas en los entrenamientos 10, 11 y 12. . . . . . . . . . . . . . . 5.12 Recall@k en el Train 10. . . . . . . . . . . . . . . . . . . . . . . . . . 5.13 Recall@k en el Train 11. . . . . . . . . . . . . . . . . . . . . . . . . . 5.14 Recall@k en el Train 12. . . . . . . . . . . . . . . . . . . . . . . . . . 5.15 Pérdidas en los entrenamientos 13 y 14. . . . . . . . . . . . . . . . . 5.16 Recall@k en el Train 13. . . . . . . . . . . . . . . . . . . . . . . . . . 5.17 Recall@k en el Train 14. . . . . . . . . . . . . . . . . . . . . . . . . . 5.18 Pérdidas en los entrenamientos 15, 16 y 17. . . . . . . . . . . . . . . 5.19 Recall@k en el Train 15. . . . . . . . . . . . . . . . . . . . . . . . . . 5.20 Recall@k en el Train 16. . . . . . . . . . . . . . . . . . . . . . . . . . 5.21 Recall@k en el Train 17. . . . . . . . . . . . . . . . . . . . . . . . . . 5.22 Pérdidas en los entrenamientos 18 y 19. . . . . . . . . . . . . . . . . 5.23 Recall@k en el Train 18. . . . . . . . . . . . . . . . . . . . . . . . . . 5.24 Recall@k en el Train 19. . . . . . . . . . . . . . . . . . . . . . . . . . 5.25 Pérdidas Train 20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.26 Recall@k en el Train 20. . . . . . . . . . . . . . . . . . . . . . . . . . 5.27 Pérdidas Train 21. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.28 Recall@k en el Train 21. . . . . . . . . . . . . . . . . . . . . . . . . . 5.29 Representación PCA en 3D mostrando las agrupaciones por colores de cada punto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.30 Representación PCA en 3D mostrando las palabras de cada punto. . 5.31 Representación t-SNE en 2D con perplejidad 76. . . . . . . . . . . . 5.32 Representación t-SNE en 2D con perplejidad 76. . . . . . . . . . . . 5.33 Representación t-SNE en 3D con perplejidad 76. . . . . . . . . . . . 5.34 Representación t-SNE en 3D con perplejidad 76. . . . . . . . . . . .. 49 55 56 58 58 60 61. . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 66 67 67 67 68 69 69 70 70 70 71 72 72 72 73 73 73 74 75 75 75 76 76 76 77 78 78 79. . . . . . .. 79 80 81 81 82 82.

(21) Índice de figuras. 5.35 Representación t-SNE en 3D con perplejidad 100. . . . . . . . . . . . . 5.36 Representación t-SNE en 3D con perplejidad 100. . . . . . . . . . . . . 5.37 Representación t-SNE en 3D con perplejidad 38. . . . . . . . . . . . . 5.38 Representación t-SNE en 3D con perplejidad 5, iteración 700. . . . . . 5.39 Representación t-SNE en 3D con perplejidad 5, iteración 700. . . . . . 5.40 Representación t-SNE en 3D con perplejidad 5, iteración 1200. . . . . . 5.41 Predicción de una respuesta ante un contexto aleatorio del UDC. . . . 5.42 Predicción de una respuesta ante un contexto aleatorio del UDC. . . . 5.43 Predicción de una respuesta ante un contexto aleatorio del UDC. . . . 5.44 Predicción de una respuesta ante un contexto introducido por el usuario.. xxi. 83 83 84 84 85 85 86 86 87 87. 6.1 Estructura de descomposición del trabajo. . . . . . . . . . . . . . . . . 92 6.2 Estructura de descomposición del proyecto. . . . . . . . . . . . . . . . 94 7.1 Respuestas incoherentes de un modelo conversacional. [4] . . . . . . . . 99.

(22)

(23) Índice de tablas 5.1 Tabla de los parámetros de entrenamiento. . . . . . . . . . . . . . . . . 64 5.2 Tabla de resultados recall@k . . . . . . . . . . . . . . . . . . . . . . . . 78 6.1 Presupuesto del personal. . . . . . . . . . . . . . . . . . . . . . . . . . 95 6.2 Presupuesto del material. . . . . . . . . . . . . . . . . . . . . . . . . . 96 6.3 Presupuesto total. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96. xxiii.

(24)

(25) Capítulo 1. Introducción Este capítulo trata de la explicación de la idea principal del proyecto, los agentes conversacionales. Seguidamente se hablará de los objetivos principales y secundarios del proyecto. Después se citarán los materiales usados, tanto hardware como software. Finalmente se detallará el contenido de cada capítulo a desarrollar en este documento.. 1.1.. Motivación del proyecto. Este proyecto nace de la motivación de algún día poder mejorar la comunicación con inteligencias artificiales. Los agentes conversacionales son actualmente los métodos más utilizados para conversar con máquinas mediante el habla o la escritura. La comprensión de su funcionamiento es esencial para el futuro desarrollo de agentes conversacionales más inteligentes y funcionales. Se han estudiado los conceptos y algoritmos básicos del aprendizaje automático, redes neuronales y aplicaciones a tareas concretas. Posteriormente, se han analizado las arquitecturas más utilizadas en los agentes conversacionales, incluyendo los parámetros de la red, los parámetros de entrenamiento y los del propio agente conversacional. Desde hace unas décadas se han estudiado diferentes tipos de redes neuronales y modelos para la mejora de los agentes conversacionales, y con relativo éxito ahora podemos utilizar inteligencias artificiales como Google Assistant, Siri o Cortana mediante texto y voz, sin embargo aún distan de ser perfectos. El estudio de mejores algoritmos tanto en investigación como a nivel empresarial es ahora mismo uno de los sectores donde más se está trabajando, considerándose los agentes conversacionales un futuro bastante cercano. El Grupo de Control Inteligente del Departamento de Automática, Ingeniería Electrónica e Informática Industrial del Centro de Automática y Robótica (CSICUPM) en la Escuela Técnica Superior de Ingenieros Industriales de la Universidad 1.

(26) 2. Capítulo 1. Introducción. Politécnica de Madrid, es un claro ejemplo de la importancia que tiene la Inteligencia Artificial (AI) en el mundo de la investigación, usando aprendizaje automático para prácticamente todos los estudios que realizan. Junto a este laboratorio se ha llevado a cabo el estudio de este proyecto.. 1.2.. Objetivos. Los principales objetivos a cumplir durante el desarrollo del proyecto han sido los siguientes: Aprendizaje de conceptos y algoritmos básicos de aprendizaje automático. Aprendizaje de redes neuronales aplicadas a agentes conversacionales. Búsqueda, selección y tratamiento de datos de entrenamiento. Estudio del estado del arte a través de publicaciones relacionadas. Análisis y optimización de parámetros críticos de los modelos. Colaboración en líneas de investigación del Grupo de Control Inteligente. Adicionalmente, durante la evolución del estudio de los agentes conversacionales han ido apareciendo objetivos secundarios que se consideran de especial interés para la programación y análisis de los algoritmos. Dichos objetivos son los siguientes: Aprendizaje de herramientas como TensorFlow y TensorBoard. Aprendizaje del lenguaje de programación Python y las librerías Numpy y Scipy. Aprendizaje de Anaconda, generador de entornos y distribuciones de Python.. 1.3.. Materiales utilizados. Como hardware se ha usado un HP ProBook-6470b con procesador Intel i5 con CPU de 2,60 GHz y 8 GB de memmoria RAM. Como sistema operativo se ha utilizado Linux, concretamente Ubuntu 16.04 LTS. El software objeto de análisis de este proyecto ha sido la implementación de un modelo de agente conversacional Dual LSTM Encoder for Dialog Response Generation del repositorio1 de Denny Britz [13] en GitHub, donde está desarrollado el agente conversacional “Retrieval-Based Conversational Model in Tensorflow (Ubuntu Dialog Corpus)”. Además se han usado diferentes herramientas de software como TensorFlow, Python y UDC, entre otras. Todas estas herramientas serán explicadas más adelante. 1 https://github.com/dennybritz/chatbot-retrieval.

(27) 1.4. Estructura del documento. 1.4.. 3. Estructura del documento. A continuación se explicará brevemente los diferentes capítulos que forman el documento, el cual esta compuesto por un índice general, un índice de figuras, un índice de tablas, siete capítulos, dos apéndices y la bibliografía. Capítulo 1, se realiza una introducción a grandes rasgos de lo que nos vamos a encontrar en el documento, también se explican los objetivos principales y secundarios y por último los materiales usados durante el proyecto. Capítulo 2, se expone la situación actual del procesamiento de lenguaje natural, de los agentes conversacionales, su clasificación, métodos, topología y tipos. Capítulo 3, se detalla en diferentes apartados como se desarrolla el flujo de datos dentro de un agente conversacional. Capítulo 4, se hace un repaso de los algoritmos y modelos usados en los agentes conversacionales. Se explica el funcionamiento y los parámetros usados en el agente conversacional que hemos usado. Se describen las herramientas y los métodos usados en el análisis del agente conversacional. Finalmente se explican algunos aspectos teóricos del modelo usado en el proyecto. Capítulo 5, se exponen los resultados obtenidos en el proyecto y se realiza una discusión de los mismos. Capítulo 6, se realiza un análisis de la gestión que se ha llevado a cabo durante el proyecto, teniendo en cuenta su planificación y presupuesto. Capítulo 7, se explican las conclusiones finales del proyecto, así como los posibles desarrollos futuros que puede tener el proyecto. Apéndice A, se explica la documentación utilizada como guía en el proyecto. Apéndice B, se explica los cursos hechos como formación inicial en el proyecto. Apéndice C, se exponen los cursos realizados durante el proyecto que han permitido desarrollar el mismo..

(28)

(29) Capítulo 2. Estado del arte En este capítulo vamos a repasar los diferentes estudios que conforman la situación actual de los agentes conversaciones. Empezaremos por el Procesamiento del Lenguaje Natural, seguidamente los aspectos más generales de los agentes conversacionales, situándolo en el marco del aprendizaje automático. Por último, se verán los diferentes tipos de agentes conversacionales y los principales factores que los distinguen.. 2.1.. Procesamiento del Lenguaje Natural (NLP). El NLP [14] es el campo de la Inteligencia Artificial que se encarga de comunicar las máquinas con las personas, a través del uso de lenguas naturales como pueden ser el español o el inglés. La lengua más utilizada en el NLP es el inglés, por su interés económico y su uso en la práctica, al ser el más utilizado en el mundo de los negocios. De cualquier forma, se puede utilizar y desarrollar el NLP en diferentes lenguas. Algunas de las aplicaciones más destacadas del NLP es el procesamiento tanto de texto como de audio, siendo el primero del que tenemos mayor número de datos en las bases de datos con los que tratar, por lo que es el más desarrollado. En cuanto a los audios, primero hay que transcribirlos a texto para poder procesarlos, después se volverá a pasar a audio para poder reproducirlo. Claros ejemplos de Inteligencia Artificial pueden ser Siri, Google Assistant o Cortana. Estos tres agentes conversacionales son los más avanzados en el mercado, pudiendo hablar en multitud de idiomas sin problema.. 2.1.1.. Historia. El NLP comienza en 1950 con la publicación de Computing Machinery and Intelligence [15] de Alan Turing, donde se propuso el famoso Test de Turing, conside5.

(30) 6. Capítulo 2. Estado del arte. rándose un criterio sobre si una máquina una comprensión automática del lenguaje natural, es decir, tiene la habilidad de comportarse como un humano. El experimento de Georgetown [16] en 1954 se hizo la traducción automática desde el ruso al inglés de más de sesenta frases. Los resultados tuvieron gran éxito y llevaron a creer a los autores que en unos pocos años la traducción automática sería casi perfecta, sin embargo, en ambientes no controlados y con vocabularios más genéricos, se dieron cuenta de las grandes dificultados que suponía la traducción automática. El progreso real en traducción automática fue más lento y después del reporte ALPAC 1 en 1966, donde se critica el experimento y se demuestra su bajo rendimiento. No sería hasta finales de 1980, cuando se empezaron a investigar los primeros sistemas de traducción automática basados en la estadística, siendo posible gracias a la mejora en la velocidad de cálculo de los ordenadores. Los siguientes años se empezaron a desarrollar los primeros enfoques de aprendizaje automático, como los árboles de decisiones, los sistemas basados en reglas hechas a mano, comparable a las declaraciones if-else en programación, entre otros. Durante este proyecto, se utiliza un enfoque que ha evolucionado bastante en las dos últimas décadas, las redes neuronales. En los últimos años, las mejoras han venido de la mano del procesamiento de las grandes cantidades disponibles de corpus en formato digital. Como resultado tenemos como ejemplos los motores de búsqueda web, Google’s Smart Reply [17] o Google Translate [18]. 2.1.2.. Sistemas basados en Reglas. Las reglas lingüísticas constituyen una técnica capaz de ejercer de interfaz entre el modo de razonamiento humano y el de procesamiento de un ordenador. Estas reglas hacen uso de términos lingüísticos y siguen una estructura condicional compuesta por antecedentes y consecuentes, conformando sentencias condicionales del tipo “si X entonces Y”, fácilmente comprensibles por un ser humano a la par que procesables por un algoritmo. Estas reglas también se conocen como reglas de inferencia debido a su capacidad de inferir conclusiones a partir del conocimiento actual del entorno. 2.1.3.. Machine learning. Tal y como indica la comunidad de IBM 2 , una posible forma de definir el machine learning es la establecida por Arthur Samuel uno de los padres del machine learning, quien además acuñó este mismo término y lo definió como sigue: Arthur Samuel (1959). Machine Learning: Field of study that gives computers the ability to learn without being explicitly programmed. Más tarde Tom mitchell, uno de los mayores expertos en machine learning propuso una definición más precisa: Tom Mitchell (1998) Well-posed Learning Problem: A computer program is said to learn 1 http://www.mt-archive.info/ALPAC-1966.pdf 2 https://www.ibm.com/developerworks/community/blogs/jfp/entry/What_Is_Machine_Learning?lang=en.

(31) 2.1. Procesamiento del Lenguaje Natural (NLP). 7. from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E. Esta primera forma de describir el Machine Learning (ML) habla sobre la construcción de máquinas, tanto hardware como software. Una segunda forma de definirlo sería a través de los algoritmos, los cuales se diferencian en que necesitan un set de ejemplos de los que aprender mediante entrenamiento. De estos últimos hablaremos más adelante. El ML a aportado nuevas capacidades para los ordenadores, dividiéndose en dos grandes grupos: los sistemas que se encargan de eliminar la necesidad de un experto en el análisis de los datos para el correcto funcionamiento y los sistemas que se encargan de colaborar con los expertos. De todas formas, la necesidad de programación humana y la caracterización de los mismos para procesar los datos es siempre de obligado cumplimiento. El ML tiene múltiples aplicaciones en nuestra vida cotidiana. Algunos de los ejemplos más reconocibles actualmente son: Minería de datos, grandes conjuntos de datos provenientes del crecimiento de la automatización y las webs. Por ejemplo: datos de clicks en las webs o también de registros de médicos, biólogos o ingenieros. Aplicaciones que no pueden ser programadas a mano. Por ejemplo: helicópteros autónomos, reconocimiento de escritura a mano, la mayoría de los modelos del NLP. Programas de auto-personalización. Por ejemplo: Amazon, recomendación de productos en Netflix. Comprensión del aprendizaje humano. Por ejemplo: el cerebro o la AI real.. 2.1.4.. Algoritmos de Machine Learning. Podemos agrupar los algoritmos de machine learning en una taxonomía en función de sus salidas. Estos son los distintos tipos que existen:. 2.1.4.1.. Reducción dimensional. Este algoritmo es un proceso capaz de reducir [19] la cantidad de variables aleatorias y obtener unas variables características, las cuales ocupan menos espacio y esto ahorra muchos costes computacionales. El algoritmo puede seleccionar o extraer unas características en concreto. En la selección de características (atributos), se buscan subconjuntos de las variables que teníamos en el origen. En el nuevo espacio más reducido es más fácil aplicar la regresión o la clasificación como métodos de análisis..

(32) 8. Capítulo 2. Estado del arte. En la extracción de características se reduce la dimensión del espacio por medio de la transformación de los datos. El método más popular de transformación de datos es el Análisis de Componentes Principales (PCA), siendo esta una técnica lineal. Por otro lado, también existen métodos no lineales.. 2.1.4.2.. Ensemble Learning. Los algoritmos de conjunto se utilizan para combinar varios métodos de ML a la vez, obteniendo rendimientos en la predicción del sistema mucho mayores que los que se obtendrían con los mismos métodos por separado. Además, en conjunto estos métodos tienen una flexibilidad superior a la hora de afrontar diferentes tipos de problemas. Debido a la dificultad de encontrar hipótesis óptimas en algunos problemas, los métodos de conjunto combinan múltiples hipótesis para dar como resultado una mejor. Este cálculo de múltiples hipótesis conlleva muchísimos más cálculos, lo que se traduce en un coste computacional mayor, por lo que, el aprendizaje conjunto solo se suele usar combinando algoritmo rápidos como el árbol de decisión.. 2.1.4.3.. MetaAprendizaje. Este algoritmo se encarga de aplicar métodos de machine learning a metadatos que describen otros algoritmos de machine learning. La idea principal es mejorar el rendimiento de los algoritmos, aumentar la flexibilidad para resolver problemas de los propios algoritmos o aprender de ellos, es decir, aprende a aprender. Utilizando diferentes tipos de metadatos podemos utilizar diferentes tipos de algoritmos para resolver el problema y ver cual se ajusta más a la solución objetivo. A menudo, la efectividad de un algoritmo y el problema del aprendizaje desde una base de datos tiene una relación de difícil comprensión. Esto dificulta la posibilidad de poder utilizar distintas técnicas para un mismo problema y conocer el porqué unas funcionan mejor que otras. Por lo tanto, la flexibilidad a la hora de utilizar un método u otro es importante, ya que, cada uno trabaja bien con unos parámetros en particular, y el problema ha de coincidir con ellos o no se obtendrán buenos resultados.. 2.1.4.4.. Aprendizaje supervisado. El aprendizaje supervisado es la rama del ML encargada de calcular una predicción de salida tras aprender a través de una función de los datos que se le han aportado. Estos datos suelen ser vectores que contienen la información de entrada y su salida correspondiente, para con ellos poder entrenar a la red produciendo una función, la cual más tarde se usará para poder hacer predicciones ante entradas nunca vistas por la red..

(33) 2.1. Procesamiento del Lenguaje Natural (NLP). 9. El algoritmo entrena una función que representa la relación entre las entradas aportadas y las salidas esperadas. Un ejemplo muy básico es el que trata de predecir el precio de un inmueble, tras haber entrenado la red con miles de casos reales, donde se le aporta a la red los datos de entrada y las salidas reales a esos datos, para entrenarla y aprenda a hacer predecir el precio de salida según unos datos de entrada nunca vistos por la red en el entrenamiento. Existen diferentes algoritmos de aprendizaje supervisado, cada uno destacable en un tipo de problema, no hay ninguno que sea bueno en todos los tipos de problemas. Los algoritmos de aprendizaje más utilizados son: Máquinas de soporte vectorial. Regresión lineal. Regresión logística. Naive Bayes. Análisis discriminante lineal. Árboles de decisión. k-vecinos más próximos. Redes neuronales (perceptrón multicapa).. 2.1.4.5.. Aprendizaje no supervisado. El aprendizaje no supervisado es la rama del ML encargada de producir una función que clasifique o categorice la estructura no visible de un conjunto de ejemplos no etiquetados aportados al sistema. Estos datos al no poder ser etiquetados, se desconoce la información de sus salidas, la propia red deberá encontrar los patrones a través de la función de la red neuronal para poder etiquetar y estructurar las nuevas entradas. Al no disponer de las salidas reales correspondientes a las entradas respectivas, no se puede medir o evaluar la precisión de la estructura producida por el algoritmo de la red. El aprendizaje no supervisado está basado en el principio de la redes neuronales naturales de Donald Hebb en su libro The Organization of Behavior 3 , donde establece que las neuronas que se activan a la vez están conectadas entre sí. La hipótesis de Hebbian Learning ayuda a la función a aprender como las neuronas, teniendo en cuanta el tiempo que tardan las neuronas naturales en aprender u olvidar. Algunos ejemplos prácticos del aprendizaje no supervisado son la agrupación de spam en el correo electrónico o de usuarios en redes sociales. Los enfoques para el aprendizaje 3 https://www.ncbi.nlm.nih.gov/pubmed/10643472.

(34) 10. Capítulo 2. Estado del arte. no supervisado incluyen: Clustering. Detección de anomalías. Redes neuronales. Enfoques para el aprendizaje de modelos variables latentes.. 2.1.4.6.. Aprendizaje semisupervisado. El aprendizaje semisupervisado es la rama del ML que combina los dos últimos algoritmos explicados, el supervisado y el no supervisado para obtener una mejora importante en la precisión del aprendizaje. Este tipo de algoritmo hace uso de datos etiquetados y no etiquetados. Normalmente se alimenta la red con una pequeña cantidad de datos etiquetados y una basta cantidad de datos no etiquetados. Este método es útil en situaciones donde la cantidad de datos es enorme y un etiquetado completo requiere una cantidad de tiempo ingente por parte del factor humano, ya que los datos etiquetados han de realizarse a mano. Con este algoritmo solo se requiere de la etiquetación de unos pocos datos de entrada y el resto de datos pueden continuar sin etiqueta, el resultado será muchísimo mayor que si se usará un algoritmo no supervisado con todos los datos sin etiquetar o un algoritmo supervisado descartando todos los datos sin etiquetar.. 2.1.4.7.. Aprendizaje por refuerzo. El aprendizaje por refuerzo es la rama del ML se encarga de aprender observando el mundo que le rodea. Los datos de entrada son la retroalimentación que obtiene a sus acciones y trata de maximizar una recompensa acumulativa. El algoritmo se desenvuelve en un entorno desconocido y nadie le enseña a que acciones tomar, debe probar todas las acciones posibles y averiguar cuáles le dan la mayor recompensa. Este tipo de algoritmos no siguen un modelo matemático, se basan en la decisión. Se tiene que elegir constantemente que datos de salida elegir, intentando maximizar el rendimiento entre los datos ya conocidos y los que quedan por conocer, ya que, los nuevos datos solamente realimentan los ya conocidos.. 2.1.5.. Deep learning o Aprendizaje Automático (DL). El Aprendizaje Profundo (DL) es una rama del machine learning, aunque algunos autores lo consideran como una familia de aprendizaje automático diferente. El deep learning puede usar métodos de aprendizaje supervisado, semisupervisado o no supervisado. Todos estos algoritmos están basados la probabilidad, utilizando así el teorema de la aproximación universal o de la inferencia probabilística..

(35) 2.1. Procesamiento del Lenguaje Natural (NLP). 11. Las arquitecturas de deep learning más utilizados son: Redes Neuronales Profundas (DNN). Redes de Creencias Profundas (DBN). Redes Neuronales Recurrentes (RNN). Redes Neuronales Convolucionales (CNN). Todas estas clases de redes tienen múltiples aplicaciones como en el procesamiento del lenguaje natural, visión artificial, reconocimiento de voz o audio, filtrado de redes sociales, traducción automática, bioinformática y diseño de fármacos. En algunos casos han desempeñado resultados mejores que los de los humanos. El DL está vagamente bioinspirado en las redes neuronales animales y el sistema nervioso, siendo parecido el funcionamiento del procesamiento y comunicación de la información. La mayor parte de los métodos de deep learning se basan en redes neuronales artificiales, las cuales tienen una estructura que posee propiedades diferentes a las reales. Las Redes Neuronales (NN) están esencialmente estructuradas en una cascada de varias capas de múltiples unidades de procesamiento no lineales, llamadas neuronas. Cada neurona tiene unos pesos numéricos que determinan la importancia de esa neurona en la capa, estos se adaptan según la experiencia que va adquiriendo la red con el aprendizaje. De esta manera, las neuronas se adaptan a un impulso y son capaces de aprender. Cada capa sucesiva usa como entrada la información de salida de la capa anterior. Estas capas se encargan de procesar la información, para seguidamente obtener y transformar sus características. En cada una se coge una parte de la información, para después las neuronas aprender a abstraer y transformar los datos que les entran en una representación más abstracta y compuesta. La red es capaz de aprender que características abstraer y seleccionar por si misma para aumentar el rendimiento, aunque siempre hace falta un factor humano para la elección de las características. Finalmente se obtiene una hipótesis de salida tras la última capa.. Figura 2.1: Arquitectura de una red neuronal simple y profunda. [1].

(36) 12. Capítulo 2. Estado del arte. Las DNN están compuestas de una Red Neuronal Artificial (ANN), con capas ocultas dispuestas entre la entrada y la salida. Como se puede ver en la imagen superior (figura 2.1), la arquitectura de las redes neuronales pueden tener multitud de disposiciones de las capas y las neuronas, variando el número de ambas. Cada arquitectura tiene un propósito específico. Las DNN suelen tener un flujo de datos desde la capa de entrada hacia la de salida, pero existen otro tipos de arquitecturas que permiten otro tipo de flujos. Algunos de estos tipos son las CNN, las cuales se usan en visión artificial o en modelos para el Reconocimiento Automático de Voz (ASR). Otro ejemplo son las RNN, donde la información puede fluir en cualquier dirección, esto facilita la memoria de la información a lo largo del tiempo, lo que hace a esta arquitectura la más usada para el NLP, habiendo demostrado ser prometedoras en muchas tareas de este campo, como la que nos concierne en este proyecto, los agentes conversacionales.. 2.1.6.. Redes neuronales recurrentes (RNN). Las redes neuronales recurrentes son un tipo de red neuronal artificial, donde cada nodo está conectado al siguiente a lo largo de una secuencia. Esta disposición permite que la información viaje de forma dinámica durante el tiempo. Aprovechando esta dinamicidad de la información permite que el estado interno (memoria) de cada nodo pase entre los nodos de la red y sea visible por todos ellos, pudiendo “recordar” estados. Esta cualidad hace idóneas a este tipo de redes para procesar el reconocimiento de escritura o voz.. Figura 2.2: Arquitectura de una red neuronal recurrente. [2]. Si quisiéramos predecir la palabra siguiente en una oración, sería de especial utilidad que supiéramos la palabra que precede a la palabra que queremos predecir. Como se puede ver en la imagen superior (figura 2.2), si Xn son las palabras de entrada de la oración y hn las respuestas en salida, el contexto de la frase es transmitido a lo largo del tiempo por la línea horizontal entre nodos A. Dependiendo del número de palabras de la oración, la red se desenrollará en tantas capas como palabras haya. Esta acción se repite recurrentemente (de ahí viene el nombre de este tipo de red neuronal) para cada oración de entrada, dependiendo la salida de cada cálculo previo. Las RNN se diferencian de las normales en que cada capa no utiliza diferentes parámetros, en este tipo de redes todas las capas comparten los mismos parámetros, para diferentes entradas. Esto nos ayuda a reducir considerablemente el número de parámetros que vamos a necesitar aprender en la red..

(37) 2.1. Procesamiento del Lenguaje Natural (NLP). 13. El tipo más utilizado en el NLP de RNN son las long short-term memory (LSTM), las cuales son las que mejor capturan las dependencias a largo plazo. Estas LSTM serán las que usaremos para desarrollar el agente conversacional durante el proyecto. Otro tipo de redes neuronales recurrentes que han tenido bastante éxito en el NLP son las redes neuronales recurrentes, las cuales se caracterizan por tener un mismo conjunto de ponderaciones recursivas para distintos tamaños de entrada. Algunas otras aplicaciones de las RNN son el modelado de lenguaje y generación de texto [20] [21] [22], máquina traductora [23] [24] [25], reconocimiento de voz [26] o generando descripciones de imagen [27]. En la publicación de Andrej Karpathy, The Unreasonable Effectiveness of Recurrent Neural Networks 4 , se pueden ver muchas de las grandes proezas que se han conseguido con las RNN.. 2.1.7.. Topología: Arquitectura y disposición neuronal de las RNN. Las redes neuronales recurrentes más básicas tienen como arquitectura una serie de nodos parecidos a neuronas, conectando cada nodo de forma unidireccional a los otros nodos. Cada nodo (neurona) tiene una señal de activación diferente que varía en función del tiempo. Cada conexión (sinapsis) depende de un peso modificable, siendo este un número real. Respecto a ls nodos, hay de entrada, los cuales reciben los datos del exterior, nodos ocultos que modifican los datos en el interior de la red, y por último los nodos de salida, que evalúan el rendimiento en función de los resultados.. Figura 2.3: Arquitectura de una red neuronal recurrente genérica. [3]. Las RNN pueden configurarse como aprendizaje supervisado en tiempo discreto, donde evalúa cada vector de entrada de uno en uno. La salida (resultado) solamente dependerá de ese vector de entrada concreto. El vector de entrada activará diferentes nodos, y la suma ponderada de todas estas activaciones dará la función de salida. También se pueden configurar en como aprendizaje por refuerzo, aunque no se le pueden aportar señales objetivas de si la salida es correcta o no, hay funciones de aptitud o recompensa que evalúan el rendimiento de la RNN, utilizando actuadores y viendo como la red actúa con el entorno. 4 http://karpathy.github.io/2015/05/21/rnn-effectiveness/.

(38) 14. Capítulo 2.. En ambas configuraciones se producen errores en las secuencias de activación, debido a las desviaciones respecto al objetivo a alcanzar, es decir, la salida no es exactamente la esperada. La suma de todos los errores producidos a lo largo dela secuencia de activación nos dará el error total. Existen multitud de arquitecturas en las redes neuronales recurrentes. A continuación, se muestra los diferentes tipos que hay: Totalmente recurrente Independientemente recurrente (IndRNN) Recursivo Hopfield Redes Elman y redes Jordan Estado del eco Compresor de historia neural Larga memoria a corto plazo Unidad recurrente cerrada Bidireccional Tiempo continuo Jerárquico Red de perceptrón multicapa recurrente Modelo de múltiples escalas de tiempo Máquinas Neural Turing Computadora neuronal diferenciable Autómata de inserción de redes neuronales La red que hemos utilizado en este proyecto será la Long Short-Term Memory (LSTM), por la memoria que presenta, la cual nos ha sido muy útil a la hora de recordar contextos en las frases para poder hacer mejores predicciones.. 2.2. 2.2.1.. Gestión del diálogo: Redes LSTM Historia y actualidad. Las redes neuronales recurrentes fueron desarrolladas a lo largo de la década de 1980, una década después se desarrollaron las LSTM, en 1997 por Hochreiter y Schmidhuber [28]. Las LSTM reciben ese nombre por la enorme memoria que.

(39) 2.2. Gestión del diálogo: Redes LSTM. 15. presentan en un plazo de tiempo breve. Este sistema de DL además evita el problema del gradiente de fuga [29], que tanto sufren las redes neuronales recurrentes. Están compuestas por una serie de puertas recurrentes, que nos ayuda a olvidar datos que no necesitamos. Por otro lado, pueden recordar datos importantes que ocurrieron miles de pasos antes, lo que habilita a la LSTM a aprender tareas en función de los errores que vaya acumulando. Para desarrollar y aprender su matriz de pesos, habitualmente se usa la Clasificación Temporal Conexionista (CTC) [30], con el fin de aumentar la probabilidad en la obtención de mejores resultados. Alrededor de 2007, las LSTM empezaron a revolucionar el reconocimiento de voz, superando todos los modelos más actuales hasta la fecha, ya que funcionan increíblemente bien en una gran variedad de problemas. Por ejemplo, en el reconocimiento de voz, modelado de lenguaje, traducción, subtítulos de imágenes, conversación, etc.. 2.2.2.. El problema de las dependencias a largo plazo. Las RNN tienen la capacidad de utilizar información reciente para predecir el resultado de una tarea actual. En el caso de que la información que necesitamos está muy atrás en el tiempo, en teoría las RNN son capaces de utilizar esas “dependencias a largo plazo”, sin embargo, en la práctica, no ocurre así. El problema fue estudiado por Hochreiter (1991) [31] y Bengio, et al. (1994) [32], donde se explican algunas de las posibles razones para que esto ocurra. Ilustremos este problema con un ejemplo.. Figura 2.4: Representación del problema en las largas dependencias en una RNN. [2]. Si decimos “Las nubes están en el cielo.”, es fácil para una RNN predecir la palabra cielo, en relación a nubes. Por otro lado, si decimos “Crecí en España... hablo español con fluidez.”, para deducir el idioma español necesitamos de la palabra España, pero puede estar contextualizada al principio de la conversación, en este caso, la RNN no sería capaz de deducir la palabra español. Por suerte, este problema se reduce en las LSTM, ya que sí pueden almacenar los contextos a largo plazo..

(40) 16. 2.2.3.. Capítulo 2.. LSTMs RNN. Las “LSTMs Networks” son RNN, éstas forman parte de la arquitectura de las RNN. Son el tipo de celdas que compone una capa de una RNN, donde se hacen los cálculos. En esta función se utilizan una memoria (celdas) donde se tienen en cuenta el estado (contexto) anterior y el actual. En las celdas se decide que datos recordar y cuales olvidar en la memoria. Después combinan ambos estados y la información de entrada. Todas las RNN tienen una forma de cadena con módulos de rede neuronal repetitivos, y dentro de cada uno una sola capa tanh. Las LSTM tienen la misma estructura de cadena, pero el módulo que se repite, es diferente, no tiene solamente una capa sino cuatro, interactuando unas con otras.. Figura 2.5: Arquitectura interna de una red neuronal recurrente de tipo LSTM. [2]. Figura 2.6: Notación de la red neuronal recurrente de tipo LSTM. [2]. En la figura superior, en cada celda entra por un nodo un vector desde el nodo de salida de la celda anterior. El círculo rosa representa un operación, en los cuadros amarillos se ilustran capas de aprendizaje de redes neuronales. Respecto a las líneas, las que convergen significan concatenación y las que divergen son la copia del vector.. 2.2.3.1.. La idea central detrás de las LSTM. El concepto más importante en las LSTM es la memoria, en la Figura 2.5 esta representado en la linea horizontal superior. A lo largo de esa línea se transporta el estado de un nodo a otro a través de las celdas, con ligeros o ningún cambio, pudiendo agregar o eliminar información, siendo esta información regulada por unas estructuras llamadas puertas “olvidar”..

(41) 2.2. Gestión del diálogo: Redes LSTM. 17. En estas puertas se permite pasar la información o se bloquea y desecha, dependiendo de su importancia. La puerta está formada por una capa sigmoidea, que aporta un valor entre 0 y 1, representando cuanta información dejar pasar u olvidar y una operación de multiplicación, que hace efectivo ese valor en la memoria. Las LSTM tienen tres puertas como esta en cada módulo repetitivo, para proteger y controlar el estado de la celda.. 2.2.4.. Variantes en las LSTM. No todas las LSTM son iguales, de hecho hay multitud de variantes, aunque solamente sean ligeras variaciones. Una buena comparación entre las más populares variantes fue estudiada por Greff, et al. (2015) [33], demostrando que son todas prácticamente iguales. Por otro lado, Jozefowicz, et al. (2015) [34] probó más de diez mil arquitecturas de RNN, encontrando algunas con un rendimiento superior a algunas LSTM en ciertas tareas. A continuación, se muestran algunas de las más populares:. 2.2.4.1.. Conexiones de mirilla. Una variante muy popular es la creada por Gers & Schmidhuber (2000) [35], donde se permite que las puertas de la LSTM puedan mirar el estado, es decir, como entrada a las capas de puerta se introduce también el estado de la celda. Pudiendo variar a su vez esta versión permitiendo q todas o algunas puertas tengan el estado como dato de entrada.. 2.2.4.2.. Puertas de entrada y olvidar. Otra variación es unir las puertas de entrada y olvidar, es decir, tomar la decisión de que estados recordar y cuáles olvidar a la vez, haciendo que solamente podamos recordar un valor si olvidamos otro.. 2.2.4.3.. Unidad Recurrente Cerrada (GRU). Esta variación fue introducida por Cho, et al. (2014) [36], como en la anterior variante combina las puertas de entrada y olvidar en una sola llamada “puerta de actualización”, además une el estado de la celda, con el estado oculto y hace algunos otros cambios. El modelo final es más simple que una LSTM estándar, con lo que se ha vuelto bastante popular. Ligeramente más dramática en el LSTM es la Unidad Recurrente Gated o GRU, introducida por Cho, et al. (2014). Combina las puertas de olvidar y de entrada en una sola “puerta de actualización”. También combina el estado de la celda y el estado oculto, y realiza algunos otros cambios. El modelo resultante es más simple que los modelos LSTM estándar, y se ha vuelto cada vez más popular..

(42) 18 2.2.4.4.. Capítulo 2. Otras variantes. Algunas otras variantes pueden ser la “profundidad cerrada” (Gated Depth) de Yao, et al. (2015) [37] o un enfoque poco tradicional de como abordar las dependencias a largo plazo, como se muestra en el “Aparato de relojería” (Clockwork) de Koutnik, et al. (2014) [38].. 2.2.5.. Futuro de las LSTMs RNN. Las LSTM fueron una revolución dentro de las RNN y se cree que el siguiente paso es la “Atención” (Attention). En este nuevo modelo la idea es permitir que cada RNN elija la información de un conjunto más grande de información. El mecanismo Atención se basa en la visión humana, cuando se mira una imagen, enfocamos cierta de la misma y el resto se percibe con la visión periférica, Atención hace básicamente esto, mostrando una alta resolución en una parte de la imagen y una baja resolución en el resto, después se ajusta el punto focal a lo largo del tiempo. Por ejemplo, en el estudio de Xu, et al. (2015) [39] se hace usa una parte concreta de una imagen, para sacar la información que se utilizará para poner título a esa misma imagen. Otros modelos muy prometedores son el de LSTM de tipo “Cuadrícula” (Grid), desarrollado por Kalchbrenner, et al. (2015) [40]. Por último los modelos generativos son también una propuesta muy interesante en la que encaminarse, trabajos destacados son los de Gregor, et al. (2015) [41], Chung, et al. (2015) [42], o Bayer & Osendorfer (2015) [43].. 2.3.. Agentes conversacionales. Los agentes conversacionales (CA), también llamados sistemas de diálogo, son actualmente una herramienta que todas las grandes empresas están incorporando para cambiar la forma en la que sus usuarios interacción con sus servicios, como por ejemplo Microsoft (Cortana), Facebook (M), Apple (Siri), Google (Google Assistant), entre otras. Esta tendencia intenta mantener conversaciones naturales lo más parecidas a las humanas, con una estructura coherente, utilizando softwares basados en NLP y en deep learning para ello. La comunicación con ellos se puede hacer mediante texto, habla, gestos, sistemas hápticos u otros métodos de entrada y salida. Tal y como dijo Markus M. Berg en 2014 “A Natural Dialogue System is a form of dialogue system that tries to improve usability and user satisfaction by imitating human behaviour” [44]. Debido a la limitación en el diálogo y la conversación se intenta hacer que los agentes conversacionales aprendan de los diálogos de persona a persona para integrarlos a las conversaciones humano-máquina, con el fin de que las conversaciones no sean solamente preguntas y respuestas, sino que se establezca un diálogo. Todos los aspectos que envuelven esta idea están siendo investigados.

(43) 2.4. Taxonomía de los modelos: Tipos de agentes conversacionales. 19. activamente en la actualidad, pero aún faltan muchas herramientas para que muchos de esos proyectos lleguen a buen puerto. En esta sección y la siguiente se repasarán las técnicas, situación actual y posibilidades de los agentes conversacionales.. 2.3.1.. Clasificación general. No todos los agentes conversacionales han sido creados igual, pueden tener diferentes niveles de complejidad en la interfaz o en su capacidad de realizar acciones demandadas por el usuario. Vamos a hacer un repaso de como se clasifican. Según el medio de interacción, dependen de cómo se presentan y devuelve los datos, en forma de texto plano, con imágenes, voz o vídeo. Según su utilidad, se tiene en cuenta el uso que le quiera dar el usuario, por ejemplo, servio al cliente, automatización de tareas o informativos entre otros. Según su tecnología, tratan diferentes estructuras en las conversaciones con el usuario, para llegar más fácilmente a la respuesta o servicio requerido. Según su audiencia, son los que intentan realizar cualquier función que se les pida, como pueden ser Siri, Cortana, Alexa o Google Assistant.. 2.4.. Taxonomía de los modelos: Tipos de agentes conversacionales. Existen múltiples aspectos a tener en cuenta a la hora de desarrollar un agente conversacional, en esta sección se verán los más importante. Dependiendo de la salida que nos de el bot podremos elegir entre modelos basados en la recuperación o generativos, dependiendo del tipo de conversación, si es larga o corta y dependiendo del dominio de trabajo puede ser abierto o cerrado.. 2.4.1.. Retrieval-Based bots vs. Generative bots. Este primer tipo es el basado en la recuperación de las respuesta, este tipo es más fácil que el generativo. Usa un repositorio de respuestas ya escritas y la heurística para elegir la respuesta más acertada según el contexto de entrada. La heurística puede ser basada en reglas o la comparación de palabras que tengan un contexto importante en la frase, o de forma más compleja, una NN que aplica ML. Este sistema devuelve una frase ya predefinida, no genera nuevo texto, lo que hace que sus respuestas sean menos precisas pero sin faltas de ortografía. Los modelos generativos, considerablemente más complejos que los basados en la recuperación, generan nuevas respuestas desde cero no predefinidas, más parecido.

(44) 20. Capítulo 2.. a una conversación humana. Están basado en técnicas de traducción automática, donde se genera nuevo texto como respuesta a partir del contexto de entrada. El método basado en la recuperación es mucho más rígido que el generativo, no pudiendo contestar correctamente a casos no vistos en su dataset o que al menos no tenga cierta relación en el tema para el que fue creado. Tampoco pueden referirse al contexto de la frase de entrada, como un nombre o una acción. Los generativos si pueden realizar hablar contextualmente, lo que les hace “más inteligentes”, dando una mejor impresión de estar hablando on un humano, sin embargo son más susceptibles de cometer errores gramaticales, especialmente en frases largas, además de ser muchísimo más difíciles de entrenar. Actualmente, los sistemas más utilizados son los basados en la recuperación, sin embargo, las investigaciones van en la dirección de los generativos, siendo la arquitectura Sequence to Sequence especialmente adecuada para generar texto. Por el momento, los modelos generativos no funcionan correctamente.. 2.4.1.1.. Codificador y Decodificador. Dependiendo de la función del agente conversacional, se puede usar un tipo de codificación de datos u otro. El codificador nos transformará las palabras en vectores que puede interpretar la NN, y el decodificador nos transformará los datos de salida de la NN y los volverá a transformar en palabras que podamos entender. Por ejemplo, en la traducción de idiomas se utiliza una estructura codificador-decodificador, sin embargo, en las conversaciones podemos usar un codificador dual, haciendo más sencilla la tarea de evaluar la calidad de una conversación. Un ejemplo de modelo de LSTM que utiliza codificador y decodificador es el Sequence to Sequence (Seq2Seq), el cual nos permite traducir de un idioma a otro.. Figura 2.7: Arquitectura de una red neuronal recurrente de tipo Seq2Seq para traducciones. [4]. Como se puede ver en la figura superior, usa celdas de tipo LSTM recurrentemente e unidireccionalmente. En este modelo, se necesita conocer toda la información de la frase para poder hacer la traducción correctamente, ya que el significado varía bastante en función del contexto..

Referencias

Documento similar