Domanda

ho letto di NCE (una forma di campionamento candidato) da queste due fonti:

tensorflow writeup

carta originale

Può qualcuno aiutarlo con la seguente:

  1. Una semplice spiegazione di come funziona NCE (ho trovato quanto sopra difficile da analizzare e ottenere una comprensione di, quindi qualcosa intuitiva che porta alla matematica presentati ci sarebbe grande)
  2. Dopo precedente punto 1, una descrizione naturalmente intuitiva di come questo è diverso dal campionamento negativo. Vedo che c'è un leggero cambiamento nella formula, ma non riuscivo a capire la matematica. Io ho una comprensione intuitiva del campionamento negativo nel contesto di word2vec - abbiamo casualmente scelto alcuni campioni dalla V vocabolario e aggiornamento solo quelli perché |V| è grande e questo offre un aumento di velocità. Si prega di correggere se sbagliata.
  3. Quando usare che uno e come è che ha deciso? Sarebbe bello se si potesse includere esempi (possibilmente facile da capire le applicazioni)
  4. è NCE meglio di campionamento negativo? Meglio in che modo?

Grazie.

È stato utile?

Soluzione

Tratto da questo post: https://stats.stackexchange.com/a/245452/154812

Il problema

Ci sono alcuni problemi con l'apprendimento dei vettori parola utilizzando una rete neurale "standard". In questo modo, la parola vettori sono apprese mentre gli impara rete di prevedere la parola successiva data una finestra di parole (l'ingresso della rete).

Predire la parola successiva è come predire la classe. Cioè, una tale rete è solo un multinomiale (multi-classe) classificatore "standard". E questa rete deve avere il maggior numero di neuroni di output come classi ci sono. Quando le classi sono parole reali, il numero di neuroni è, beh, enorme.

A "standard" rete neurale è solitamente allenato con una funzione di costo di cross-entropia che richiede i valori dei neuroni di uscita per rappresentare probabilità - che significa che l'uscita "punteggi" calcolata dalla rete per ogni classe sono da normalizzare , convertito in probabilità effettive per ogni classe. Questo passo di normalizzazione viene ottenuto mediante la funzione SoftMax. Softmax è molto costoso quando applicato a un livello di uscita enorme.

Il (a) Soluzione

Per affrontare questo problema, che è, il calcolo costosa del SoftMax, Word2Vec utilizza una tecnica denominata stima del rumore-contrastiva. Questa tecnica è stata introdotta da [A] (riformulato da [B]) poi utilizzato in [C], [D], [E] per imparare embeddings parola da non marcato testo in linguaggio naturale.

L'idea di base è quella di convertire un problema di classificazione multinomiale (come è il problema di prevedere la parola successiva) per un problema di classificazione binaria. Cioè, invece di utilizzare SoftMax per stimare una vera e propria distribuzione di probabilità della parola di uscita, una regressione logistica binaria (classificazione binaria) viene usato al posto.

Per ogni campione di addestramento, la maggiore (ottimizzata) classificatore viene alimentata una vera coppia (parola center e un'altra parola che appare nel suo contesto) e un numero di kk coppie danneggiati casualmente (costituiti dal termine centro e una scelta a caso parola dal vocabolario). Imparando a distinguere le vere coppie di quelli danneggiati, il classificatore in ultima analisi, imparare la parola vettori.

Questo è importante:., Invece di prevedere la parola successiva (la tecnica di formazione "standard"), il classificatore ottimizzato prevede semplicemente se un paio di parole è bene o male

Word2Vec personalizza leggermente il processo e chiama campionamento negativo. In Word2Vec, le parole per i campioni negativi (utilizzati per le coppie corrotti) sono tratti da una distribuzione appositamente progettato, che favorisce parole meno frequenti da trarre più spesso.

Riferimenti

[A] (2005) - Stima contrastiva: modelli log-lineari di formazione sui dati non etichettati

[B] (2010) - la stima del rumore-contrastiva: un nuovo principio di stima per i modelli statistici non normalizzate

[C] (2008) - un'architettura unificata per l'elaborazione del linguaggio naturale: reti neurali profonde con l'apprendimento multitask

[D] (2012) -. Un veloce e semplice algoritmo per la formazione di modelli di linguaggio probabilistico neurali

[E] (2013) -. Incastri di parole di apprendimento in modo efficiente con stima del rumore-contrastiva

Altri suggerimenti

Onestamente non c'è modo intuitivo per capire il motivo per cui la perdita di NCE funzionerà senza comprendere a fondo la sua matematica. Per capire la matematica, si dovrebbe leggere il giornale originale.

Il motivo per cui lavoro NCE perdita di volontà è perché NCE approssima stima di massima verosimiglianza (MLE) quando il rapporto di rumore a dati reali $ k $ aumenta.

L'implementazione tensorflow funziona in pratica. Fondamentalmente, per ciascuno dei dati $ (x, y) $ , $ y $ è la classe etichettata i dati, i campioni di perdita tensorflow NCE $ k $ classi da distribuzioni di rumore. Calcoliamo una versione speciale delle cifre per ciascuna delle classi (1 dai dati + $ k $ da distribuzioni di rumore) usando l'equazione

$$ \ Delta s _ {\ theta ^ 0} (w, h) = s _ {\ theta ^ 0} (w, h) - \ log Kp_n (w) $ $

Dove $ p_n (w) $ è la distribuzione del rumore. Con le cifre per ogni classi calcolati, tensorflow utilizzare le cifre per calcolare la perdita di softmax per la classificazione binaria (perdita di registro nella regressione logistica) per ciascuna delle classi, e aggiungere queste perdite insieme come la perdita NCE finale.

Tuttavia, la sua attuazione è concettualmente sbagliato, perché il rapporto tra rumore a dati reali $ k $ è diverso dal numero di classi $ n $ campionato da distribuzioni di rumore. Tensorflow NCE non prevede una variabile per il rumore rapporto dei dati, e non si assume implicitamente $ n = k $ che credo sia concettualmente errato.

I documenti originali NCE saltato le derivazioni della prova di un sacco in modo che sia veramente difficile da capire NCE. Per capire la matematica su NCE più facile, ho un post sul blog su questo annotazione la matematica dai giornali NCE:

https://leimao.github.io/article/Noise-Contrastive- stima / .

College sophomore o al di sopra dovrebbe essere in grado di capirlo.

In sostanza, questo sta selezionando un campione dalla reale distribuzione che consiste nella vera classe e alcune altre etichette di classe rumorosi. Poi prendendo il SoftMax su di esso.

Questo è basato sul campionamento parole da vera distribuzione e la distribuzione del rumore.

Ecco l'idea di base è quello di formare classificatore regressione logistica che può separare i campioni ottenuti da vera distribuzione e campione ottenuto dalla distribuzione del rumore. Ricordate quando si parla di campioni ottenuti dal vero di distribuzione stiamo parlando di un solo campione che è la vera classe ottenuta dalla distribuzione del modello.

Qui ho spiegato sulla perdita di NCE e come si differenzia dalla perdita NCE.

rumore contrastiva Stima: Soluzione per costosi Softmax.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top