universidad politÉcnica de madrid escuela tÉcnica superior de ingenierÍa de...

70
UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA DE SISTEMAS INFORMÁTICOS GRADO EN INGENIERÍA DE SOFTWARE TRABAJO FIN DE GRADO Research on a fully automated consulting protocol with the help of machine learning techniques AUTOR: Ignacio SERRANO LLABRÉS TUTOR PROFESIONAL: Stephan A. Posselt TUTOR DEL TRABAJO: Francisco Jaime Serradilla García

Upload: others

Post on 10-Mar-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

UNIVERSIDAD POLITÉCNICA DE MADRID

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA DE SISTEMAS INFORMÁTICOS

GRADO EN INGENIERÍA DE SOFTWARE

TRABAJO FIN DE GRADO

Research on a fully automated consulting protocol

with the help of machine learning techniques

AUTOR: Ignacio SERRANO LLABRÉS TUTOR PROFESIONAL: Stephan A. Posselt

TUTOR DEL TRABAJO: Francisco Jaime Serradilla García

2

UNIVERSIDAD POLITÉCNICADE MADRID

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA DE SISTEMASINFORMÁTICOS

DEPARTAMENTO DE INTELIGENCIA ARTIFICIAL

Investigación de un Protocolo deConsultoría Autónomo con la Ayuda deTécnicas de Aprendizaje Automático

Trabajo Fin de Grado

PorIgnacio Serrano Llabrés

Madrid, Febrero 2019

Índice general

Índice general iii

Agradecimientos vii

Resumen ix

Nomenclatura xi

1. Introducción 11.1. Generación de texto a partir de información estructurada . . . . . . . 11.2. Información del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . 11.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2. Estado de la cuestión 52.1. Generación de Lenguaje Natural . . . . . . . . . . . . . . . . . . . . . 52.2. Redes Neuronales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.2.1. Máquina de Boltzmann . . . . . . . . . . . . . . . . . . . . . . 72.2.2. Redes de Neuronas Recurrentes . . . . . . . . . . . . . . . . . 82.2.3. Arquitectura Long Short-Term Memory . . . . . . . . . . . . . 13

2.3. Aprendizaje profundo . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.4. ¿Qué es la información estructurada? . . . . . . . . . . . . . . . . . . 17

2.4.1. Pasos previos . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3. Preprocesado de los datos 213.1. Extracción de características . . . . . . . . . . . . . . . . . . . . . . . 213.2. Preprocesado de las pólizas . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.1. Primer preprocesado . . . . . . . . . . . . . . . . . . . . . . . 233.2.2. Segundo preprocesado . . . . . . . . . . . . . . . . . . . . . . 25

4. Entrenamiento 274.1. Order-Planning Neural Text Generation From Structured Data . . . . 27

4.1.1. Codificador y Disatcher . . . . . . . . . . . . . . . . . . . . . 284.1.2. Decodificador . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.1.3. Salida de la red . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.2. Entrenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.2.1. Función error . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.2.2. Hiperparámetros . . . . . . . . . . . . . . . . . . . . . . . . . 32

iii

Índice general

5. Resultados 395.1. Métricas de evaluación de los resultados . . . . . . . . . . . . . . . . 39

5.1.1. BLEU score . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.1.2. ROUGE score . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

5.2. Textos generados por el sistema . . . . . . . . . . . . . . . . . . . . . 415.2.1. Inicialización fija de los pesos . . . . . . . . . . . . . . . . . . 415.2.2. Inicialización aleatoria de los pesos . . . . . . . . . . . . . . . 42

6. Conclusiones 456.1. Decisión final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456.2. Mejoras futuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

6.2.1. Gradientes sintéticos . . . . . . . . . . . . . . . . . . . . . . . 466.2.2. Mecanismo de retroalimentación . . . . . . . . . . . . . . . . . 516.2.3. Nuevos apartados en las pólizas . . . . . . . . . . . . . . . . . 526.2.4. Estructura de las pólizas . . . . . . . . . . . . . . . . . . . . . 53

iv

Índice de figuras

1.1. Primer párrafo sobre Freddie Mercury en Wikipedia [4]. . . . . . . . . 2

2.1. Esquema general de un sistema basado en reglas . . . . . . . . . . . . 52.2. Perceptron simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3. Esquema de una Red Neuronal Retroalimentada[7] . . . . . . . . . . 72.4. Esquema de una Red Neuronal Recurrente[8] . . . . . . . . . . . . . . 82.5. Función polinómica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.6. Funcionamiento de Backpropagation . . . . . . . . . . . . . . . . . . 102.7. Propagación temporal hacia atrás (BPTT)[9] . . . . . . . . . . . . . . 112.8. Ejemplo descenso de gradiente . . . . . . . . . . . . . . . . . . . . . . 122.9. Ecuación del gradiente de ω1

11 . . . . . . . . . . . . . . . . . . . . . . 122.10. Unidad LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.11. Conexión entre unidades LSTM . . . . . . . . . . . . . . . . . . . . . 142.12. Red Neuronal Monocapa y Red Profunda . . . . . . . . . . . . . . . . 152.13. Precisión del modelo en función del número de capas ocultas[10] . . . 162.14. Estructura generalizada de una red profunda[12] . . . . . . . . . . . . 172.15. Información estructurada vs no estructurada[13] . . . . . . . . . . . . 182.16. Estructura de un sistema basado en codificación y descodificación . . 19

3.1. Información de la póliza de un cliente . . . . . . . . . . . . . . . . . . 223.2. Primer Preprocesado . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.3. Primer cliente tras el primer preprocesado . . . . . . . . . . . . . . . 253.4. Texto a generar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.1. Codificador y dispatcher[2] . . . . . . . . . . . . . . . . . . . . . . . . 284.2. Attention Mechanism[15] . . . . . . . . . . . . . . . . . . . . . . . . . 294.3. Decodificador[2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.4. Ecuaciones para el cálculo de la salida [2] . . . . . . . . . . . . . . . . 314.5. Ecuación del error[2] . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.6. Derivada parcial del error con respecto a un valor del vector st(w) . . 324.7. Momentum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.8. Patrón en la curva azul de la figura 4.13. . . . . . . . . . . . . . . . . 344.9. Entrenamiento de 6 y 15 épocas . . . . . . . . . . . . . . . . . . . . . 344.10. Entrenamientos para establecer la razón de aprendizaje . . . . . . . . 354.11. Entrenamientos con 3 ∗ 10−3 y 3 ∗ 10−4 . . . . . . . . . . . . . . . . . 354.12. Entrenamientos con 3 ∗ 10−4 y 3 ∗ 10−6 . . . . . . . . . . . . . . . . . 364.13. Entrenamientos con 3 ∗ 10−5 y 3 ∗ 10−3 . . . . . . . . . . . . . . . . . 364.14. Entrenamientos para establecer el tamaño de la celda . . . . . . . . . 374.15. Entrenamientos para establecer el tamaño de la celda con inicializa-

ción aleatoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

v

Índice de figuras

5.1. Sensibilidad en BLEU [2] . . . . . . . . . . . . . . . . . . . . . . . . . 405.2. Precisión (P) y sensibilidad (R) . . . . . . . . . . . . . . . . . . . . . 405.3. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.4. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.5. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.6. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.7. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

6.1. Gradientes sintéticos . . . . . . . . . . . . . . . . . . . . . . . . . . . 476.2. Paralelismo en ML . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.3. Paralelismo en ML . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.4. Capa de una RNN desacoplada . . . . . . . . . . . . . . . . . . . . . 506.5. Resultados [14] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516.6. Mejora propuesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

vi

Agradecimientos

En primer lugar, me gustaría dar las gracias a Francisco Jaime Serradilla García,tutor de este trabajo de fin de grado. Agradezco especialmente la forma discreta peroeficaz con la que ha ido orientándome en la toma de decisiones tanto en el trabajo,como para mi futuro académico.

Toda la elaboración de este trabajo merece también una mención especial aStephan A. Posselt y Benedikt Mas y Parareda. Particularmente, me gustaría darlelas gracias a Stephan por su apoyo y tutorización del proyecto. Y a Benedikt por sudisponibilidad a lo largo de estos meses.

Aprovecho para agradecer a todos los compañeros de Itestra GmbH. la compañíay ayuda prestadas durante este último año. Junto a ellos el trabajo y la recta finalse han hecho más amenos.

Finalmente, me gustaría dar las gracias a Irene Llabrés Ripoll, por el incondicio-nal apoyo tanto en la carrera como a la hora de elaborar el trabajo.

vii

Agradecimientos

viii

Resumen

Este documento presenta un estudio acerca de la generación de texto a partirde datos. En concreto la creación de documentación legal respectiva a pólizas deseguros a partir de los datos de las mismas.

Se comienza definiendo las diferentes partes involucradas en la generación detexto usando tecnologías de Machine Learning para después seguir con la investiga-ción realizada, los entrenamientos y los resultados obtenidos. En concreto, para losentrenamientos, se realiza previamente un estudio de los hiperparámetros existentespara la obtención de resultados más afines a lo deseado.

Por último, se realizarán las conclusiones oportunas así como la aclaración deposibles mejoras e ideas de negocio relacionadas.

ix

Resumen

x

Nomenclatura

NLGRNNFNNRBMBPTTθLSTMMLDLLCSTBPTT

Natural Language GenerationRecurrent Neural NetworkFeedforward Neural NetworkRestricted Boltzmanns MachineBack Propagation Through TimePeso del umbral del perceptrón simpleLong Short-Term MemoryMachine LearningDeep LearningLongest Common Sub-sequenceTruncated Backpropagation Through Time

xi

Nomenclatura

xii

Capítulo 1

Introducción

1.1. Generación de texto a partir de informaciónestructurada

La generación de texto a partir de información estructurada (Datos-a-Texto) esuna tarea dentro de la generación de lenguaje natural.

En este proyecto, se tratará de adaptar un sistema Datos-a-Texto existente alámbito de los contratos de seguros mediante el estudio, modificación y propuesta deposibles mejoras del mismo.

Esta tarea concreta supondría una notable mejora en la redacción de textos cuyosorigenes son muy similares, como por ejemplo, descripciones del tiempo, resumende resultados deportivos o redacción de información relativa a un producto, entreotros.

Todos estos casos, trabajan con información fácilmente recopilable en bases dedatos, una característica de la información estructurada.

1.2. Información del proyectoEn el ámbito de los contratos de seguros, se aprobó en 2014 una nueva ley

europea, recogida en la DIRECTIVA (UE) 2016/97 [1]. La cual obliga a los inter-mediarios o empresas de seguros a redactar un documento informativo acerca delcontrato realizado. Recogemos el punto 8 de la directiva:

8. El documento de información sobre el producto de seguro contendrála siguiente información:

a) información sobre el tipo de segurob) un resumen de la cobertura del seguro, incluidos los principales

riesgos asegurados, la suma asegurada y, cuando proceda, elámbito geográfico de aplicación, así como un resumen de losriesgos excluidos;

c) las condiciones de pago de las primas y la duración de los pagos;d) las principales exclusiones, sobre las cuales no es posible pre-

