Saltar al contenido

word2vec: muestreo negativo (en términos simples)?

Solución:

La idea de word2vec es maximizar la similitud (producto escalar) entre los vectores de las palabras que aparecen juntas (en el contexto de las demás) en el texto y minimizar la similitud de las palabras que no lo hacen. En la ecuación (3) del artículo al que se vincula, ignore la exponenciación por un momento. Tú tienes

      v_c * v_w
 -------------------
   sum(v_c1 * v_w)

El numerador es básicamente la similitud entre palabras. c (el contexto) y w (el objetivo) palabra. El denominador calcula la similitud de todos los demás contextos c1 y la palabra objetivo w. Maximizar esta proporción asegura que las palabras que aparecen más juntas en el texto tengan vectores más similares que las palabras que no lo hacen. Sin embargo, calcular esto puede ser muy lento, porque hay muchos contextos c1. El muestreo negativo es una de las formas de abordar este problema; solo seleccione un par de contextos c1 al azar. El resultado final es que si cat aparece en el contexto de food, luego el vector de food es más similar al vector de cat (como medidas por su producto escalar) que los vectores de varias otras palabras elegidas al azar (p.ej democracy, greed, Freddy), en lugar de todas las demás palabras en el idioma. Esto hace word2vec mucho más rápido de entrenar.

Informática Softmax (Función para determinar qué palabras son similares a la palabra objetivo actual) es costosa ya que requiere sumar todas las palabras en V (denominador), que generalmente es muy grande.

ingrese la descripción de la imagen aquí

¿Qué se puede hacer?

Se han propuesto diferentes estrategias para aproximado el softmax. Estos enfoques se pueden agrupar en basado en softmax y basado en muestreo enfoques. Basado en Softmax Los enfoques son métodos que mantienen intacta la capa softmax, pero modifican su arquitectura para mejorar su eficiencia (por ejemplo, softmax jerárquico). Basado en muestreo Los enfoques, por otro lado, eliminan por completo la capa softmax y en su lugar optimizan alguna otra función de pérdida que se aproxima al softmax (hacen esto aproximando la normalización en el denominador del softmax con alguna otra pérdida que es barata de calcular como muestreo negativo) .

La función de pérdida en Word2vec es algo como:

ingrese la descripción de la imagen aquí

Qué logaritmo se puede descomponer en:

ingrese la descripción de la imagen aquí

Con alguna fórmula matemática y de gradiente (Ver más detalles en 6) se convirtió en:

ingrese la descripción de la imagen aquí

Como ve, se convirtió en una tarea de clasificación binaria (y = 1 clase positiva, y = 0 clase negativa). Como necesitamos etiquetas para realizar nuestra tarea de clasificación binaria, designamos todas las palabras de contexto C como etiquetas verdaderas (y = 1, muestra positiva), y k seleccionados al azar de corpus como etiquetas falsas (y = 0, muestra negativa).


Mira el siguiente párrafo. Supongamos que nuestra palabra objetivo es “Word2vec“. Con una ventana de 3, nuestras palabras de contexto son: The, widely, popular, algorithm, was, developed. Estas palabras de contexto se consideran etiquetas positivas. También necesitamos algunas etiquetas negativas. Elegimos al azar algunas palabras del corpus (produce, software, Collobert, margin-based, probabilistic) y considérelos como muestras negativas. Esta técnica que seleccionamos al azar de un ejemplo del corpus se llama muestreo negativo.

ingrese la descripción de la imagen aquí

Referencia :

  • (1) C. Dyer, “Notas sobre la estimación por contraste de ruido y el muestreo negativo”, 2014
  • (2) http://sebastianruder.com/word-embeddings-softmax/

Escribí un artículo tutorial sobre muestreo negativo aquí.

¿Por qué utilizamos el muestreo negativo? -> para reducir el costo computacional

La función de costo para el muestreo vanilla Skip-Gram (SG) y Skip-Gram negativo (SGNS) se ve así:

ingrese la descripción de la imagen aquí

Tenga en cuenta que T es el número de todos los vocablos. Es equivalente a V. En otras palabras, T = V.

La distribución de probabilidad p(w_t+j|w_t) en SG se calcula para todos V vocabulario en el corpus con:

ingrese la descripción de la imagen aquí

V puede superar fácilmente decenas de miles al entrenar el modelo Skip-Gram. La probabilidad debe calcularse V veces, haciéndolo computacionalmente costoso. Además, el factor de normalización en el denominador requiere extra V cálculos.

Por otro lado, la distribución de probabilidad en SGNS se calcula con:

ingrese la descripción de la imagen aquí

c_pos es un vector de palabra para palabra positiva, y W_neg son vectores de palabras para todos K muestras negativas en la matriz de ponderaciones de salida. Con SGNS, la probabilidad solo debe calcularse K + 1 tiempos, donde K es típicamente entre 5 ~ 20. Además, no se necesitan iteraciones adicionales para calcular el factor de normalización en el denominador.

Con SGNS, solo se actualiza una fracción de los pesos para cada muestra de entrenamiento, mientras que SG actualiza todos los millones de pesos para cada muestra de entrenamiento.

ingrese la descripción de la imagen aquí

¿Cómo logra SGNS esto? -> transformando la tarea de clasificación múltiple en una tarea de clasificación binaria.

Con SGNS, los vectores de palabras ya no se aprenden prediciendo palabras de contexto de una palabra central. Aprende a diferenciar las palabras del contexto real (positivas) de las palabras extraídas al azar (negativas) de la distribución de ruido.

ingrese la descripción de la imagen aquí

En la vida real, normalmente no observas regression con palabras al azar como Gangnam-Style, o pimples. La idea es que si el modelo puede distinguir entre los pares probables (positivos) y los pares improbables (negativos), se aprenderán buenos vectores de palabras.

ingrese la descripción de la imagen aquí

En la figura anterior, el par actual positivo palabra-contexto es (drilling, engineer). K=5 Las muestras negativas se extraen aleatoriamente de la distribución del ruido: minimized, primary, concerns, led, page. A medida que el modelo itera a través de las muestras de entrenamiento, las ponderaciones se optimizan para que la probabilidad de un par positivo se genere p(D=1|w,c_pos)≈1, y la probabilidad de pares negativos dará como resultado p(D=1|w,c_neg)≈0.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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