¡10 cosas geniales que puedes hacer con embeddings! [Parte 1]

10 cosas geniales con embeddings [Parte 1]

Aplicar estos conceptos para solucionar problemas industriales del mundo real en aprendizaje profundo

Alejándonos un poco del aprendizaje automático clásico (ML), los embeddings son fundamentales en la mayoría de los casos de uso de aprendizaje profundo (DL). Tener un entendimiento de este concepto te permite realizar tareas flexibles con el espacio de características y replantear problemas de ML/DL de manera diferente, especialmente con datos de alta dimensión en visión por computadora y procesamiento de lenguaje natural.

Los embeddings han tenido un impacto notable en varias áreas de aplicaciones hoy en día, incluidos los modelos de lenguaje grandes (LLMs). Lo que falta en la literatura entre estos conceptos geniales, aunque dispersos, alrededor de los embeddings es un plan coherente de diferentes aplicaciones industriales y cómo comenzar en ese espacio. ¡Por eso, este blog te guiará a través de las diferentes formas en las que puedes aprovechar los embeddings y aplicarlos en problemas industriales del mundo real.

“Este artículo es parte uno de una serie de dos partes. Pretende ser una guía para principiantes sobre diferentes tipos de modelos populares de código abierto al familiarizarte con el concepto central de los embeddings.”

Una Explicación Intuitiva de los Embeddings

Los embeddings son representaciones vectoriales continuas de baja dimensión y aprendidas de variables discretas [1].

Podemos descomponer esta definición y entender los puntos importantes:

  • dimensionalidad inferior a los datos de entrada
  • representación comprimida de los datos
  • capturan relaciones no lineales complejas aprendidas por el modelo como una representación lineal
  • reducen dimensiones almacenando información relevante y descartando el ruido
  • generalmente extraídos de las capas finales de las redes neuronales (justo antes del clasificador)

Vamos a entender intuitivamente la definición y el verdadero potencial de los embeddings usando un ejemplo. Supongamos que estamos analizando el rendimiento de los operadores de un centro de llamadas en base a sus formularios de encuesta de clientes. Los formularios han sido enviados por miles de clientes y contienen millones de palabras únicas. Para realizar cualquier tipo de análisis de texto, nuestro conjunto de parámetros de entrada será enorme y probablemente resultará en un rendimiento deficiente. ¡Aquí es donde entran en juego los embeddings!

En lugar de tomar el conjunto original de parámetros de entrada, tomamos todas las palabras únicas y las expresamos como embeddings. De esta manera, reducimos las dimensiones y llevamos el conjunto de características de entrada a, digamos, 9, que es más consumible por el modelo. Al visualizar los embeddings para los operadores, es fácil notar que los Operadores B y C recibieron comentarios similares de los clientes. Otro ejemplo se puede encontrar aquí. [2]

Imagen del autor

¿Qué podemos hacer con los embeddings?

En la primera parte de la serie, exploraremos las siguientes aplicaciones de los embeddings:

  • Utilizar embeddings de texto para encontrar textos similares
  • Utilizar embeddings visuales para encontrar imágenes similares
  • Utilizar diferentes tipos de embeddings para encontrar elementos similares
  • Utilizar diferentes pesos en los embeddings para encontrar elementos similares
  • Colocar embeddings de imagen y texto en el mismo espacio (multimodal)

Cada punto se basa en el punto anterior, causando un efecto multiplicativo. Los fragmentos de código son autosuficientes y fáciles de usar para principiantes. Se pueden utilizar como bloques de construcción para crear sistemas más complejos. Ahora, profundicemos en cada caso de uso a continuación.

I. Utilizar embeddings de texto para encontrar textos similares

Embeddings de texto = representar texto (palabras u oraciones) como vectores de valores reales en un espacio de menor dimensionalidad.

Embeddings de texto

