word2vec: campionamento negativo (in parole povere)?


Risposte:


166

L'idea di word2vecè di massimizzare la somiglianza (prodotto puntuale) tra i vettori per le parole che appaiono vicine tra loro (nel contesto l'una dell'altra) nel testo e ridurre al minimo la somiglianza delle parole che non lo fanno. Nell'equazione (3) del documento a cui ti colleghi, ignora per un momento l'elevamento a potenza. Hai

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

Il numeratore è fondamentalmente la somiglianza tra le parole c(il contesto) e w(l'obiettivo) la parola. Il denominatore calcola la somiglianza di tutti gli altri contesti c1e la parola di destinazione w. L'ottimizzazione di questo rapporto garantisce che le parole che appaiono più vicine tra loro nel testo abbiano vettori più simili rispetto alle parole che non lo fanno. Tuttavia, il calcolo di questo può essere molto lento, perché ci sono molti contesti c1. Il campionamento negativo è uno dei modi per affrontare questo problema: basta selezionare un paio di contesti c1a caso. Il risultato finale è che se catappare nel contesto di food, allora il vettore di foodè più simile al vettore di cat(come misure per il loro prodotto scalare) rispetto ai vettori di molte altre parole scelte casualmente(ad esempio democracy, greed, Freddy), al posto di tutte le altre parole in lingua . Questo rende word2vecmolto più veloce l'allenamento.


15
grazie o la bella spiegazione. Penso sia solo un campionamento. ma sai perché si chiama "negativo"?
HappyCoding

46
La terminologia è presa in prestito dalla classificazione, un'applicazione comune delle reti neurali. Ecco un sacco di esempi positivi e negativi. Con word2vec, per ogni parola data hai un elenco di parole che devono essere simili ad essa (la classe positiva) ma la classe negativa (parole che non sono simili alla parola target) viene compilata tramite campionamento.
mbatchkarov

40

Il calcolo di Softmax (funzione per determinare quali parole sono simili alla parola target corrente) è costoso poiché richiede la somma di tutte le parole in V (denominatore), che è generalmente molto grande.

inserisci qui la descrizione dell'immagine

Cosa si può fare?

Sono state proposte diverse strategie per approssimare il softmax. Questi approcci possono essere raggruppati in SoftMax-based e di campionamento basate su approcci. Gli approcci basati su Softmax sono metodi che mantengono intatto il livello softmax, ma ne modificano l'architettura per migliorarne l'efficienza (es. Softmax gerarchico). Gli approcci basati sul campionamento, d'altra parte, eliminano completamente il livello softmax e ottimizzano invece qualche altra funzione di perdita che approssima il softmax (lo fanno approssimando la normalizzazione nel denominatore del softmax con qualche altra perdita che è economica da calcolare come campionamento negativo).

La funzione di perdita in Word2vec è qualcosa del tipo:

inserisci qui la descrizione dell'immagine

Quale logaritmo può decomporsi in:

inserisci qui la descrizione dell'immagine

Con un po 'di formula matematica e gradiente (vedi maggiori dettagli al punto 6 ) è convertito in:

inserisci qui la descrizione dell'immagine

Come vedi, è stato convertito in attività di classificazione binaria (y = 1 classe positiva, y = 0 classe negativa). Poiché abbiamo bisogno di etichette per eseguire il nostro compito di classificazione binaria, designiamo tutte le parole di contesto c come etichette vere (y = 1, campione positivo) e k selezionate casualmente dai corpora come false etichette (y = 0, campione negativo).


Guarda il paragrafo seguente. Supponiamo che la nostra parola di destinazione sia " Word2vec ". Con la finestra di 3, le nostre parole di contesto sono: The, widely, popular, algorithm, was, developed. Queste parole di contesto considerano come etichette positive. Abbiamo anche bisogno di alcune etichette negative. Prendiamo casualmente alcuni parole da corpus ( produce, software, Collobert, margin-based, probabilistic) e li consideriamo campioni negativi. Questa tecnica che abbiamo scelto in modo casuale dal corpus è chiamata campionamento negativo.

inserisci qui la descrizione dell'immagine

Riferimento :


1
Ciao @amir, la mia domanda iniziale è che ho qualche problema a capire il concetto di campionamento negativo ...
Andy K

1
Molto ben spiegato e un po 'più tecnico della risposta accettata. Quindi una situazione SO perfetta: leggi la risposta accettata per avere l'idea e poi questa risposta per capirla in dettaglio.
Ursin Brunner

22

Ho scritto un articolo tutorial sul campionamento negativo qui .

Perché utilizziamo il campionamento negativo? -> per ridurre i costi computazionali

La funzione di costo per il campionamento negativo Skip-Gram (SG) e Skip-Gram negativo (SGNS) è simile alla seguente:

inserisci qui la descrizione dell'immagine

Nota che Tè il numero di tutti i vocaboli. È equivalente a V. In altre parole, T= V.

La distribuzione di probabilità p(w_t+j|w_t)in SG viene calcolata per tutti i Vvocaboli nel corpus con:

inserisci qui la descrizione dell'immagine

Vpuò facilmente superare le decine di migliaia quando si allena il modello Skip-Gram. La probabilità deve essere calcolata Vvolte, il che la rende computazionalmente costosa. Inoltre, il fattore di normalizzazione nel denominatore richiede Vcalcoli aggiuntivi .

D'altra parte, la distribuzione di probabilità in SGNS viene calcolata con:

inserisci qui la descrizione dell'immagine

c_posè un vettore parola per parola positiva ed W_negè vettore parola per tutti i Kcampioni negativi nella matrice del peso di output. Con SGNS, la probabilità deve essere calcolata solo K + 1volte, dove Kè tipicamente compresa tra 5 ~ 20. Inoltre, non sono necessarie iterazioni aggiuntive per calcolare il fattore di normalizzazione al denominatore.

Con SGNS, solo una frazione dei pesi viene aggiornata per ogni campione di allenamento, mentre SG aggiorna tutti i milioni di pesi per ogni campione di allenamento.

inserisci qui la descrizione dell'immagine

Come riesce SGNS a raggiungere questo obiettivo? -> trasformando l'attività multi-classificazione in un'attività di classificazione binaria.

Con SGNS, i vettori di parole non vengono più appresi prevedendo le parole di contesto di una parola centrale. Impara a differenziare le parole di contesto reali (positive) dalle parole disegnate a caso (negative) dalla distribuzione del rumore.

inserisci qui la descrizione dell'immagine

Nella vita reale, di solito non osservi regressioncon parole casuali come Gangnam-Style, o pimples. L'idea è che se il modello è in grado di distinguere tra coppie probabili (positive) e coppie improbabili (negative), verranno appresi buoni vettori di parole.

inserisci qui la descrizione dell'immagine

Nella figura sopra, l'attuale coppia parola-contesto positiva è ( drilling, engineer). K=5campioni negativi sono estratti casualmente dalla distribuzione di rumore : minimized, primary, concerns, led, page. Man mano che il modello esegue l'iterazione dei campioni di addestramento, i pesi vengono ottimizzati in modo da produrre la probabilità per la coppia positiva p(D=1|w,c_pos)≈1e la probabilità per le coppie negative p(D=1|w,c_neg)≈0.


1
T sta per il numero di gettoni (occorrenze di parole in un testo). V per vocabolario (parole uniche) direi.
Adam

Se impostiamo Kcome V -1, il campionamento negativo è lo stesso del modello salta-grammo vaniglia. La mia comprensione è corretta?
Shashwat

@Shashwat il numero di vettori di parole aggiornati per ogni campione di allenamento è lo stesso, ma la funzione dell'obiettivo di allenamento sarà ancora fondamentalmente diversa
Eric Kim,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.