Word2Vec, GloVe y FastText, explicados.

Explanation of Word2Vec, GloVe and FastText.

Cómo los ordenadores comprenden las palabras

Foto de Growtika en Unsplash

Los ordenadores no comprenden las palabras como lo hacemos nosotros. Prefieren trabajar con números. Por lo tanto, para ayudar a los ordenadores a entender las palabras y sus significados, utilizamos algo llamado embeddings. Estos embeddings representan numéricamente las palabras como vectores matemáticos.

Lo interesante de estos embeddings es que, si los aprendemos correctamente, las palabras que tienen significados similares tendrán valores numéricos similares. En otras palabras, sus números estarán más cerca uno del otro. Esto permite a los ordenadores comprender las conexiones y similitudes entre diferentes palabras basándose en sus representaciones numéricas.

Uno de los métodos más destacados para aprender embeddings de palabras es Word2Vec. En este artículo, profundizaremos en las complejidades de Word2Vec y exploraremos sus diversas arquitecturas y variantes.

Word2Vec

Figura 1: Arquitecturas de Word2Vec ( Fuente )

En los primeros días, las frases se representaban con vectores n-gram. Estos vectores intentaban capturar la esencia de una frase considerando secuencias de palabras. Sin embargo, tenían algunas limitaciones. Los vectores n-gram eran a menudo grandes y dispersos, lo que los hacía computacionalmente difíciles de crear. Esto creaba un problema conocido como la maldición de la dimensionalidad. Esencialmente, esto significaba que en espacios de alta dimensión, los vectores que representaban palabras estaban tan alejados uno del otro que se volvía difícil determinar cuáles eran verdaderamente similares.

Luego, en 2003, ocurrió un avance notable con la introducción de un modelo de lenguaje probabilístico neural. Este modelo cambió por completo la forma en que representamos las palabras usando algo llamado vectores densos continuos. A diferencia de los vectores n-gram, que eran discretos y dispersos, estos vectores densos ofrecían una representación continua. Incluso pequeños cambios en estos vectores daban como resultado representaciones significativas, aunque no siempre correspondían directamente a palabras en inglés específicas.

Sobre la base de este emocionante progreso, surgieron en 2013 el marco de Word2Vec. Presentó un método poderoso para codificar los significados de las palabras en vectores densos continuos. Dentro de Word2Vec, se introdujeron dos arquitecturas principales: Bolsa de palabras continua (CBoW) y Skip-gram.

Estas arquitecturas abrieron puertas a modelos de entrenamiento eficientes capaces de generar embeddings de palabras de alta calidad. Al aprovechar vastas cantidades de datos de texto, Word2Vec dio vida a las palabras en el mundo numérico. Esto permitió a los ordenadores comprender los significados contextuales y las relaciones entre las palabras, ofreciendo un enfoque transformador para el procesamiento del lenguaje natural.

Bolsa de palabras continua (CBoW)

Figura 2: Ilustración de entrenamiento CBoW (imagen del autor)

En esta sección y la siguiente, comprendamos cómo se entrenan los modelos CBoW y skip-gram utilizando un pequeño vocabulario de cinco palabras: biggest, ever, lie, told y the. Y tenemos una frase de ejemplo “La mentira más grande jamás contada”. ¿Cómo pasaríamos esto a la arquitectura CBoW? Esto se muestra en la Figura 2 de arriba, pero también describiremos el proceso.

Supongamos que establecemos el tamaño de la ventana de contexto en 2. Tomamos las palabras “La”, “más grande”, “nunca” y “contada” y las convertimos en vectores one-hot de 5×1.

Estos vectores se pasan como entrada al modelo y se asignan a una capa de proyección. Digamos que esta capa de proyección tiene un tamaño de 3. El vector de cada palabra se multiplica por una matriz de pesos de 5×3 (compartida entre entradas), lo que da como resultado cuatro vectores de 3×1. Al tomar el promedio de estos vectores, obtenemos un solo vector de 3×1. Luego, este vector se proyecta de nuevo en un vector de 5×1 usando otra matriz de pesos de 3×5.

