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

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

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

另一个想法是使用向量作为词的输入,而不是使用独热编码,但我不知道文档的输出向量是否会合理。

感谢您的回答!


回答:

您可能会认为Doc2Vec(即Mikolov/Le的“段落向量”算法)需要词向量作为第一步。这是普遍的看法,可能有点直观,通过类比人类学习新语言的方式:先理解较小的单位,然后再理解较大的单位,然后从较小的单位中组合出较大的意义。

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

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

另一种模式,PV-DM(gensim中的dm=1,默认值)确实使用邻近的词向量,结合文档向量以一种类似于word2vec的CBOW模式的方式——但它需要的任何词向量将与文档向量同时训练。它们不是首先在一个单独的步骤中训练的,因此没有一个简单的插入点,您可以从别处提供词向量。

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

在某种程度上,您可以用来自别处的词向量预先填充模型,但这不一定会改善结果:它很容易使它们的质量偏离或更糟。在一些幸运的、管理良好的情况下,它可能加速模型的收敛,或者是一种强制与早期向量集保持向量空间兼容性的方式,但没有额外的陷阱和警告,这些警告并不是原始算法的一部分,或是未经充分描述的实践。

Related Posts

如何对SVC进行超参数调优?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

如何在初始训练后向模型添加训练数据?

我想在我的scikit-learn模型已经训练完成后再…

使用Google Cloud Function并行运行带有不同用户参数的相同训练作业

我正在寻找一种方法来并行运行带有不同用户参数的相同训练…

加载Keras模型,TypeError: ‘module’ object is not callable

我已经在StackOverflow上搜索并阅读了文档,…

在计算KNN填补方法中特定列中NaN值的”距离平均值”时

当我从头开始实现KNN填补方法来处理缺失数据时,我遇到…

使用巨大的S3 CSV文件或直接从预处理的关系型或NoSQL数据库获取数据的机器学习训练/测试工作

已关闭。此问题需要更多细节或更清晰的说明。目前不接受回…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注