Ahora, supongamos que queremos saber qué tan similares o diferentes son las oraciones anteriores. Podemos hacer eso utilizando un codificador de texto. Aquí, utilizamos un DistilBERT preentrenado por Hugging Face para calcular los embeddings de texto y la similitud del coseno para calcular la similitud.

Comparar las incrustaciones de texto de DistilBERT para diferentes textos usando la similitud del coseno

Observamos que los textos que contienen palabras similares y coincidentes darán una puntuación de similitud más alta. Por otro lado, los textos que son diferentes entre sí en términos de elección de palabras, significado y contexto (¡dependiendo del modelo!) darán como resultado una puntuación de similitud más baja, como se muestra a continuación. Por lo tanto, las incrustaciones de texto buscan utilizar la cercanía semántica de las palabras para establecer una relación significativa.

Aplicaciones del mundo real: Búsqueda de documentos, Recuperación de información, Análisis de sentimientos, Motores de búsqueda [3]

II. Usar incrustaciones visuales para encontrar imágenes similares

Incrustaciones visuales = representar imágenes (es decir, valores de píxeles) como vectores de valores reales en un espacio dimensional inferior.

En lugar de texto, ahora queremos saber qué tan visualmente similares son las dos imágenes. Podemos hacer esto usando un codificador de imágenes. Aquí, utilizamos un ResNet-18 preentrenado para calcular las incrustaciones visuales. Puedes descargar las imágenes aquí [4].

Estableciendo un paralelismo con el texto, las incrustaciones aprendidas a partir de imágenes encuentran similitud basada en características visuales similares. Por ejemplo, las incrustaciones visuales podrían aprender a reconocer la oreja, la nariz y los bigotes de un gato, dando una puntuación de 0.81. Por otro lado, un perro tiene características visuales diferentes a las de un gato, lo que resulta en una puntuación de similitud más baja de 0.50. Ten en cuenta que puede haber cierto sesgo basado en las imágenes elegidas, sin embargo, este es el principio subyacente general. Por lo tanto, las incrustaciones visuales buscan utilizar la cercanía de los píxeles de las imágenes para establecer una relación significativa.

Puntuaciones de similitud entre imágenes a la izquierda y a la derecha

Aplicaciones del mundo real: Sistemas de recomendación, Recuperación de imágenes, Búsqueda de similitud

III. Usar diferentes tipos de incrustaciones para encontrar elementos similares

Anteriormente, hablamos sobre cómo las incrustaciones son una forma de representar información de entrada en una forma comprimida. Esta información puede ser de cualquier tipo, desde varios atributos de texto hasta atributos visuales y más. Naturalmente, cuantos más atributos podamos usar para describir un elemento, más fuerte será la señal de similitud.

Tomemos un ejemplo simple y analicemos juntos este concepto. A continuación, tenemos un conjunto de datos de cinco alimentos. He creado los atributos yo mismo y generado los colores de muestra utilizando la biblioteca Pillow (explora el script aquí). Puedes descargar los datos aquí (imágenes de productos por [5]). Para cada elemento, tenemos 5 atributos de texto y 2 atributos visuales.

Para cada uno de estos atributos, podemos extraer un vector de incrustación que representa ese atributo específico. Ahora surge una pregunta natural: ¿cómo decidimos qué es similar? Por ejemplo, vimos que dos oraciones pueden ser similares, pero si las visualizamos, ¿se verían iguales? En contraste, dos animales podrían tener una puntuación similar porque se ven similares, pero si los caracterizamos usando características, ¿siguen siendo similares? Ahí radica la oportunidad de aprovechar los diferentes tipos de incrustaciones disponibles para nosotros.

Comenzamos creando una característica de texto única llamada ‘ATTR_TEXTO’ simplemente uniendo las palabras. Ten en cuenta que aquí tomamos un ejemplo simple. En casos de uso del mundo real, necesitaríamos aplicar técnicas avanzadas de procesamiento del lenguaje natural para limpiar los datos de texto antes de concatenarlos.

