如何在 CBOW 中获取词嵌入?

数据挖掘 词嵌入 word2vec
2022-02-17 10:35:20

我找到了skip-gram模型的清晰解释。我们获取输出权重矩阵,将其与我们想要嵌入的单词的 one-hot 向量相乘。

在 CBOW 的情况下它如何工作?

在此处输入图像描述

我知道我们必须采用其中一个输入权重(Wvnx),但是哪一个呢?

2个回答

Word2Vec


Word2Vec是一种用于从原始文本中学习词嵌入的预测模型。它将一个大型的词库作为输入,并生成一个向量空间,通常为几百维,语料库中的每个唯一词都被分配一个空间中的相应向量。

词向量被定位在向量空间中,使得在语料库中共享共同上下文的词在空间中彼此靠近。Gensim提供了一种使用和开始使用Word2Vec的好方法。

Word2vec实际上是两种不同方法的集合:

给定句子中的一个词,我们称其为(也称为中心词或目标词),CBOW使用周围词的上下文作为输入。例如,如果上下文窗口设置为,那么输入将是位置 . 基本上是中心词之前和之后的两个词。给定这些信息,CBOW 然后尝试预测目标词。CBOW 的目标函数为:w(t)CC=5w(t2)w(t1)w(t+1)w(t+2)w(t)

Jθ=1Tt=1Tlogp(wtwtn,,wt1,wt+1,,wt+n)

在此处输入图像描述 word2vec CBOW 和 skip-gram 网络架构

跳格模型

  • 从目标词预测源上下文词。
  • Skip-gram将每个上下文-目标对视为一个新的观察结果,当我们拥有更大的数据集时,这往往会做得更好。

CBOW - 连续词袋模型

  • 从源上下文词预测目标词。
  • CBOW平滑了许多分布信息(通过将整个上下文视为一次观察)。在大多数情况下,这对于较小的数据集是有用的。

更具体地说,我们使用输入词的 one-hot 编码,并测量与目标词的 one-hot 编码相比的输出误差。在预测目标词的过程中,我们学习了目标词的向量表示。

训练时的 CBOW 尝试从上下文词中预测主词。

训练完成后,我们使用第一个隐藏层的权重矩阵来获得 Word2vec 嵌入。权重矩阵乘以一个热编码得到 word2vec 嵌入。

如果你将一个 1 x 10,000 的 one-hot 向量乘以一个 10,000 x 300 的矩阵,它实际上只会选择对应于“1”的矩阵行。这是一个小例子,可以给你一个视觉效果。在此处输入图像描述

这意味着该模型的隐藏层实际上只是作为查找表运行。隐藏层的输出只是输入词的“词向量”。

参考: http: //mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/