Embedding (NLP) (ES)

From Systems analysis wiki
Jump to navigation Jump to search

Embedding (del inglés embedding, que significa «incrustación» o «inserción») es una tecnología fundamental en el campo del aprendizaje automático y el procesamiento del lenguaje natural que transforma objetos discretos o complejos (como palabras, oraciones o imágenes) en representaciones vectoriales numéricas de dimensionalidad fija. Estos vectores, o embeddings, se distribuyen en un espacio multidimensional de tal manera que los objetos semánticamente similares se sitúan cerca unos de otros.

Definición y concepto

Formalmente, un embedding es una función de mapeo f:Xd, donde X es el espacio original de objetos (por ejemplo, un vocabulario de palabras), y d es un espacio vectorial multidimensional (el espacio de embeddings) con una dimensionalidad d. La dimensionalidad d es significativamente menor que la del espacio original, lo que hace que estas representaciones sean densas (dense).

La base teórica para las representaciones vectoriales de palabras es la semántica distribucional, que postula que el significado de una palabra está determinado por el contexto en el que se utiliza. Es decir, las palabras que aparecen en contextos similares tienen significados parecidos y, por lo tanto, representaciones vectoriales cercanas.

Principios fundamentales de los embeddings

  • Dimensionalidad fija: Todos los objetos se mapean a vectores de la misma longitud, independientemente del tamaño de los datos originales (por ejemplo, la longitud de una oración).
  • Proximidad semántica: La distancia entre los vectores (a menudo medida mediante la similitud del coseno) refleja la cercanía semántica de los objetos originales.
  • Soporte para operaciones matemáticas: Los vectores preservan relaciones semánticas, lo que permite realizar operaciones algebraicas sobre ellos. El ejemplo clásico es: vector(«rey»)vector(«hombre»)+vector(«mujer»)vector(«reina»).

Historia y desarrollo

Primeros enfoques (décadas de 1980-2000)

Las primeras ideas de representaciones vectoriales surgieron en la década de 1980 en el marco de la investigación de redes neuronales. Los métodos iniciales se basaban en el análisis estadístico de la coocurrencia de palabras.

La era de Word2Vec (2013)

Un momento revolucionario fue el desarrollo de Word2Vec por un equipo de Google liderado por Tomáš Mikolov en 2013. Word2Vec propuso dos arquitecturas eficientes y computacionalmente económicas para entrenar embeddings de palabras:

  • CBOW (Continuous Bag of Words): Predice la palabra central basándose en el contexto que la rodea.
  • Skip-gram: Predice las palabras del contexto a partir de la palabra central.

Word2Vec se convirtió en la primera implementación popular de representaciones vectoriales, en gran parte gracias a su código abierto y su alta velocidad de procesamiento.

Desarrollo de enfoques alternativos

Después de Word2Vec, surgieron otros modelos importantes de embeddings estáticos:

  • GloVe (2014): Un modelo desarrollado en la Universidad de Stanford que utiliza estadísticas globales de coocurrencia de palabras para entrenar los vectores.
  • FastText (2015): Un modelo de Facebook que tiene en cuenta la morfología de las palabras al representar cada palabra como la suma de los vectores de sus n-gramas de caracteres. Esto permite crear embeddings incluso para palabras que no estaban en el vocabulario de entrenamiento (palabras Out-of-Vocabulary).

La era de los transformadores y los embeddings contextuales (2018-presente)

El gran avance se produjo con la aparición de la arquitectura de transformadores y el modelo BERT (2018). Esto dio lugar a los embeddings contextuales, donde la representación vectorial de una palabra depende del contexto en el que se utiliza. A diferencia de las representaciones estáticas, donde la palabra «llave» tendría el mismo vector en las frases «la llave de la puerta» y «la clave de sol», los modelos contextuales generan diferentes embeddings para cada caso.

Tipos de embeddings

Según el nivel de representación

  • Embeddings de palabras: El tipo básico, donde cada palabra se representa con un vector individual (Word2Vec, GloVe).
  • Embeddings de oraciones y documentos: Representan frases completas, oraciones o documentos con un único vector (PV-DM, PV-DBOW).
  • Embeddings de usuarios y elementos: Se utilizan en sistemas de recomendación para representar los intereses de los usuarios y las características de los productos.

Según la contextualidad

  • Embeddings estáticos: A cada palabra se le asigna un único vector fijo, independientemente del contexto (Word2Vec, GloVe, FastText).
  • Embeddings contextuales: Generan diferentes representaciones para la misma palabra según su entorno. Los principales representantes son:
    • BERT: Un modelo bidireccional basado en transformadores.
    • ELMo: Un modelo LSTM bidireccional.
    • RoBERTa, DistilBERT, ALBERT: Variantes mejoradas de BERT.