sentar solicitudes de indemnización;e) las obligaciones al comienzo del contrato;f) las obligaciones durante la vigencia del contrato;g) las obligaciones en caso de solicitud de indemnización;h) la duración del contrato, incluidas las fechas de comienzo y de

expiración;

1

1. Introducción

i) las modalidades de rescisión del contrato.

Esto quiere decir que, a la hora de ofrecer un contrato de seguros a un cliente,se debe proveer, además del propio contrato, un documento explicativo que expresede forma clara y concisa las razones de las cuotas de dicho contrato. La ley surgiócon el ánimo de evitar los fraudes en este ámbito.

La legislación vigente obliga a las aseguradoras o a los intermediarios en ventasde seguros a redactar estos documentos. Dichos documentos son todos de naturalezamuy similar y pueden redactarse fácilmente de manera automática con un sistemabasado en reglas, como el actualmente usado en la empresa objeto de esta investi-gación. Pero de esta manera, no se consigue uno de los objetivos de esta legislaciónque es una documentación individual y única para cada cliente.

En este proyecto se ha realizado una adaptación del artículo Order-PlanningNeural Text Generation From Structured Data[2]. El cual es, a su vez, una mejoradel artículo Neural Text Generation from Structured Data with Application to theBiography Domain[3].

Se trata de la generación de biografías de Wikipedia a partir de la informaciónobtenida de las cajas en la parte derecha de los artículos de la web.

Figura 1.1: Primer párrafo sobre Freddie Mercury en Wikipedia [4].

Esta investigación, realizada en el año 2016, implementa una red neuronal queredacta la primera frase de las biografías de Wikipedia. En concreto, mejora elartículo mencionado anteriormente mediante la incorporación de matrices para teneren cuenta el orden en el que aparecen las palabras en los datos de entrenamiento.Esto puede ser una gran ayuda para reconocer la importancia de cada palabra a lahora de generar el texto.

A continuación expondremos una serie de modelos de redes de neuronas y ve-remosla posibilidad de aplicarlos a la generación de texto. Aún así, la generaciónde texto a partir de información estructurada es una de las tareas más complica-das y menos estudiadas entre todas las relacionadas con la Generación de LenguajeNatural (NLG).

1.3. ObjetivosUna compañía de seguros mundialmente conocida, tiene un contrato con Itestra

GmbH. la compañía de consultoría software colaboradora en este proyecto. Itestra

2

1.3. Objetivos

GmbH. ha implementado la herramienta encargada de realizar los documentos in-formativos acerca de los contratos realizados. Actualmente se trata de una sencillaherramienta basada en reglas.

Nuestra adaptación consistirá en un correcto preprocesado de los datos de laspólizas de seguros para la generación de las primeras líneas del documento obliga-torio.

El objetivo de este proyecto es, por tanto, estudiar la posibilidad de migrarla herramienta existente usando herramientas de aprendizaje automático. De estamanera se podría conseguir uno de los puntos clave de la normativa mencionadaanteriormente: individualizar dichos documentos para cada cliente.

Preprocesado

Como veremos más adelante, disponemos de un set de datos de más de 170.000pólizas de seguros en formato JSON más sus respectivos textos (pertenecientes aldocumento informativo obligatorio por la UE).

Estudiaremos las diferentes formas de limpiar dichas pólizas para obtener úni-camente la información relevante para generar los textos. Esto es especialmenteinteresante, puesto que, siendo el objetivo del aprendizaje automático, aprender agenerar resultados, será necesario que aprenda también a identificar cuales son loselementos de las pólizas relevantes. Esto se denomina refuerzo de una red neuronal,pues se entrena para deshechar datos irrelevantes.

Por otro lado, al haber estado trabajando con una empresa de contratación deseguros alemana, hemos recibido la totalidad de los datos en el idioma natal, por loque se ha debido tener en cuenta las complicaciones del idioma a la hora de procesartexto natural.

Entrenamiento

Además, estudiaremos el sistema usado para conseguir los mejores hiperparáme-tros de entrenamiento en nuestro caso de estudio particular. Subdividiendo el set deentrenamiento en lotes de entre el 5% y el 10% del total y evaluando los resultadosobtenidos.

Como esto es poco preciso e insuficiente, realizaremos también una investigaciónsobre las técnicas usadas en el sistema para alcanzar unos resultado óptimos.

Por último, tras comprender cómo se ha realizado el preprocesado, el entrena-miento de los datos y redactar las conclusiones sobre los resultados obtenidos, seránecesario observar las posibles aplicaciones en el mundo actual así como las posiblesmejoras en un futuro reciente.

3

1. Introducción

4

Capítulo 2

Estado de la cuestión

2.1. Generación de Lenguaje NaturalLa NLG se refiere al uso de la inteligencia artificial para la creación de tex-

to a partir de una información dada. Las aplicaciones de la NLG son numerosas.Actualmente, las más conocidas son la traducción de textos, síntesis de discursos,respuestas a preguntas, etc. Todas ellas las encontramos en nuestro día a día: asis-tente de google, escritura dictada, bots de atención al cliente, etc.

Se trata de un campo de estudio en el que se han realizado grandes avances enlos últimos años, pero que lleva siendo materia de estudio desde antes de 1990.

Encontramos un interesante artículo relacionado con el generador de texto Kafka[5],el cual estaba destinado a responder a cuestiones simples de los usuarios. La gene-ración de texto se realizaba mediante una orientación semántica y se trataba de unsistema basado en reglas. Se trata de un estudio de 1984.

Figura 2.1: Esquema general de un sistema basado en reglas

Como podemos ver, a muy a grandes rasgos, en la figura 2.1. los sistemas basadosen reglas son relativamente simples. Entre sus destacables ventajas encontramos quesuponen una expresión bastante uniforme del conocimiento (si A entonces B), perosi trabajamos con un sistema lo suficientemente grande, donde las reglas son muynumerosas, el sistema resulta lento e ineficiente. Es por ello y por otras desventajaspor las que para nuestro proyecto nos interesa el uso de otras herramientas.

Aunque podemos observar varios estudios antiguos acerca del procesamiento ygeneración de lenguaje natural, no ha sido hasta comienzos de siglo cuando las in-vestigaciones al respecto han crecido de manera exponencial, como podemos oservar

5

2. Estado de la cuestión

en el bien conocido estudio sobre la generación de resumenes espacio-temporalesbasados en los pronósticos de polen[6].

Pero de nuevo, este estudio no hace uso de la inteligencia artificial. De hecho,son numerosos los sistemas de generación de texto que trabajan con reglas. Nuestroobjetivo es entender cómo puede la inteligencia artificial ayudarnos a conseguir NGLy, en concreto, en el caso de estudio sobre el que trabajaremos, la generación de textoa partir de información estructurada.

2.2. Redes Neuronales

En este campo de estudio de la Inteligencia Artificial, existe una herramientaque ha supuesto un gran avance en la NGL, las Redes Neuronales (RNN).

Se trata de un tipo concreto de Redes Neuronales, un sistema compuesto pornumerosas unidades llamadas perceptrones, que se asemejan a las neuronas reales.En la siguiente imagen, podemos observar un perceptrón simple.

Figura 2.2: Perceptron simple

En la figura 2.2. tenemos unos valores de entrada x1, x2, unos pesos w1, w2, unumbral con peso θ y una salida y. Los pesos representan la importancia de cadaentrada, estos se verán modificados tras cada iteración para reajustar sus valores eir acercándose mejor a la solución deseada.

Los valores x1, x2 son, junto con el umbral, las entradas de la neurona que, trasrealizar el cálculo necesario dependiendo de la naturaleza de la misma, devolverá y.Tras evaluar la salida, se decidirá en qué medida se han de modificar los valores enfunción de la repercursión que han tenído en el error cometido.

Básicamente, los valores que se verán modificados en cada neurona serán todoslos pesos (w1, w2, θ), que representan la importancia que tiene cada entrada paracada neurona.

De esta manera, por cada iteración, se calcula la responsabilidad de cada neuronaen el error cometido, para así analizar en qué medida se modificará cada peso.

Una vez comprendido el funcionamiento del perceptrón simple, nos interesa cono-cer la naturaleza de las RN, pero previamente a analizar el funcionamiento de dichasredes, es aconsejable hacer una pequeña introducción de la Máquina de Boltzmann.

6

2.2. Redes Neuronales

2.2.1. Máquina de Boltzmann

Una de los primeros tipos de redes neuronales es la Máquina de Boltzmann, setrata de un algoritmo compuesto de unidades binarias dividias en dos tipos de capas,las visibles y las ocultas, donde las primeras son aquellas que reciben los datos deentrada para el entrenamiento.

En concreto, estas máquinas producen buenos resultados en una forma concreta,las Máquinas de Boltzmann Restringidas (RBM), las cuales se han estado usandoúltimamente para modelar las distribuciones desconocidas de los datos. Esto puedesuponer una ventaja, por ejemplo, a la hora de completar patrones, ya que los datosde salida suelen seguir una distribución increíblemente parecida a la de los datos deentrada.

Sin embargo, el principal problema de esta arquitectura es que son difíciles deentrenar adecuadamente ya que el algoritmo usado por antonomasia en las RBM re-quiere un preprocesado de los datos que requiere mucha dedicación para que funcionede manera correcta, perdiéndose así, uno de los objetivos principales del aprendizajeautomático, que la máquina realice la mayor cantidad del trabajo posible.

Se trata de una arquitectura de estas redes que no permiten comunicacionesentre nodos de las capas ocultas, un tipo de Red de Neuronas Retroalimentadas(FNN). Esto se refiere a que solo reciben información de las capas anteriores, nuncade sí mismas o de niveles posteriores. Algo que sí que realizan las Redes Recurrentes(RNN), como veremos más adelante.

Figura 2.3: Esquema de una Red Neuronal Retroalimentada[7]

En la figura 2.3. podemos observar el esquema de funcionamiento de una FNN ysus conexiones interneuronales. Cada neurona, recibe información de todas las neuro-

7

2. Estado de la cuestión

nas de la capa anterior además de una señal que se llama umbral y que condicionarála salida del cálculo realizado por la neurona.

Este tipo de redes son las más estudiadas en el campo de la Inteligencia Arti-ficial, como hemos mencionado anteriormente, suponen una gran ayuda a la horade resolver ciertos problemas. Pero para problemas algo más ambiciosos donde setrabaja con información más complicada y los resultados son de mayor complejidad,se ha empezado a hablar en los últimos años de las Redes Neuronales Recurrentes(RNN).

2.2.2. Redes de Neuronas Recurrentes

En la Inteligencia Artificial, se observa el funcionamiento de la mente humanapara implementar sistemas que se asemejen a dicha forma de trabajar. Es por esopor lo que, al descubrir que las neuronas cerebrales reciben información recurrente,se decidió apostar por perceptrones de la misma naturaleza.

Figura 2.4: Esquema de una Red Neuronal Recurrente[8]

Como podemos observar en la figura 2.4. las RNN se componen de neuronas quereciben como entrada la información competente además de la información de lasneuronas del mismo nivel en el paso anterior.

