skipgram word2vec的渐变


9

我正在研究斯坦福大学NLP深度学习班的书面作业问题,网址为http://cs224d.stanford.edu/assignment1/assignment1_soln

我试图了解3a的答案,他们正在寻找中心词向量的导数。

假设你被给予预测的字向量对应于中心字Ç为skipgram,和字预测与在word2vec模型中发现的功能SOFTMAX制成。vc

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

其中w表示第w个单词,而(w = 1,...,W)是词汇表中所有单词的“输出”单词向量。假定将交叉熵成本应用于此预测,并且单词o是预期单词。uw

其中是所有的输出向量的矩阵,并让ÿ是词的SOFTMAX预测的列向量,并且ÿ是独热标签,该标签也是列向量。U=[u1,u2,···,uW]y^

其中交叉熵是CE(y,y^)=iyilog(y^i)

所以对于梯度为中心矢量答案是Jvc=UT(y^y).

有人可以告诉我实现此目标的步骤吗?我一直用这个问题作为参考在word2vec交叉熵损失的衍生,但我特别想知道表示。UT(y^y).

Answers:


15

首先,让我们列出我们所得到的以及关于不同矢量形状的假设。让,

  1. |W|是词汇中的单词数
  2. y ÿ是形状的列向量 | W | x 1y^|W|
  3. uivjD X 1形状的列向量(D =嵌入维数)
  4. y是形状|W|的单点编码列向量。W | x 1
  5. y^是形状的SOFTMAX预测列向量|W|x 1
  6. y^i=P(i|c)=exp(uiTvc)w=1Wexp(uwTvc)
  7. J=i=1Wyilog(yi^)
  8. U=[u1,u2,...,uk,...uW]uk

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

Jvc

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

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

现在让我们看看如何用矩阵表示法编写该代码。

  1. ukU.y
  2. w=1W(y^wuw)uwUy^wU.y^

U[y^y]

uiUT[y^y]


1
只是想说这是一个很好的推导解释!这确实对像我这样的数学爱好者有帮助。谢谢!
Eric Kim

1
+1为惊人的解释!
bragboy

BATB=A

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.