2015-04-01 8 views
7

Sto cercando di capire perché il modello skipgram di word2vec ha 2 rappresentazioni per ogni parola (la rappresentazione nascosta che è la parola incorporamento) e la rappresentazione di output (detta anche incorporamento di parole di contesto). È solo per generalità dove il contesto può essere qualsiasi cosa (non solo parole) o c'è un motivo più fondamentalePerché word2vec utilizza 2 rappresentazioni per ogni parola?

risposta

0

Il modello word2vec può essere pensato come un modello di rete neurale semplificato con un livello nascosto e nessuna attivazione non lineare . Il modello dato una parola cerca di prevedere le parole di contesto in cui appare.

Poiché, è una rete neurale che richiede input, output e una funzione obiettivo. L'input e l'output sono solo delle codifiche a caldo delle parole e la funzione obiettivo è la perdita di entropia incrociata con l'attivazione di softmax in uscita.

L'input per la matrice di peso nascosta si moltiplica con un input di codifica unico che seleziona una colonna univoca per ogni parola. Allo stesso modo, la matrice di output nascosta risulta che può essere interpretata come righe corrispondenti a ogni parola di contesto (la stessa uscita di codifica one-hot riproduce parte qui).

7

vi consiglio di leggere questo articolo su Word2Vec: http://arxiv.org/pdf/1402.3722v1.pdf

Danno un'intuizione sul perché due rappresentazioni in una nota in calce: non è probabile che una parola compare nel proprio contesto, in modo che si vorrebbe minimizzare la probabilità p (w | w). Ma se si usano gli stessi vettori per w come contesto piuttosto che per w come parola centrale, non è possibile minimizzare p (w | w) (calcolato tramite il prodotto punto) se si desidera mantenere gli embeddings di parole nel cerchio unitario.

ma è solo un'intuizione, non so se v'è una chiara giustificazione a questo ...

IMHO, il vero motivo per cui si utilizzano diverse rappresentazioni è perché di manipolare le entità di diversa natura. "cane" come contesto non deve essere considerato come "cane" come parola centrale perché non lo è. Manipalmente si manipolano grandi matrici di occorrenze (parola, contesto), cercando di massimizzare la probabilità che queste coppie avvengano effettivamente. Teoricamente puoi usare come contesti bigrams, cercando di massimizzare ad esempio la probabilità di (word = "for", context = "to maxim"), e assegnerai una rappresentazione vettoriale a "to maxim". Non lo facciamo perché ci sarebbero troppe rappresentazioni da calcolare, e avremmo una matrice raramente sparsa, ma penso che l'idea sia qui: il fatto che usiamo "1 grammi" come contesto è solo un caso particolare di tutti i tipi di contesto che potremmo usare.

Ecco come lo vedo, e se è sbagliato, correggi!