Este vector final representa la palabra central “mentira”. Al calcular el verdadero vector one-hot y el vector de salida real, obtenemos una pérdida que se utiliza para actualizar los pesos de la red mediante retropropagación.

Repetimos este proceso deslizando la ventana de contexto y luego aplicándolo a miles de oraciones. Una vez que el entrenamiento se completa, la primera capa del modelo, con dimensiones de 5×3 (tamaño de vocabulario x tamaño de proyección), contiene los parámetros aprendidos. Estos parámetros se utilizan como una tabla de búsqueda para asignar a cada palabra su representación vectorial correspondiente.

Skip-gram

Figura 3: Ilustración del entrenamiento de skip-gram (imagen del autor)

En el modelo skip-gram, usamos una arquitectura similar al caso de bolsa de palabras continua (CBoW). Sin embargo, en lugar de predecir la palabra objetivo basándonos en sus palabras circundantes, invertimos el escenario como se muestra en la Figura 3. Ahora, la palabra “mentira” se convierte en la entrada y nuestro objetivo es predecir sus palabras de contexto. El nombre “skip-gram” refleja este enfoque, ya que predecimos palabras de contexto que pueden “saltar” algunas palabras.

Para ilustrar esto, consideremos algunos ejemplos:

  • La palabra de entrada “mentira” se empareja con la palabra de salida “el”.
  • La palabra de entrada “mentira” se empareja con la palabra de salida “más grande”.
  • La palabra de entrada “mentira” se empareja con la palabra de salida “siempre”.
  • La palabra de entrada “mentira” se empareja con la palabra de salida “dicho”.

Repetimos este proceso para todas las palabras en los datos de entrenamiento. Una vez que se completa el entrenamiento, los parámetros de la primera capa, con dimensiones de tamaño de vocabulario x tamaño de proyección, capturan las relaciones entre las palabras de entrada y sus correspondientes representaciones vectoriales. Estos parámetros aprendidos nos permiten asignar a una palabra de entrada su respectiva representación vectorial en el modelo skip-gram.

Ventajas

  1. Supera la maldición de la dimensionalidad con simplicidad: Word2Vec proporciona una solución sencilla y eficiente para la maldición de la dimensionalidad. Al representar las palabras como vectores densos, reduce la dispersión y la complejidad computacional asociada con métodos tradicionales como los vectores n-gram.
  2. Genera vectores de tal manera que las palabras más cercanas en significado tienen valores vectoriales más cercanos: Las incrustaciones de Word2Vec exhiben una propiedad valiosa en la que las palabras con significados similares están representadas por vectores que están más cercanos en valor numérico. Esto permite capturar relaciones semánticas y realizar tareas como similitud de palabras y detección de analogías.
  3. Incrustaciones pre-entrenadas para varias aplicaciones de procesamiento del lenguaje natural: Las incrustaciones pre-entrenadas de Word2Vec están ampliamente disponibles y pueden utilizarse en una variedad de aplicaciones de procesamiento del lenguaje natural (PLN). Estas incrustaciones, entrenadas en grandes corpus, proporcionan un recurso valioso para tareas como el análisis de sentimientos, el reconocimiento de entidades nombradas, la traducción automática y más.
  4. Marco auto-supervisado para la ampliación y el entrenamiento de datos: Word2Vec opera de manera auto-supervisada, aprovechando los datos existentes para aprender representaciones de palabras. Esto hace que sea fácil recopilar más datos y entrenar el modelo, ya que no requiere conjuntos de datos etiquetados extensos. El marco se puede aplicar a grandes cantidades de texto no etiquetado, mejorando el proceso de entrenamiento.

