Portátiles SLIMBOOK
Entradas Mensuales
Síguenos en:
Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon ¿Qué son los «embeddings» en un LLM?


¿Alguna vez te has preguntado cómo las computadoras pueden entender el significado detrás de las palabras que usamos todos los días? Los embeddings son la respuesta a esta pregunta.



Los embeddings son una técnica de procesamiento de lenguaje natural que convierte el lenguaje humano en vectores matemáticos. Estos vectores son una representación del significado subyacente de las palabras, lo que permite que las computadoras procesen el lenguaje de manera más efectiva.

En otras palabras, los embeddings permiten que las palabras sean tratadas como datos y manipuladas matemáticamente. Esta técnica se utiliza ampliamente en la inteligencia artificial para tareas como el análisis de sentimiento, la clasificación de texto y la traducción automática.

Introducción

Los Grandes Modelos de Lenguaje (o LLMs: Large Language Models), como por ejemplo GPT-4 o Bard, en realidad no procesan el texto tal como lo vemos nosotros los humanos, sino que en su lugar lo convierten a una representación numérica que se conoce como los embeddings.

Así que en el fondo estos modelos lo que hacen es procesar y generar embeddings para realizar diferentes tipos de tareas relacionadas con el análisis del lenguaje natural.

Entonces, en este artículo vamos a entender qué son estos embeddings, y cómo se utilizan para desarrollar diferentes aplicaciones de procesamiento y generación de lenguaje natural usando estos Grandes Modelos de Lenguaje.

Qué son los embeddings

Los embeddings son representaciones vectoriales densas de palabras o frases en un espacio continuo de baja dimensión. Estas representaciones permiten capturar relaciones semánticas y contextuales entre las palabras, lo que facilita su procesamiento y análisis por parte de los modelos de aprendizaje automático.

En lugar de tratar cada palabra como una entidad independiente, los embeddings permiten a los modelos entender las similitudes y diferencias entre las palabras en función de su contexto.




A diferencia de las representaciones tradicionales basadas en frecuencias de palabras, los embeddings capturan relaciones semánticas y contextuales entre las palabras, lo que permite a los modelos de aprendizaje automático entender mejor el lenguaje natural.

El proceso de creación

El proceso de creación de embeddings comienza con la construcción de un corpus, que es una colección de textos. A partir de este corpus, se crea un modelo de lenguaje que aprende a predecir palabras basándose en su contexto. Una vez que se ha entrenado el modelo, se utilizan las capas internas para generar los vectores de embeddings de las palabras.


Los vectores generados por embeddings tienen varias propiedades útiles que los hacen especialmente efectivos en aplicaciones de procesamiento de lenguaje natural. En primer lugar, los vectores son densos, lo que significa que cada una de sus dimensiones contiene información importante. En segundo lugar, los vectores son similares para las palabras que se utilizan en contextos similares. Esto significa que los vectores de embeddings pueden utilizarse para determinar la similitud semántica entre las palabras.


Métodos para crear embeddings

Existen varios métodos para crear embeddings, incluyendo Word2Vec, GloVe y FastText. Cada método tiene sus propias ventajas y desventajas, por lo que es importante entender las diferencias entre ellos y elegir el que mejor se adapte a tu tarea.

Democratizar la información

Los embeddings tienen grandes posibilidades para gestionar grandes datos y democratizar el acceso a ellos. Al convertir el lenguaje humano en vectores matemáticos, los embeddings permiten que las computadoras procesen grandes cantidades de datos de manera más efectiva y eficiente.

Cómo interactuar con embeddings

Cuando nos salimos del entorno local, Pinecone es nuestra salvación. Pinecone es una plataforma de servicio de indexación y búsqueda de vectores que utiliza embeddings para mejorar la eficiencia y precisión de la búsqueda de información. Pinecone permite a los usuarios cargar embeddings entrenados previamente o crear nuevos embeddings a partir de datos personalizados, como texto o imágenes.

Esta técnica es útil en una amplia gama de aplicaciones, desde la búsqueda de productos en línea hasta la búsqueda de documentos científicos. En resumen, Pinecone utiliza embeddings para mejorar la eficiencia y precisión de la búsqueda de información en grandes conjuntos de datos.

Relevancia de los embeddings

Resultan cruciales en el Procesamiento de Lenguaje Natural (NLP) porque permiten a los modelos entender y procesar el lenguaje de manera más efectiva.

Al mapear palabras en un espacio vectorial donde la proximidad refleja similitud semántica, los embeddings facilitan tareas como la búsqueda de información, la clasificación de textos y la traducción automática.

  • Similitud semántica: Los embeddings posicionan palabras con significados similares cerca unas de otras en el espacio vectorial. Por ejemplo, “rey” y “reina” tendrán vectores cercanos, lo que refleja su relación semántica.

  • Reducción de dimensionalidad: También reducen la dimensionalidad del espacio de características, lo que hace que los modelos sean más eficientes y manejables. Esto es especialmente útil cuando se trabaja con grandes volúmenes de datos textuales.

  • Aplicaciones prácticas: Se utilizan en una amplia variedad de aplicaciones, desde la recomendación de contenidos hasta el análisis de sentimientos y la visión por computador.

