2016-07-10 90 views
7

In this pagina, si dice che:CBOW v.s. skip-gram: perché inverti il ​​contesto e le parole target?

[...] saltare grammi inverte contesti e gli obiettivi, e cerca di prevedere ogni parola contesto dalla sua parola bersaglio [...]

Tuttavia, guardando di dati di addestramento che produce, il contenuto di X e Y coppia sembra essere intercambiabile, in cui tali due coppie di (X, Y):

(quick, brown), (brown, quick)

Quindi, perché distinguere così tanto tra contesto e obiettivi se è la stessa cosa alla fine?

Inoltre, facendo Udacity's Deep Learning course exercise on word2vec, mi chiedo perché sembrano fare la differenza tra questi due approcci che molto in questo problema:

Un'alternativa a saltare grammi è un altro modello Word2Vec chiamato CBOW (Continuous Bag of Parole). Nel modello CBOW, invece di predire una parola di contesto da un vettore di parole, si predice una parola dalla somma di tutti i vettori di parole nel suo contesto. Implementare e valutare un modello CBOW addestrato sul set di dati text8.

Questo non produce gli stessi risultati?

risposta

12

Qui è la mia comprensione semplificata e piuttosto ingenua della differenza:

Come sappiamo, CBOW è imparare a prevedere la parola dal contesto. O massimizzare la probabilità della parola target guardando il contesto. E questo sembra essere un problema per le parole rare. Ad esempio, dato il modello yesterday was really [...] day, il modello CBOW ti dirà che molto probabilmente la parola è beautiful o nice. Parole come delightful avranno molta meno attenzione del modello, perché è progettato per prevedere la parola più probabile. Questa parola sarà lisciata su molti esempi con parole più frequenti.

D'altra parte, lo skip-grammo è progettato per prevedere il contesto. Data la parola delightful, deve capirlo e dirci che esiste un'enorme probabilità, il contesto è yesterday was really [...] day o qualche altro contesto pertinente.Con skip-grammo la parola delightful non tenterà di competere con la parola beautiful ma invece, le coppie delightful+context verranno considerate come nuove osservazioni.

UPD

Grazie a @ 0xF per la condivisione this article

Secondo Mikolov

Skip grammi: funziona bene con una piccola quantità dei dati di allenamento, rappresenta bene anche rare parole o frasi.

CBOW: diverse volte più veloce per addestrare rispetto al salto grammi, leggermente migliore accuratezza per le parole frequenti

Un'altra aggiunta al soggetto viene trovato here:

Nel La modalità "skip-gram" in alternativa a "CBOW", anziché la media delle parole di contesto, viene utilizzata come esempio di addestramento a coppie. Quello è, al posto di un esempio di CBOW come [prevedere 'mangiato' dalla media ('The', 'cat', 'the', 'mouse')], la rete viene presentata con quattro esempi skip-gram [prevedere 'mangiato' da 'The'], [prevedere 'mangiato' da 'cat'], [prevedere 'mangiato' da 'the'], [prevedere 'mangiato' da 'mouse']. (si verifica la stessa finestra di riduzione casuale, quindi la metà del tempo che sarebbe essere solo due esempi, delle parole più vicine.)

+0

Questo post quora [https://www.quora.com/ What-are-the-continuous-bag-of-words-and-skip-gram-architectures] dice che skip-gram ha bisogno di meno dati per allenarsi rispetto a cbow, solo la vista opposta del tuo commento. Puoi giustificare la tua risposta con l'aiuto di qualsiasi documento pubblicato o così. – 0xF

+1

Grazie per avermelo fatto notare! La spiegazione fornita in quell'articolo ha senso, quindi ho aggiornato la mia risposta. – Serhiy

1

Ha a che fare con ciò che si sta calcolando esattamente in qualsiasi punto. La differenza diventerà più chiara se inizi a guardare i modelli che incorporano un contesto più ampio per ogni calcolo di probabilità.

In skip-gram, sei calcolando le parole di contesto dalla parola nella posizione corrente nella frase; stai "saltando" la parola corrente (e potenzialmente un po 'di contesto) nel tuo calcolo. Il risultato può essere più di una parola (ma non se la finestra di contesto è lunga una sola parola).

In CBOW, sei calcolando la parola corrente dalle parole di contesto, quindi avrai sempre e solo una parola come risultato.

+0

la differenza è ancora chiaro per me, l'unica cosa che sembra cambiare è il riempimento delle parole vicino all'inizio e alla fine delle frasi: in un modello ci saranno più parole totali sulle dimensioni dell'input o sulla dimensione dell'output in termini di frequenza con cui le stesse parole sono state mostrate. Su una frase infinitamente lunga, i due modelli non avrebbero quel concetto di imbottitura disuguale che sto introducendo. –

+0

Ad esempio, come si modificherebbe la configurazione del modello nel collegamento Udacity che ho inviato? Mi sembra che solo scambiare le etichette con gli esempi di input possa fare il trucco, ma non può essere vero, la differenza sarebbe così banale ... –