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
Culture & Values
Cómo los valores y la cultura de Nu dan forma a los productos que creamos Ago 7
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



Author: Daniel Braithwaite and Hiroto Udagawa
El trabajo descrito aquí es un esfuerzo colaborativo de varios ingenieros de Nubank (en orden alfabético): Abhishek Shivanna, Arissa Yoshida, Austin McEver, Brian Zanfelice, Cristiano Breuel, Evan Wingert, Fabio Souza, Felipe Meneses, Helder Dias, Henrique Fernandes, Liam O’Neill, Marcelo Buga, Matheus Ramos, and Misael Cavalcanti. We also thank Rohan Ramanath, Daniel Silva, and Guilherme Tanure por su apoyo.
Este es el segundo artículo de una serie de publicaciones sobre cómo modelamos las finanzas de nuestros clientes utilizando modelos fundacionales. Para una introducción al problema, te recomendamos leer la primera publicación de la serie.
En nuestra publicación anterior, “Entendiendo las finanzas de nuestros clientes a través de modelos fundacionales”, presentamos cómo Nubank utiliza modelos fundacionales para construir representaciones de usuarios a partir de los datos de transacciones. Explicamos cómo estos modelos, entrenados con grandes cantidades de datos no etiquetados mediante aprendizaje auto-supervisado, pueden descubrir características generales y generar embeddings informativos del comportamiento financiero de los clientes. Esta estrategia va más allá de la ingeniería de atributos tabulares tradicional y nos ayuda a comprender mejor las necesidades de nuestros usuarios.
Usamos transformers [1] como la arquitectura base para nuestros modelos de secuencia a secuencia, ya que actualmente son la opción predominante para resolver problemas de modelado secuencial. Además, son especialmente buenos aprovechando relaciones de largo plazo dentro de las secuencias de entrada (en comparación con las RNNs [2, 3]), lo cual puede ser particularmente útil en datos de transacciones, dado que los hábitos de consumo suelen tener variaciones cíclicas o estacionales (por ejemplo, durante las festividades muchas personas tienden a gastar más).
Los transformers operan sobre secuencias de embeddings, así que necesitamos definir un proceso que convierta las transacciones de un usuario en una forma que el modelo pueda procesar. Aquí presentamos una manera de construir esa interfaz que, en esencia, convierte nuestro problema de modelado de transacciones en uno que puede abordarse con técnicas estándar de lenguaje natural.
Para este artículo, asumimos que una transacción tiene tres atributos: el monto (representado como un número decimal), la fecha (como un timestamp) y una descripción (como texto libre). Si bien este enfoque es simplificado, en la práctica podemos construir representaciones y codificadores para muchos otros atributos relevantes de una transacción, como el ID del comercio, la ubicación, la categoría, el motivo de rechazo, etc.
Una opción simple para construir esta interfaz sería asignar un ID a cada transacción única, como se hace en literatura sobre recomendación secuencial (por ejemplo, SASRec [4]). Por ejemplo, podríamos mapear cada combinación de descripción, fecha y monto a un ID distinto, y luego convertir estos IDs en embeddings utilizando una tabla de lookup entrenada junto con el transformador. Sin embargo, este enfoque tiene dos desventajas importantes. Primero, el número de combinaciones posibles de transacciones es extremadamente alto, lo que implicaría un espacio de IDs inmenso. Es posible reducir ese espacio usando, por ejemplo, el ID del comercio en lugar de la descripción, pero esto eliminaría información potencialmente valiosa y agregaría dependencias de preprocesamiento, lo que vuelve el modelo más frágil. Segundo, este enfoque sufre del problema del cold start: el modelo no puede manejar transacciones que no haya visto durante el entrenamiento.
Otra opción para conectar transacciones con transformers es usar el enfoque text-is-all-you-need [5], que en el caso de la recomendación de productos crea cadenas de texto combinando los nombres de atributos (como descripción, monto, fecha) con sus valores correspondientes (por ejemplo, “NETFLIX.com”, $32.40, 12/05/2023). Esta técnica también puede aplicarse a datos de transacciones. Las cadenas resultantes pueden tratarse como lenguaje natural y convertirse en embeddings mediante un tokenizador y una tabla de embeddings. Esto permite que el modelo generalice a transacciones no vistas y que incluso aproveche modelos de lenguaje existentes sin modificaciones. Sin embargo, este enfoque hace que cada transacción se represente con muchos tokens, lo cual puede ser un problema, ya que el costo computacional del mecanismo de atención crece de forma cuadrática con la longitud del contexto.
La figura de abajo muestra un ejemplo de las dos interfaces transacción-embedding mencionadas. Sin embargo, para nuestros modelos fundacionales, elegimos una versión modificada de text-is-all-you-need, donde representamos características numéricas y categóricas usando tokens especiales (las características numéricas se convierten previamente en categorías discretas mediante un proceso de cuantización). En los experimentos presentados en esta publicación, representamos cada transacción de la siguiente forma:
Este formato también facilita incluir otros atributos categóricos o numéricos adicionales. Además, usar tokens especiales nos permite reducir el número total de tokens en comparación con una estrategia 100% textual. A continuación mostramos un ejemplo completo de esta representación:
Ahora que tenemos una forma de representar una transacción como una cadena y tokenizarla, podemos aplicarlo al historial de un cliente simplemente concatenando las cadenas de sus transacciones, usando tokens separadores entre ellas. Esta secuencia se trunca cuando alcanza un límite de contexto predefinido.
Finalmente, preentrenamos nuestros transformers utilizando tareas estándar de modelado de lenguaje. Al igual que en los modelos de lenguaje natural, los tokens de transacción se convierten en embeddings mediante una tabla de lookup, y entrenamos el modelo con tareas auto-supervisadas como predicción del siguiente token (next token prediction, NTP) o modelado de lenguaje enmascarado (masked language modeling, MLM).
Por supuesto, la familia de modelos basados en transformers es muy amplia y requiere bastante exploración. La figura de abajo muestra el rendimiento promedio de los embeddings no supervisados (es decir, embeddings generados por el modelo preentrenado) en cuatro tareas de recomendación estándar, a medida que variamos la configuración del modelo. Para acelerar los experimentos (y respetar los límites de hardware), usamos una longitud de contexto corta de 1024 tokens, que llamamos CL.
Finalmente, el modelo LG afinado (Fine-tuned LG) aplica un procedimiento de fine-tuning adicional sobre el Modelo 3 LG, entrenándolo para predecir directamente la etiqueta objetivo. Este modelo mejora 9 puntos respecto al baseline.
Para ponerlo en perspectiva: una mejora relativa de apenas 1 a 1.25 puntos en estas tareas ya es lo suficientemente significativa como para justificar el lanzamiento de una nueva versión del modelo.
En este artículo mostramos cómo reducir el problema de modelar secuencias de transacciones a uno que puede resolverse con métodos de lenguaje natural estándar. A pesar de su simplicidad, este enfoque genera embeddings útiles que aportan valor a múltiples tareas dentro de Nubank. También vimos un adelanto del impacto que puede tener el ajuste fino (fine-tuning).
Este es el segundo artículo de nuestra serie sobre modelos fundacionales aplicados a transacciones. Estos modelos nos permiten entender mejor las finanzas de nuestros clientes y responder a sus necesidades en el momento justo. En el próximo artículo hablaremos sobre nuestra estrategia de joint fusión, que nos permite adaptar estos modelos fundacionales a tareas específicas e incorporar soluciones basadas en atributos tabulares. También exploraremos otros aspectos de nuestro enfoque de modelado fundamental en futuras publicaciones.
Resumen de la serie
Si llegaste hasta aquí, te invitamos a revisar el resto de la serie de blogs para obtener más contexto y profundidad técnica sobre este enfoque.
Descubre las oportunidades
Referencias
[1] Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., … & Polosukhin, I. (2017). Attention is all you need. Advances in neural information processing systems, 30.
[2] Rumelhart, David E; Hinton, Geoffrey E, and Williams, Ronald J (Sept. 1985). Learning internal representations by error propagation. Tech. rep. ICS 8504. San Diego, California: Institute for Cognitive Science, University of California.
[3] Jordan, Michael I. (May 1986). Serial order: a parallel distributed processing approach. Tech. rep. ICS 8604. San Diego, California: Institute for Cognitive Science, University of California.
[4] Kang, W. C., & McAuley, J. (2018, November). Self-attentive sequential recommendation. In 2018 IEEE international conference on data mining (ICDM) (pp. 197-206). IEEE.
[5] Li, J., Wang, M., Li, J., Fu, J., Shen, X., Shang, J., & McAuley, J. (2023, August). Text is all you need: Learning language representations for sequential recommendation. In Proceedings of the 29th ACM SIGKDD Conference on Knowledge Discovery and Data Mining (pp. 1258-1267).
[6] Kazemnejad, A., Padhi, I., Natesan Ramamurthy, K., Das, P., & Reddy, S. (2023). The impact of positional encoding on length generalization in transformers. Advances in Neural Information Processing Systems, 36, 24892-24928.
[7] Dao, T., Fu, D., Ermon, S., Rudra, A., & Ré, C. (2022). Flashattention: Fast and memory-efficient exact attention with io-awareness. Advances in neural information processing systems, 35, 16344-16359.
Descubre las oportunidades