Mas leido
Building Stories
Modo Rua: Redefiniendo el desarrollo de aplicaciones mediante iteración centrada en el usuario Ago 23
Building Stories
NuStories: Adaptación de productos para clientes fanáticos en varios países Oct 30
AI Research
Con IA, Nubank es pionero en un futuro de servicios financieros inclusivos y personalizados Oct 26
Carreras
Reunimos a grandes mentes de diversos orígenes que permiten la discusión y el debate y mejoran la resolución de problemas.
Conoce más sobre nuestras carreras



Escrito por Cristiano Breuel, Gabriel Bakiewicz, George Salvino, Mariana Sant’Anna, Luana Campos, Cinthia Tanaka, Pedro Chaves, Allan García, Kevvin Sahdo, Tan Mukhopadhyay
Imagina un mundo en el que tu llamada a tu banco sea atendida instantáneamente por un agente experto que resuelve rápidamente tu problema. Ya no tendrás que navegar por menús tediosos, escuchar grabaciones interminables o ser transferido de un agente a otro. Para muchos clientes de Nubank, esto no es un sueño lejano sino una realidad, gracias a nuestra IA de eventos en tiempo real, Precog.
En este artículo, echamos un vistazo al recorrido de Nubank durante la última década, desde una empresa de un solo producto a una potencia financiera multiproducto que opera en tres países, que motivó el desarrollo de Precog, y detallamos la arquitectura de su sistema, algunos de los desafíos técnicos que enfrentamos y los resultados que logramos.
Antecedentes
Desde que Nubank comenzó hace diez años, utilizamos el aprendizaje automático para tomar decisiones, comenzando con la suscripción de créditos. Científicos de datos altamente capacitados crearon algunos de los modelos de mejor rendimiento para prepararnos para un éxito sin precedentes.
Sin embargo, en aquel entonces éramos una empresa de un solo producto, en un solo país, y atendíamos a usuarios bastante homogéneos. Mucho ha cambiado desde entonces, tanto dentro de Nubank como en el resto del mundo. Nubank ahora opera en tres países y ofrece más de diez productos financieros diferentes (por ejemplo, cuentas corrientes/de ahorro, inversiones, seguros) a una gran parte de la población. Este ritmo y escala de cambio y complejidad han hecho que sea casi imposible para algunos equipos de Ciencia de Datos mantenerse al día, especialmente los equipos horizontales, como Customer Excellence, que se encarga del soporte.
Mientras tanto, en el mundo exterior, la IA dio grandes pasos gracias a las nuevas arquitecturas de modelos y al surgimiento del paradigma del modelo básico. A finales de 2021, comenzó a tomar forma una visión para hacer IA en Nubank en esta nueva realidad. Decidimos comenzar con nuestras plataformas de atención al cliente, cuyas responsabilidades incluyen predecir las necesidades de atención al cliente en tiempo real.
Descubre las oportunidades
Motivación
Nubank está organizado en varias unidades de negocio, que a su vez ofrecen muchos productos y funcionalidades, implementados como microservicios independientes. El resultado es un entorno descentralizado que permite a los equipos moverse de forma rápida e independiente. También significa que puede resultar complicado tener una visión completa del cliente en todos estos productos. Tradicionalmente, nos basábamos en el conocimiento empresarial para pensar en funciones que podrían ser útiles para modelos específicos y luego buscábamos datos en toda la organización para crear esas funciones. A medida que nuestra cartera de productos y nuestra complejidad crecieron, se volvió más difícil mantener el ritmo y nuestros modelos comenzaron a quedarse atrás de la evolución del producto.
Para abordar este problema de manera fundamental, necesitábamos automatizar y ampliar el procesamiento de datos en tiempo real y la ingeniería de funciones para admitir muchas líneas de productos y casos de uso. Ahí es donde entró Precog.
Representación
La idea clave detrás de Precog es que los eventos de los clientes (por ejemplo, flujo de clics en aplicaciones, transacciones) se pueden codificar como una secuencia de símbolos. Esto significa que podemos utilizar técnicas que se desarrollaron originalmente para el procesamiento del lenguaje natural, como incrustaciones y modelos de secuencia, para comprender y predecir las necesidades de los clientes.
La fuente más rica de datos que nos faltaban en nuestros modelos era el flujo de clics de nuestra aplicación, así que ahí es donde decidimos comenzar. Estos datos son recopilados por un sistema interno que recibe eventos de la aplicación móvil de Nubank y otras fuentes, a través de una API flexible.
El principal desafío con estos datos es la falta de una estructura obligatoria entre los diferentes equipos de productos. Cada registro se identifica mediante un nombre de métrica y un JSON con pares de atributo/valor, todos los cuales están determinados por los ingenieros que implementan cada flujo. Para evitar cuellos de botella en el desarrollo, no existe una gobernanza centralizada y estos valores pueden cambiar rápidamente con cada actualización de la aplicación.
Para manejar estos datos semiestructurados, Precog convierte los registros en secuencias de identificadores basados en texto, mientras elimina símbolos poco frecuentes, como identificaciones únicas.
Hay muchas formas posibles de aprender de estas representaciones de cadenas, con diferentes niveles de complejidad. Queríamos algo que no estuviera vinculado a ningún dominio en particular, para que pudiera reutilizarse fácilmente en diferentes modelos. Siguiendo nuestro enfoque habitual de empezar de forma sencilla para evaluar rápidamente el valor de una solución, decidimos representar a los clientes con una bolsa de palabras con los símbolos de sus eventos.
Precog aprende las incorporaciones de los eventos de manera autosupervisada, utilizando el aprendizaje contrastivo. Un conjunto de eventos de un cliente se coloca como ancla, con un único evento eliminado aleatoriamente para que sirva como muestra positiva, mientras que otros eventos que no ocurren para ese cliente se muestrean aleatoriamente como negativos. El aprendizaje contrastivo intenta minimizar la distancia entre el ancla y las muestras positivas y al mismo tiempo maximizar la distancia a las muestras negativas. Al final, se produce un vector para cada símbolo del vocabulario y los agregamos para obtener la representación del cliente.
Arquitectura del sistema
El componente principal de Precog es un canal para entrenar incorporaciones de eventos/clientes y luego incorporar las incrustaciones aprendidas en modelos posteriores en el momento de la capacitación y el servicio. Para entrenar las incrustaciones, utilizamos la biblioteca Starspace, que proporciona una implementación flexible y eficiente para aprender cualquier incrustación de entidades.
Para entrenar un modelo descendente, tomamos registros codificados por identificadores de clientes anónimos y marcas de tiempo, junto con las etiquetas que queremos predecir y cualquier otra característica, y los unimos con los conjuntos de eventos relevantes. Por ejemplo, para predecir el motivo de contacto de una llamada de atención al cliente, tomamos los eventos de ese cliente de la ventana de eventos anterior a la llamada y el motivo de contacto clasificado por los agentes.
En tiempo de ejecución, un microservicio de consumidor de eventos (implementado en nuestro lenguaje canónico de servicios comerciales, Clojure) transforma los datos sin procesar del evento en un formato de cadena y los almacena en un almacenamiento temporal de baja latencia (Redis). En el momento de la entrega, el microservicio del modelo descendente (integrado en Python) recupera eventos relevantes del caché, calcula incrustaciones y las utiliza como características para un modelo de clasificación.
Desafíos técnicos
Identificar la ventana óptima para los eventos: Nuestro enfoque de modelado actual no tiene en cuenta el orden o la edad de los eventos, por lo que notamos que aumentar la ventana de eventos reducía el rendimiento del modelo, porque los eventos más relevantes tienden a ser recientes. Sin embargo, reducir demasiado la ventana disminuiría nuestra cobertura, ya que es posible que muchos clientes no hayan interactuado con la aplicación recientemente. Después de realizar varias pruebas, por ahora nos decidimos por una ventana de 3 horas, pero tenemos la intención de explorar mejores formas de seleccionar eventos que equilibren la cobertura y la precisión, incluidas formas de incorporar información sobre la edad del evento.
Volumen y costo de datos: El volumen de estos datos es bastante grande, por lo que anticipamos que los costos de almacenamiento serían un problema. Planeamos mantener los datos preparados en un almacenamiento de baja latencia solo durante el tiempo que fuera necesario para la inferencia (los datos históricos sin procesar ya se guardan en un almacenamiento de alta latencia). Para facilitar la implementación, nuestra primera versión utilizó una base de datos de valores clave de baja latencia con soporte integrado para la limpieza del tiempo de vida (AWS DynamoDB). Sin embargo, el enorme volumen de eventos a almacenar y la cantidad de escrituras y lecturas hacían que el costo fuera prohibitivo. Luego cambiamos a una base de datos en memoria (Redis), lo que hizo que la implementación fuera un poco más compleja, pero redujo el costo a una pequeña fracción de la versión original, lo que hizo que la solución fuera rentable.
Necesidad de reentrenamiento frecuente: Dado que las definiciones de eventos cambian con frecuencia por las razones mencionadas anteriormente, también debemos volver a entrenar las incorporaciones con frecuencia. Sin embargo, volver a entrenar las incorporaciones significa que también debemos volver a entrenar los modelos posteriores que dependen de ellas. Nuestra solución para este problema es proporcionar un proceso de reentrenamiento estandarizado que los modelos posteriores puedan adoptar fácilmente para reentrenarse periódicamente.
Resultados
Nuestra primera aplicación de Precog es el enrutamiento de llamadas telefónicas, a través de un modelo descendente que utiliza las incorporaciones del cliente y otras características para clasificar el producto con el que el cliente necesita ayuda con mayor probabilidad. Si el modelo es lo suficientemente seguro, el sistema dirige a los clientes directamente a los especialistas. De lo contrario, hablarán con agentes generalistas, quienes podrán trasladarlos a especialistas si no pueden manejar el problema por sí mismos.
Al agregar la integración de Precog, logramos aumentar el volumen de llamadas que se enrutan correctamente a agentes especializados sin necesidad de la entrada del cliente en más del 50%, en comparación con el modelo anterior. Esto resultó en reducciones significativas en el tiempo para resolver problemas y aumentos en la satisfacción del cliente. Hubo mejoras en todos los productos que probamos, pero notamos que las mayores ganancias ocurrieron en productos más nuevos para los cuales aún no habíamos implementado características tradicionales. Esto confirma nuestra hipótesis de que podemos reemplazar la laboriosa ingeniería de funciones con un enfoque más escalable.
Otro beneficio de Precog es la reducción de la latencia. Para las funciones tradicionales, tuvimos que llamar a múltiples servicios REST y procesar los resultados, lo que resultó en una latencia alta en el peor de los casos. Con Precog, el tiempo para recuperar y procesar datos de eventos es mucho menor y más predecible, lo que resulta en una menor latencia general de entrega. La actualidad de los eventos (el tiempo entre el evento y estar disponible para servir) fue una preocupación inicialmente, pero en la práctica los vemos disponibles casi instantáneamente, lo que hace que este enfoque sea muy competitivo con la recuperación REST sincrónica.
Además de estas mejoras en el tiempo de ejecución, también nos dimos cuenta de que existe un gran beneficio para el ciclo de desarrollo: agregar funciones de Precog a un modelo normalmente lleva un par de semanas, frente a meses para los enfoques tradicionales, lo que nos permite iterar y ofrecer valor a los clientes más rápido.
Actualmente estamos trabajando en otras aplicaciones para Precog, como recomendaciones de artículos de preguntas frecuentes y sugerencias de temas en la interfaz de soporte por chat. Además, prevemos muchos más usos para él en el futuro.
Trabajo futuro
Esto es solo el comienzo para Precog y la IA de representación de clientes en Nubank. Hay varias vías prometedoras para seguir desarrollando esta tecnología y aplicarla a nuestros productos, como más fuentes de datos y técnicas de modelado mejoradas. También tenemos la intención de invertir en modelos de base adicionales para construir la próxima generación de la pila de inteligencia artificial para Nubank.
Descubre las oportunidades