Combinar atributos de texto individuales en uno solo

Las siguientes imágenes muestran lo que sucede cuando tenemos en cuenta solo las incrustaciones textuales o las incrustaciones visuales.

Similitud usando solo las incrustaciones 'ATTR_TEXTO'
Similitud utilizando solo los 'embeddings' de la imagen del producto

Ambos enfoques tienen sus limitaciones, como se mencionó anteriormente. Por lo tanto, podemos recurrir al enfoque de conjunto en el aprendizaje automático al combinar los ’embeddings’ anteriores para proporcionar la mayor cantidad de información posible sobre el artículo. Esto nos ayuda a obtener señales de similitud más fuertes. Por ejemplo, podemos encontrar artículos similares utilizando ’embeddings’ de texto, imagen del producto y color del producto.

¡Veamos qué sucede cuando combinamos todos los ’embeddings’!

Aplicaciones del mundo real: Sistemas de recomendación, Búsqueda de sustitución

IV. Utilizar Diferentes Pesos en los ‘Embeddings’ para Encontrar Artículos Similares

Este concepto se basa en el punto III y es una extensión más flexible. Tomemos 3 escenarios diferentes como ejemplos:

  • Estás buscando una tostadora de reemplazo en Costco. Quieres la misma funcionalidad que tenía tu tostadora anterior. En este caso, no te importa si la tostadora se ve igual que la anterior, pero sí te importan las características que ofrece (es decir, características de texto). En este caso, solo querrías utilizar los ’embeddings’ de texto
Imagen por el autor
  • Rompí mis pantalones favoritos y porque los quiero tanto, quiero un reemplazo que se acerque lo más posible. Estoy dispuesto a sacrificar algunas de las características que tenían mis pantalones antiguos, pero me importa la estética y cómo se veían en mí. En este escenario, podemos darle más peso a los ’embeddings’ visuales y un peso ligeramente menor a los ’embeddings’ de texto.
  • Si los datos dados tienen elementos de fondo específicos, como un modelo humano, corremos el riesgo de aprender las características del modelo humano en lugar del producto real en el que estamos interesados. En el siguiente ejemplo, queremos aprender las características de la pelota de baloncesto y no del modelo que la sostiene. En casos como estos, en lugar de utilizar la segmentación de imágenes, simplemente podemos darle menos peso a las imágenes de cuerpo completo y más peso a los atributos de texto, así como al color del producto, para capturar los ’embeddings’ deseados.
Imagen por [6]

En cada uno de estos casos, utilizar diferentes pesos nos da control sobre qué conjuntos de ’embeddings’ son importantes para nosotros y cómo manipularlos. Esta idea se puede utilizar para construir sistemas flexibles para resolver diferentes tipos de problemas empresariales.

Aplicaciones del mundo real: Reducción de sesgos, Sistemas de recomendación ajustables, Búsqueda de similitud ajustable [7][8]

V. Colocar los ‘Embeddings’ de Imagen y Texto en el Mismo Espacio (Multimodal)

Hasta ahora, hemos estado considerando los datos de texto e imagen como entradas completamente separadas. Lo más cercano que hemos llegado es combinar los efectos en la etapa de inferencia en el punto III. Pero, ¿qué sucedería si consideramos el texto y las imágenes como objetos? ¿Cómo representamos colectivamente estos objetos?

La respuesta es la multimodalidad y CLIP (Contrastive Language–Image Pre-training [9]). Si no estás seguro de lo que significa multimodalidad, simplemente combina diferentes tipos de datos (texto, imagen, audio, numérico) para hacer predicciones más precisas. Utilizando CLIP, podemos representar objetos (en este caso, texto o imagen) como vectores numéricos (’embeddings’) para ayudar a proyectarlos en el mismo espacio de ’embeddings’.

