Gensim Doc2Vec 模型 returns 不同的余弦相似度取决于数据集

Gensim Doc2Vec model returns different cosine similarity depending on the dataset

我用两个数据集训练了两个版本的 doc2vec 模型。

第一个数据集由 2400 个文档组成,第二个数据集由 3000 个文档组成,包括第一个数据集中使用的文档。

举个例子,

数据集 1 = doc1、doc2、... doc2400

数据集 2 = doc1、doc2、... doc2400、doc2401、... doc3000

我认为两个 doc2vec 模型应该 return doc1 和 doc2 之间的相似性得分相同,但是,它们 return 得分不同。

即使数据集包含相同的文档,doc2vec 模型的结果也会发生变化吗?

是的,对训练集的任何添加都会改变相关结果。

此外,正如 Gensim 常见问题解答中所解释的,即使使用完全相同的数据进行重新训练通常也会导致每个训练文档的结束坐标不同,尽管每个 运行 应该是等效的:

https://github.com/RaRe-Technologies/gensim/wiki/Recipes-&-FAQ#q11-ive-trained-my-word2vec--doc2vec--etc-model-repeatedly-using-the-exact-same-text-corpus-but-the-vectors-are-different-each-time-is-there-a-bug-or-have-i-made-a-mistake-2vec-training-non-determinism

在 运行 之间应该保持大致相同的是每个文档周围的 neighborhoods。也就是说,添加一些额外的训练文档不应改变某些候选文档与某些目标文档“非常接近”或“比其他文档更接近”的一般结果——除非 (1) 新文档可能包含一些更接近的文档; (2) 运行 之间的少量 'jitter',根据上面的常见问题解答。

如果实际上您在重复的 运行s 或 运行s 的额外数据增量很小,训练中可能还有其他问题。

特别是,2400 文档对于 Doc2Vec 来说是一个非常小的数据集 - 较小的数据集可能需要更小的 vector_size and/or 更多 epochs and/or 其他调整获得更可靠的结果,即使那样,也可能无法在更大的(数万到数百万文档)数据集上展示该算法的优势。