Mapeo de incrustaciones de Word con Word2vec

Mejora del procesamiento del lenguaje natural con relaciones sintácticas y semánticas entre vectores de palabras

Introducción

El procesamiento del lenguaje natural (NLP) es un área de inteligencia artificial enfocada en permitir computadoras para comprender, procesar y analizar el lenguaje humano.

NLP es ampliamente utilizado en la industria de la tecnología, sirviendo como columna vertebral de los motores de búsqueda, filtros de spam, traducción de idiomas y mucho más.

NLP permite que las computadoras transformen el lenguaje humano en una forma que pueda leer y comprender, como un vector o un símbolo discreto.

Por ejemplo, NLP puede asimilar la oración Tan hambriento, necesita comida y divídala en cuatro símbolos arbitrarios: representados como K45, hambrientos como J83, necesarios como Q67, y alimentos como P21, todos los cuales pueden ser procesados ​​por el computadora.

Cada palabra única está representada por un símbolo diferente; sin embargo, la desventaja es que no existe una relación aparente entre los símbolos designados para los hambrientos y los alimentos.

Esto impide que el modelo NLP use lo que aprendió sobre el hambre y lo aplique a los alimentos, que están semánticamente relacionados.

Los Modelos espaciales de vector (VSM) ayudan a resolver este problema al insertar las palabras en un espacio vectorial donde las palabras definidas de manera similar se mapean una cerca de la otra. Este espacio se llama inclusión de palabras.

Word2vec

Word2vec, una creación de un equipo de investigadores dirigido por Google Tomás Mikolov es uno de los modelos más populares utilizados para crear incrustaciones de palabras.

Tiene dos métodos principales para contextualizar palabras: el modelo continuo de Bag-of-Words (CBOW) y el modelo Skip-Gram, que resumiré en esta publicación. Ambos modelos llegan a una conclusión similar, pero toman caminos casi inversos para llegar allí.

Modelo continuo de bolsa de palabras

CBOW, que es el menos popular de los dos modelos, usa palabras fuente para predecir las palabras objetivo . Por ejemplo, toma la oración Quiero aprender Python.

En este caso, la palabra objetivo es python, mientras que las palabras fuente son “Quiero aprender”. CBOW se usa principalmente en conjuntos de datos más pequeños, ya que trata el contexto de la oración como una observación única para predecir la palabra objetivo.

En la práctica, esto se vuelve muy ineficiente cuando se trabaja con un gran conjunto de palabras.

Modelo Skip-Gram

El modelo Skip-Gram funciona de forma opuesta al modelo CBOW, usando palabras objetivo para predecir la fuente, o contexto, de las palabras que lo rodean.

Considere la frase que el zorro marrón rápido saltó sobre el perro perezoso y supongamos que usamos una definición simple para el contexto de una palabra dada como las palabras que la preceden y la siguen inmediatamente.

El modelo Skip-Gram dividirá la oración en (contexto, destino) pares, lo que da como resultado un conjunto de pares en el siguiente formato:

([the, brown]rápido), ([quick,fox]marrón), ([brown,jumped]zorro) …

Estos pares se aventan más en (entrada, salida) pares, que representan cada palabra (entrada) con la palabra directamente antes o después de ella . Esto es necesario porque el modelo Skip-Gram funciona al usar las palabras de destino (entradas) para predecir el contexto o la salida. Estos pares se representan de la siguiente manera:

(rápido, el), (rápido, marrón), (marrón, rápido), (marrón, zorro) …

Ahora que cada palabra puede representarse en contexto , la diversión comienza.

No voy a entrar en las matemáticas: este TensorFlow tutorial proporciona una explicación en profundidad, pero la función de pérdida para predecir cada palabra dada contexto se puede optimizar utilizando el descenso de gradiente estocástico e iterando a través de cada par en el conjunto de datos.

A partir de ahí, los vectores se pueden reducir a dos dimensiones con la técnica de reducción de la dimensionalidad t-SNE .

Modelo Skip-Gram con contexto definido como las dos palabras inmediatamente antes y después de la palabra objetivo. Fuente: http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/

Visualizando las relaciones semánticas y sintácticas entre palabras

Una vez que los vectores de palabras son reducido a dos dimensiones, es posible ver las relaciones entre ciertas palabras. Los ejemplos de una relación semántica son las designaciones masculino / femenino y las relaciones País / Capital, mientras que un ejemplo de relación sintáctica es el pasado frente al tiempo presente. El siguiente diagrama hace un excelente trabajo al visualizar estas relaciones:

Fuente: https://www.tensorflow.org/tutorials/representation/word2vec

Las palabras que comparten relaciones semánticas o sintácticas serán representadas por vectores de magnitud similar y se mapean muy cerca el uno del otro en la palabra “embrionamiento”.

