word2vec中的交叉熵损失的导数


10

我正在尝试通过CS224D斯坦福大学在线课程材料的第一个问题集解决问题,而我对问题3A遇到一些问题:当使用带有softmax预测函数和交叉熵损失函数的跳过语法word2vec模型时,我们想要计算相对于预测单词向量的梯度。所以给定softmax函数:

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

和交叉熵函数:

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

我们需要计算CEr^

我的步骤如下:

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

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

现在给定是一个热向量,而我是正确的类:wk

CE(w,w^)=wiTr^+log(j|V|exp(wjTr^))

CEr^=wi+1j|V|exp(wjTr^)j|V|exp(wjTr^)wj

这是正确的还是可以进一步简化?我想尝试确保自己走在正确的轨道上,因为问题集解决方案未在线发布。另外,正确完成书面作业对正确完成编程作业很重要。


请在问题中添加自学标记
Dawny33

第一个日志标识的第二个减号应为加号。试图为您修复它,但编辑内容至少应为6个字符:\
FatalMojo 2015年

Answers:


7

CEr^=wi+1j|V|exp(wjTr^)j|V|exp(wjTr^)wj
can be rewritten as
CEr^=wi+j|V|(exp(wjr^)j|V|exp(wjTr^)wj)
note, the sums are both indexed by j but it really should be 2 different variables. This would be more appropriate
CEr^=wi+x|V|(exp(wxr^)j|V|exp(wjTr^)wx)
which translates to
CEr^=wi+x|V|Pr(wordxr^,w)wx

1
相关的,他在第2讲@ 38:00中详细讨论了该推导
FatalMojo 2015年

为什么要用不同的变量来索引总和?
Yamaneko

1
只是为了避免混乱。从数学上来说,它的含义是相同的,但是在添加新总和时更改索引标签是一种很好的做法。
FatalMojo 2015年
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.