Dicho de otro modo, los embeddings transforman datos textuales en información útil y manejable, permitiendo una comprensión más profunda y precisa del lenguaje natural por parte de los modelos de aprendizaje automático.

¿Qué son los embeddings?

Para entender qué son los embeddings comencemos con un ejemplo sencillo: supongamos que queremos describir la apariencia de dos personas usando diferentes características.

Podemos decir por ejemplo que la primera persona tiene una altura de 1.72 cm, el cabello corto y de color negro, su peso es 67 Kg y sus ojos son de color café.

Y la segunda persona tiene una altura de 1.83 cm, el cabello largo y de color castaño, su peso es 78 Kg y sus ojos son de color verde.

Así que hemos tomado el dato original (cada persona) y lo que hemos hecho ha sido representarlo a través de 4 características. Y si organizamos estas 4 características en un listado lo que tendremos será un vector de 4 dimensiones.

Ahora veamos cómo lograríamos hacer algo similar pero usando Redes Neuronales, que son la base de los Grandes Modelos de Lenguaje.

Por ejemplo, si queremos hacer un sistema de reconocimiento de rostros, lo que necesitamos es comparar la imagen del rostro de una persona con imágenes de referencia en una base de datos para determinar si la persona es o no quien dice ser.

Pues en estos sistemas realmente no comparamos directamente las imágenes. En lugar de ello lo que se hace es construir una Red Convolucional (que es un tipo de Red Neuronal) que procesa estas imágenes y que a la salida genera una representación vectorial de la imagen de entrada. Y esta representación vectorial, que es simplemente un listado o arreglo de números, es precisamente lo que se conoce como un embedding.

Y la idea es que imágenes con rostros similares tendrán embeddings similares e imágenes con rostros diferentes tendrán embeddings diferentes. Y este principio nos permitirá construir precisamente el sistema de verificación de identidad.

Y este mismo principio lo podemos aplicar para el procesamiento y análisis del lenguaje natural, que es la forma como nos comunicamos los seres humanos.

Así que en resumen, y para lo que nos interesa, un embedding es una representación vectorial del dato de entrada y que se obtiene tras el entrenamiento de una Red Neuronal.


Fundamentos de los embeddings

Los embeddings se basan en la idea de representar palabras, frases o documentos en un espacio vectorial continuo de baja dimensión, donde las relaciones semánticas y contextuales se capturan a través de la proximidad en este espacio.

Esto lleva a dos conceptos clave: la representación vectorial y los espacios de alta dimensionalidad.

Representación vectorial

La representación vectorial implica convertir palabras u otros elementos textuales en vectores numéricos. Estos vectores encapsulan información semántica y sintáctica, permitiendo que los modelos de aprendizaje automático comprendan mejor el lenguaje.

  • Vectores densos: A diferencia de las representaciones dispersas (como la bolsa de palabras, “bag of words” en inglés), los embeddings son vectores densos de dimensiones más pequeñas. Cada palabra se representa como un vector de números reales en un espacio de dimensiones predefinidas, típicamente entre 50 y 300.

  • Contexto: Los embeddings se entrenan para capturar el contexto en el que aparecen las palabras. Por ejemplo, la palabra “banco” tendrá diferentes representaciones dependiendo de si se usa en el contexto de “institución financiera” o “asiento”.

  • Entrenamiento: Los modelos asociados, como Word2Vec, GloVe y FastText, utilizan grandes corpus de texto para aprender las representaciones vectoriales. Estos ajustan los vectores de manera que las palabras con significados similares estén cerca en el espacio vectorial.

Espacios de alta dimensionalidad

Los embeddings operan en espacios de alta dimensionalidad donde las palabras se mapean a puntos en un espacio continuo. Este enfoque permite capturar complejas relaciones semánticas y contextuales entre las palabras.

  • Proximidad semántica: En el espacio vectorial, palabras con significados similares están más cerca unas de otras. Por ejemplo, como dijimos anteriormente, “rey” y “reina” estarán cerca, pero sin embargo “rey” y “mesa” estarán más alejadas.

  • Operaciones vectoriales: Una de las ventajas de los embeddings es la posibilidad de realizar operaciones aritméticas en los vectores para capturar relaciones semánticas. Por ejemplo, en Word2Vec, la operación vectorial “rey - hombre + mujer” resultará en un vector cercano a “reina”.

  • Dimensionalidad y eficiencia: Aunque los embeddings son de alta dimensionalidad, generalmente tienen menos dimensiones que las representaciones tradicionales de texto (como la bolsa de palabras). Esto reduce la complejidad computacional y mejora la eficiencia de los modelos.

Embeddings y Grandes Modelos de Lenguaje

Como acabamos de ver, el texto también puede ser procesado por algún tipo de Red Neuronal para generar embeddings, con lo cual podemos realizar tareas como el análisis de sentimientos, la búsqueda semántica o la generación de texto, entre otras.

Un enfoque usado hace algunos años era generar embeddings a partir de las palabras. Es decir que la idea es tomar cada palabra, representarla como tokens y luego convertir cada token en un embedding. Es decir en una representación vectorial.

