Este es el primero de una serie de artículos destinados a entender el funcionamiento de la famosa arquitectura de red neuronal denominada Transformers y cómo puede ser de utilidad en el sector financiero. Esta arquitectura forma parte de la rama de conocimiento denominada Procesamiento del Lenguaje Natural (PLN) o en inglés Natural Language Processing (NLP), que se enfoca en desarrollar técnicas que permitan cumplir con tareas como traducción automática, generación de texto y análisis de sentimiento.
Pero para ser capaces de entender el concepto de Transformers, antes tenemos que comprender los fundamentos del PLN, especialmente en el sector financiero. Este primer artículo se centra en el proceso de representación de palabras en una codificación numérica que puedan ser entendidos por modelos estadístico-computacionales con tantas posibilidades como las redes neuronales.
Procesamiento de texto con reglas lingüísticas
Los primeros esfuerzos se centraron en el uso de reglas lingüísticas y cálculos estadísticos clásicos para realizar un análisis del texto basado en corpus. Sería algo así como tratar de hacer un gran manual que contuviera todas las palabras y todas las reglas del lenguaje para poder así tratar de entender, modificar o generar texto de la forma más acertada posible.
Figura 1: ejemplo de análisis con reglas lingüísticas
Sin embargo, estos enfoques eran limitados en el sentido de que el lenguaje no es un manual inmutable, sino que por el contrario evoluciona constantemente y además puede llegar a ser muy ambiguo.
Un corpus es un conjunto grande y estructurado de textos que se utiliza para el análisis lingüístico y el entrenamiento de modelos de Procesamiento del Lenguaje Natural.
Aplicación de Machine Learning en PLN
Para mejorar la problemática expuesta anteriorm
ente se vio muy conveniente aplicar los nuevos modelos de Machine Learning que iban surgiendo a tareas relativas con el lenguaje humano. Pero antes de poder aplicar inteligencia artificial sobre texto se ha de ser capaz de convertir el texto en números, de manera que puedan ser entendidos por modelos como por ejemplo redes neuronales. Para ello se recurre a un proceso llamado vectorización.
1. Primeras vectorizaciones: one-hot encoding
Los primeros intentos de vectorización de texto utilizaban métodos simples como la vectorización a través de one-hot encoding.
Vectorizar un texto consiste en realizar una codificación que transforme las palabras que lo conforman (tokens) en números, de tal forma que cada token pasa a ser un vector.
One-Hot Encoding convierte cada palabra en un vector binario donde todas las posiciones son 0, excepto una que es 1 e indica la presencia de esa palabra en particular. Si tenemos un texto basado en una única frase como “se recomienda comprar bonos y acciones”, el vector de cada palabra obtenido mediante la codificación one-hot quedaría como en la siguiente tabla:
Figura 2: ejemplo de one-hot encoding
La técnica de vectorización one-hot encoding presentaba las siguientes limitaciones:
- Dispersión (sparsity): casi todas las componentes de los vectores están a 0 y no aportan información.
- Alta Dimensionalidad: el tamaño del vector es igual al número de palabras únicas en el texto, lo que da lugar a espacios de mucha dimensión. Cada dimensión es una variable, y llegar a tener muchas variables imposibilita el entrenamiento de un modelo de Machine Learning.
- Ausencia de semántica: No tiene en cuenta el significado de las palabras.
- Falta de Información Contextual: al tratar cada palabra de manera aislada, sin importar su contexto o posición, no captura información de cómo las palabras se relacionan entre sí.
El término vocabulario se refiere al conjunto de palabras únicas que un modelo de lenguaje o sistema de PLN puede reconocer, entender y procesar.
2. Avanzando en la vectorización: N-Gramas
Para solventar la falta de información contextual se idearon los N-gramas:
Un N-grama es una secuencia de palabras consecutivas extraídas de un texto, las secuencias pueden ir de dos en dos (bigramas), tres en tres (trigramas)… En la siguiente figura se muestra cómo crear N-gramas de la frase “Se prevé un aumento en la renta”:
Figura 3: ejemplo de N-gramas
Una vez convertido un texto a N-gramas podemos vectorizarlo con técnicas como la de one-hot encoding, pero esta vez eso vectores tendrán algo de contexto que le aporta el propio N-grama.
De esta manera, si por ejemplo se crea un gran corpus de N-gramas asociados a la palabra “renta”, se podrá predecir la probabilidad de aparición de “renta” dado el contexto de palabras que la rodean, si por ejemplo hablamos de trigramas la palabra estará rodeada de dos palabras, aportándole contexto. Aunque en menor medida, los N-gramas siguen presentando las limitaciones de vectorizaciones del tipo one-hot encoding:
- Dispersión (Sparsity): resultan en vectores dispersos, especialmente a medida que el valor de N aumenta.
- Alta Dimensionalidad: la dimensión del espacio de variables es igual al número de N-gramas únicos en el conjunto de datos.
- Falta de Información Contextual: aunque los N-gramas mejoran la captura de contexto sigue siendo limitada a la longitud de N.
- Ausencia de Semántica: aunque arroja significado semántico dentro del N-grama, cada N-grama se trata como una entidad única sin relación inherente con otros N-gramas similares semánticamente, a menos que compartan palabras exactas en la misma secuencia.
3. Vectorización avanzada: Word Embeddings
Para solventar el problema de la dispersión, la alta dimensionalidad y la ausencia de semántica, llegaron los Word Embeddings. También se le conocen como representaciones densas porque consiguen vectorizar las palabras con una dimensión menor. Para conseguirlo combinas técnicas como el one hot encoding y las redes neuronales para crear vectorizaciones de menor dimensión basadas en el contexto semántico de las palabras.
Para simplificar se puede decir que este proceso extrae el significado de las palabras en base a su contexto para crear una codificación de vectores con la menor dimensión posible, menor cuanto menor sea la complejidad del texto.
Una vez realizado el proceso, podríamos simplificar la representación de los vectores obtenidos en un espacio de tres dimensiones, como en la siguiente imagen:
Figura 4: Representación de Embeddings con vectores en tres dimensiones
Gracias a que los valores numéricos se infieren por el contexto, se pueden encontrar relaciones tan increíbles como esta igualdad:
Acción – Dividendo = Bono – Cupón
Es decir, si al vector “Acción” se le resta el vector “Dividendo” y al vector “Bono” el vector “Cupón” se obtiene en ambos casos el valor de “Retorno”.
Para entender conceptualmente la inferencia que da lugar a esta igualdad se debe pensar en la relación semántica de estos dos pares de palabras, y es que tanto una acción como un dividendo generan retorno para los inversores, pero de forma diferente. Las acciones a través de la emisión de dividendos y los bonos a través de la liquidación de cupones.
¡Las implicaciones que puede llegar a tener un resultado como este son impresionantes! Pero el peso de esa información recae en el próximo artículo.