Estoy leyendo el artículo a continuación y tengo algunos problemas para comprender el concepto de muestreo negativo.
http://arxiv.org/pdf/1402.3722v1.pdf
¿Alguien puede ayudar, por favor?
machine-learning
nlp
word2vec
Andy K
fuente
fuente
Respuestas:
La idea de
word2vec
es maximizar la similitud (producto escalar) entre los vectores de las palabras que aparecen juntas (en el contexto de las otras) 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. TienesEl numerador es básicamente la similitud entre las palabras
c
(el contexto) yw
la palabra (objetivo). El denominador calcula la similitud de todos los demás contextosc1
y la palabra de destinow
. 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 contextosc1
. El muestreo negativo es una de las formas de abordar este problema; simplemente seleccione un par de contextosc1
al azar. El resultado final es que sicat
aparece en el contexto defood
, entonces el vector defood
es más similar al vector decat
(como medidas por su producto escalar) que los vectores de varias otras palabras elegidas al azar(por ejemplodemocracy
,greed
,Freddy
), en lugar de todas las otras palabras en el lenguaje . Esto haceword2vec
que entrenar sea mucho más rápido.fuente
word2vec
, para cualquier palabra dada, tiene una lista de palabras que deben ser similares (la clase positiva) pero la clase negativa (palabras que no son similares a la palabra de destino) se compila por muestreo.Cálculo de Softmax (función para determinar qué palabras son similares a la palabra objetivo actual) es caro ya que requiere sumando sobre todas las palabras en V (denominador), que generalmente es muy grande.
¿Qué se puede hacer?
Se han propuesto diferentes estrategias para aproximar el softmax. Estos enfoques se pueden agrupar en basada en Softmax y basada en muestreo enfoques. Los enfoques basados en Softmax son métodos que mantienen intacta la capa softmax, pero modifican su arquitectura para mejorar su eficiencia (por ejemplo, softmax jerárquico). Los enfoques basados en muestreo, 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:
Qué logaritmo se puede descomponer en:
Con alguna fórmula matemática y de gradiente (Ver más detalles en 6 ) se convirtió en:
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) yk seleccionadas aleatoriamente de corpora como etiquetas falsas (y = 0, muestra negativa).
Mira el siguiente párrafo. Supongamos que nuestra palabra objetivo es " Word2vec ". Con 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. Escogemos al azar algunas palabras del corpus (produce
,software
,Collobert
,margin-based
,probabilistic
) y los consideramos como muestras negativas. Esta técnica que seleccionamos aleatoriamente de un corpus se llama muestreo negativo.Referencia :
fuente
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í:
Tenga en cuenta que
T
es el número de todos los vocablos. Es equivalente aV
. En otras palabras,T
=V
.La distribución de probabilidad
p(w_t+j|w_t)
en SG se calcula para todos losV
vocablos del corpus con:V
puede superar fácilmente decenas de miles al entrenar el modelo Skip-Gram. La probabilidad debe calcularseV
veces, lo que la hace computacionalmente costosa. Además, el factor de normalización en el denominador requiereV
cálculos adicionales .Por otro lado, la distribución de probabilidad en SGNS se calcula con:
c_pos
es un vector de palabra para palabra positiva yW_neg
es un vector de palabra para todasK
las muestras negativas en la matriz de ponderación de salida. Con SGNS, la probabilidad debe calcularse soloK + 1
veces, dondeK
normalmente está 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.
¿Cómo logra SGNS esto? -> transformando la tarea de clasificación múltiple en tarea de clasificación binaria.
Con SGNS, los vectores de palabras ya no se aprenden al predecir 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.
En la vida real, no suele observarse
regression
con palabras aleatorias comoGangnam-Style
, opimples
. 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.En la figura anterior, el par actual palabra-contexto positivo es (
drilling
,engineer
).K=5
muestras negativas se extraen aleatoriamente a partir de la distribución de ruido :minimized
,primary
,concerns
,led
,page
. A medida que el modelo itera a través de las muestras de entrenamiento, las ponderaciones se optimizan de modo que se genere la probabilidad de par positivop(D=1|w,c_pos)≈1
y la probabilidad de pares negativosp(D=1|w,c_neg)≈0
.fuente
K
comoV -1
, entonces el muestreo negativo es igual que el modelo vanilla skip-gram. ¿Es correcto mi entendimiento?