Ya no es el caso del rey representado con un símbolo arbitrario discreto K93 y la reina con S83. En cambio, la relación entre el rey y la reina es más evidente, de hecho, es exactamente lo mismo que la relación entre los vectores para el hombre y la mujer, respectivamente.

Esto permite realizar aritmética extremadamente genial y mágicamente simple en los vectores.

Por ejemplo: si restas el vector para niño de la representación vectorial de hermano y luego agregas el vector para niña, obtendrás hermana.

 hermano - niño + niña = hermana 
 reina - mujer + hombre = rey 
 ciclismo - hoy + ayer = en bicicleta 

Esto abre una dimensión completamente nueva de posibilidades para encontrar patrones u otras ideas en los datos.

Implementación de Word2vec usando TensorFlow

Usando un código de muestra presentado en el tutorial de TensorFlow, demostraré cómo funciona word2vec en la práctica.

TensorFlow es una biblioteca de aprendizaje automático desarrollada por el equipo de Google Brain para uso interno, de código abierto para el público en 2015, en un esfuerzo por acelerar el crecimiento de la inteligencia artificial.

TensorFlow es una poderosa herramienta para el aprendizaje profundo, la regresión logística y el aprendizaje de refuerzo, y se ha popularizado debido a su capacidad para optimizar la eficiencia computacional al entrenar grandes conjuntos de datos.

El código de ejemplo proporcionado lee un gran conjunto de datos de 50,000 palabras y trenes un modelo de skip-gramo para vectorizar las palabras de una manera contextual.

A continuación, recorre los datos 100.000 veces para optimizar la función de pérdida de un lote aleatorio de palabras populares en el conjunto de datos.

Al principio, los vecinos más cercanos para las palabras populares no muestran ninguna relación sintáctica o semántica con cada una de las palabras. Después de 100.000 pasos, se observa una relación mucho más clara y la función de pérdida disminuyó en más del 98%.

Resumen que muestra 8 vecinos más cercanos para un lote aleatorio de palabras populares, en 0 y 100,000 pasos

Como se vio anteriormente, antes el modelo de skip-gramo fue entrenado, los ocho vecinos más cercanos para la palabra tres fueron: bissau, celo, chong, salazón, cooperar, cuartos de final, legislaturas, amplio.

Para cuando las iteraciones estén completas, los vecinos más cercanos para tres son: cinco, cuatro, siete, seis, dos, ocho, nueve, agouti.

Aunque no perfecto, la última vez que lo revisé, agouti es un roedor americano tropical, no un número, 7 de los 8 vecinos más cercanos mostraron una clara relación semántica con la palabra tres.

Izquierda: Agouti centroamericano | Derecha: Números – (Fuentes: Wikipedia, Google Images)

Sesgos de género en Google Translate

Mientras que word2vec puede crear incrustaciones de palabras que ilustran relaciones semánticas y sintácticas entre palabras, el modelo no está exento de algunas defectos.

Un estudio de 2016 titulado Man is to Computer Programmer as Woman is to Homemaker? Debiasing Word Embeddings (Bolukbasi, Chang, Zou, Saligrama, Kalai) demostró cómo las incrustaciones de palabras utilizadas por Google reforzaron los estereotipos de género a un ritmo alarmante e identificaron posibles soluciones al problema.

El científico de datos y empresario Emre Şarbak usó Google Translate para enfatizar aún más los sesgos de género exhibidos por los algoritmos de incrustación de palabras.

Şarbak, que habla turco con fluidez, probó la forma en que Google traduciría las oraciones del turco, que usa pronombres de género neutro, al inglés. Los resultados fueron una mezcla entre fascinante e inquietante. ( Más ejemplos )

En su mayor parte, cuando una oración contenía descripciones estereotípicamente atribuidas a mujeres (cocinera, maestra, enfermera), el pronombre turco neutral de género fue traducido a ella.

Por el contrario, las oraciones con términos como trabajo duro, abogado e ingeniero vieron el pronombre traducido a la forma masculina.

Google no es el único culpable de esto: sus algoritmos se basan en un corpus de palabras humanas que contiene miles de millones de puntos de datos, por lo que Google simplemente refleja sesgos ya existentes.

Sin embargo, Google todavía está determinando lo que millones de personas ven cuando usan Translate (o Search, YouTube y cualquier otra plataforma popular de Google).

En última instancia, esto es muy probablemente una consecuencia negativa no intencional de una herramienta poderosa, pero plantea una un tema importante acerca de cuán fácilmente permitimos que las computadoras y la inteligencia artificial dicten lo que pensamos y vemos.

Las incrustaciones de NLP y de palabras son herramientas esenciales y posiblemente sean el futuro de la inteligencia artificial.

Sin embargo, un diálogo abierto sobre cómo los algoritmos de aprendizaje automático toman sus decisiones es importante para que las voces marginadas no se cierren.

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *