Sfumature per skipgram word2vec


9

Sto attraversando i problemi dei problemi di assegnazione scritta del corso di apprendimento profondo della PNL di Stanford http://cs224d.stanford.edu/assignment1/assignment1_soln

Sto cercando di capire la risposta per 3a dove stanno cercando la derivata del vettore per la parola centrale.

Supponiamo che ti venga dato un vettore di parola previsto corrispondente alla parola centrale c per lo skipgram e che la previsione della parola venga effettuata con la funzione softmax presente nei modelli word2vec.vc

y^o=p(o|c)=exp(uoTvc)w=1Wexp(uwTvc)

Dove w indica la w-esima parola e (w = 1,..., W) sono i vettori di parole "output" per tutte le parole del vocabolario. Supponiamo che il costo dell'entropia incrociata sia applicato a questa previsione e la parola o sia la parola attesa.uw

Dove è la matrice di tutti i vettori di output e fa in modo che sia il vettore di colonna della previsione di softmax delle parole e y sia l'etichetta one-hot che è anche un vettore di colonna.U=[u1,u2,···,uW]y^

Dove cross entropy èCE(y,y^)=iyilog(y^i)

Quindi la risposta per il gradiente per il vettore centrale èJvc=UT(y^y).

Qualcuno potrebbe mostrarmi i passaggi per arrivare a questo? Ho usato questa domanda come riferimento Derivata della perdita di entropia incrociata in word2vec, ma in particolare desidero conoscere larappresentazione.UT(y^y).

Risposte:


15

Innanzitutto, esponiamo ciò che abbiamo e le nostre ipotesi sulle forme di diversi vettori. Permettere,

  1. |W|essere il numero di parole nel vocabolario
  2. y e sono vettori di colonna di formax 1y^|W|
  3. ui e sono i vettori di colonna della forma X 1 ( = dimensione degli incastri)vjDD
  4. y è il vettore della colonna con codifica a caldo di formax 1|W|
  5. y^ è il vettore della colonna di previsione softmax di formax 1|W|
  6. y^i=P(i|c)=exp(uiTvc)w=1Wexp(uwTvc)
  7. Perdita di entropia incrociata:J=i=1Wyilog(yi^)
  8. U=[u1,u2,...,uk,...uW] è una matrice composta da vettori di colonna .uk

Ora possiamo scrivere Semplificando, Ora sappiamo che una codifica a caldo, quindi tutti i suoi elementi sono zero eccetto quello nell'indice . Ciò significa che c'è un solo termine diverso da zero nella somma sopra corrispondente a e tutti gli altri termini nella somma sono zeri. Quindi il costo può anche essere scritto come: Nota: sopra è 1.

J=i=1Wyilog(exp(uiTvc)w=1Wexp(uwTvc))
J=i=1Wyi[uiTvclog(w=1Wexp(uwTvc))]
ykthyk
J=yk[ukTvclog(w=1Wexp(uwTvc))]
yk

Soluzione per : Jvc

Jvc=[ukw=1Wexp(uwTvc)uwx=1Wexp(uxTvc)]

Che può essere riorganizzato come: Usando la definizione (6), possiamo riscrivere l'equazione sopra come:

Jvc=w=1W(exp(uwTvc)x=1Wexp(uxTvc)uw)uk
Jvc=w=1W(y^wuw)uk

Ora vediamo come questo può essere scritto nella notazione Matrix. Nota che:

  1. uk può essere scritto come moltiplicazione di matrici:U.y
  2. E è una trasformazione lineare dei vettori in ridimensionata rispettivamente da . Questo di nuovo può essere scritto comew=1W(y^wuw)uwUy^wU.y^

Quindi l'intera cosa può essere sinteticamente scritta come:

U[y^y]

Infine, nota che abbiamo assunto che sia un vettore di colonna. Se avessimo iniziato con i vettori di riga, avremmo ottenuto , come quello che stavi cercando.uiUT[y^y]


1
Volevo solo dire che questa è una meravigliosa spiegazione per la derivazione! Aiuta davvero i succhiatori di matematica come me. Grazie!
Eric Kim,

1
+1 per la straordinaria spiegazione!
Bragboy

Non capisco perché questa derivazione:
BATB=A
Parth Tamane

@ParthTamane Per favore dai un'occhiata a questo - math.stackexchange.com/questions/3270789/…
Sachin Tyagi
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.