Según la modalidad

  • Embeddings textuales: El tipo más común, que incluye representaciones de palabras, oraciones y documentos.
  • Embeddings visuales: Representaciones de imágenes para tareas de visión por computadora.
  • Embeddings multimodales: Combinan diferentes tipos de datos (texto, imágenes, audio) en un único espacio vectorial. Un ejemplo es ImageBind, capaz de vincular datos de seis modalidades.

Arquitecturas y métodos de entrenamiento

Métodos clásicos

  • Codificación one-hot: El método más simple, donde cada palabra se codifica con un vector del tamaño del vocabulario, con un uno en la posición correspondiente. Desventajas: alta dispersión (sparsity) y ausencia de información semántica.
  • Factorización de matrices: Métodos de reducción de dimensionalidad (por ejemplo, LSA) aplicados a matrices de coocurrencia de palabras.

Arquitecturas de redes neuronales

  • Redes neuronales superficiales: Las arquitecturas CBOW y Skip-gram en Word2Vec utilizan redes neuronales de dos capas para un entrenamiento eficiente.
  • Transformadores: La arquitectura que revolucionó el campo gracias al mecanismo de atención (attention).

Enfoques modernos

  • Autoaprendizaje con máscaras: BERT utiliza la tarea de predecir palabras enmascaradas para entrenar representaciones contextuales.
  • Aprendizaje contrastivo: Métodos que maximizan la similitud de pares semánticamente cercanos (positivos) y minimizan la similitud de pares lejanos (negativos).

Aplicaciones de los embeddings

Los embeddings encuentran una amplia aplicación en diversas áreas:

Procesamiento del lenguaje natural

  • Búsqueda y recuperación de información: Mejora de la calidad de la búsqueda semántica, permitiendo encontrar documentos por su significado en lugar de por palabras clave.
  • Clasificación de textos: Las representaciones vectoriales sirven como datos de entrada para los clasificadores, aumentando su precisión.
  • Análisis de sentimientos: Determinación del tono emocional de los textos teniendo en cuenta el contexto.
  • Traducción automática: Mejora de la comprensión de la semántica de los idiomas de origen y destino.

Sistemas de recomendación

Los embeddings de usuarios y productos son la base de los sistemas de recomendación personalizados, incluyendo:

  • Filtrado colaborativo: basado en embeddings del comportamiento del usuario.
  • Filtrado basado en contenido: utilizando embeddings de las características de los productos.

Visión por computadora

  • Clasificación y búsqueda de imágenes: Las redes neuronales convolucionales y los Vision Transformers crean embeddings de imágenes para su clasificación y para la búsqueda de imágenes visualmente similares.

Bioinformática y medicina

  • Análisis de datos médicos: Análisis de registros clínicos y diagnóstico de enfermedades.
  • Representaciones moleculares: Creación de embeddings para predecir las propiedades de compuestos químicos.

Aspectos técnicos y optimización

  • Métodos de optimización de la dimensionalidad: Matryoshka Representation Learning (MRL) es un enfoque innovador que permite obtener embeddings de diferentes dimensionalidades a partir de un solo modelo, concentrando la información importante al inicio del vector.
  • Cuantización de embeddings: Reducción de la precisión de la representación numérica (por ejemplo, a 8 o 4 bits) para acelerar los cálculos y ahorrar memoria.
  • Integración con bases de datos: Las bases de datos vectoriales modernas (como Milvus, Pinecone) y las extensiones para SGBD tradicionales (como pgvector para PostgreSQL) permiten almacenar y buscar embeddings de manera eficiente.

Enlaces externos

Literatura

  • Mikolov, T. et al. (2013). Efficient Estimation of Word Representations in Vector Space. arXiv:1301.3781.
  • Mikolov, T. et al. (2013). Distributed Representations of Words and Phrases and their Compositionality. arXiv:1310.4546.
  • Pennington, J.; Socher, R.; Manning, C. (2014). GloVe: Global Vectors for Word Representation. PDF.
  • Bojanowski, P. et al. (2017). Enriching Word Vectors with Subword Information. arXiv:1607.04606.
  • Joulin, A. et al. (2017). Bag of Tricks for Efficient Text Classification. arXiv:1607.01759.
  • Peters, M. E. et al. (2018). Deep Contextualized Word Representations. ACL Anthology.
  • Devlin, J. et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805.
  • Reimers, N.; Gurevych, I. (2019). Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks. arXiv:1908.10084.
  • Kusupati, A. et al. (2022). Matryoshka Representation Learning. arXiv:2205.13147.
  • Radford, A. et al. (2021). Learning Transferable Visual Models From Natural Language Supervision. PMLR 139.
  • Girdhar, R. et al. (2023). ImageBind: One Embedding Space To Bind Them All. CVPR 2023.