Derivada da perda de entropia cruzada no word2vec

10

Estou tentando trabalhar no caminho do primeiro conjunto de problemas do material do curso de classe on-line stanford cs224d e estou tendo alguns problemas com o problema 3A: Ao usar o modelo skip gram word2vec com a função de previsão softmax e a função de perda de entropia cruzada, deseja calcular os gradientes em relação aos vetores de palavras previstos. Portanto, dada a função softmax:

wi^=Pr(wordir^,w)=exp(wiTr^)j|V|exp(wjTr^)

e função de entropia cruzada:

CE(w,w^)=kwklog(wk^)

precisamos calcular CEr^

Minhas etapas são as seguintes:

CE(w,w^)=k|V|wklog(exp(wkTr^)j|V|exp(wjTr^))

=-k|V|Wkeuog(exp(WkTr^)-Wkeuog(j|V|exp(WjTr^))

agora dado Wk é um vetor quente e i é a classe correta:

CE(W,W^)=-WEuTr^+euog(j|V|exp(WjTr^))

CEr^=-WEu+1 1j|V|exp(WjTr^)j|V|exp(WjTr^)Wj

Isso está correto ou poderia ser mais simplificado? Quero tentar garantir que estou no caminho certo, pois as soluções do conjunto de problemas não são publicadas on-line. Além disso, é importante obter as atribuições escritas corretas para poder executar adequadamente as atribuições de programação.

slushi
fonte
Por favor, adicione a etiqueta auto-estudo para a pergunta
Dawny33
O segundo sinal de menos na identidade do primeiro log deve ser um sinal de mais. Tentei corrigir isso para você, mas as edições precisam ter pelo menos 6 caracteres: \
FatalMojo 22/15/15

Respostas:

7

CEr^=-WEu+1 1j|V|exp(WjTr^)j|V|exp(WjTr^)Wj
pode ser reescrito como note que as somas são indexadas por j, mas na verdade devem ser 2 variáveis ​​diferentes. Isso seria mais apropriado que se traduz em
CEr^=-WEu+j|V|(exp(Wjr^)j|V|exp(WjTr^)Wj)
CEr^=wi+x|V|(exp(wxr^)j|V|exp(wjTr^)wx)
CEr^=wi+x|V|Pr(wordxr^,w)wx
FatalMojo
fonte
11
Relevante, ele
repassa
Por que as somas devem ser indexadas por diferentes variáveis?
Yamaneko
11
Apenas para evitar confusão. Matematicamente, significa a mesma coisa, mas é uma boa prática alterar o rótulo do índice ao adicionar uma nova soma.
FatalMojo