EN

En el ámbito de la tecnología, y especialmente en el desarrollo de soluciones basadas en Inteligencia Artificial, la experimentación y la innovación son tareas que forman parte fundamental de nuestro trabajo. Desde BBVA AI Factory apostamos por reservar bloques de tiempo específicos para experimentar con tecnología del estado del arte y trabajar en ideas y prototipos que más adelante podrían incorporarse al abanico de soluciones basadas en IA de BBVA. Son lo que llamamos los sprints de innovación.

En uno de estos sprints nos preguntamos cómo podríamos ayudar a los gestores en sus conversaciones con los clientes. Los gestores, que asesoran y ayudan a los clientes en la gestión de sus finanzas, en ocasiones hacen búsquedas manuales en repositorios de respuestas predefinidas para responder a las preguntas más sencillas y frecuentes. Esto nos confirmó el potencial de desarrollar un sistema de Inteligencia Artificial que sugiriera posibles respuestas a los gestores tras recibir una pregunta de un cliente, de tal forma que con un solo click pudieran responder. La idea detrás de este sistema consistiría en ahorrar tiempo a los gestores en escribir respuestas que no requieren de su conocimiento experto, permitiéndoles así centrarse en aquellas que aporten mayor valor al cliente.

Así que nos pusimos manos a la obra. Una vez definido el problema, pronto empezaron a surgir diferentes formas de abordarlo. Por un lado, pensamos en un sistema de búsqueda de la pregunta más similar dentro del histórico a la planteada por el cliente y, posteriormente, evaluar si la respuesta que se dió en su día es válida para la situación actual. Por otro lado, también probamos a clusterizar (agrupar) las preguntas y sugerir la respuesta canónica pre-establecida para el clúster (grupo) al que pertenece la pregunta. Sin embargo, estas soluciones requerían mucho tiempo de inferencia o eran muy manuales (clustering de preguntas).

Finalmente, la solución que nos resultó más eficiente desde el punto de vista de tiempo de inferencia y que además era capaz de sugerir respuestas automáticas a multitud de preguntas de diferentes temáticas, sin tener que hacer un previo clustering, fue la de los modelos sequence to sequence también conocidos por su abreviatura en inglés: seq2seq.

¿Qué es seq2seq?

Los modelos seq2seq toman una secuencia de ítems de un ámbito y generan otra secuencia de ítems de otro ámbito diferente. Uno de sus usos paradigmáticos es la traducción automática de textos; un modelo seq2seq entrenado permite transformar una secuencia de palabras escritas en un idioma en una secuencia de palabras que mantiene el mismo significado en otro idioma. La arquitectura básica de seq2seq consiste en dos redes recurrentes (decoder y encoder), llamadas Long-Short Term Memory (LSTM).

Figura 1. Redes recurrentes LSTM (encoder y decoder)

Las redes LSTM son un tipo de red neuronal en la que cada una de sus celdas (hidden units) procesa en orden un elemento de la secuencia (en este caso, la representación de una palabra). Lo peculiar de estas redes neuronales es que conservan la información relevante de la celda anterior, al mismo tiempo que descartan la información que no lo es para las siguientes celdas. De esta forma la red aprende no solo de datos aislados, sino también de la información inherente a la secuencia, que va acumulando celda a celda. Esta característica es especialmente significativa en texto, puesto que el orden de las palabras es importante para construir oraciones sintáctica y semánticamente correctas. Técnicamente, también implica una gran ventaja, ya que reduce considerablemente el coste computacional. Para conocer en más detalle las LSTM recomendamos la lectura de este post de Christopher Olah.

Para ilustrar este concepto pensemos en los modelos de lenguaje cuyo propósito es predecir cuál será la palabra siguiente más probable. Por ejemplo: “María ha nadado durante dos horas y está muy ____”. En este caso, algo importante a “recordar” (información que pasa de una celda a la siguiente) es el género del último sujeto mencionado, de forma que la red sea capaz de determinar que la palabra “cansada” tendrá mayor probabilidad de ser la palabra correcta que “cansado”.