El funcionamiento es muy similar al de las FNN, sencillamente añadiremos unaentrada más a cada neurona que en la iteración del paso ’t’ recibirá la informacióngenerada en ’t-1’ con sus respectivos pesos (llamamos peso a la importancia quetendrá cada entrada de una neurona para realizar los cálculos necesarios, medido enun rango [0, 1]).

El objetivo del aprendizaje de cualquier red neuronal es la reducción del error co-metido en la soluciones generadas. Se trata de ir ajustando los parámetros necesariosen las neuronas (los llamados pesos) para que produzcan soluciones válidas.

Descenso de gradiente

El error cometido se puede representar como una función matemática dependien-te de los pesos, la llamada función de coste o de error. Como queremos minimizardicha función de coste, podríamos optar por el clásico cálculo de la derivada, la cualnos da información de cómo varía la pendiente de la función. Al igualar la derivada

8

2.2. Redes Neuronales

a cero, se obtienen máximos y mínimos, aunque en nuestro caso solo habrá de estesegundo tipo.

Si la red neuronal es relativamente pequeña, puede parecer buena idea utilizareste método, pero a medida que aumenta la complejidad de la red y el número deneuronas crece, este método se vuelve ineficiente.

Por ello, se opta por la opción del descenso del vector gradiente.Este vector, al ser evaluado en un punto en concreto de la función coste (por

ejemplo, el error obtenido tras la primera iteración en la red) nos indica la direcciónen la que el campo varía más rápidamente en dirección ascendente. Por consiguiente,nos interesa mover los parámetros para ir en contra de dicho vector. Como una de laspropiedades de dicho vector es que se anula en los mínimos relativos de la función,disminuir su valor nos garantiza encontrar un mínimo relativo.

Sin embargo, el método del descenso de gradiente encuentra su principal proble-ma en el siguiente caso, imaginemos que nuestra función error se representa mediantela siguiente gráfica:

Figura 2.5: Función polinómica

Si los valores de inicio de la red neuronal, sitúan el error en el punto A = (-1,0). El método del descenso de gradiente, nos indicará que hemos de movernos en elsentido positivo del eje x, llegando así al primer mínimo de la función. Sin embargo,este no es el mínimo absoluto, como se puede apreciar, por lo que el error no estaría

9

2. Estado de la cuestión

siendo minimizado.Para solucionar esto, se realizará un entrenamiento dividido en épocas, donde una

época es el tiempo en el que todo el lote de datos pasa a través de la red neuronal.Asu vez, una época se divide en iteraciones, donde cada iteración es el paso de unlote de datos (cuyo tamaño también se ha de concretar) por la red neuronal. Por lotanto, si llamamos al número total de datos n, al tamaño del lote l, el número deiteraciones it en una época será:

it =n

l

Realizando varios entrenamientos, nos garantizamos iniciar los pesos en valoresaleatorios en más de una ocasión, disminuyendo así, casi a cero, la probabilidad deno encontrar el mínimo absoluto. Por otro lado, al ser el descenso de gradiente unproceso iterativo, necesita de una gran cantidad de pasos para alcanzar un buenresultado, de ahí la necesidad de trabajar con un número de épocas a determinar.

Hay que aclarar, que el cálculo de los pesos se realiza tras cada iteración mientrasque el inicio aleatorio de los mismos, al comienzo de cada entrenamiento.

Backpropagation

El descenso de gradiente, a su vez, utiliza la propagación hacia atrás (Backpropa-gation en inglés). En las FNN esta propagación hacia atrás se realiza de la siguientemanera:

1. Por cada iteración de la red se produce un error determinado, el cual es unaevaluación de la salida generada con respecto a la salida deseada.

2. Suponiendo que la red tiene L capas, calculamos la responsabilidad de cadaneurona de la capa L-1 en el error cometido. Esto se realiza mediante derivadas,una por cada neurona de la capa L-1.

3. Una vez obtenido el error con respecto a cada neurona, podemos realizar lamisma operación, conseguir la responsabilidad de cada neurona de la capa L-2con respecto al error de la neurona de la capa L-1 a la que están conectadas.

El siguiente diagrama muestra de una manera muy sintética lo expuesto en laenumeración anterior.

Figura 2.6: Funcionamiento de Backpropagation

10

2.2. Redes Neuronales

Como hemos mencionado, sabiendo el error cometido para una salida concretaen la red de neuronas, nos interesa saber la responsabilidad concreta que tiene cadaneurona de la capa anterior para atribuirle más o menos culpa del error cometido y,así, modificar los pesos de dicha neurona. El método de la propagación hacia atrásnos permite realizar de manera eficiente estos cálculos, capa por capa.

Parece algo trivial. Es, de hecho, algo computacionalmente barato, pero un granavance teniendo en cuenta que antes se hacía todo el proceso por fuerza bruta. Estoquiere decir que se evaluaba la responsabilidad individual de cada neurona por cadacamino del que formaba parte.

Cuando se obtiene la responsabilidad de una neurona con respecto al error, secomputa el descenso de gradiente y se ajustan los pesos de dicha neurona. Esto sehace para cada una, de manera que, poco a poco, se van ajustando para alcanzarun error total cercano a cero.

Sin embargo en las RNN, esto no es tan sencillo, porque para calcular dicharesponsabilidad, necesitamos conocer la información generada por cada neurona enel paso anterior.

Es por esto por lo que "desenrrollamos"la red en función del tiempo, como sepuede ver en la figura 2.7. donde la información usada para evaluar el error en laiteración t, usamos información generada en el iteración t-1.

Figura 2.7: Propagación temporal hacia atrás (BPTT)[9]

Pero encontramos un grave problema, al necesitar guardar toda la informacióncorrespondiente a las funciones de activación y los inputs de cada neurona, el costecomputacional es muy elevado cuando comenzamos a trabajar con varios niveles deneuronas. Exiten optimizaciones para dicho coste computacional como TruncatedBackpropagation Through Time, pero no ahondaremos en este tema ya que no es elobjetivo de este proyecto.

Desvanecimiento de gradiente

El método del descenso del gradiente con propagación hacia atrás expuesto an-teriormente, aporta grandes beneficios a nivel de coste computacional, pero supon-gamos que estamos trabajando con una red neuronal con varias capas.

11

2. Estado de la cuestión

Figura 2.8: Ejemplo descenso de gradiente

Como se aprecia en la figura, si disponemos de una red neuronal de 4 capas (n1a n4) y deseamos calcular el gradiente de uno de los pesos ω1, por ejemplo, la queune la primera entrada con la primera neurona de la capa, seguiremos la siguienteecuación:

Figura 2.9: Ecuación del gradiente de ω111

La ecuación de la figura 2.9. representa matemáticamente, mediante una derivadaparcial, cuánto varía el resultado (y1) con respecto de ω1

11. Se tiene en cuenta laentrada inicial, así como las funciones de activación de las neuronas por las quepasan los caminos que contienen el peso ω1

11.Como el peso en cuestión pertenece a un total de 4 caminos distintos, todos estos

han de tenerse en cuenta para el cálculo (segunda caja roja de la figura 2.9). Hemosde calcular, por tanto, los gradientes correspondientes a los pesos de ω2 por dondepasa nuestro peso ω1

11 y lo mismo con ω3. Por tanto, vemos una gran cantidad degradientes multiplicados entre sí.

¿Dónde está el problema?

El problema está, en que estamos solapando muchos valores entre 0 y 1, por loque en una red de varias capas, el valor que debemos variar un peso de la primeracapa oculta, es muy cercano a cero.

Por otro lado, si variamos muy poco los pesos de las primeras capas, el aprendi-zaje será muy lento y, llegado a un punto, prácticamente no aprenderá más.

12

2.2. Redes Neuronales

En las RNN, este problema es muy relevante, pues la técnica de propagaciónhacia atrás se realiza desenvolviendo la red, como hemos expuesto antes, por lotanto los gradientes en las primeras capas serán notablemente pequeños.

En los últimos años, se han desarrollado varias técnicas para solventar el proble-ma del desvanecimiento de gradiente.

2.2.3. Arquitectura Long Short-Term Memory

Dentro de las RNN, encontramos una arquitectura que, en lugar del perceptrónsimple, utiliza unas unidades algo más complejas.

Figura 2.10: Unidad LSTM

Como se aprecia en la figura 2.10, la unidad LSTM dispone de una conexióno vía principal (1) llamada cell state que transporta información a lo largo delentrenamiento, podría llamarse la memoria de la red. Dispone también de puertasque contienen la función sigmoide o tangente y, por último, operaciones matemáticaspara añadir o multiplicar valores a lo largo de las conexiones.

Puertas

A lo largo de dicho entrenamiento, la información procesada por una unidad enconcreto, puede ser despreciada o añadida a la cell state mediante el uso de puertasque contienen la función sigmoide. Además, la unidad dispone de una tercera puerta(también sigmoidal) para decidir si el cálculo de la unidad es relevante o no para elsiguiente paso de la red.

Sabemos que la función sigmoide tiene un domino en el eje vertical de 0 a 1.Este tipo de puertas nos permitirá decidir si un valor es importante (resultado trasla función, cercano a 1) o es despreciable (valor cercano a 0).

13

2. Estado de la cuestión

Por otro lado, la función tangente, normaliza los datos del entrenamiento ajus-tando cualquier entrada o nuevo cálculo a un rango [-1, 1].

Flujo de datos en la unidad LSTM

1. En primer lugar, el estado oculto anterior y la nueva entrada (ht−1, x) pasaránpor la primera puerta (2) y cuya salida determinará la importancia de ct−1mediante el producto de ambos. Básicamente determina si, dada una nuevaentrada en la red, recordar, o no, lo ocurrido en pasos anteriores.

2. Más adelante, normalizamos los valores (ht−1), x y, mediante la segunda puerta(3), determinamos la importancia de los nuevos datos de entrada, decidiendolo que añadiremos a la cell state

3. Por último, una vez calculado y añadido al cell state los nuevos datos, la últimapuerta (4) determina el nuevo estado oculto, que contiene información que seenvía al siguiente paso en la red. De esta manera, recibiendo un cell state y unestado oculto junto con una entrada, obtenemos el nuevo estado de cell statejunto con el estado oculto para la siguiente iteración.

Se comprende de esta manera, que la arquitectura LSTM es capaz de deshechardatos irrelevantes para el entrenamiento de la red. En el caso de redacción de unresumen de un texto concreto, es muy útil para determinar qué palabras aportaninfomación relevante al modelo.

En la siguiente figura se puede ver cómo se conectan diferentes unidades LSTMde distintas iteraciones entre sí:

Figura 2.11: Conexión entre unidades LSTM

Por la capacidad que le otorgan las puertas de entrada, salida y olvido, este tipode unidades obtienen resultados muy positivos en ambientes donde las dependenciasentre los datos son grandes.

Un ejemplo práctico podría ser entrenar una red con imágenes del lenguaje designos para elaborar una traducción del mismo a un idioma escrito. Pero, al tratarsede un lenguaje en el que la posición de las manos viene condicionada por los signosanteriores, es necesario que la red recuerde las imágenes anteriores.

