Gradienty dla słowa skipgram 2


9

Przechodzę przez problemy w pisemnych problemach z klasą głębokiego uczenia się NLP Stanforda http://cs224d.stanford.edu/assignment1/assignment1_soln

Próbuję zrozumieć odpowiedź dla 3a, gdzie szukają pochodnej wektora dla środkowego słowa.

Załóżmy, że otrzymałeś przewidywany wektor słowa odpowiadający środkowemu słowu c dla skipgramu, a przewidywania słów dokonuje się za pomocą funkcji softmax występującej w modelach word2vec.vc

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

Gdzie w oznacza w słowo, a (w = 1, ..., W) to wektory słów „wyjściowych” dla wszystkich słów w słowniku. Załóżmy, że do tej prognozy stosuje się koszt entropii krzyżowej, a słowo o jest słowem oczekiwanym.uw

Gdzie jest macierzą wszystkich wektorów wyjściowych i niech będzie wektorem kolumnowym predykcji słów softmax, a y będzie jednorazową etykietą, która jest również wektorem kolumny.U=[u1,u2,···,uW]y^

Gdzie entropia krzyżowa toCE(y,y^)=iyilog(y^i)

Tak więc odpowiedź na gradient dla wektora środkowego toJvc=UT(y^y).

Czy ktoś mógłby mi pokazać kroki, aby do tego dojść? Użyłem tego pytania jako odniesienia Pochodna utraty entropii krzyżowej w word2vec, ale szczególnie chcę poznaćreprezentacja.UT(y^y).

Odpowiedzi:


15

Najpierw nakreślmy, co mamy i nasze założenia dotyczące kształtów różnych wektorów. Pozwolić,

  1. |W|być liczbą słów w słownictwie
  2. y i są wektorami kolumnowymi o kształciex 1y^|W|
  3. ui i będą wektorami kolumnowymi kształtu X 1 ( = wymiar osadzenia)vjDD
  4. y będzie zakodowanym na gorąco wektorem kolumny o kształciex 1|W|
  5. y^ być wektorem kolumny predykcji softmax kształtux 1|W|
  6. y^i=P(i|c)=exp(uiTvc)w=1Wexp(uwTvc)
  7. Strata entropii krzyżowej:J=i=1Wyilog(yi^)
  8. U=[u1,u2,...,uk,...uW] być macierzą złożoną z wektorów kolumnowych .uk

Teraz możemy napisać Uproszczenie, Teraz wiemy, że jest zakodowane jednorazowo, więc wszystkie jego elementy są równe zero, z wyjątkiem jednego, powiedzmy, indeksu . Co oznacza, że ​​w powyższym podsumowaniu jest tylko jeden niezerowy wyraz odpowiadający a wszystkie inne wyrażenia w podsumowaniu są zerami. Koszt można więc zapisać również jako: Uwaga: powyżej wynosi 1.

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

Rozwiązywanie dla : Jvc

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

Które można zmienić za pomocą: Korzystając z definicji (6), możemy przepisać powyższe równanie jako:

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

Zobaczmy teraz, jak można to zapisać w notacji Matrix.

  1. uk można zapisać jako mnożenie wektora macierzy:U.y
  2. A to liniowa transformacja wektorów w skalowana odpowiednio przez . To znowu można zapisać jakow=1W(y^wuw)uwUy^wU.y^

Całość można więc zwięźle napisać jako:

U[y^y]

Na koniec zauważ, że założyliśmy, że to wektory kolumnowe. Gdybyśmy zaczęli od wektorów wierszowych, otrzymalibyśmy , tak jak to, czego szukaliście.uiUT[y^y]


1
Chciałem tylko powiedzieć, że to wspaniałe wytłumaczenie dla pochodnych! To naprawdę pomaga matematykom, takim jak ja. Dziękuję Ci!
Eric Kim

1
+1 za niesamowite wyjaśnienie!
bragboy

Nie rozumiem, dlaczego to pochodzenie:
BATB=A
Parth Tamane

@ParthTamane Proszę rzucić okiem na to - math.stackexchange.com/questions/3270789/...
Sachin tyagi
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.