如何检查 Doc2Vec 模型是否经过充分训练?

数据挖掘 词嵌入 word2vec gensim doc2vec
2022-03-10 13:44:14

我开始尝试使用 gensim 的 Doc2Vec 进行情绪分析。对于嵌入本身的训练,我已经看到使用降低学习率的示例,使用几十个甚至几百个 epoch。然而,似乎没有一种直接的方法来使用提前停止来防止过拟合,而且我还不清楚我应该如何访问每个时期的损失值来检测过拟合。检查 word2vec 或 doc2vec 模型本身是否足够好的正确方法应该是什么?谢谢!

2个回答

测试嵌入空间的一种方法是使用单词类比作为单元测试。一个经过适当训练的嵌入空间应该成功地完成了“男人对国王就像女人对_____”与“女王”的类比。

谷歌发布了 19,000 多个词类比的集合来评估词嵌入模型。

如果您对使用训练验证拆分集来评估模型不满意,这里有一些其他方法可以比较您的性能:

  1. 指标跟踪。这通常在数据丰富时使用(例如 - MSMarco 使用 MRR 来评估其嵌入的质量)。您可以在此处找到:https ://microsoft.github.io/msmarco/另一个好的指标是平均 RBO(等级偏差重叠)。

  2. 使用几个查询进行眼球检查。当您第一次想要构建一些东西并且想要在您的前 X 个查询中进行感觉检查时,这将非常有用。如果您的数据过度拟合 - 您将在数据分布之外的搜索查询中看到非常糟糕的性能。

  3. 嵌入投影仪供您评估嵌入及其最近的邻居,以便了解数据偏差。嵌入投影仪需要一个好的降维算法,并且应该有一个好的聚类算法来帮助你检测这些偏差。

我帮助共同创作了一些 Python 包来帮助解决其中的一些问题:

比较搜索性能: https ://github.com/RelevanceAI/search_comparator

(在接下来的几天里发布一些包也会对此有所帮助——我会更新这条评论!)