¿Cómo evitar el desvanecimiento del gradiente?

Además, por la estructura interna de las LSTM, estas evitan el problema deldesvanecimiento del gradiente.

14

2.3. Aprendizaje profundo

La solución al problema del desvanecimiento del gradiente es relativamente sen-cilla de comprender.

Como hemos visto en las RNN, el problema viene dado por las numerosas mul-tiplicaciones de números entre 0 y 1, lo que genera que el gradiente propagado seacada vez menor.

En el caso de las unidades LSTM, se busca que la retropopagación del gradientepase por la puerta de olvido con un valor de su peso cercano a uno. Esta unidad escapaz de decidir si cierta información ha de olvidarse (tiende a 0) o no (tiende a 1).De esta manera, el cálculo del gradiente no se ve disminuido sino que se mantiene alo largo de dicho cálculo.

2.3. Aprendizaje profundo

Hasta ahora, se han mencionado diferentes arquitecturas, componentes y técnicasrelacionadas con las redes neuronales, información relativa al aprendizaje automático(ML por sus siglas en inglés), siendo las redes neuronales, un campo dentro del ML.

Pero conviene concretar, que dentro del ML encontramos un área de investigacióndenominado aprendizaje profundo (DL por sus siglas en inglés). Se trata de un tipoconcreto de redes neuronales, donde dividimos la red en diferentes capas. Ya hemosmencionado, en algún ejemplo, que una red puede tener varias capas.

¿Qué diferencia una red de una capa con el deep learning?

La diferencia esencial se encuentra en el número de capas ocultas de la red, comose aprecia en la siguiente figura:

Figura 2.12: Red Neuronal Monocapa y Red Profunda

En la primera red, observamos una capa de entrada, la capa oculta y, finalmente,la de salida. Por otro lado, en la red de la derecha, se aprecian dos capas ocultas.

Pues bien, se denomina a una red profunda, cuando su número de capas ocultases mayor que 1.

En numerosos casos, se ha demostrado que para un mismo problema, una redneuronal profunda, obtiene mejores resultados que una red monocapa. Un ejemplose puede ver en el estudio de reconocimiento de dígitos en placas con dígitos de lascasas usado como set de datos en una interesante investigación:

15

2. Estado de la cuestión

Figura 2.13: Precisión del modelo en función del número de capas ocultas[10]

Como podemos ver en la figura 2.13, la precisión mejora con el número de capasocultas. Frente a este hecho, nos surgen varias pregutnas. Entonces, ¿un númeroextremadamente elvado de capas ocultas tiene un poder de aprendizaje del mis-mo carácter?¿Cómo funcionan para que obtengan tan buenos resultados? En lassiguientes líneras intentaremos justificar las respuestas a ambas preguntas.

Frente a la primera pregunta, Sergey Zagoruyko y Nikos Komodakis demuestranque una red de 16 capas ocultas, mejora, con notable diferencia, la precisión en laclasificación de imágenes frente a una red de 1000 neuronas. Concretamente, usandola base de datos CIFAR[11], comunmente usada en ML.

Sin embargo, esto no es así siempre, pues el modelo de 16 capas propuesto setrataba de una arquitectura particular. Esto, junto con otros estudios que presentanredes con muchas capas ocultas obteniendo mejores resultados que otras con menos,nos lleva a pensar que la aplicación de un elevado número de capas ocultas dependerádel problema en cuestión.

Además, se hace evidente que el DL es un campo aún en estudio.Por otro lado, delante de la segunda pregunta planteada sobre el DL, concreta-

mente cómo funcionan para obtener tan buenos resultados, no existe una soluciónuniversal, ya que depende íntegramente del problema y de la arquitectura de la redneuronal. Pero intentaremos dar una contestación general a dicha pregunta.

En el campo del ML, encontramos que los modelos tradicionales utilizan unproceso conocido como extracción de características, donde el programador es el queproporciona las características necesarias para entrenar los datos. Generalmente, sifalta alguna característica, el modelo falla. Por ello es necesario hacer tareas depreprocesamiento (que veremos más adelante).

Se puede describir un modelo DL como una red neuronal que hace el trabajode reconocimiento de carácterísticas encontrando vínculos que diferencian los datosde entrada (si habláramos de una tarea de clasificación). Por ello, generalizamos unmodelo DP en la siguiente figura:

16

2.4. ¿Qué es la información estructurada?

Figura 2.14: Estructura generalizada de una red profunda[12]

2.4. ¿Qué es la información estructurada?

Ya hemos hablado de la Generación de Lenguaje Natural (NLG), además de dostipos de redes neuronales que pueden servirnos de ayuda para ello. Pero este proyectotrata de NLG a partir de una entrada concreta, la información estructurada.

Para aclarar bien este concepto conviene diferenciar entre información estruc-turada y no estructurada. La primera, sobre la cual trabajará nuestro proyecto, secorresponde con aquella información que está representada de una forma concreta,comunmente en bases de datos, donde cada elemento es reconocible en un campo

17

2. Estado de la cuestión

concreto, por lo que el origen de los datos es más claro.

Figura 2.15: Información estructurada vs no estructurada[13]

Como podemos observar en la imagen, la información estructurada implica, comosu propio nombre indica, un orden, mientras que la no estructurada se refiere ainformación más variada.

Un ejemplo de información estructurada la encontramos en cualquier cuestionarioque se puede rellenar de manera electrónica. Por otro lado, un ejemplo de informaciónno estructurada puede ser un lote de imágenes distintas.

2.4.1. Pasos previos

Para hablar del concepto datos-a-texto, es necesario remontarse al año 2000,donde un grupo de investigadores desarrolla un sistema basado en reglas para lageneración de texto de predicciones de polen basados en datos relativos al tiempo.Ya hemos mencionado este estudio en el capítulo previo, pero su publicación supusoun antes y un después en NLG de datos-a-texto.

Sin embargo, no fue hasta la década de 2010 donde se empezó a introducir redesneuronales en dicha tarea.

Artículos como What to talk about and how? Selective Generation using LSTMswith Coarse-to-Fine Alignment (2016, Mei et al.) o A General Model for Neural TextGeneration from Structured Data (2018, Shuang Chen) realizaron una implementa-ción basada en codificación y decodificación insertado en una red neuronal.

Este método es especialmente útil para los casos en el que la información aprocesar es de un tamaño considerablemente grande y supondría un problema a lahora de entrenar nuestra red.

18

2.4. ¿Qué es la información estructurada?

Figura 2.16: Estructura de un sistema basado en codificación y descodificación

En la figura 2.9. podemos observar un esquema que representa un modelo entre-nado para traducir frases de español a inglés mediante una red neuronal compuestapor neuronas LSTM, que abordaremos a continuación.

Si consideramos como entrada, palabras del vocabulario español, hablamos demás de 85.000 palabras. Esto supone un dilema a la hora de preprocesar los datosde entrenamiento y en el momento de establecer la estructura de nuestra red.

Por eso, este método de codificación, comunmente expresa cada palabra comoun vector y asocia a cada vector, una palabra contenida en una matriz, que seránecesario a la hora de decodificar.

Como podemos observar, herramientas como codificación y recurrencia en redesneuronales, parecen realizar con éxito tareas relativas a generación de texto a partirde una entrada como la de nuestro proyecto, información estructurada.

19

2. Estado de la cuestión

20

Capítulo 3

Preprocesado de los datos

3.1. Extracción de características

Como hemos mencionado en el capítulo anterior, los métodos tradicionales deML realizan una actividad denominada extracción de características, tarea que co-rresponde al programador. Este, ha de establecer dichas características a tener encuenta por el algoritmo utilizado, de manera que sea capaz de relacionar dichascaracterísticas con la salida deseada.

El primer paso del preprocesado de los datos consiste en comprender el origende los mismos ¿De dónde vienen?¿Cómo están estructurados?

Una buena definición del propósito del preprocesado de los datos, lo encontramosen la página 90 del libro "Data Preparation for Data Mining" [13]:

The fundamental purpose of data preparation is to manipu-late and transform raw data so that the information contentenfolded in the data set can be exposed, or made more easilyaccessible

El preprocesado de los datos puede hacerse de numerosas maneras. En concre-to, para la tarea de la minería de datos, es necesario seguir ciertos procesos paraconseguir los resultados óptimos.

Por ejemplo, limpiar los datos. En muchas ocasiones, nos encontramos con da-tos inconsistentes, con vectores incompletos o completamente vacíos. Esto puedeprovocar resultados no fidedignos, así como una salida pobre o/e inconclusa.

Pero también hemos comentado como las redes profundas realizan esta tarea deforma autónoma, incluso puede ser interesante forzar la red con entradas sin sentidopara que establezca también esa relación y pueda aprender a ignorar los datos queno son de utilidad para la salida deseada.

Nuestros datos

Para este proyecto, disponemos de información relativa a pólizas de más de175.000 clientes de una compañía de seguros de las mas conocidas a nivel euro-peo. El formato concreto de estas pólizas es JSON, muy usado en la representaciónde información estructurada.

21

3. Preprocesado de los datos

Figura 3.1: Información de la póliza de un cliente

En la figura se aprecia como el archivo JSON está incompleta. En total, una solapóliza, una vez borrada información de caracter sensible (nombre, dirección, etc.)ocupa más de 250 líneas de código en el formato usado.

Para la extracción de características, aunque el objetivo de una red profunda,como la que usaremos, es el aprendizaje automático de dichas características, noshemos visto obligados a limpiar las pólizas, básicamente por el sinsentido que su-pondría un input de 250 elementos a la red. Al ser la NLG a partir de informaciónestructurada, un campo poco estudiado con herramientas de IA, no conviene empe-zar con estructuras de datos desorbitadas, aunque esto puede ser un gran avance ytema a estudiar en futuras investigaciones.

3.2. Preprocesado de las pólizas

Hemos expuesto en el apartado anterior, la información que tenemos y de lanecesidad que hay de limpiar y preprocesar esas pólizas. Dividiremos así, nuestropreprocesado, en dos partes.

La primera parte consistirá en la detección de elementos dehechables, manipula-bles o que haya necesidad de cambiar. Constará de un sencillo programa en pythonque realizara ciertas tareas comentadas más adelante.

22

3.2. Preprocesado de las pólizas

En segundo lugar, el propio sistema usado para este proyecto, tiene su propiaherramienta.

3.2.1. Primer preprocesado

La tarea en este apartado, para este proyecto, es la de adaptar los datos al sistemautilizado. Para ello, observamos que la entrada se maneja mediante un formato dearchivo .BOX, .SENT, .NB.

1. BOX: se trata de archivos usados, a menudo, para almacenar información. Eneste caso, contiene la información estructurada en un formato muy curioso.

2. SENT: en este archivo, guardaremos las líneas que deseamos generar para cadapóliza.

