我正在学习斯坦福 NLP 类(class),但我在理解下图中 Skipgram 中的概念时遇到问题。
从左到右,第一个列向量是单热编码器,第二个是来自单层神经网络的词嵌入矩阵,第三个是词表示向量。然而,当谈到第四个时,它是一个“v x d”维度的矩阵。不确定我听得是否正确,但说话者说这是上下文单词的表示,并且这三个矩阵是相同的?
我的问题是: 1. 为什么这三个矩阵相同,但三个乘法结果不同? 2.我们如何得到这个矩阵(v×d维度)?
讲座链接为:
最佳答案
在回答你的问题之前,为了论证之前的幻灯片,我必须添加一些背景知识。首先,优化是针对一个单词与另一个单词同时出现的概率:中心单词和上下文单词。向量表示可以在这两者之间共享,但实际上我们有两个矩阵集合(单词向量列表)1.中心单词向量(左侧第一个红色矩阵)2.上下文单词向量(中间三个红色矩阵)。
本题中的图片显示了我们如何通过两种向量的乘法和 softmax 归一化来估计概率。现在的问题是:
- How do we get this matrix (v by d dimension)?
正如之前提到的,这可以是与词向量相同的矩阵,但转置了。或者,您可以想象我们为每个单词学习两个向量:1.中心2.上下文
计算中的上下文词向量以其转置形式使用:
(center words-vectors, v) W : (d,V)
(outside words-vectors, uT) W': (V,d)
V
是词汇量的大小,d
是向量的维度大小。 (这些是我们想要从数据中学习的参数)
注意每次矩阵乘法中维度如何变化:
W: (d,V)
x: (V,1)
v = W.x: (d,1)
W': (V,d)
W'.v: (V,1)
x
是中心词的one-hot编码,W
是所有词向量的列表。 W.x
乘法基本上从这个列表中选择正确的词向量。最终结果是上下文词向量和中心词向量所有可能的点积的列表。真实观察到的上下文单词的独热向量选择预期结果。然后,根据损失,更新将通过更新W
和W'
的计算流反向传播。
- Why these three matrix are identical but the three multiplication results are different?
正方形和中间的两个菱形代表一个矩阵。这三个乘法发生在三个不同的观察中。尽管它们代表相同的矩阵,但每个观察参数(W
和 W'
)使用反向传播进行更改。这就是为什么三次乘法的结果不同的原因。
聊天更新 然而,您的期望是有效的,演示文稿可能会在这些乘法中显示完全相同的结果。因为目标函数是一个窗口内所有共现概率的总和。
关于machine-learning - SkipGram 中上下文词的表示矩阵是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49472999/