Desventajas

  1. Preservación limitada de la información global: Las incrustaciones de Word2Vec se centran principalmente en capturar información de contexto local y puede que no preserven las relaciones globales entre las palabras. Esta limitación puede afectar a las tareas que requieren una comprensión más amplia del texto, como la clasificación de documentos o el análisis de sentimientos a nivel de documento.
  2. Menos adecuado para lenguas morfológicamente ricas: Las lenguas morfológicamente ricas, caracterizadas por formas y flexiones de palabras complejas, pueden presentar desafíos para Word2Vec. Dado que Word2Vec trata cada palabra como una unidad atómica, puede tener dificultades para capturar la rica morfología y matices semánticos presentes en tales lenguas.
  3. Falta de conciencia de contexto amplio: Los modelos de Word2Vec consideran solo una ventana de contexto local de palabras que rodean la palabra objetivo durante el entrenamiento. Esta conciencia de contexto limitada puede resultar en una comprensión incompleta de los significados de las palabras en ciertos contextos. Puede tener dificultades para capturar dependencias a largo plazo y relaciones semánticas intrincadas presentes en ciertos fenómenos lingüísticos.

En las siguientes secciones, veremos algunas arquitecturas de incrustación de palabras que ayudan a abordar estas desventajas.

GloVe: Vectores Globales

Los métodos de Word2Vec han tenido éxito en capturar el contexto local hasta cierto punto, pero no aprovechan al máximo el contexto global disponible en el corpus. El contexto global se refiere al uso de múltiples oraciones en todo el corpus para recopilar información. Es aquí donde entra GloVe, ya que aprovecha la co-ocurrencia de palabras para aprender incrustaciones de palabras.

El concepto de matriz de co-ocurrencia palabra-palabra es clave en Glove. Es una matriz que captura las ocurrencias de cada palabra en el contexto de cada otra palabra en el corpus. Cada celda en la matriz representa el recuento de ocurrencias de una palabra en el contexto de otra palabra.

Figura 4: Ejemplo de ratio de probabilidad de co-ocurrencia de palabras ( Fuente )

En lugar de trabajar directamente con las probabilidades de co-ocurrencia como en Word2Vec, Glove comienza con los ratios de probabilidades de co-ocurrencia. En el contexto de la Figura 4, P( k | ice ) representa la probabilidad de que la palabra k aparezca en el contexto de la palabra “ice”, y P( k | steam ) representa la probabilidad de que la palabra k aparezca en el contexto de la palabra “steam”. Al comparar el ratio P( k | ice ) / P( k | steam ), podemos determinar la asociación de la palabra k con ice o steam. Si el ratio es mucho mayor que 1, indica una asociación más fuerte con ice. Por el contrario, si está más cerca de 0, sugiere una asociación más fuerte con steam. Un ratio más cercano a 1 implica que no hay una asociación clara con ice o steam.

Por ejemplo, cuando k = “sólido”, el ratio de probabilidad es mucho mayor que 1, lo que indica una fuerte asociación con ice. Por otro lado, cuando k = “gas”, el ratio de probabilidad está mucho más cerca de 0, lo que sugiere una asociación más fuerte con steam. En cuanto a las palabras “agua” y “moda”, no exhiben una asociación clara con ice o steam.

Esta asociación de palabras basada en ratios de probabilidad es precisamente lo que se pretende lograr. Y esto se optimiza cuando se aprenden embeddings con GloVe.

FastText

Las arquitecturas tradicionales de word2vec, además de carecer de la utilización de información global, no manejan eficazmente los lenguajes que son morfológicamente ricos.

Entonces, ¿qué significa que un idioma sea morfológicamente rico? En tales idiomas, una palabra puede cambiar su forma según el contexto en el que se utiliza. Tomemos como ejemplo un idioma del sur de la India llamado “Kannada”.

En Kannada, la palabra para “casa” se escribe como ಮನೆ (mane). Sin embargo, cuando decimos “en la casa”, se convierte en ಮನೆಯಲ್ಲಿ (maneyalli), y cuando decimos “desde la casa”, cambia a ಮನೆಯಿಂದ (maneyinda). Como se puede ver, solo cambia la preposición, pero las palabras traducidas tienen diferentes formas. En inglés, simplemente son “house”. En consecuencia, las arquitecturas tradicionales de word2vec asignarían todas estas variaciones al mismo vector. Sin embargo, si creáramos un modelo word2vec para Kannada, que es morfológicamente rico, cada uno de estos tres casos se asignaría a diferentes vectores. Además, la palabra “casa” en Kannada puede tomar muchas más formas que solo estos tres ejemplos. Dado que nuestro corpus puede no contener todas estas variaciones, el entrenamiento tradicional de word2vec podría no capturar todas las diversas representaciones de palabras.