3. NB: este tipo de archivos se generan usando un programa llamado "Mathe-matica". Un programa orientado a satisfacer las necesidades de matemáticos,ingenieros, etc. Para este proyecto, se ha usado para establecer una relaciónentre las entradas del archivo .BOX y las líneas del texto a generar contenidasen el archivo .SENT. Cada entrada de este archivo, corresponde al númerode entradas del archivo .SENT para cada entrada del archivo .BOX. Por ello,para simplificar el preprocesado, se ha optado por guardar únicamente la líneaa generar del texto en cuestión. La relación es de una entrada de .SENT porcada una de .BOX.

Conviene, tras reconocer los archivos usados, operar con los datos de manera quegeneremos estos mismos 3 archivos.

Disponemos de un archivo JSON de más de 1,3 GB de tamaño. Aproximada-mente 45 millones de líneas en este formato en el que se encuentra la informaciónde los más de 175.000 clientes de la compañía.

Pasos:

Para adaptar nuestro set de datos a los requisitos del sistema, realizaremos lossiguientes pasos

1. Alisado de los datos: gracias a la librería flatten de Python resolvemos elanidado de las pólizas.

2. Al ser un set de datos en alemán, por ser una compañía germana, hemos deprocesar el texto ya que el sistema no disponía de reconocimiento de palabrasen dicho idioma. Creamos un diccionario en Python que contiene todas lasimpurezas posibles y sus correspondientes sustituciones.

3. En tercer lugar separamos textos e información estructurada.

4. Eliminamos el formato JSON para guardarlo en el formato requerido.

23

3. Preprocesado de los datos

En el siguiente diagrama se muestra, de manera gráfica, el funcionamiento deeste primer preprocesado:

Figura 3.2: Primer Preprocesado

Un inciso a tener en cuenta: Para modificar lo menos posible el sistema usadopara este proyecto, hemos optado por generar un archivo .NB cuyo contenido es unnúmero de unos igual al número de clientes contenidos en la base de datos de laspólizas. De esta manera mantenemos la estructura del sistema. Aunque se podríacorregir fácilmente para evitar consumir recursos innecesarios, hemos optado por nomodificar demasiado el sistema.

Tras esta primera etapa, obtenemos la siguiente estructura de los archivos:

24

3.2. Preprocesado de las pólizas

Figura 3.3: Primer cliente tras el primer preprocesado

El formato real del archivo .BOX es de un cliente por línea, en la figura 3.3hemos puesto un atributo por línea para simplificar la visibilidad. Realmente elarchivo de compone de casi 180.000 líneas donde cada línea contiene atributos depólizas separados por espacios (únicamente hay espacios entre atributos, nunca entrenombres de campos y el valor del campo, como se aprecia en la figura 3.3.).

Figura 3.4: Texto a generar

3.2.2. Segundo preprocesado

En este caso, se trata de una herramienta propia del sistema usado, la cual, a suvez, está dividida en dos partes.

En la primera se lee el contenido de los tres ficheros generados en el primerpreprocesado para guardarlo en el siguiente formato y representarlo mediante unacadena de bytes gracias a la librería PICKLE :

temp_pickle = {" f i e l d s " : f ield_names ,

25

3. Preprocesado de los datos

" content " : content_words ," l a b e l " : l abe l_sentence s

}

p i c k l e I t ( temp_pickle , "temp . p i c k l e " )

Dividimos los datos en:

1. Fields : contiene los campos de las pólizas.

2. Content : se refiere al contenido de dichos campos.

3. Label : frases seleccionadas para el entrenamiento.

La estructura Fields, Content es similar a la tradicional clave, valor.Más adelante, se explicará por qué se entrena con una sola frase y no con el

texto entero, que sería el objetivo de esta tarea de generación de texto a partir deinformación estructurada.

Para la segunda tarea del preprocesado que atañe al sistema, se vuelve a larepresentación normal y, tras realizar ciertas operaciones, se volverán a traducir losdatos a bytes.

En esta parte, se dividen los datos en celdas y, a su vez, se guarda en una nuevaestructura que incluye los datos tokeinzados para comenzar ya el entrenamiento.

26

Capítulo 4

Entrenamiento

Este apartado del proyecto ha sido, probablemente, el más complicado, debidoa múltiples factores.

Entre los diferentes obstáculos, encontramos una limitación de hardware. Paraentrenar un modelo de estas dimensiones, se requiere más potencia de la que seha dispuesto.Por otro lado, a consecuencia de esta primera dificultad, el tiempoinvertido en encontrar unos parámetros que se adecúen al problema ha sido muchomayor del deseado.

Pero este capítulo trata del entrenamiento realizado, por lo que las dificultadesencontradas se expondrán como complemento a la investigación.

4.1. Order-Planning Neural Text Generation FromStructured Data

Como hemos comentado anteriormente, este proyecto es una investigación sobregeneración de texto a partir de información estructurada aplicado en el ámbito delos seguros.

Para esta investigación, hemos cogido la implementación del artículo Order-Planning Neural Text Generation From Structured Data realizada por Animesh Kar-newar, disponible en la plataforma Github[14].

En la bibliografía está el link al artículo completo, pero resulta necesario aclararel funcionamiento de la implementación con un pequeño resumen.

27

4. Entrenamiento

4.1.1. Codificador y Disatcher

Figura 4.1: Codificador y dispatcher[2]

En la figura 4.1. observamos como, tras codificar los datos de una tabla en con-creto (en nuestro caso una póliza), genera una seria de vectores que fluyen por unared LSTM (todo esto corresponde al Enconder)

Se genera un vector (Content-based attention) basado en la importancia de cadacampo y su valor en la salida generada. De esta manera, los pesos de la primera redLSTM se ajustarán intentando satisfacer esta necesidad.

Por otro lado, teniendo en cuenta el vector attention del paso anterior, multi-plicado por la matriz que contiene todos los campos posibles, se genera un nuevovector que juntaremos con el (Content-based attention). De esta manera, obtene-mos un objeto que contiene información de los campos y sus valores, junto con laimportancia de cada campo con respecto a la salida, basado en la red LSTM delcodificador y al vector attention.

Semejante mecanismo es conocido como el Attention Mechanism. Para aclararsu funcionamiento, optamos por poner un ejemplo:

Attention Mechanism

Esta herramienta tiene su origen, como las redes neuronales, en la observación delcomportamiento humano. Imaginemos que tenemos que ir a la biblioteca a buscarun libro, cuyo nombre conocemos. Hay dos opciones de búsqueda principales, fuerzabruta o ir a la letra por la que empieza nuestro título y buscar ahí.

28

4.1. Order-Planning Neural Text Generation From Structured Data

Como hemos dicho, conocemos el título. La probabilidad de que alguien busquedesde la letra A hasta la letra por la que empieza nuestro título, es ínfima, pues esun método ineficiente y absurdamente largo.

En las redes neuronales, imaginemos que nos disponemos a traducir una frase,si no memorizamos el contenido de la frase, la traducción será incorrecta, ya que elcontexto es totalmente relevante a la hora de traducir.

Figura 4.2: Attention Mechanism[15]

Para la generación del resultado, si se trata de la traducción de texto, para cadanueva palabra a traducir, se tiene en cuenta el contexto (desde x1 a xT ) con susrespectivos pesos (de at,1 a at,T )

En la investigación realizada por Dzmitry Bahdanau et al.[14], podemos observarlos avances de este mecanismo en la traducción de frases.

4.1.2. Decodificador

Veamos ahora el funcionamiento del decodificador (Decoder en inglés).

29

4. Entrenamiento

Figura 4.3: Decodificador[2]

Llegada a la parte de la decodificación, en la que se predice la secuencia depalabras, se recibe como entrada el vector de atención del Dispatcher (en el cual,como ya sabemos, se expresa la importancia que tienen los campos en la salida dela red neuronal).

En la figura 4.3. se reconoce otra RNN con unidades LSTM con cierta particu-laridad, dispone de otro mecanismo, llamado Content Mechanism. En este caso, lared neuronal es monocapa, por lo tanto ya no hablamos de aprendizaje profundo enesta parte del sistema de generación de texto.

En cada iteración, una unidad LSTM recibe como entrada, además del men-cionado vector de atención generado por el Dispatcher, la palabra generada por laiteración anterior y el último estado LSTM (cell state).

Copy Mechanism

Basicamente, este mecanismo establece que, cuando aparece una palabra en latabla de campos, se calcula un valor llamado copy score. Si una palabra w ocurremúltiples veces en la tabla de campos, se suman los valores[2].

Una vez comprendido el funcionamiento básico del sistema a usar y el preproce-sado de los datos realizado, daremos paso a la fase de entrenamiento.

30

4.2. Entrenamiento

4.1.3. Salida de la red

Como se observa en la figura 4.3. se combina el resultado de la red LSTM conel resultado del copy mechanism para generar un valor final para una palabra con-creta: st(w). Tras esto, se pasa por la función Softmax, encargada de normalizarlos datos del vector st(w) estableciendo una distribución de probabilidades para loscandidatos, esto quiere decir que a cada candidato (los valores del vector st(w)) lecorresponde una probabilidad.

Una vez calculadas estas probabilidades, se computa la función error, que serála función de verosimilitud negativa (negative log-likelyhood en inglés). Siendo lapropagación hacia atrás la técnica usada de optimización, encontramos que estafunción nos permite utilizar dicha técnica de manera sencilla, pues su cálculo essimple.

Figura 4.4: Ecuaciones para el cálculo de la salida [2]

En la figura 4.4. encontramos 2 ecuaciones. En primer lugar, se expresa la salidade toda la red, la suma computada por las unidades LSTM y la correspondiente alcopy mechanism.

La segunda expresa la salida de la función Softmax explicada anteriormente.Simplemente establece una probabilidad para cada uno de los candidatos. La sumadel vector tras pasar por esta capa es 1, pues estamos trabajando a partir de ahoracon probabilidades.

4.2. Entrenamiento

4.2.1. Función error

Como función error se ha usado la función de verosimilitud:

En estadística, la función de verosimilitud (o, simplemente, ve-rosimilitud) es una función de los parámetros de un modeloestadístico que permite realizar inferencias acerca de su valora partir de un conjunto de observaciones.[4]

En nuestro caso, nos ayuda a decidir la palabra a generar dadas una palabrasya generadas. Luego, se opta por la palabra con mayor probabilidad. Se acaba lageneración de la frase al llegar a <eos> (End Of Sentence).

31

4. Entrenamiento

Figura 4.5: Ecuación del error[2]

Entonces, ¿Cómo ayuda esta función a nuestro problema?La ventaja de esta función del error es su relación con la capa softmax. Calcular

derivadas parciales del error cometido con respecto a cada elemento del vector st(w)es una tarea muy sencilla, algo que interesa en el ML. En resumidas cuentas, elcálculo a realizar por cada palabra del vector st(w) es la siguiente:

Figura 4.6: Derivada parcial del error con respecto a un valor del vector st(w)

Esta escuación expresa la responsabilidad que tiene la probabilidad de ciertapalabra w en el error cometido. Recordamos que el vector st(w) contiene probabili-dades para cada palabra candidata y conviene calcular cuánta parte del error es acausa de cada probabilidad generada.

Depués de una iteración, se computa el error cometido para recalcular los pesosde la red de neuronas y, así, poco a poco, hallar una solución satisfactoria.

