Dégradés pour skipgram word2vec

9

Je passe en revue les problèmes liés aux problèmes d'affectation écrits de la classe d'apprentissage profond de Stanford NLP http://cs224d.stanford.edu/assignment1/assignment1_soln

J'essaie de comprendre la réponse pour 3a où ils recherchent la dérivée du vecteur pour le mot central.

Supposons que l'on vous donne un vecteur de mot prédit correspondant au mot central c pour skipgram, et la prédiction de mot est faite avec la fonction softmax trouvée dans les modèles word2vec.vc

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

w désigne le w-ème mot et (w = 1,..., W) sont les vecteurs de mots «de sortie» pour tous les mots du vocabulaire. Supposons que le coût d'entropie croisée est appliqué à cette prédiction et que le mot o est le mot attendu.uw

Où est la matrice de tous les vecteurs de sortie, et soit le vecteur de colonne de la prédiction softmax des mots, et y le label un-chaud qui est également un vecteur de colonne.U=[u1,u2,···,uW]y^

Où l'entropie croisée estCE(y,y^)=iyilog(y^i)

Ainsi, la réponse pour le gradient du vecteur central estJvc=UT(y^y).

Quelqu'un pourrait-il me montrer les étapes pour y parvenir? J'ai utilisé cette question comme dérivé de référence de la perte d'entropie croisée dans word2vec mais je veux spécifiquement connaître l'représentation.UT(y^y).

Fonds Jake
la source

Réponses:

15

Tout d'abord, exposons ce que nous avons et nos hypothèses sur les formes des différents vecteurs. Laisser,

  1. |W|être le nombre de mots du vocabulaire
  2. y et sont des vecteurs colonnes de formex 1y^|W|
  3. ui et sont les vecteurs colonnes de forme X 1 ( = dimension des plongements)vjDD
  4. y soit le vecteur de colonne codé à chaud de formex 1|W|
  5. y^ soit le vecteur de colonne de prédiction softmax de formex 1|W|
  6. y^i=P(i|c)=exp(uiTvc)w=1Wexp(uwTvc)
  7. Perte d'entropie croisée:J=i=1Wyilog(yi^)
  8. U=[u1,u2,...,uk,...uW] soit une matrice composée de vecteurs de colonne .uk

Maintenant, nous pouvons écrire Simplifier, Maintenant, nous savons que est codé à chaud, donc tous ses éléments sont nuls sauf celui à, disons, l' indice . Ce qui signifie qu'il n'y a qu'un seul terme non nul dans la sommation ci-dessus correspondant à et tous les autres termes de la sommation sont des zéros. Le coût peut donc également s'écrire: Remarque: au-dessus de est 1.

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

Résolution de : Jvc

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

Ce qui peut être réorganisé comme: En utilisant la définition (6), nous pouvons réécrire l'équation ci-dessus comme:

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

Voyons maintenant comment cela peut être écrit en notation matricielle.

  1. uk peut être écrit comme une multiplication vectorielle matricielle:U.y
  2. Et est une transformation linéaire des vecteurs en mise à l'échelle par respectivement. Cela peut encore être écrit commew=1W(y^wuw)uwUy^wU.y^

Donc, le tout peut être succinctement écrit comme:

U[y^y]

Enfin, notons que nous avons supposé que s était un vecteur de colonne. Si nous avions commencé avec des vecteurs de ligne, nous obtiendrions , comme ce que vous cherchiez.uiUT[y^y]

Sachin Tyagi
la source
1
Je voulais juste dire que c'est une merveilleuse explication de la dérivation! Cela aide vraiment les maths-suceurs comme moi. Je vous remercie!
Eric Kim
1
+1 pour l'explication incroyable!
bragboy
Je ne comprends pas pourquoi cette dérivation:
BATB=A
Parth Tamane
@ParthTamane Veuillez jeter un œil à ceci - math.stackexchange.com/questions/3270789/…
Sachin Tyagi