Skipgram - 多种配方?

数据挖掘 机器学习 nlp word2vec 词嵌入
2021-10-01 19:43:31

我一直在阅读有关 Skipgram 模型的内容,并且发现了我将其解释为多个定义的内容。

1 - 看了这篇博文和Andrew Ng 的 Deep Learning Specialization,我了解到,对于每个单词,我们会为每个上下文单词生成一个训练样本

因此,如果我们有句子“猫坐在垫子上”,我们将有样本:

(cat, sat) (sat, cat) (sat, on)

等等。

然后你训练你的网络,它将具有维度。

  • 输入: (,1)
  • 权重1: (d,)
  • 隐藏层: (d,1)
  • 权重 2: (,d)
  • 输出层: (,1)

好的,所以这些尺寸匹配,我们很好。对于一个给定的输入,假设权重相同,我们在输出层总是有相同的估计

在这个定义中,我们有对称样本(例如(cat, sat)(sat, cat)),并且说我们使用中心词作为输入,使用上下文词作为输出是没有意义的,因为它们是可以互换的?

2 -用深度学习课程观看斯坦福的 NLP (38:54),似乎对于同一个中心词,我们可以获得不同的输出:

在此处输入图像描述

我画的红圈里的数字应该和我理解的一样。我真的不明白如果隐藏层的多个权重 2 是如何获得不同的输出的。

3-我在其他地方(现在找不到参考)看到了另一种表述:对于每个输入单词,我们将上下文表示为一个向量,其中上下文单词为 1,其他地方为 0。因此,在这种情况下,不是每个上下文词都有一个训练样例,而是每个中心词都有一个训练样例。

1个回答
  1. 吴恩达 word2vec @1:29。在视频中,他选择的窗口大小不止一个。在他的示例中,如果“orange”是中心词,则目标词可以是“juice”、“glass”、“my”,它们都在 5 的窗口大小内。

在您的示例中,“猫坐在垫子上”,如果您选择窗口大小为 1,则可以获得 7 个训练样本:

(cat, sat),
(sat, on),(sat, cat),
(on, sat), (on, the), 
(the, on), (the, mat)

如果这是整个语料库,p(cat|sat),sat作为中心词出现的概率,cat是上下文,是 0.5,p(sat|cat),cat是中心词,sat是上下文是 1 . "cat" 和 "sat" 作为中心词的分布词表示应该是不同的。

  1. “似乎对于同一个中心词,我们可以得到不同的输出:”那是因为它们预测的上下文词不止一个。

@ 31:35 224 2017 lec2,幻灯片上写着“为每个单词预测半径为 m 的周围单词”。也就是说,问题是在给定中心词的情况下找到上下文词的分布,因此对于一个中心词,模型将有多个输出词(除非您将m设置为 1 并同时指定方向)。

“我真的不明白如果你在隐藏层中使用多个权重 2,怎么可能得到不同的输出。”

@39:37 224 2017 lec2教授在矩阵输出和单词表示之间做了一个点积。它也显示在注释的顶部:“vC"

将隐藏层 (d * 1) 乘以权重 2 (V * d) 将得到一个 V*1 向量。那是,输出向量表示。然后我们做vC获取每个上下文单词的输出。之后,我们应用 softmax 并将该值与上下文词的 one-hot 表示进行比较(是的对比是的^),教授示例中的三个比较。

  1. 这听起来像是连续词袋模型的想法。