machine-learning - SkipGram 中上下文词的表示矩阵是什么意思?

标签 machine-learning nlp deep-learning stanford-nlp word2vec

我正在学习斯坦福 NLP 类(class),但我在理解下图中 Skipgram 中的概念时遇到问题。

enter image description here 从左到右,第一个列向量是单热编码器,第二个是来自单层神经网络的词嵌入矩阵,第三个是词表示向量。然而,当谈到第四个时,它是一个“v x d”维度的矩阵。不确定我听得是否正确,但说话者说这是上下文单词的表示,并且这三个矩阵是相同的?

我的问题是: 1. 为什么这三个矩阵相同,但三个乘法结果不同? 2.我们如何得到这个矩阵(v×d维度)?

讲座链接为:

https://www.youtube.com/watch?v=ERibwqs9p38&t=1481s

最佳答案

在回答你的问题之前,为了论证之前的幻灯片,我必须添加一些背景知识。首先,优化是针对一个单词与另一个单词同时出现的概率:中心单词和上下文单词。向量表示可以在这两者之间共享,但实际上我们有两个矩阵集合(单词向量列表)1.中心单词向量(左侧第一个红色矩阵)2.上下文单词向量(中间三个红色矩阵)。

本题中的图片显示了我们如何通过两种向量的乘法和 softmax 归一化来估计概率。现在的问题是:

  1. 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 乘法基本上从这个列表中选择正确的词向量。最终结果是上下文词向量和中心词向量所有可能的点积的列表。真实观察到的上下文单词的独热向量选择预期结果。然后,根据损失,更新将通过更新WW'的计算流反向传播。

  1. Why these three matrix are identical but the three multiplication results are different?

正方形和中间的两个菱形代表一个矩阵。这三个乘法发生在三个不同的观察中。尽管它们代表相同的矩阵,但每个观察参数(WW')使用反向传播进行更改。这就是为什么三次乘法的结果不同的原因。

聊天更新 然而,您的期望是有效的,演示文稿可能会在这些乘法中显示完全相同的结果。因为目标函数是一个窗口内所有共现概率的总和。

关于machine-learning - SkipGram 中上下文词的表示矩阵是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49472999/

相关文章:

python - 为什么激活值 (Softmax) 的预测会给出错误的结果?

python - 散点图中两个特征之间的比例

python - 使用 TensorFlow 和 Keras 进行图像分类

python - 如何修复 RuntimeError "Expected object of scalar type Float but got scalar type Double for argument"?

machine-learning - 如何明确机器学习使用哪些模型层?

python - scikit 学习 : update countvectorizer after selecting k best features

python - 如何使用 python 最好地将语法复杂的文本转换为语法简单的文本?

scikit-learn - 当我从 Pipeline 中删除 RF 模型时,它会失去准确性

java - 可以推荐哪种语言用于文本挖掘/解析?

ruby - 用于机器学习可视化的 Ruby 图形和线性代数库?