Pregunta

Leí sobre NCE (una forma de muestreo candidato) de estas dos fuentes:

TensorFlow Novato

Papel original

¿Alguien puede ayudarme con lo siguiente:

  1. Una explicación simple de cómo funciona NCE (me resultó difícil analizar lo anterior y comprender, por lo que algo intuitivo que conduce a las matemáticas presentadas allí sería genial)
  2. Después del punto 1 anterior, una descripción naturalmente intuitiva de cómo esto es diferente del muestreo negativo. Puedo ver que hay un ligero cambio en la fórmula pero no pude entender las matemáticas. Tengo una comprensión intuitiva del muestreo negativo en el contexto de word2vec - Elegimos al azar algunas muestras del vocabulario V y actualizar solo aquellos porque |V| es grande y esto ofrece una aceleración. Corrija si está mal.
  3. Cuándo usar cuál y cómo se decide eso? Sería genial si pudiera incluir ejemplos (posiblemente fáciles de entender, aplicaciones)
  4. ¿Es NCE mejor que el muestreo negativo? ¿Mejor de qué manera?

Gracias.

¿Fue útil?

Solución

Tomado de esta publicación:https://stats.stacexchange.com/a/245452/154812

La cuestión

Hay algunos problemas con el aprendizaje de la palabra vectores utilizando una red neuronal "estándar". De esta manera, las palabras se aprenden mientras la red aprende a predecir la siguiente palabra dada una ventana de palabras (la entrada de la red).

Predecir la siguiente palabra es como predecir la clase. Es decir, dicha red es solo un clasificador multinomial "estándar" (multiclase). Y esta red debe tener tantas neuronas de salida como las clases que existen. Cuando las clases son palabras reales, el número de neuronas es, bueno, enorme.

Una red neuronal "estándar" generalmente se capacita con una función de costo de entropía cruzada que requiere que los valores de las neuronas de salida representen probabilidades, lo que significa que las "puntuaciones de salida" calculadas por la red para cada clase deben normalizarse, convertidos en Probabilidades reales para cada clase. Este paso de normalización se logra mediante la función Softmax. Softmax es muy costoso cuando se aplica a una gran capa de salida.

La (a) solución

Para lidiar con este problema, es decir, el cálculo costoso del Softmax, Word2Vec utiliza una técnica llamada estimación de ruido y contrastive. Esta técnica fue introducida por [A] (reformulada por [B]) luego utilizada en [C], [D], [E] para aprender incrustaciones de palabras del texto del lenguaje natural no marcado.

La idea básica es convertir un problema de clasificación multinomial (ya que es el problema de predecir la siguiente palabra) a un problema de clasificación binaria. Es decir, en lugar de usar Softmax para estimar una distribución de probabilidad verdadera de la palabra de salida, se utiliza una regresión logística binaria (clasificación binaria).

Para cada muestra de entrenamiento, el clasificador mejorado (optimizado) se alimenta de un par verdadero (una palabra central y otra palabra que aparece en su contexto) y una serie de pares KK corruptos al azar (que consisten en la palabra central y una palabra elegida al azar de la vocabulario). Al aprender a distinguir los verdaderos pares de los corruptos, el clasificador finalmente aprenderá la palabra vectores.

Esto es importante: en lugar de predecir la siguiente palabra (la técnica de entrenamiento "estándar"), el clasificador optimizado simplemente predice si un par de palabras es buena o mala.

Word2Vec personaliza ligeramente el proceso y lo llama muestreo negativo. En Word2Vec, las palabras para las muestras negativas (utilizadas para los pares corruptos) se extraen de una distribución especialmente diseñada, que favorece las palabras menos frecuentes que se dibujarán con más frecuencia.

Referencias

A] (2005) - Estimación contrastante: entrenamiento de modelos de registro -lineal en datos no etiquetados

B] (2010) - Estimación de ruido y contrastive: un nuevo principio de estimación para modelos estadísticos no anormalizados

C] (2008) - Una arquitectura unificada para el procesamiento del lenguaje natural: redes neuronales profundas con aprendizaje multitarea

D] (2012) - Un algoritmo rápido y simple para capacitar a modelos de lenguaje probabilístico neural.

E] (2013) - Aprender incrustaciones de palabras de manera eficiente con la estimación de ruido y contrastive.

Otros consejos

Honestamente, no hay una forma intuitiva de entender por qué la pérdida de NCE funcionará sin comprender profundamente sus matemáticas. Para comprender las matemáticas, debe leer el documento original.

La razón por la cual la pérdida de NCE funcionará es porque NCE se aproxima a la estimación de máxima verosimilitud (MLE) cuando la relación de ruido a datos reales $ K $ aumenta.

La implementación de TensorFlow funciona en la práctica. Básicamente, para cada datos $ (x, y) $, $ y $ es la clase etiquetada a partir de los datos, muestras de pérdida de NCE TensorFlow NCE $ K $ Clases de distribuciones de ruido. Calculamos una versión especial de los dígitos para cada una de las clases (1 de los datos + $ K $ de distribuciones de ruido) utilizando la ecuación

$$ delta s _ { theta^0} (w, h) = s _ { theta^0} (w, h) - log kp_n (w) $$

Dónde $ P_n (w) $ es la distribución de ruido. Con los dígitos para cada clases calculadas, TensorFlow usa los dígitos para calcular la pérdida de Softmax para la clasificación binaria (pérdida de registro en regresión logística) para cada una de las clases, y agregar estas pérdidas como la pérdida final de NCE.

Sin embargo, su implementación es conceptualmente incorrecta porque la relación de ruido a datos reales $ K $ es diferente al número de clases $ n $ muestreada de distribuciones de ruido. TensorFlow NCE no proporciona una variable para la relación ruido a datos, y asume implícitamente $ n = k $ que creo que es conceptualmente incorrecto.

Los documentos de NCE originales se saltaron mucho las derivaciones de la prueba para que sea realmente difícil de entender. Para comprender las matemáticas sobre NCE más fácil, tengo una publicación de blog sobre esto anotando las matemáticas de los documentos de NCE:

https://leimao.github.io/article/noise-contrastive-estimation/.

El estudiante de segundo año de la universidad o superior debería poder entenderlo.

Básicamente, esto es seleccionar una muestra de la verdadera distribución que consiste en la clase verdadera y algunas otras etiquetas de clase ruidosas. Luego tomando el Softmax sobre él.

Esto se basa en palabras de muestreo de distribución verdadera y distribución de ruido.

Aquí la idea básica es entrenar el clasificador de regresión logística que puede separar las muestras obtenidas de la distribución verdadera y la muestra obtenida de la distribución de ruido. Recuerde que cuando hablamos de las muestras obtenidas de la verdadera distribución, estamos hablando de una sola muestra, que es la clase verdadera obtenida de la distribución del modelo.

Aquí he explicado sobre la pérdida de NCE y cómo difiere de la pérdida de NCE.

Estimación de contraste de ruido: solución para softmax costoso.

Licenciado bajo: CC-BY-SA con atribución
scroll top