4.2.2. Hiperparámetros

En ML, se denominan hiperparámetros a aquellos valores que han de ser definidosantes de que comience el proceso de entrenamiento. Dependiendo del proyecto, losdatos de entrada y la estructura del algoritmo de entrenamiento (una red neuronalalgo compleja en nuetro caso), los hiperparámetros darán mejores o peores resulta-dos. Por ellos, se ha de estudiar para cada caso particular, una serie de valores delos hiperparámetros para los cuales el modelos da buenos resultados.

A su vez, no todos los hiperparámetros tienen la misma importancia para cadacaso particular. Veamos un ejemplo.

Según un estudio realizado por Breuel et al. en 2015, el tamaño de batch nosupone un cambio demasiado importante para la precisión del modelo[16]. Tambiénse comprueba que la técnica de optimización usada (momentum) tampoco mejoranotablemente el modelo.

32

4.2. Entrenamiento

Figura 4.7: Momentum

Momentum es una técnica de optimización usada en el cálculo del gradiente. Setrata de trabajar en una iteración tanto con el gradiente calculado, como la direccióndel descenso (esto se calcula acumulando los gradientes de las iteraciones anteriores).Se puede apreciar en la imagen que esta mejora es lógica y que aporta una reducciónnotable del tiempo necesario de entrenamiento.

Pero incluso esta mejora tan razonable, no supone un cambio significativo en elentrenamiento de una red LSTM.

Con esto se quiere poner de manifiesto que para cada proyecto, se ha de com-probar la importancia de cada hiperparámetro de manera independiente de otrosproyectos.

Esto no quiere decir que no se puedan tomar ideas. Por ejemplo, comprobaremoscomo en nuestro proyecto, en el cual se utilizan neuronas LSTM, el tamaño de batchno supone un elemento crítico en el error cometido.

Como se puede suponer al observar los gráficos expuestos a continuación, lainicialización de los hiperparámetros es fija al comienzo para observar cómo se com-porta la red en un mismo punto de inicio. Luego, los mismos entrenamientos hansido realizados en una inicialización aleatoria de los pesos para observar diferentescomportamientos de la red.

Proyecto

En particular en nuestro proyecto, disponemos de una serie de hiperparámetrosa concretar:

1. Tamaño del lote (Batch size) Como hemos visto anteriormente, el estudio deBreuel et al. en 2015, el tamaño de lote no afecta a la precisión del modelo.Aún así, hemos realizado un total de 8 entrenamientos con 4 tamaños de lotediferente para comparar los resultados obtenidos.

La diferencia ha sido mínima y el único problema encontrado es habérnos que-dado sin memoria a mitad de entrenamiento con tamaño 8 y la imposibilidadde comenzar el mismo con tamaño 16. Por ello hemos optado por un tamaño

33

4. Entrenamiento

de lote 4, el cual se ha completado sin problemas y ha tardado bastante menostiempo que con tamaño de lote 2.

2. Número de épocas

Tras los 8 entrenamientos realizados, hemos podido observar como a partir delpaso 25.000, el aprendizaje era mínimo. Por ello hemos optado por usar dichonúmero de iteraciones.

El correspondiente número de épocas es 6. Porque, como ya sabemos, conocidoel número total de iteraciones y el número total de datos, se puede calcularfácilmente dividiendo el número total de iteraciones entre el número de datos.

A lo largo de este apartado, hemos visto que las curvas de todas las gráficas, porlo general, covergen rápidamente, y si observamos con minuciosidad, podemosdarnos cuenta de cómo el apredizaje alcanza un mínimo relativo. Esto se puedever en la línea que dibuja la gráfica. En todos los casos, llegado a cierto punto,se repite un patrón:

Figura 4.8: Patrón en la curva azul de la figura 4.13.

Por ello hemos optado, para este proyecto, entrenar con un número de épocasde entre 5 y 10. En la siguiente figura se puede apreciar un entrenamientorealizado con 15 épocas (color naranja) y uno de 6 (color azul).

Figura 4.9: Entrenamiento de 6 y 15 épocas

3. Razón de aprendizaje (Learning rate)

Para esta variable, también hemos realizado diversos entrenamientos una vezdeterminado el número de épocas y el tamaño de lote. En concreto, hemos

34

4.2. Entrenamiento

entrenado un total de 17500 pólizas aproximadamente con razones de 3 ∗ 10idonde i ∈ N ∪ [−7,−1]

Tras los entrenamientos realizados, encontramos que el valor para la razón deaprendizaje que mejor resultados dan es 3 ∗ 10−4.

Figura 4.10: Entrenamientos para establecer la razón de aprendizaje

Al comenzar los entrenamientos con inicialización aleatoria de los pesos, nosdamos cuenta de que un valor de 3 ∗ 10−3 genera mejores resultados que losanteriormente vistos, con la inicialización fija de los pesos.

Figura 4.11: Entrenamientos con 3 ∗ 10−3 y 3 ∗ 10−4

Vemos en la figura 4.9. como los entrenamientos realizados con una razón deaprendizaje de 3 ∗ 10−3 (colores gris y verde) se sitúan algo por debajo de losentrenamientos realizados con una razón de aprendizaje de 3 ∗ 10−4 (coloresmarrón y azul).

35

4. Entrenamiento

Figura 4.12: Entrenamientos con 3 ∗ 10−4 y 3 ∗ 10−6

Por otro lado, en la figura 4.10. se observa claramente cómo una razón deaprendizaje pequeña (3 ∗ 10−6 en colores naranja y azul claro) realiza unaprendizaje notablemente más lento que con razón = 3∗ 10−4 (colores marróny azul).

Figura 4.13: Entrenamientos con 3 ∗ 10−5 y 3 ∗ 10−3

Por último, comparamos los resultados obtenidos con razones de aprendizaje3 ∗ 10−5 (colores azul claro y rosa) y 3 ∗ 10−3 (colores gris y verde) paracomprobar que, como suponíamos, el aprendizaje es mejor en el segundo caso.

4. Tamaño del estado de la celda (Cell State size)

Hemos visto que las unidades usadas LSTM tienen una parte llamada .Estadode la celda", que guarda información a lo largo del entrenamiento. Es relevanteel tamaño de la misma. En el siguiente gráfico podemos observar los resultados:

36

4.2. Entrenamiento

Figura 4.14: Entrenamientos para establecer el tamaño de la celda

Aunque están prácticamente solapadas, podemos reconocer cuatro líneas en lafigura 4.9. Dos de ellas, las de color azul y rosa, correponden a dos entrena-mientos con tamaño 512. Por el contrario, las de color verde y gris se refieren alos entrenamientos con tamaño 1024. A igual inicialización, podemos observarun comportamiento prácticamente idéntico en las cuatro líneas, con ligerasmejoras en las de tamaño 1024. Pero para determinar cuál es más conveniente,la inicialización conviene que sea aleatoria.

Figura 4.15: Entrenamientos para establecer el tamaño de la celda con inicializaciónaleatoria

En la figura 4.13. podemos ver como lo único que aporta el tamaño de celda =1024 (color rosa) es la velocidad de entrenamiento. Vemos como para un valorde 512 (color azul) en el tamaño de celda, el tiempo necesario para realizar elentrenamiento es mayor.

Además, aunque en la curva azul converge a un error menor, esto se debeprobablemente a los ejemplos usados.

37

4. Entrenamiento

38

Capítulo 5

Resultados

5.1. Métricas de evaluación de los resultadosUna vez realizadas todas las pruebas competentes, haber seleccionado los hi-

perparámetros adecuados y entrenado el modelo, hemos de evaluar los resultadosobtenidos.

En el capítulo anterior, hemos concretado la función error utilizada, pero existeuna diferencia entre la función de error y las métricas. Muy a grandes rasgos, pode-mos decir que una función de error es, a su vez, una métrica que evalua la calidad delmodelo, pero no al revés. Esto es debido a que es necesario que la función error per-mita calcular, de manera sencilla, derivadas con respecto a los pesos de la red y asírecalcular los pesos. Por ello, optamos por la función error descrita anteriormente.

Para la evaluación del lenguaje generado, analizaremos dos de las tres métricasusadas en el artículo objeto de este proyecto para decantarnos finalmente por unade ellas.

5.1.1. BLEU score

Probablemente, la métrica BLEU sea la más usada en la generación de textomediante técnicas de ML en labores de traducción. Se trata de evaluar la precisiónde un n-grama, pero con una modificación.

Un n-grama es, a resumidas cuentas, una subcadena de n elementos. Pongamosun ejemplo:

REFERENCIA: Mi hermano come mucho arroz

CANDIDATO 1: Mi hermano

CANDIDATO 2: Tu hermana come mucho arroz

Se denomina precisión de un n-grama a la secuencia de elementos de un candidatoque coinciden con la secuencia referencia. Se mide en porcentaje. Por lo tanto, elcandidato 1 tendrá una precisión del 100% mientras que el candidato 2 tendrá un60%.

Pero si tratamos con con los siguientes candidatos:

CANDIDATO 1: Tu hermana come come mucho mucho mucho arroz

CANDIDATO 2: Tu hermana come mucho arroz

Tenemos una precisión del 75% en el primer candidato mientras que un 60%en el segundo. Pero claramente se puede observar que no es mejor salida el primercandidato que el segundo[14].

39

5. Resultados

La modificación aplicada en esta métrica es evaluar cada elemento solo si apareceo no en el texto de referencia, por lo que las unigramas ’come’ y ’mucho’ se tienenen cuenta solo una vez, por lo que la precisión pasa a ser 60% también.

Finalmente se aplica la media geométrica y no la aritmética porque la precisióndesciende exponencialmente cuando ’n’ crece, por lo que no se calcularía dicho valorcon justicia para cada n-grama.

Por otro lado, se denomina sensibilidad a la cantidad de aciertos realizados sobreel total de posibilidades. En el caso de la generación de texto, esta tarea es máscomplicada que la ya vista precisión.

Se introduce la sensibilidad (o exhaustividad) mediante la idea de favorecer a loscandidatos de longitud considerable. Esto se realiza con una función que devuelve 1si la logitud del candidato es mayor que la de la referencia y un valor que decredeexponencialmente, en caso contrario:

Figura 5.1: Sensibilidad en BLEU [2]

En los entrenamientos realizados por Sha et al.[2] se consiguen unos valoresmejores (43.91) que en las realizadas en el artículo Neural Text Generation fromStructured Data with Application to the Biography Domain (34.79), en parte debidoa una implementación que tiene en cuenta la importancia del orden de las palabras.

5.1.2. ROUGE score

Esta métrica, muy usada en evaluación de resúmenes, tiene diferentes variantesque expondremos a continuación.

En concreto, ROUGE-n mide la sensibilidad de n-gramas de manera similar ala métrica anterior. De esta manera, podemos decidir la longitud de n. En nuestroproyecto, se mide la sensibilidad de unibramas y bigramas.

Por otro lado, encontramos ROUGE-L. Esta submétrica, se basa en calcular 3valores, los dos primeros miden la subsecuencia común más larga (LCS) y la dividenentre el tamaño del texto referencia (n) o texto hipótesis (m):

