如何在 doc2vec 模型中使用预训练的 word2vec 向量?

How to use pretrained word2vec vectors in doc2vec model?

我正在尝试实现 doc2vec,但我不确定如果我有预训练的 word2vec 向量,模型的输入应该是什么样子。

问题是,我不确定理论上如何将预训练的 word2vec 向量用于 doc2vec。我想,我可以用向量预填充隐藏层,而隐藏层的其余部分用随机数填充

另一个想法是使用向量作为单词的输入而不是单热编码,但我不确定文档的输出向量是否有意义。

感谢您的回答!

您可能认为 Doc2Vec(又名 Mikolov/Le 的 'Paragraph Vector' 算法)需要词向量作为第一步。这是一个普遍的信念,也许有点直觉,类似于人类如何学习一门新语言:先理解较小的单位,然后再理解较大的单位,然后从较小的单位组成较大的单位。

但这是一个常见的误解,Doc2Vec 不会那样做。

一种模式,纯 PV-DBOW(dm=0 在 gensim 中),根本不使用传统的每字输入向量。而且,这种模式通常是训练速度最快、表现最好的选项之一。

另一种模式,PV-DM(dm=1 在 gensim 中,默认)确实利用了相邻的词向量,并以类似于 word2vec 的 CBOW 模式的方式结合文档向量——但任何它需要的词向量将与文档向量同时进行训练。它们 不是 在单独的步骤中进行第 1 次训练,因此没有一个简单的拼接点,您可以从其他地方提供单词向量。

(您可以将 skip-gram 单词训练混合到 PV-DBOW 中,在 gensim 中使用 dbow_words=1,但这将在交错的共享模型过程中从头开始训练单词向量。)

就您可以使用来自其他地方的词向量预先植入模型而言,它不一定会改善结果:它很容易将它们的质量横向发送或更糟。在一些幸运的管理良好的情况下,它可能会加速模型收敛,或者是一种强制向量-space-与早期向量集兼容的方法,但并非没有额外的陷阱和警告 aren' t 原始算法的一部分,或描述良好的做法。