Como hemos mencionado anteriormente, la arquitectura seq2seq se compone de dos redes LSTMs: encoder y decoder. Volviendo al caso de la traducción automática, la misión de la red encoder es aprender la estructura de las frases en inglés (secuencias de entrada), mientras que el decoder hace lo propio con las frases en español (secuencias de salida). El decoder, además, también aprende la relación que existe entre ambas secuencias. De esta forma, el resultado de la última celda del encoder es un vector, llamado thought vector, que almacena la información de las celdas anteriores y por tanto, es una representación matemática de la frase en inglés, -es decir, de la secuencia de entrada-. Finalmente, el decoder utiliza estos vectores junto con la respuesta también codificada en representación matemática para el entrenamiento. Durante el entrenamiento la red aprende los patrones que permiten asociar una secuencia de entrada y otra de salida.

Figura 2. Dibujo ilustrativo de arquitectura de una red seq2seq (entrenamiento e inferencia)

¿Cómo hemos aplicado seq2seq para construir nuestro sistema de sugerencia de respuestas?

Aunque la traducción es una de las aplicaciones más evidentes, la ventaja de estos modelos es que son muy versátiles. Trasladando su funcionamiento a nuestro caso, podríamos “alimentar” el encoder con las preguntas de los clientes (secuencia 1) y el decoder con las respuestas que en su día dieron los gestores (secuencia 2).

Y eso hicimos. Seleccionamos de nuestro histórico más de un millón de conversaciones cortas iniciadas por el cliente con su gestor (no más de cuatro mensajes). Con este conjunto de datos, realizamos un pre-procesado clásico (lowercase, eliminar signos de puntuación) y descartamos saludos y despedidas mediante expresiones regulares. Este paso es útil ya que uno de los hiper parámetros de las redes LSTM es la longitud de la secuencia a aprender y es por ello que, suprimiendo esta información no relevante, podemos aprovechar mejor la capacidad de aprendizaje del modelo para secuencias más diversas o variables, así como reducir el coste de computación que tendría aprender secuencias más largas. Previamente a la fase de preprocesamiento, aplicamos nuestra librería de NER (Named Entity Recognition) para enmascarar ciertas entidades como pueden ser importes, fechas o expresiones temporales para tratarlas de forma homogénea y que el modelo posteriormente creado les de la misma importancia.

Una vez entrenada la red utilizamos algunas preguntas de test (no incluidas en el entrenamiento) y evaluamos manualmente la sugerencia de nuestro sistema. Como vemos en el siguiente ejemplo, el modelo es capaz de sugerir una respuesta adecuada a preguntas de los clientes.

Figura 3. El modelo sugiere una respuesta correcta a la pregunta del cliente

Sin embargo, cuando la pregunta está relacionada con la situación particular de un cliente, la respuesta sugerida no es del todo satisfactoria. Esto es debido a que el modelo no tiene en cuenta el contexto específico de cada cliente.

Por ejemplo, en el caso que mostramos a continuación, el sistema propone una respuesta que podría ser correcta pero no tiene en cuenta si efectivamente la tarjeta ya se ha enviado al cliente. Esta información contextual actualmente no es contemplada por el modelo. Uno de los próximos pasos en esta investigación sería conseguir que el modelo aprendiese a generar el mensaje de respuesta conforme a la situación actual del cliente ante una casuística concreta.

Figura 4. El modelo sugiere una respuesta no suficientemente correcta (falta de contexto)

Finalmente, también existen algunos casos en los que la respuesta sugerida al gestor por el modelo no es correcta, ya que no tiene relación con la cuestión planteada por el cliente.

Figura 5. En ocasiones, el modelo ofrece respuestas incorrectas

¿Cómo validamos nuestro modelo seq2seq?

Evaluar el resultado de un texto generado automáticamente es una tarea compleja. Por un lado, resulta imposible evaluar manualmente un conjunto de test de preguntas y respuestas relativamente grande. Además, si quisiéramos optimizar el modelo, posteriormente necesitaríamos algún método para medir la calidad y adecuación de las respuestas sugeridas por el modelo de forma automática.

Sin embargo, sí podemos realizar una evaluación manual que nos permita obtener, con un conjunto pequeño de mensajes y según nuestro criterio como clientes1, qué respuestas son adecuadas y cuáles no, calculando posteriormente la correlación entre nuestra evaluación manual y la evaluación obtenida por conjuntos de métricas automáticas como Rouge, Blue, Meteor o Accuracy.

La siguiente figura representa la correlación entre la evaluación manual (false: respuesta incorrecta, true: respuesta correcta) y los valores de las métricas automáticas. En un primer análisis observamos que bleu_1, rouge_1 y especialmente rouge-L son las métricas que mejor se alinean con el criterio humano. Esto es importante de cara a optimizar la arquitectura de seq2seq y para la evaluación automática del sistema. Aunque este estudio requeriría más investigación, consideramos que es suficiente para esta fase de prototipado.

