Las incrustaciones de vectores son representaciones numéricas de puntos de datos que expresan diferentes tipos de datos, incluidos datos no matemáticos como palabras o imágenes, como una matriz de números que los modelos de aprendizaje automático (ML) pueden procesar.
Los modelos de inteligencia artificial (IA), desde los simples algoritmos de regresión lineal hasta las intrincadas redes neuronales que se utilizan en el deep learning, operan a través de la lógica matemática.
Cualquier dato sobre el que opere un modelo de IA, incluidos los datos no estructurados, como texto, audio o imágenes, debe expresarse numéricamente. La incrustación de vectores es una forma de convertir un punto de datos no estructurado en una matriz de números que aún expresa el significado original de esos datos.
Los modelos de entrenamiento para generar representaciones vectoriales de puntos de datos que se corresponden significativamente con sus características del mundo real nos permiten hacer suposiciones útiles sobre cómo se relacionan entre sí las incrustaciones de vectores.
Intuitivamente, cuanto más similares sean dos puntos de datos del mundo real, más similares deberían ser sus respectivas incrustaciones de vectores. Las características o cualidades compartidas por dos puntos de datos deben reflejarse en sus dos incrustaciones de vectores. Los puntos de datos diferentes deben tener incrustaciones de vectores diferentes.
Dotados con dichas suposiciones lógicas, las incrustaciones de vectores se pueden usar como entradas para modelos que realizan tareas útiles en el mundo real a través de operaciones matemáticas que comparan, transforman, combinan, ordenan o manipulan esas representaciones numéricas.
La expresión de puntos de datos como vectores también permite la interoperabilidad de diferentes tipos de datos, actuando como una especie de lingua franca entre diferentes formatos de datos al representarlos en el mismo espacio de incrustación. Por ejemplo, los asistentes de voz de los teléfonos inteligentes “traducen” las entradas de audio del usuario en incrustaciones de vectores, que a su vez emplean incrustaciones de vectores para el procesamiento de lenguaje natural (PLN) de esa entrada.
Por lo tanto, las incrustaciones de vectores sustentan casi todo el aprendizaje automático (ML) moderno, impulsando los modelos empleados en los campos del PLN y la visión artificial, y sirviendo como componentes básicos de la IA generativa.
Los vectores pertenecen a la categoría más grande de tensores. En el aprendizaje automático (ML), “tensor” se usa como un término genérico para una matriz de números, o una matriz de matrices de números, en un espacio n-dimensional, que funciona como un dispositivo de contabilidad matemática para datos.
Es útil tener en cuenta que ciertas palabras se usan de manera diferente en un contexto de aprendizaje automático que en el lenguaje cotidiano u otros entornos matemáticos. “Vector”, por ejemplo, tiene una connotación más específica en física, que generalmente se refiere a una cantidad con magnitud y dirección, que en aprendizaje automático.
De igual manera, la palabra “dimensión” tiene diferentes implicaciones en el aprendizaje automático, dependiendo de su contexto. Al describir un tensor, se refiere a cuántas matrices contiene ese tensor. Al describir un vector, se refiere a cuántos componentes y números individuales contiene ese vector. Términos análogos como “orden” o “grado” pueden ayudar a reducir la ambigüedad.
También se pueden aplicar varias transformaciones sencillas a matrices u otros tensores n-dimensionales para representar los datos que contienen en forma vectorial. Por ejemplo, una matriz de 4x4 se puede aplanar en un vector de 16 dimensiones; un tensor tridimensional de una imagen de pixeles de 4x4 se puede aplanar en un vector de 48 dimensiones. Las incrustaciones toman predominantemente la forma de vectores en el ML moderno.
Por el contrario, los vectores en otros contextos, como la física, no son necesariamente incrustaciones. Pero en aprendizaje automático, los vectores suelen ser incrustaciones y las incrustaciones suelen ser vectores.
Aunque los términos a menudo se usan indistintamente en ML, “vectores” e “inscrutaciones” no son lo mismo.
Una incrustación es cualquier representación numérica de datos que captura sus cualidades relevantes de forma que los algoritmos de ML puedan procesarlas. Los datos están incrustados en un espacio n-dimensional.
En teoría, los datos no necesitan estar incrustados como un vector. Por ejemplo, algunos tipos de datos se pueden incrustar en forma de tupla.1 Pero en la práctica, las incrustaciones toman predominantemente la forma de vectores en el ML moderno.
Por el contrario, los vectores en otros contextos, como la física, no son necesariamente incrustaciones. Pero en aprendizaje automático, los vectores suelen ser incrustaciones y las incrustaciones suelen ser vectores.
Una incrustación de vectores transforma un punto de datos (como una palabra, oración o imagen) en una matriz n-dimensional de números que representan las características de ese punto de datos: sus características. Esto se logra entrenando un modelo de incrustación con un gran conjunto de datos relevante para la tarea en cuestión o empleando un modelo previamente entrenado.
Para comprender las incrustaciones de vectores, es necesario explicar algunos conceptos clave:
En el aprendizaje automático, las “dimensiones” de los datos no se refieren a las dimensiones familiares e intuitivas del espacio físico. En el espacio vectorial, cada dimensión corresponde a una característica individual de los datos, de la misma manera que la longitud, la anchura y la profundidad son características de un objeto en el espacio físico.
Las incrustaciones de vectores suelen tratar con datos de alta dimensión. En la práctica, la mayoría de la información no numérica es de alta dimensión. Por ejemplo, incluso una imagen pequeña y simple en blanco y negro de 28x28 pixeles de un dígito escrito a mano del conjunto de datos MNIST se puede representar como un vector de 784 dimensiones en el que cada dimensión corresponde a un pixel individual cuyo valor de escala de grises oscila entre 0 (para negro) a 1 (para blanco).
Sin embargo, no todas esas dimensiones de los datos contienen información útil. En nuestro ejemplo de MNIST, el dígito real en sí representa solo una pequeña fracción de la imagen. El resto es un fondo en blanco o “ruido”. Por lo tanto, sería más preciso decir que estamos "incrustando una representación de la imagen en un espacio de 784 dimensiones" en lugar de afirmar que estamos "representando 784 características diferentes de la imagen".
De este modo, las incrustaciones de vectores eficientes de datos de alta dimensión a menudo implican cierto grado de reducción de dimensionalidad: la compresión de datos de alta dimensión en un espacio de menor dimensión que omite información irrelevante o redundante.
La reducción de la dimensionalidad aumenta la velocidad y la eficiencia del modelo, aunque con una posible compensación en la exactitud o precisión, porque los vectores más pequeños requieren menos potencia computacional para las operaciones matemáticas. También puede ayudar a disminuir el riesgo de sobreajuste de los datos de entrenamiento. Los diferentes métodos de reducción de dimensionalidad, como los autocodificadores, las convoluciones, el análisis de componentes principales y la incrustación de vecinos estocásticos distribuidos en T (t-SNE), son los más adecuados para diferentes tipos de datos y tareas.
Mientras que las dimensiones de los datos vectoriales de imagen son relativamente objetivas e intuitivas, la determinación de las características relevantes de algunas modalidades de datos, como los significados semánticos y las relaciones contextuales del lenguaje, es más abstracta o subjetiva. En tales casos, las características específicas representadas por las dimensiones de las incrustaciones de vectores se pueden establecer mediante ingeniería de características manual o, más comúnmente en la era del aprendizaje profundo, determinar implícitamente a través del proceso de entrenamiento de un modelo para hacer predicciones precisas.
La lógica central de las incrustaciones de vectores es que las incrustaciones n-dimensionales de puntos de datos similares deben agruparse estrechamente en un espacio n-dimensional. Sin embargo, las incrustaciones pueden tener docenas, cientos o incluso miles de dimensiones. Esto va mucho más allá de los espacios bidimensionales o tridimensionales que nuestras mentes pueden visualizar intuitivamente.
En su lugar, se emplean múltiples medidas para inferir la similitud relativa de diferentes incrustaciones de vectores. La mejor medida de similitud para una situación específica depende en gran medida de la naturaleza de los datos y para qué se emplean las comparaciones.
La distancia euclidiana mide la distancia media en línea recta entre los puntos correspondientes de diferentes vectores. La diferencia entre dos vectores n-dimensionales a y b se calcula sumando primero los cuadrados de las diferencias entre cada uno de sus componentes correspondientes; entonces, (a1–b1)2 + (a2–b2)2 + ... (an–bn)2—y luego se saca la raíz cuadrada de esa suma. Debido a que la distancia euclidiana es sensible a la magnitud, es útil para datos que reflejan cosas como el tamaño o los recuentos. Los valores van de 0 (para vectores idénticos) a ∞.
La distancia del coseno, también llamada similitud de coseno, es una medida normalizada del coseno del ángulo entre dos vectores. La distancia del coseno varía de -1 a 1, en la que 1 representa vectores idénticos, 0 representa vectores ortogonales (o no relacionados) y -1 representa vectores completamente opuestos. La similitud de coseno se usa ampliamente en tareas de PLN porque normaliza naturalmente las magnitudes vectoriales y es menos sensible a la frecuencia relativa de las palabras en los datos de entrenamiento que la distancia euclidiana.
El producto punto es, algebraicamente hablando, la suma del producto de los componentes correspondientes de cada vector. Geométricamente hablando, es una versión no normalizada de la distancia del coseno que también refleja la frecuencia o la magnitud.
Los modelos de incrustación independientes pueden ser ofertas preentrenadas o entrenadas desde cero en tareas específicas o datos de entrenamiento. Cada forma de datos suele beneficiarse de una arquitectura de red neuronal específica, pero estas son las mejores prácticas en lugar de reglas explícitas en la mayoría de los casos.
A veces, el proceso de incrustación es una parte integrada de una red neuronal más grande. Por ejemplo, en las redes neuronales convolucionales (CNN) codificador-decodificador utilizadas para tareas, como la segmentación de imágenes, el acto de optimizar toda la red para hacer predicciones precisas implica entrenar las capas codificadoras para generar incrustaciones de vectores efectivas de imágenes de entrada.
Modelos preentrenados
Para muchos casos de uso y campos de estudio, los modelos preentrenados pueden proporcionar incrustaciones útiles que pueden servir como entradas para modelos personalizados o bases de datos vectoriales. Estos modelos de código abierto suelen estar entrenados con un conjunto masivo y amplio de datos de entrenamiento para aprender incrustaciones útiles para muchas tareas posteriores, como el few-shot learning o el zero-shot learning.
Para los datos de texto, los modelos básicos de incrustación de palabras de código abierto, como Word2Vec de Google o Global Vectors (GloVe) de la Universidad de Stanford, se pueden entrenar desde cero, pero también se ofrecen en variantes previamente entrenadas con datos de texto públicos, como Wikipedia y Common Crawl. Del mismo modo, los modelos de lenguaje grandes (LLM) de codificador-decodificador, comúnmente utilizados para incrustaciones, como BERT y sus muchas variantes, se entrenan previamente con una gran cantidad de datos de texto.
Para las tareas de visión artificial, los modelos de clasificación de imágenes previamente entrenados (como ImageNet, ResNet o VGG), se pueden adaptar a las incrustaciones de salida simplemente al eliminar su capa de predicción final y totalmente conectada.
Modelos de incrustación personalizados
Ciertos casos de uso, especialmente los que involucran conceptos poco comunes o clases novedosas de datos, se benefician del ajuste de los modelos previamente entrenados o del entrenamiento de modelos de incrustación totalmente personalizados.
Los dominios legal y médico son ejemplos destacados de campos que a menudo se basan en vocabulario esotérico y altamente especializado, bases de conocimiento o imágenes que probablemente no se han incluido en los datos de entrenamiento de modelos más generalistas. Complementar la base de conocimientos de los modelos preentrenados a través de un entrenamiento adicional en ejemplos específicos del dominio puede ayudar a que el modelo genere incrustaciones más efectivas.
Si bien esto también se puede lograr mediante el diseño de una arquitectura de red neuronal a la medida o el entrenamiento de una arquitectura conocida desde cero, hacerlo requiere recursos y conocimientos institucionales que podrían estar fuera del alcance de la mayoría de las organizaciones o aficionados.
La incrustación de imágenes convierte la información visual en vectores numéricos empleando los valores de los pixeles de una imagen para que correspondan a componentes vectoriales. Suelen basarse en CNN, aunque en los últimos años se ha observado un aumento de los modelos de visión artificial que emplean redes neuronales basadas en transformadores.2
Las imágenes con un esquema de color RGB típico se representan numéricamente como una matriz tridimensional, en la que esas tres matrices corresponden a los respectivos valores de rojo, verde y azul de cada pixel. Las imágenes RGB suelen ser de 8 bits, lo que significa que cada valor de color de un pixel puede oscilar entre 0 y 256 (o 28). Como se describió anteriormente, las imágenes en blanco y negro se representan numéricamente como una matriz bidimensional de pixeles en la que cada pixel tiene un valor entre 0 y 1.
Las convoluciones emplean filtros numéricos bidimensionales, llamados kernels, para extraer características de la imagen. Los pesos de los kernels más propicios para extraer características relevantes son en sí mismos un parámetro que se puede aprender durante el entrenamiento del modelo. Estas convoluciones producen un mapa de características de la imagen.
Cuando es necesario, se emplea el padding para mantener el tamaño original de la entrada al agregar capas adicionales de ceros a las filas y columnas exteriores de la matriz. A la inversa, el pooling, que esencialmente resume las características visuales tomando solo sus valores mínimos, máximos o medios, puede emplearse para una mayor reducción de la dimensionalidad.
Finalmente, la representación comprimida se aplana en un vector.
Una aplicación intuitiva de la incrustación de imágenes es la búsqueda de imágenes: un sistema que toma los datos de la imagen como entrada y devuelve otras imágenes con incrustaciones de vectores similares, como una aplicación de teléfono inteligente que identifica una especie de planta a partir de una fotografía.
La búsqueda de imágenes multimodal es una ejecución más compleja, ya que toma texto como entrada y devuelve imágenes relacionadas con ese texto. Esto no se puede lograr al tomar una incrustación de texto de un modelo de lenguaje y usarlo como entrada para un modelo de visión artificial separado. Los dos modelos de incrustación deben estar entrenados explícitamente para que se correlacionen entre sí.
Un algoritmo prominente utilizado tanto para la incrustación de imágenes como de texto es el preentrenamiento de imagen de lenguaje contrastivo (CLIP), desarrollado originalmente por OpenAI. CLIP fue entrenado con un enorme conjunto de datos sin etiquetar de más de 400 millones de pares de imágenes y leyendas tomadas de Internet. Estos emparejamientos se utilizaron para entrenar conjuntamente un codificador de imágenes y un codificador de texto desde cero, utilizando la pérdida contrastiva para maximizar la similitud de coseno entre las incrustaciones de imágenes y las incrustaciones de sus leyendas correspondientes.
Otra aplicación importante de la incrustación de imágenes es la generación de imágenes: la creación de nuevas imágenes.
Un método para generar nuevas imágenes a partir de incrustaciones de imágenes son los autocodificadores variacionales (VAE). Los VAE codifican dos incrustaciones de vectores diferentes de datos de entrada: un vector de medias y un vector de desviaciones estándar. Al muestrear aleatoriamente la distribución de probabilidad que representan estas incrustaciones de vectores, los VAE pueden usar su red de decodificadores para generar variaciones de esos datos de entrada.
Un método líder de generación de imágenes basado en la incrustación, especialmente en los últimos años, utiliza el algoritmo CLIP mencionado anteriormente. Los modelos de síntesis de imágenes (como DALL-E, Midjourney y Stable Diffusion) toman indicaciones de texto como entrada, empleando CLIP para incrustar una representación vectorial del texto; esa misma incrustación de vectores, a su vez, se emplea esencialmente para reconstruir una nueva imagen.
Las incrustaciones de texto son menos sencillas. Deben representar numéricamente conceptos abstractos, como el significado semántico, las connotaciones variables y las relaciones contextuales entre palabras y frases.
La simple representación de palabras en términos de sus letras, de la misma manera que las incrustaciones de imágenes representan los elementos visuales en términos de sus valores de pixel, no produciría incrustaciones significativas.
Mientras que la mayoría de los modelos de visión artificial están entrenados mediante aprendizaje supervisado, los modelos de incrustación para el PLN requieren aprendizaje autosupervisado en una cantidad realmente enorme de datos de entrenamiento para capturar adecuadamente los muchos significados potenciales del lenguaje en diferentes contextos.
Las incrustaciones resultantes impulsan muchas de las tareas comúnmente asociadas con la IA generativa, desde la traducción de idiomas hasta los chatbots conversacionales, el resumen de documentos y los servicios de respuesta a preguntas.
Los modelos empleados para generar incrustaciones de vectores para datos de texto a menudo no son los mismos que los empleados para generar texto real.
Los LLM populares que se emplean comúnmente para la generación de texto y otras tareas de IA generativa, como ChatGPT o Llama, son modelos autorregresivos de solo decodificador, también llamados modelos de lenguaje causal. En el entrenamiento, se les presenta el inicio de una muestra de texto particular y se les encomienda predecir continuamente la siguiente palabra hasta el final de la secuencia. Mientras que esto se adapta bien al aprendizaje de la generación de texto coherente, no es óptimo para el aprendizaje de incrustaciones de vectores independientes útiles.
En su lugar, las incrustaciones de texto suelen basarse en modelos de lenguaje enmascarados, como las representaciones de codificador bidireccional de transformadores (BERT), lanzado por primera vez en 2018. En el entrenamiento, estos modelos codificador-decodificador reciben secuencias de texto con determinadas palabras enmascaradas u ocultas, y se les encomienda que completen los espacios en blanco.
Este ejercicio recompensa las incrustaciones que capturan mejor la información sobre una palabra u oración específica y cómo se relaciona con el contexto que la rodea. Word2vec sigue una tarea de entrenamiento similar, pero con una arquitectura de red neuronal de 2 capas más sencilla.
Hasta junio de 2024, BERT sigue siendo el modelo de lenguaje más popular en Hugging Face, con más de 60 millones de descargas en el mes anterior.3 Varias variantes BERT destacadas se han adaptado a tipos específicos de incrustaciones de lenguaje y escenarios:
SBERT: también conocido como BERT de oraciones y transformadores de oraciones, SBERT es una variante de BERT con una estructura de Neural Networks adaptada, afinada en pares de oraciones para mejorar su capacidad de codificar incrustaciones de oraciones.
DistilBERT: Una variante ligera de BERT, creada a través de la destilación de conocimientos del modelo base de BERT en un modelo más pequeño que se ejecuta un 60 % más rápido y conserva más del 95 % del rendimiento de BERT según algunas métricas.4
RoBERTa: RoBERTa, abreviatura de enfoque de preentrenamiento BERT sólidamente optimizado, refinó el procedimiento de entrenamiento de BERT para optimizar su rendimiento.
Las incrustaciones de vectores se pueden emplear para representar diversos datos de lenguaje natural.
Incrustaciones de palabras
Las incrustaciones de palabras tienen como objetivo capturar no solo el significado semántico de las palabras individuales, sino también su relación contextual con otras palabras con las que a menudo coexisten. Al hacerlo, las incrustaciones de palabras pueden generalizar bien a nuevos contextos e incluso a palabras raras o nunca antes vistas.
GloVe, un popular modelo de incrustación de palabras, se entrenó con una “matriz global de coocurrencia palabra-palabra”, que infiere el significado semántico y las relaciones semánticas a partir de la frecuencia con la que se usan palabras específicas cerca unas de otras. Por ejemplo, el significado puede derivar de cómo “hielo” y “vapor” coinciden con “agua” aproximadamente con la misma frecuencia, pero coinciden con “sólido” y “gas” a índices muy diferentes.5
La forma en que las dimensiones de un vector de incrustación de palabras capturan implícitamente estas relaciones nos permite manipularlas matemáticamente de manera útil e intuitiva. En un esquema de incrustación de palabras bien configurado, restar el vector para “hombre” del vector para “rey” y agregar el vector para “mujer” debería producir esencialmente el vector para “reina”.
Incrustaciones de oraciones
Las incrustaciones de oraciones incorporan el significado semántico de frases u oraciones completas, en lugar de palabras individuales. Por lo general, se generan con SBERT u otras variantes de transformadores de oraciones.
Las incrustaciones de oraciones pueden incrustar representaciones de consultas de usuarios, para su uso en motores de búsqueda o aplicaciones de respuesta a preguntas.
En la traducción automática, la incrustación de vectores de una oración en un idioma se puede emplear para generar una oración en un idioma diferente con una incrustación de vectores similar.
Las incrustaciones de oraciones se emplean a menudo en el análisis de sentimientos. Los clasificadores se pueden entrenar con ejemplos etiquetados de cada categoría de sentimiento o mediante aprendizaje supervisado, y luego clasificar nuevas muestras haciendo coincidir su incrustación de vectores con la incrustación aprendida para cada categoría. El análisis de sentimientos también es posible a través del aprendizaje zero-shot, en el que la incrustación de una oración específica se compara con la incrustación de palabras de una categorización particular.
Incrustaciones de documentos
Las incrustaciones de documentos se emplean a menudo para clasificar documentos o páginas web para su indexación en motores de búsqueda o bases de datos vectoriales. Los modelos típicos para la incrustación de documentos incluyen variantes de BERT, Doc2vec (que es una expansión del modelo Word2vec) u otros modelos de incrustación de código abierto como Instructor (enlace externo a ibm.com).
Aunque los datos de imagen y texto tienden a recibir la mayor atención, especialmente para los casos de uso de IA generativa, una amplia variedad de modalidades de datos pueden beneficiarse de la incrustación de vectores.
Las bases de datos tradicionales rara vez están optimizadas para trabajar con datos de alta dimensión comunes en las incrustaciones de vectores. Bases de datos vectoriales como IBM® watsonx.data™ son soluciones avanzadas diseñadas para organizar y recuperar objetos de datos en espacios vectoriales de alta dimensión.
Uno de los principales beneficios de una solución eficaz de base de datos vectorial es optimizar la eficiencia y la precisión de las operaciones de búsqueda de vectores: encontrar, clasificar y recuperar datos y documentos relevantes mediante la similitud semántica de sus respectivas incrustaciones de vectores con las de sus términos de búsqueda.
Este tipo de búsqueda de similitudes suele realizarse a través de algoritmos sencillos del vecino más cercano que infieren conexiones entre puntos de datos en función de su proximidad en un espacio vectorial de alta dimensión.
Búsqueda semántica
La búsqueda semántica emplea incrustaciones de vectores para impulsar búsquedas que trascienden la simple coincidencia de palabras clave. Por ejemplo, devolver resultados para “manzanas” y “naranjas” aunque la consulta original fuera “fruta”.
Este tipo de búsqueda semántica también se emplea para permitir la generación aumentada de recuperación (RAG), un marco empleado para complementar la base de conocimientos de los LLM sin tener que someterse a más ajustes.
En la RAG, la búsqueda de vectores se utiliza para encuestar fuentes de datos externas (como fuentes de datos que no formaban parte de los datos de entrenamiento de un modelo fundacional y cuya información por lo tanto no podría reflejarse de otra manera en la salida del LLM) para recuperar información relevante, luego usar esa información para aumentar las respuestas generadas por el LLM.
Todos los enlaces son externos a ibm.com.
1 " Inmersión de tuplas estables para bases de datos dinámicas ", arXiv, 11 de marzo de 2021.
2 " Tabla de clasificación: Clasificación de imágenes en ImageNet ", Papeles con código, consultado el 5 de junio de 2024.
3 "Models" (sorted by "Most downloads"), Hugging Face, consultado el 5 de junio de 2024.
4 " DistilBERT, una versión destilada de BERT: más pequeña, más rápida, más barata y más ligera ", arXiv, 2 de octubre de 2019.
5 " GLOVE: Vectores globales para la representación de palabras ", Universidad de Stanford, agosto de 2014.