Figura 5.2: Precisión (P) y sensibilidad (R)

A su vez, el cálculo del F score se calcula como la media armónica de P (precisión)y R (sensibilidad). Esta media tiene una peculiaridad y es la de tomar en conside-

40

5.2. Textos generados por el sistema

ración todos los valores del cálculo con su respectiva importancia. En el siguienteejemplo se aclara el por qué del uso de la media armónica.

Si con un coche conducimos 10 minutos a 100 km/h y otros 10 minutosa 200 km/h, la media de la velocidad es, efectivamente, 150 km/h. Perosi conducimos 50 km a 100 km/h y la misma distancia a 200 km/h, lamedia de la velocidad no se puede calcular de la misma manera puestoque hemos conducido más tiempo a 100 km/h. De esta manera es nece-sario penalizar de alguna manera a los valores altos y recompensar a lospequeños.

De manera análoga, si el modelo devuelve una sola palabra que está contenidaen el texto referencia, la precisión será muy grande mientras que la sensibilidad no.Si calculásemos la media aritmética, nos daría un valor poco representativo, pues elresultado no es positivo. La media armónica nos da como resultado un valor muycercano a cero, más representativo del éxito obtenido.

Por lo tanto, para obtener un buen F score, es necesario que ambos, precisión ysensibilidad, sean altos.

Existen muchas otras métricas, en concreto, el proyecto utiliza tres. Las dosmencionadas anteriormente y una última llamada NIST, que básicamente es unamejora de la métrica BLEU.

Sin embargo, para nuestra adaptación, se ha optado por el uso únicamente deROUGE. Como hemos mencionado, es una métrica recomendada para evaluar al-goritmos que tratan de resumir textos más grandes y, aunque no es nuestro caso,sí que necesitamos que el algoritmo comprenda la información importante de unaentrada a la hora de generar texto, algo muy similar a resumir.

5.2. Textos generados por el sistema

5.2.1. Inicialización fija de los pesos

A lo largo de los entrenamientos que hemos visto en el capítulo anterior, he-mos ido guardando los resultados obtenidos con diferentes ejemplo. A continuaciónintroduciremos una serie de ellos:

Para el caso de la inicialización fija de los pesos, encontramos resultados muysatisfactorios, a primera vista. En las figuras que se observan a continuación, tenemosen azul el texto esperado y en amarillo el texto generado:

Figura 5.3: Resultados

41

5. Resultados

Figura 5.4: Resultados

Figura 5.5: Resultados

En los tres resultados expuestos, se puede apreciar la calidad bastante conseguidade los mismos. De hecho, estamos hablando de unos valores bastante buenos sihablamos de las métricas usadas, obtenemos valores de 99,9% en todos los casos.

Por otro lado, los valores en las métricas ROUGE-n son bastante buenos paraunigramas, lo cual no es sorprendente pues se trata de una generación de textobasado en palabras y no en caracteres. Sin embargo, observamos que el valor de lamétrica para bigramas es bastante mejorable, poco más de 11%.

En cuanto a métricas, nuestra investigación no da resultados absurdos, sino todolo contrario. Aún así encontramos un fallo a tener en cuenta. Si prestamos atencióna la diferencia entre la frase generada y la deseada de la figura 5.5, la única palabraque cambia es eine por keine. A priori no parece un fallo grave, pero si tenemos encuenta que, en alemán, eine quiere decir algún y keine, ningún, hemos generado unafrase contraria a la deseada.

Por ello también sería necesario prestar atención de alguna manera a este tipode casos.

5.2.2. Inicialización aleatoria de los pesos

Observemos ahora, los resultados generados con una inicialización aleatoria delos pesos en la red.

Figura 5.6: Resultados

Figura 5.7: Resultados

Se comprueba que la complicación más notable es la anteriormente vista conkeine y eine, en la figura 5.6.

42

5.2. Textos generados por el sistema

Por otro lado, seguimos obteniendo resultados bastante satisfactorios teniendoen cuenta el estado de la cuestión, visto en el capítulo 2 de este documento.

43

5. Resultados

44

Capítulo 6

Conclusiones

A lo largo de este proyecto, hemos tenido presente el objetivo del mismo: estudiarla posibilidad de migrar el sistema de generación de documentos de una compañíade seguros, partiendo de un sistema basado en reglas a uno que usara mecanismos deML. Se ha realizado una exhaustiva investigación acerca del estado de la cuestión,estudiando los diferentes sistemas de NLG existentes y haciendo hincapié en aquellosque utilizaban la tecnología deseada.

Tras barajar varias posibilidades de sistemas de NLG, optamos por uno en con-creto que genera la primera frase de las biografías de Wikipedia a partir de losdatos de las mismas. Hemos adaptado dicho sistema a nuestro caso de negocio paratrabajar con nuestra hipótesis de migración.

Hemos tenido que realizar un enrevesado pero eficaz preprocesamiento para podercomenzar con la gran cantidad de entrenamientos que hemos llevado a cabo.

Tras esta etapa final, se han evaluado los resultados obtenidos para poder concluirel proyecto y poder comunicarle a la compañía de seguros la decisión tomada.

6.1. Decisión final

Como respuesta a la questión planteada en el apartado objetivos del primercapítulo acerca de proponer una solución basada en ML para la generación de dichosdocumentos, hemos visto cómo, con la tecnología existente, se trata de una propuestaambiciosa.

En primer lugar, notamos que los pequeños fallos cometidos en las generacionesde texto realizadas, son de importancia considerable, sobre todo si cambia el sentidode la frase.

Además, debido a que nos encontramos en el estado de la cuestión de la gene-ración de texto a partir de información estructurada, por lo que crear un sistemade NLG a partir de datos, para la simple tarea de redactar un documento, es unsinsentido en la actualidad. Aún así, no se descarta la idea de aplicar dichos méto-dos cuando realmente se pueda generar el documento en su totalidad a partir de laspólizas.

Por último, hemos realizado numerosas pruebas generando la primera o la segun-da frase del texto deseado, observando que, de entre más de 17.000, los comienzos delos textos son muy similares, que el sistema aprenda a generarlas es relativamentesencillo. Esto quiere decir, que no aprende a generalizar.

La razón principal por la que se descarta esta opción, es debido al correctofuncionamiento del sistema basado en reglas actual y a que, probablemente, el nuevosistema basado en ML no mejoraría el actual.

45

6. Conclusiones

6.2. Mejoras futuras

A lo largo de este proyecto, se ha observado el avance que han tenido las redesneuronales en los últimos años y, a su vez, nos hemos encontrado con futuras posiblesmejoras en las mismas para la generación de texto.

En concreto, para la NLG a partir de información estructurada, hemos encon-trado el principal problema de la memoria. Si deseamos generar un documento denumerosas líneas, la red de neuronas trabaja con una dependencia entre palabrasgeneradas enorme. A continuación expondremos varias mejoras posibles como ideaso proyectos ya estudiados para la tarea protagonista de este proyecto.

Como ya sabemos, una neurona de una RNN, en el estado t recibe la informacóngenerada por la misma neurona en el estado t-1. Si esto se repite para cada iteración,debemos parar en algún momento, si no, nos quedaremos sin memoria en la unidadde procesamiento que utilice la red. Por ello mencionamos la llamada TruncatedBackpropagation, que computa el error para un número determinado de iteracionesrecurrentes.

Esto quiere decir, que en el cálculo del error en un momento determinado, nose tienen en cuenta los errores futuros, lo que provoca que la red no sea capaz deaprender patrones a largo plazo.

Nuestro proyecto, en el que interesa aprender patrones a largo plazo, no haceuso de la propagación hacia atrás truncada (TBPTT), esto supone que, si deseamosgenerar un texto grande (120 elementos o más en nuestro caso), la red neuronal sequede sin memoria suficiente de manera inminente ya que la información transmitidade manera recurrente es enorme.

Por tanto el objetivo del proyecto[2] es únicamente la primera frase de las biogra-fías de Wikipedia y, consecuentemente, el nuestro tendrá el mismo punto de llegada.

6.2.1. Gradientes sintéticos

Para conseguir generar un texto mayor, se puede aplicar una solución, basada enla investigación de Jaderberg et al.[14] y la de Czarnecki et al.[15], conocida comolos gradientes sintéticos.

46

6.2. Mejoras futuras

Figura 6.1: Gradientes sintéticos

Estos módulos (M1 y M2) serían, a su vez pequeñas redes neuronales que realizanuna predicción del gradiente correspondiente a la capa en que nos encontramos.

Obviamente, esta predicción es, al comienzo, inexacta, por lo que necesitamosesperar a que el módulo de gradiente sintético de la siguiente capa, realice sus cálculosy así recibir un gradiente más cercano a la realidad. Cada capa, por lo tanto, esperaa recibir el error correspondiente de la capa posterior, que posee su propio gradientesintético. Así hasta llegar al error real de la red.

De esta forma, el cálculo del gradiente sintético se va mejorando poco a poco.Solo se ha de esperar al cálculo del error en la primera iteración para comenzar atener gradientes sintéticos cada vez más agudos.

Problema de la memoria

Hemos visto anteriormente, que el problema con las RNN es la propagaciónhacia atrás, necesariamente ha de no ser truncada para que nuestro sistema aprendapatrones largos.

Pues bien, si cada n iteraciones colocamos un módulo de gradiente sintético, lared podría operar un método similar a la propagación hacia atrás sin tener problemasde memoria.

47

6. Conclusiones

Figura 6.2: Paralelismo en ML

Velocidad de entrenamiento

La idea de aplicar paralelismo en el campo del ML, ha estado siempre en el puntode mira de los investigadores. Pero es algo más complicado de lo que parece.

En primer lugar, conviene concretar ¿qué es el paralelismo en ML?La definición de paralelismo en un modelo informático se define como un sistema

dividido en módulos tales que dichos módulos puedan ser evaluados individualmentede manera concurrente. Entre otras cosas, se trata de ejecutar cada módulo de mane-ra que las dependencias a nivel de datos. Esto mejora la velocidad de entrenamientonotablemente.

Figura 6.3: Paralelismo en ML

En la figura 6.1. se propone un ’paralelismo’ en una red neuronal. Podemos vercómo la red se ha dividido en 3 unidades de procesamiento distintas.

Encontramos una serie de problemas con esto:

1. Bloqueo de avance (Forward lock): Para que una capa n pueda comenzar sucorrespondiente proceso de cálculo, es necesario que la capa n-1 haya termi-

48

6.2. Mejoras futuras

nado con la suya en particular, para transferirle los datos de la iteración encuestión. El orden es secuencial por la naturaleza de las redes neuronales.

2. Bloqueo hacia atrás (Backward lock): Por otro lado, en la fase de propagaciónhacia atrás, encontramos el problema de no poder calcular el gradiente paracada capa si no se ha calculado para la capa anterior.

3. Bloqueo de actualización (Update lock): Por último, para actualizar el error co-rrespondiente a cada capa, es necesario una ejecución completa de la iteraciónpara calcular el error cometido.