El verdadero valor de la naturaleza multimodal de CLIP radica en traducir conceptos similares en texto e imágenes en vectores similares. Estos vectores se colocan cerca uno del otro dependiendo de cuán similares sean. Esto significa que si un texto captura bien los conceptos de una imagen, se coloca cerca de esa imagen. De manera similar, si una imagen es descrita adecuadamente por una oración, se encuentra cerca de esa oración. En el ejemplo a continuación, el texto “perro jugando en la playa” genera un ’embedding’ similar al de una imagen de un perro jugando en la playa.

Los objetos similares (por ejemplo, texto, imágenes) se codifican cerca unos de otros en el espacio vectorial. GIF de autor & imágenes de [10]

Como se puede observar en la ilustración anterior, CLIP desbloquea la capacidad de moverse a través del dominio del texto y la imagen al combinar la semántica del texto con lo visual de una imagen (De-Imagen-a-Texto, De-Texto-a-Imagen). También podemos mantenernos dentro de un dominio específico, como De-Texto-a-Texto o De-Imagen-a-Imagen. ¡Esto abre la posibilidad de aplicaciones poderosas que van desde sistemas de recomendación hasta autos autónomos, clasificación de documentos y más!

Demos un ejemplo de texto a imagen utilizando CLIP de HuggingFace. Utilizaremos las imágenes de alimentos [5], como se muestra en el punto III. La idea es pasar directamente de texto a imagen.

Mira el video a continuación mientras te guío a través de una demostración en vivo o pruébalo tú mismo aquí.

¡Vemos resultados interesantes en la demostración anterior! El conjunto de datos contiene dos imágenes del pastel. Al buscar “pastel”, primero obtenemos una imagen que muestra un pastel de chocolate. Sin embargo, cuando agrego palabras descriptivas como “red velvet”, me muestra un pedazo de pastel de terciopelo rojo. Aunque ambas imágenes representan un pastel en cierto sentido, solo una de ellas es un pastel de terciopelo rojo que el modelo reconoce. De manera similar, cuando buscamos “fish and chips” obtenemos un plato de pescado y papas fritas, pero solo “papas fritas” nos da una caja de papas fritas. El modelo también es capaz de diferenciar entre papas fritas y churros aunque se vean bastante similares.

Ahora, hagamos una clasificación de imagen a texto de manera similar. Aquí, tomamos ejemplos [4] del punto II para clasificar si una imagen es de un perro o un gato.

Para cada imagen, obtenemos la probabilidad de que el texto coincida con la imagen. En el caso de las imágenes de gatos, la etiqueta “gato” tiene una alta probabilidad. Por otro lado, la imagen del perro se clasifica como un “perro”.

Aplicaciones del mundo real: Texto-Imagen (Búsqueda), Imagen-Imagen (Similitud), Imagen-Texto (Clasificación)

En la segunda parte de la serie, exploraremos más aplicaciones que van desde el arte hasta visualizaciones interesantes. ¡Manténte atento!

Si encontraste este artículo útil y crees que también lo sería para otros, ¡deja un aplauso! Si deseas mantenerte conectado, puedes encontrarme en LinkedIn aquí.

Zubia es una científica senior de aprendizaje automático y trabaja en descubrimiento de productos, personalización y diseños generativos en moda. Es mentora, instructora y oradora en temas relacionados con visión por computadora, ciencia de datos, mujeres/mujeres de color en STEM y carrera en tecnología.

Referencias

[1]: Definición de embeddings

[2]: Explicación de embeddings

[3]: Motor de búsqueda de Google utilizando el codificador de texto BERT

[4]: Imágenes de Dogs vs. Cats (Kaggle)

[5]: Imágenes de Food Images (Food-101)

[6]: Foto de Malik Skydsgaard en Unsplash

[7]: Combinación de diferentes tipos de embeddings

[8]: Embeddings para sistemas de recomendación

[9]: CLIP de OpenAI

[10]: Imágenes de Oscar Sutton, Hossein Azarbad en Unsplash

[11]: Blog de CLIP