Gradientes para o skipgram word2vec

9

Estou enfrentando os problemas dos problemas de atribuição escrita da classe de aprendizado profundo da Stanford PNL http://cs224d.stanford.edu/assignment1/assignment1_soln

Estou tentando entender a resposta para 3a onde eles estão procurando a derivada do vetor para a palavra central.

Suponha que você receba um vetor de palavras previsto correspondente à palavra central c do skipgram, e a previsão de palavras é feita com a função softmax encontrada nos modelos word2vec.vc

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

Onde w denota a w-ésima palavra e (w = 1,.., W) são os vetores de palavras "de saída" para todas as palavras do vocabulário. Suponha que o custo da entropia cruzada seja aplicado a essa previsão e a palavra o seja a palavra esperada.uw

Onde é a matriz de todos os vetores de saída e é o vetor da coluna da previsão de palavras-chave do softmax e y é o rótulo único que também é um vetor de coluna.U=[u1,u2,···,uW]y^

Onde entropia cruzada éCE(y,y^)=iyilog(y^i)

Portanto, a resposta do gradiente para o vetor central éJvc=UT(y^y).

Alguém poderia me mostrar as etapas para chegar a isso? Eu tenho usado essa pergunta como referência Derivada da perda de entropia cruzada no word2vec, mas quero saber especificamente orepresentação.UT(y^y).

Jake Fund
fonte

Respostas:

15

Primeiro, vamos mostrar o que temos e nossas suposições sobre as formas dos diferentes vetores. Deixei,

  1. |W|ser o número de palavras no vocabulário
  2. y e são vetores de coluna de formax 1y^|W|
  3. ui e são os vetores de coluna da forma X 1 ( = dimensão dos revestimentos)vjDD
  4. y seja o vetor da coluna codificada com um ponto quente da formax 1|W|
  5. y^ seja o vetor da coluna de previsão softmax da formax 1|W|
  6. y^i=P(i|c)=exp(uiTvc)w=1Wexp(uwTvc)
  7. Perda de entropia cruzada:J=i=1Wyilog(yi^)
  8. U=[u1,u2,...,uk,...uW] seja uma matriz composta por vetores de colunas .uk

Agora, podemos escrever Simplificando, Agora, sabemos que é codificado como um hot, portanto todos os seus elementos são zero, exceto aquele no, digamos, índice. O que significa que há apenas um termo diferente de zero no somatório acima correspondente a e todos os outros termos no somatório são zeros. Portanto, o custo também pode ser escrito como: Nota: acima de é 1.

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

Resolvendo para : Jvc

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

Que pode ser reorganizado como: Usando a definição (6), podemos reescrever a equação acima como:

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

Agora vamos ver como isso pode ser escrito na notação Matrix.

  1. uk pode ser escrito como multiplicação de vetor de matriz:U.y
  2. E é uma transformação linear dos vetores em dimensionada por respectivamente. Isso novamente pode ser escrito comow=1W(y^wuw)uwUy^wU.y^

Portanto, a coisa toda pode ser escrita sucintamente como:

U[y^y]

Por fim, observe que assumimos que s é um vetor de coluna. Se tivéssemos começado com vetores de linha, obteríamos , o mesmo que você estava procurando.uiUT[y^y]

Sachin Tyagi
fonte
11
Só queria dizer que esta é uma explicação maravilhosa para derivação! Isso realmente ajuda para quem gosta de matemática como eu. Obrigado!
Eric Kim
11
+1 para a explicação incrível!
Bragboy #
Não entendo por que essa derivação:
BATB=A
Parth Tamane