word2vec中的交叉熵损失的导数


10

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

wi^=Pr(wordi∣r^,w)=exp⁡(wiTr^)∑j|V|exp(wjTr^)

和交叉熵函数:

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

我们需要计算∂CE∂r^

我的步骤如下:

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^))

∂CE∂r^=−wi+1∑j|V|exp(wjTr^)∑j|V|exp(wjTr^)wj

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


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

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

Answers:


7

∂CE∂r^=−wi+1∑j|V|exp(wjTr^)∑j|V|exp(wjTr^)wj
can be rewritten as
∂CE∂r^=−wi+∑j|V|(exp⁡(wj⊤r^)∑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
∂CE∂r^=−wi+∑x|V|(exp⁡(wx⊤r^)∑j|V|exp(wjTr^)⋅wx)
which translates to
∂CE∂r^=−wi+∑x|V|Pr(wordx∣r^,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.