Sto leggendo l'articolo qui sotto e ho qualche difficoltà a capire il concetto di campionamento negativo.
http://arxiv.org/pdf/1402.3722v1.pdf
Qualcuno può aiutare, per favore?
Sto leggendo l'articolo qui sotto e ho qualche difficoltà a capire il concetto di campionamento negativo.
http://arxiv.org/pdf/1402.3722v1.pdf
Qualcuno può aiutare, per favore?
Risposte:
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 c1
e 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 c1
a caso. Il risultato finale è che se cat
appare 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 word2vec
molto più veloce l'allenamento.
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.
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.
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:
Quale logaritmo può decomporsi in:
Con un po 'di formula matematica e gradiente (vedi maggiori dettagli al punto 6 ) è convertito in:
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.
Riferimento :
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:
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 V
vocaboli nel corpus con:
V
può facilmente superare le decine di migliaia quando si allena il modello Skip-Gram. La probabilità deve essere calcolata V
volte, il che la rende computazionalmente costosa. Inoltre, il fattore di normalizzazione nel denominatore richiede V
calcoli aggiuntivi .
D'altra parte, la distribuzione di probabilità in SGNS viene calcolata con:
c_pos
è un vettore parola per parola positiva ed W_neg
è vettore parola per tutti i K
campioni negativi nella matrice del peso di output. Con SGNS, la probabilità deve essere calcolata solo K + 1
volte, 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.
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.
Nella vita reale, di solito non osservi regression
con 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.
Nella figura sopra, l'attuale coppia parola-contesto positiva è ( drilling
, engineer
). K=5
campioni 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)≈1
e la probabilità per le coppie negative p(D=1|w,c_neg)≈0
.
K
come V -1
, il campionamento negativo è lo stesso del modello salta-grammo vaniglia. La mia comprensione è corretta?