Figura 6. Boxplot agrupado por corectness (corrección)

Con estas primeras pruebas realizadas con seq2seq (hemos omitido algunos experimentos fallidos y otras decisiones tomadas en el camino), hemos podido demostrar el enorme potencial de esta técnica en el contexto de las comunicaciones cliente-gestor en BBVA. Un sistema basado en seq2seq es capaz de sugerir respuestas a preguntas sencillas de los clientes. Sin embargo, para otras muchas tareas, como dar respuesta a preguntas relacionadas con el contexto específico de un cliente, es mucho mejor optar por la relación directa con nuestros gestores BBVA.

Dentro de la Inteligencia Artificial, el Procesamiento de Lenguaje Natural (NLP por sus siglas en inglés) ha sido uno de los campos clave desde los orígenes. Al fin y al cabo, el lenguaje es una de las cosas más ligadas a la inteligencia humana. En los últimos años este campo ha sufrido una nueva revolución semejante a la que hace 20 años supuso la introducción de las técnicas estadísticas y de aprendizaje automático (Machine Learning). Esta revolución la abanderan nuevos modelos basados en redes neuronales profundas que facilitan la codificación de la información lingüística y la posibilidad de reutilización en diversas aplicaciones. Con la aparición en 2018 de modelos de lenguaje auto-supervisados como BERT (Google), entrenados sobre una ingente cantidad de texto, se inicia una época en la que la Transferencia de Aprendizaje (Transfer Learning) empieza a ser una realidad práctica para NLP, tal y como lo ha sido para el campo de la Visión Artificial desde 2013.

El concepto de Transferencia de Aprendizaje se basa en la idea de reutilizar el conocimiento adquirido realizando una tarea para abordar nuevas tareas que son similares. En realidad, es una práctica que los humanos llevamos a cabo constantemente en nuestro día a día. Aunque afrontamos nuevos retos, nuestra experiencia nos permite abordar los problemas desde un estadío más avanzado.

La mayoría de algoritmos de aprendizaje automático (Machine Learning), en particular si son supervisados, solo pueden resolver la tarea para la que han sido entrenados mediante ejemplos. Si lo llevamos al mundo culinario, el algoritmo sería como un cocinero súper especializado, entrenado para realizar una única receta. Pedirle una receta diferente a este algoritmo puede tener consecuencias no deseadas, como realizar predicciones incorrectas o incorporar sesgos.

El objetivo de utilizar Transferencia de Aprendizaje es que nuestro cocinero -que es el mejor cocinando ravioli carbonara- sea capaz de aplicar lo aprendido para alcanzar un éxito razonable cocinando unos spaguetti a la boloñesa. Aunque la salsa sea diferente, puede reutilizar el conocimiento adquirido a la hora de cocer la pasta (figura 1).

Figura 1. Aplicando Transferencia de Aprendizaje a modelos de aprendizaje automático.

Este mismo concepto de reutilización de conocimiento, aplicado al desarrollo de modelos de Procesamiento de Lenguaje Natural (NLP), es el que hemos explorado en una colaboración con Vicomtech, un Centro de Investigación del País Vasco especializado en técnicas de interacción humano-máquina basadas en inteligencia artificial. En concreto, el objetivo de este trabajo conjunto ha sido conocer las aplicaciones que tiene la Transferencia de Aprendizaje y valorar los resultados que ofrecen estas técnicas, pues vemos que pueden ser aplicables en las interacciones en lenguaje natural entre clientes y gestores de BBVA. Después de todo, el propósito que perseguimos con este trabajo no es otro que mejorar la forma en la que nos relacionamos con nuestros clientes.

Una de las tareas que hemos abordado ha consistido en el procesamiento de información textual en diferentes idiomas. Para ello, hemos utilizado conjuntos de datos de dominio público. Es el caso de un dataset de opiniones de restaurantes, generado para la competición académica Semeval 2016, que incluye reseñas en inglés, español, francés, ruso, turco, árabe y chino. El objetivo ha sido identificar los diferentes aspectos o características que se mencionan (comida, ambiente o servicio al cliente, entre otros), en inglés, español y francés. En la siguiente tabla se muestra el volumen de datos de los distintos idiomas.

Tabla 1. Distribución de textos, frases y anotaciones en los datasets de SemEval2016 utilizados

