CBoW 模型如何将单词转换为向量?

数据挖掘 Python 深度学习 nlp
2022-02-27 21:55:25

CBOW 模型实际上将多个词作为输入,将目标中心词作为输出。
因此,经过训练的模型实际上将几个词映射到一个词,我的意思是它需要上下文词并输出中心词。但是我们期望得到的是模型将一个词映射到它的向量表示。似乎输出是重合的,但不是输入和映射。

所以就像在基因论中一样,将一个单词映射到它的向量表示是如何真正起作用的?它只是将所有最终模型的输出保存为中心词的向量表示吗?但最终模型的输出将接近基本事实的 one-hot embedding,而不是带有上下文信息的向量。

简而言之,我的问题是:
CBoW 模型如何将一个词转换为其向量表示?

2个回答

CBoW(Continuous bag-of-words)是一种理论架构,不完全是保存的模型或像 gensim 这样的库。Gensim 可能是 CBoW 的一种实现,您可以向其中提供一个单热向量并获得您的词向量输出。

CBoW 作为一种理论模型,根据围绕它的词的“表象意义”赋予一个词“表象意义”。“表征意义”可能只是词​​向量的一个花哨术语。因此,基本上该模型可能使用负采样和 NCE 损失从周围的词向量中构建词向量,但主要的一点是它会微调这些向量,直到它们的“表示意义”变得很好。

然后,这些经过精心打磨的向量可能可以通过 one-hot 输入从 gensim 调用。

训练时的 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/