Con este tipo de embeddings usualmente palabras con significados similares, como por ejemplo “manzana” y “pera”, tendrán embeddings similares pero que a su vez son diferentes de los embeddings para las palabras “perro” o “gato”, que tienen un significado diferente.

Sin embargo, en el lenguaje natural las palabras no se encuentran aisladas sino que se encuentran en un contexto, en una frase por ejemplo, y dependiendo de ese contexto una palabra determinada podría tener diferentes significados.

Por ejemplo, en las frases “debo ir al banco a retirar dinero” y “estoy sentado en el banco” la palabra “banco” tiene significados completamente diferentes, y ese significado lo establecemos nosotros los humanos a partir precisamente del contexto: leyendo la totalidad de la frase.

Esto quiere decir que el uso de embeddings a nivel de palabra no es capaz de capturar la información del contexto y por tanto, en las frases anteriores, la palabra banco tendría el mismo embedding en ambos casos, lo cual no resulta ideal.

Así que como alternativa al uso de embeddings a nivel de palabra, los Grandes Modelos de Lenguaje existentes actualmente hacen uso de las Redes Transformer que permiten generar embeddings capaces de capturar la información del contexto.

Para resumir la idea principal acerca de esta arquitectura, podemos decir que una Red Transformer es un tipo de Red Neuronal diseñada específicamente para procesar secuencias como el texto y que incorpora algo que se conoce como un mecanismo atencional: al momento de decidir cuál será el embedding para una palabra o una frase lo hace analizando la relación entre la palabra y los demás elementos de la frase a diferentes niveles.

Es decir que, de alguna manera, los embeddings generados por los Grandes Modelos de Lenguaje intentan imitar la forma como nosotros los seres humanos interpretamos el lenguaje, con la diferencia de que internamente estos modelos generan simplemente representaciones vectoriales, arreglos de números que codifican el contenido de una frase.

La ventaja de esto es que los embeddings generados permitirán que frases con un significado similar tengan representaciones vectoriales similares.

Por ejemplo, frases como “Me gustaría conocer las tarifas de vuelos entre Madrid y Milán” o “Quiero encontrar tiquetes de primera clase ida y vuelta de nueva york a miami” tienen embeddings similares pues ambas se refieren por ejemplo al concepto de “tiquetes de avión”

Mientras que frases como “qué aerolíneas vuelan de los ángeles a tokyo” o “de todas las aerolíneas que llegan a Hong Kong cuál es la más económica?” se refieren a un concepto relacionado con el anterior pero que es diferente, pues se enfoca más en la temática de “aerolíneas”.

Lo anterior quiere decir que embeddings que son numéricamente similares equivalen a frases semánticamente similares, es decir con significados muy parecidos.

En la práctica, los diferentes Grandes Modelos de Lenguaje disponibles usan diferentes tamaños para los embeddings que dependen de la forma como hayan sido construidos. Por ejemplo, algunos modelos de OpenAI usan embeddings de 1536 o 2.048, mientras que otros como Llama tienen embeddings con tamaños entre 4.096 y 8.192.

Importancia de los embeddings en los LLMs

Bien, como hemos visto hasta ahora, los embeddings del texto son la materia prima de los Grandes Modelos de Lenguaje y son lo que ha permitido el desarrollo de muchas de las aplicaciones de procesamiento de lenguaje natural que hemos visto recientemente.

Y los tipos de aplicaciones que se pueden construir con este concepto van más allá incluso de las aplicaciones más conocidas como por ejemplo ChatGPT.

Por ejemplo, podemos usar los embeddings para realizar búsquedas semánticas. Es decir que podemos tomar un texto fuente y obtener su representación a través de embeddings, y luego un usuario puede escribir una búsqueda en lenguaje natural (tal como lo haría en una conversación) que también se representa con embeddings. Luego el sistema realiza la comparación vectorial de ambos embeddings y genera la respuesta a la búsqueda también en lenguaje natural.

También se pueden realizar tareas de clustering o agrupamiento: podemos usar los embeddings del texto para pedirle a uno de estos modelos de lenguaje que encuentre temáticas o tópicos que se encuentren dentro del texto.

O podemos usar los embeddings para generar sistemas de síntesis de texto: que extraigan las ideas principales de un texto y generen a la salida un texto más corto pero usando lenguaje natural.

O también podríamos implementar aplicaciones de recomendación de contenido: por ejemplo, con base en los artículos que más busca o lee un usuario podríamos recomendar nuevo contenido similar en la web para su lectura. E internamente todo este procesamiento se puede hacer precisamente a través de embeddings.

Así que el rango de aplicaciones que tienen los embeddings usados por los grandes modelos de lenguaje es inmenso y en próximos artículos abordaremos en detalle varias de estas aplicaciones.


Fuentes:

https://codificandobits.com/blog/embeddings-y-llms/

https://gustavo-espindola.medium.com/qu%C3%A9-son-los-embeddings-y-c%C3%B3mo-se-utilizan-en-la-inteligencia-artificial-con-python-45b751ed86a5


0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.