Por lo tanto, tras los 3 puntos mencionados anteriormente, la tarea del parale-lismo en una red neuronal es complicada.

Para solucionar nuestro problema, podríamos optar por dicha división en variasunidades de procesamiento que almacenaran sin problema una parte de la red. Pero,en consecuencia de estos bloqueos, las unidades de procesamiento estarán la mayoríadel tiempo sin hacer nada, por lo que sería computacionalmente ineficiente y, dehecho, más lento que hacerlo todo en una misma unidad.

La propuesta de los gradientes sintéticos ofrecen una posibilidad de paralelismoreal muy interesante. Como se ha descrito en la figura 6.1. se colocaría un móduloentre capas de la red neuronal de manera que cada capa pueda trabajar de formaautónoma. Se requeriría, eso sí, una ejecución secuencial entera para calcular el errorde los módulos que calculan el gradiente.

De esta manera, se conseguiría una ejecución paralela eficiente que supondría laposibilidad de trabajar con redes mucho más amplias.

Veamos cómo se superan los bloqueos mencionados anteriormente.

Solución a los bloqueos mediante gradientes sintéticos

1. Bloqueo de avance (Forward lock): Este bloqueo no es intuitivo a partir de lomencionado hasta ahora, pero es igual de sencillo. Se trata de crear módulosque conecten la entrada con la capa en cuestión, de manera que la capa nrecibe una aproximación del estado oculto de la capa n-1. Luego, a medidaque avanza el entrenamiento, dicha aproximación va mejorando.

49

6. Conclusiones

De esta manera, cada capa puede seguir el proceso de entramiento de maneraindividualizada ya que se trata de una aproximación de la entrada que recibirála capa. Esta aproximación/estimación, irá mejorando con cada iteración.

2. Bloqueo hacia atrás (Backward lock): Este bloqueo se soluciona con los módu-los de gradiente sintético mencionados al comienzo.

3. Bloqueo de actualización (Update lock): Una vez computado el error real laprimera vez y la aproximación de los errores en los módulos de gradientesintético, se puede actualizar cada capa de forma individualizada.

Una capa de la red neuronal complementamente desacoplada (libre de depen-dencias) se puede apreciar en la siguiente figura:

Figura 6.4: Capa de una RNN desacoplada

Llamamos red desacoplada a aquella red cuyas capas pueden funcionar con pa-ralelismo real.

δ′

representa la salida del módulo M1 mientras que

δ

representa el valor real. Se computará la distancia euclídea como función error.En los estudios mencionados al comienzo del capitulo podemos apreciar distintos

resultados para una misma base de datos y diferentes arquitecturas entre las que

50

6.2. Mejoras futuras

encontramos redes desacopladas normales y condicionales. Estas últimas surgen trasobservar resultados poco satisfactorios en las redes desacopladas normales.

Figura 6.5: Resultados [14]

Podemos observar como el tiempo requerido de entrenamiento es muy elevado enlas redes desacopladas normales (Decoupled Neural Interfaces, DNI) y los resultadosson notablemente mejorables a medida que aumentamos el número de neuronas.Por otro lado, las redes desacopladas condicionales (cDNI) obtienen unos resultadosmejores a los obtenidos usando la técnica de propagación hacia atrás (con 5 y 6capas). Estas últimas se caracterízan por conectar la entrada de la red a cada capade la misma.

Por lo tanto, los resultados invitan a aplicar también esta técnica para optar aresultados más atractivos.

6.2.2. Mecanismo de retroalimentación

Otra opción a tener en cuenta, es la posibilidad de implementar una correccióndel texto generado por parte del usuario.

Supongamos que se ha conseguido, mediante la implantación de gradientes sin-téticos, generar todo el texto necesario y exigido por la UE mediante el uso de datosde las pólizas. Se generará dicho texto y se presentará al usuario en un sencillo editorde textos para que corrija los fallos mejore las expresiones usadas. Tras la corrección,este texto pasará a ser el definitivo y lo guardaremos en una base de datos.

Cuando dicha base de datos tenga un número razonable de textos corregidos, seutilizarán para re-entrenar el modelo y, así obtener mejores resultados. El diagramadel sistema quedaría de la siguiente manera:

51

6. Conclusiones

Figura 6.6: Mejora propuesta

De esta manera, con el paso del tiempo, se obtendrían suficientes datos de entre-namiento para re-entrenar el modelo. El objetivo de esta mejora sería que, llegados acierto punto, los textos generados fueran de la calidad suficiente para que el usuariono tenga que corregirlos.

Hemos repetido a lo largo de este documento, que la generación de texto a partirde datos es una ardua tarea que actualmente se encuentra en sus orígenes y queen los próximos años, probablemente, se consiga desarrollar mucho. Por tanto, laprobabilidad de que el sistema usado en este proyecto se desheche por la apariciónde otros sistemas mucho más eficaces, es muy alta.

Por ello, todas las mejoras propuestas en este apartado, han de ser consideradaspara este sistema, pero se podrían tomar estas para su implementación en otrossistemas futuros.

6.2.3. Nuevos apartados en las pólizas

A lo largo de los meses, la compañía de seguros con la que hemos estado tra-bajando, ha creado nuevos tipos de seguros, comenzado a ofrecer nuevos productosy modificado los ya existentes. Esto ha supuesto que las nuevas pólizas obtendríantextos poco precisos ya que el modelo no ha recibido ciertos datos.

¿Cómo podríamos, entonces, generar los textos de manera automática para lasnuevas pólizas?

Hemos podido observar a lo largo de los entrenamientos, que con solo un 10%del total de los datos (casi 18.000 pólizas), se consiguen unos resultados bastanteaceptables.

Por lo tanto, podríamos optar por la opción de añadir manualmente el textocorrespondiente a los nuevos apartados o, en caso de tratarse de pólizas íntegra-mente nuevas, volver a los métodos basados en reglas que se usan actualmente, y,tras obtener un número considerable de pólizas nuevas con sus respectivos textos,comenzar un entrenamiento del modelo con todos los datos antiguos y los nuevos.

52

6.2. Mejoras futuras

Hecho esto, se vuelve al funcionamiento según la figura 6.6. para ir mejorandopoco a poco hasta alcanzar el objetivo: que ningún usuario tenga que modificar eltexto.

Es cierto, que alcanzar 18.000 pólizas dependerá de la frecuencia con la que lacompañía firme nuevos contratos de seguros. Otra opción sería la de generar datosde prueba. Fácilmente se puede usar la información de usuarios actuales y generardatos de prueba mediante un pequeño programa. Actualizando el método basado enreglas se pueden incluir los nuevos casos sin mayor dificultad.

6.2.4. Estructura de las pólizas

En el capítulo 3 hemos visto como es parte de la estructura de una póliza paraun cliente en concreto. Pero este mismo cliente, puede terner otros documentosen el mismo formato JSON con información adicional a las pólizas y que tieneninformación relevante.

Es cierto que, como hemos mencionado, que haya pólizas vacías o elementoscarentes de sentido, puede suponer un refuerzo para el entrenamiento de nuestroalgoritmo. Pero es verdad que, para que el texto deseado tenga en cuenta toda lainformación de un cliente, deberían de re-estructurarse los archivos JSON.

53

6. Conclusiones

54

Bibliografía

[1] REGLAMENTO (UE) No 1286/2014 DEL PARLAMENTO EU-ROPEO Y DEL CONSEJO, <https://eur-lex.europa.eu/legal-content/ES/TXT/PDF/?uri=CELEX:32014R1286from=ES>

[2] Lei Sha, Lili Mou, Tianyu Liu, Pascal Poupart, Sujian Li, Baobao Chang, Zhi-fang Sui, (2017). Order-Planning Neural Text Generation From Structured Da-ta. ASSOCIATION FOR THE ADVANCEMENT OF ARTIFICIAL INTELLI-GENCE

[3] Remi Lebret, David Grangier, Michael Auli, (2016) Neural Text Generationfrom Structured Data with Application to the Biography Domain. Conferenceon Empirical Methods in Natural Language Processing

[4] Freddie Mercury. Wikipedia [cited 5/3/2019].<https://es.wikipedia.org/wiki/FreddieMercury>

[5] Michael L. Mauldin, (1984). Semantic Rule Based Text Generation. ACL’84/COLING ’84

[6] Ross Turner, Somayajulu Sripada, Ehud Reiter and Ian P Davy, (2006). Ge-nerating Spatio-Temporal Descriptions in Pollen Forecasts. 11th Conference ofthe European Chapter of the Association for Computational Linguistics, Pro-ceedings of the Conference

[7] Skymind. A Beginner’s Guide to Restricted Boltzmann Machines (RBMs),(2019). <https://skymind.ai/wiki/restricted-boltzmann-machine>

[8] Herbert Jaeger, (2002). A tutorial on training recurrent neural networks,covering BPPT, RTRL, EKF and the .echo state network.approach. GMD-Forschungszentrum Informationstechnik

[9] Skymind. A Beginner’s Guide to LSTMs and Recurrent Neural Networks,(2019). <https://skymind.ai/wiki/lstm>

[10] Ian J. Goodfellow, Yaroslav Bulatov, Julian Ibarz, Sacha Arnoud, Vinay Shet,(2014). Multi-digit Number Recognition from Street View Imagery using DeepConvolutional Neural Networks. arXiv:1312.6082v4 [cs.CV]

[11] CIFAR dataset, <https://www.cs.toronto.edu/ kriz/cifar.html>

[12] Roger Parloff, 2016. WHY DEEP LEARNING IS SUDDENLY CHANGINGYOUR LIFE. Fortune [cited 5/3/2019]. <http://fortune.com/ai-artificial-intelligence-deep-machine-learning/>

55

Bibliografía

[13] Rutger Ruizendaal, 2018. Using Deep Learning for Structu-red Data with Entity Embeddings. Medium [cited 10/3/2019]<https://towardsdatascience.com/deep-learning-structured-data-8d6a278f3088>

[14] Animesh Karnewar, 2019. Github repository, [cited 16/3/2019].<https://github.com/akanimax/natural-language-summary-generation-from-structured-data>

[15] Dorian Pyle, (1990). Data Preparation for Data Mining. Morgan KaufmannPublishers.

[16] Desh Raj, 2017. Metrics for NLG evaluation. Medium [cited 23/3/2019].<https://medium.com/explorations-in-language-and-learning/metrics-for-nlg-evaluation-c89b6a781054>

[17] Breuel, Thomas M, (2015). Benchmarking of LSTM networks. ar-Xiv:1508.02774v1

[18] Max Jaderberg, Wojciech Marian Czarnecki, Simon Osindero, Oriol Vinyals,Alex Graves, David Silver, Koray Kavukcuoglu, 2017. Decoupled Neural Inter-faces using Synthetic Gradients. arXiv:1608.05343v2

[19] Wojciech Marian Czarnecki, Grzegorz Swirszcz, Max Jaderberg, Simon Osinde-ro, Oriol Vinyals, Koray Kavukcuoglu, 2017. Understanding Synthetic Gradientsand Decoupled Neural Interfaces. arXiv:1703.00522v1

56