Para abordar este problema, FastText introduce una solución al considerar la información de sub-palabras al generar vectores de palabras. En lugar de tratar cada palabra como un todo, FastText descompone las palabras en n-gramos de caracteres, que van desde tri-gramos hasta 6-gramos. Estos n-gramos se asignan a vectores, que se agregan posteriormente para representar la palabra completa. Estos vectores agregados se alimentan luego en una arquitectura de skip-gram.

Este enfoque permite el reconocimiento de características compartidas entre diferentes formas de palabras dentro de un idioma. A pesar de que es posible que no hayamos visto cada una de las formas de una palabra en el corpus, los vectores aprendidos capturan las similitudes y similitudes comunes entre estas formas. Los lenguajes morfológicamente ricos, como el árabe, el turco, el finlandés y varios idiomas indios, pueden beneficiarse de la capacidad de FastText para generar vectores de palabras que tengan en cuenta diferentes formas y variaciones.

Conciencia del contexto

Figura 5: ELMo y BERT ( Fuente )

A pesar de sus ventajas, las arquitecturas de word2vec mencionadas anteriormente sufren de una limitación: generan la misma representación vectorial para una palabra dada, independientemente de su contexto.

Para ilustrar este punto, consideremos las siguientes dos oraciones:

  1. “Esa drag queen arrasa.”
  2. “Ella tiene un as y una reina para una mano perfecta.”

En estas oraciones, la palabra “reina” tiene diferentes significados. Sin embargo, en las arquitecturas de word2vec, los vectores para “reina” en ambos casos serían iguales. Esto no es ideal porque queremos que los vectores de palabras capturen y representen diferentes significados basados en sus contextos.

Para abordar este problema, se introdujeron arquitecturas más avanzadas como las células LSTM. Estas arquitecturas fueron diseñadas para incorporar información contextual en las representaciones de palabras. Con el tiempo, surgieron modelos basados en transformadores como BERT y GPT, lo que llevó al desarrollo de modelos de lenguaje a gran escala que vemos hoy en día. Estos modelos destacan en considerar el contexto y generar representaciones de palabras que son sensibles a las palabras y oraciones circundantes.

Al tener en cuenta el contexto, estas arquitecturas avanzadas permiten la creación de vectores de palabras más matizados y significativos, asegurando que la misma palabra pueda tener diferentes representaciones vectoriales dependiendo de su contexto específico.

Conclusión

En conclusión, esta publicación del blog proporcionó información sobre la arquitectura de word2vec y su capacidad para representar palabras utilizando vectores densos continuos. Implementaciones posteriores como GloVe capitalizaron en el contexto global, mientras que FastText permitió el aprendizaje eficiente de vectores para lenguajes morfológicamente ricos como el árabe, el finlandés y varios idiomas indios. Sin embargo, una limitación común entre estos enfoques es que asignan el mismo vector a una palabra independientemente de su contexto durante la inferencia, lo que puede dificultar la representación precisa de palabras con múltiples significados.

Para abordar esta limitación, los avances posteriores en NLP introdujeron células LSTM y arquitecturas de transformadores, que destacan en la captura de un contexto específico y se han convertido en la base de los modernos modelos de lenguaje a gran escala. Estos modelos tienen la capacidad de comprender y generar representaciones de palabras que varían según su contexto circundante, acomodando los significados matizados de las palabras en diferentes escenarios.

Sin embargo, es importante reconocer que el marco de word2vec sigue siendo significativo, ya que continúa alimentando numerosas aplicaciones en el campo del procesamiento del lenguaje natural. Su simplicidad y capacidad para generar incrustaciones de palabras significativas han demostrado ser valiosas, a pesar de los desafíos planteados por las variaciones contextuales en los significados de las palabras.

Para obtener más información sobre los modelos de lenguaje, consulte esta lista de reproducción de YouTube.

¡Feliz aprendizaje!