Con este ejercicio queríamos validar si las técnicas de Transferencia de Aprendizaje basadas en el uso de modelos BERT eran apropiadas para adaptar un clasificador multiclase que detectase los aspectos en diferentes idiomas. Frente a este enfoque, existen alternativas basadas en la traducción del texto para adaptarla a un único idioma. Esto lo podemos hacer traduciendo la información que utilizaremos para entrenar el modelo, por un lado, o bien traduciendo directamente las conversaciones de los clientes que queremos clasificar. Sin embargo, estas alternativas también encierran problemas e ineficiencias.

Recuperando el ejemplo culinario que comentábamos al inicio de este artículo, en nuestro caso podríamos considerar que el texto del que disponemos son los ingredientes de la receta. Estos “datasets” de información son diferentes de un idioma a otro (de igual modo que los ingredientes varían según la receta). Por otro lado, la capacidad adquirida por el modelo para clasificar los textos es un conocimiento que podemos reutilizar en varios idiomas; del mismo modo que reutilizamos el conocimiento sobre cómo cocer la pasta en recetas diferentes.

En este experimento hemos partido de un modelo pre-entrenado BERT multilingüe de dominio público, y hemos realizado un ajuste fino (fine tuning) sobre el dataset de restaurantes. En la siguiente figura se muestra el procedimiento (figura 2).

Figura 2. Utilizamos un modelo multilingüe pre-entrenado, BERT, y realizamos un ajuste fino (fine tuning) en el dataset de restaurantes.

Los resultados obtenidos adaptando este modelo, entrenado con dato genérico, al dataset de reseñas en cada idioma, fueron similares a los reportados en 2016 para la tarea en inglés, francés y español por modelos más especializados. Esto es consistente con los resultados de diferentes trabajos de investigación sobre la capacidad de este tipo de modelos de alcanzar muy buenos resultados.

Una vez ajustado un clasificador para texto en inglés, el proceso de Transferencia de Aprendizaje entre idiomas lo llevamos a cabo realizando una segunda etapa de fine tuning con el dataset del segundo idioma (figura 3).

Figura 3. Realización de una segunda etapa de ajuste fino (fine tuning) con el segundo conjunto de datos.

Para medir la efectividad del proceso comparamos el comportamiento de este clasificador con el comportamiento resultante de realizar una única etapa de ajuste fino partiendo del modelo base multilingüe.

Los resultados nos indican (ver tabla 2) que, partiendo del modelo en inglés y utilizando menos datos del idioma de destino (español o francés, en este caso) podemos alcanzar resultados similares a los que obtenemos al adaptar un modelo para cada idioma. Por ejemplo, en el caso del español, alcanzamos un desempeño muy similar si partimos del modelo en inglés y añadimos sólo el 40% de dato en español. Por otro lado, en el caso del francés, los resultados se empiezan a igualar al utilizar el modelo en inglés y el 80% del dato en francés. Por último, si utilizamos todos los datos disponibles, los resultados mejoran de forma moderada si los comparamos con los resultados que alcanzamos al entrenar solo con los datos de cada idioma. En cambio, la mejora es notable respecto a usar el modelo en inglés para el resto de idiomas. Es importante tener en cuenta que estos resultados van a depender de la tarea concreta en la que se aplican.

Tabla 2. Métricas de clasificación para los conjuntos de test en los idiomas destino (ES o FR) de un clasificador entrenado con diferentes combinaciones de datos en el idiomas origen (EN) y destino (ES o FR).

Los diferentes resultados obtenidos con este experimento son muy esperanzadores desde el punto de vista de aplicación en problemas reales, ya que nos estarían indicando que los modelos son capaces de utilizar el conocimiento adquirido en un idioma para extrapolarlo a otro, obteniendo la misma calidad con menos dato etiquetado. De hecho, uno de los principales obstáculos al desarrollar cualquier funcionalidad de NLP en un entorno industrial es disponer de una gran cantidad de datos de calidad, y tener que desarrollarlo para cada uno de los idiomas. Por lo tanto, requerir de menos dato etiquetado siempre es una gran ventaja a la hora de desarrollar las funcionalidades.

El conocimiento obtenido a raíz de esta colaboración con Vicomtech nos va a permitir, de esta forma, construir de forma más ágil funcionalidades de ayuda al gestor en su relación con el cliente, permitiendo reducir el ciclo de desarrollo de un caso de uso en un idioma o canal distinto a aquel en el que originalmente se implementó.