Word2Vec 的 skip-gram 模型如何生成输出向量?

机器算法验证 神经网络 深度学习 自然语言 word2vec 词嵌入
2022-03-04 08:34:29

我在理解 Word2Vec 算法的 skip-gram 模型时遇到问题。

在连续词袋中很容易看出上下文词是如何“适应”神经网络的,因为您基本上是在将每个 one-hot 编码表示与输入矩阵 W 相乘之后对它们进行平均。

但是,在 skip-gram 的情况下,您只能通过将 one-hot 编码与输入矩阵相乘来获得输入词向量,然后假设通过将输入向量表示与输出矩阵 W'。

我的意思是,有一个大小的词汇表V和大小的编码N,WRV×N输入矩阵和WRN×V作为输出矩阵。鉴于这个词wi使用 one-hot 编码xi带有上下文词wjwh(有一个热的代表xjxh),如果你乘xi由输入矩阵W你得到h:=xiTW=W(i,)RN,现在你如何生成C从这个得分向量?

3个回答

我在理解它时遇到了同样的问题。似乎所有 C 项的输出分数向量都是相同的。但是每个 one-hot 表示的向量的误差差异会有所不同。因此,误差向量用于反向传播以更新权重。

请纠正我,如果我错了。

来源:https ://iksinc.wordpress.com/tag/skip-gram-model/

在这两个模型中,输出分数取决于您使用的分数函数。可以有两个评分函数 softmax 或负采样。因此,您使用 softmax 得分函数。您将获得 N*D 的评分函数大小。这里 D 是词向量的维度。N 是示例的数量。每个单词就像神经网络架构中的一个类。

在skip-gram模型中,一个单热编码词被馈送到两层浅层神经网络。由于输入是 one-hot 编码的,因此隐藏层仅包含输入隐藏权重矩阵的一行(假设kth行,因为kth输入向量的行是一)。

每个单词的分数由以下等式计算。

u=WTh

其中 h 是隐藏层中的向量,并且W是隐藏的输出权重矩阵。计算后u C计算多项式分布,其中C是窗口大小。分布由以下等式计算。

p(wc,j=wO,c|wI)=expuc,jj=1Vexpuj

正如你所看到的所有C分布不同。(更多信息:https ://arxiv.org/pdf/1411.2738.pdf )。事实上,如果他们使用类似下图的东西,这会更清楚。

总之,只有一个源向量u. 然而,C使用 softmax 函数计算不同的分布。

References:

  • 欣荣,Word2Vec 参数学习讲解