在 Word2Vec 中合并预训练模型?

Merging pretrained models in Word2Vec?

我已经下载了 1000 亿字 Google 新闻预训练矢量文件。除此之外,我还在训练自己的 3gb 数据,生成另一个预训练矢量文件。两者都有 300 个特征维度和超过 1gb 的大小。

如何合并这两个巨大的预训练向量?或者我如何训练一个新模型并在另一个模型之上更新向量?我看到基于 C 的 word2vec 不支持批量训练。

我正在寻找从这两个模型计算单词类比的方法。我相信从这两个来源学习的向量会产生很好的结果。

这些是我的方法:

  • 从 Google 新闻下载 crops 并将它们合并到您的数据中,然后训练它们!

  • 将你的数据集分成2个大小相等的数据集,然后对它们进行训练。现在你有 3 个模型,所以你可以使用混合方法进行预测。

希望这些对您有所帮助!

没有直接的方法来合并单独训练 session 的 end-results。

即使对于完全相同的数据,初始播种或线程调度抖动的轻微随机化也会导致不同的最终状态,使得向量只能在相同的 session.

中完全比较

这是因为每个 session 都会找到 a 个有用的矢量配置...但是有许多同样有用的配置,而不是一个最好的配置。

例如,无论您达到什么最终状态,都有许多 rotations/reflections 可以在训练预测任务上表现得一样好,或者在其他一些任务(如 analogies-solving)上表现得一样好。但是这些可能的替代方案中的大多数都没有可以 mixed-and-matched 进行有用的相互比较的坐标。

使用先前训练运行的数据预加载您的模型可能在使用新数据进行更多训练后改善结果,但我不知道是否对这种可能性进行过任何严格测试。效果可能取决于您的具体目标、您的参数选择以及新旧数据的相似程度,或代表将使用向量的最终数据的程度。

例如,如果 Google 新闻语料库不同于您自己的训练数据,或者您将使用 word-vectors 理解的文本,则将其用作起点可能会减慢或偏向你的训练。另一方面,如果您对新数据进行足够长的训练,最终预加载值的任何影响都可能被稀释为零。 (如果你真的想要一个 'blended' 结果,你可能必须同时训练新数据,并有一个交错的目标,将向量推回 prior-dataset 值。)

结合独立 session 的结果的方法可能会成为一个很好的研究项目。也许 word2vec language-translation 项目中使用的方法——学习词汇空间之间的投影——也可以在不同运行的不同坐标之间 'translate'。也许将一些向量锁定在适当的位置,或者针对 'predict the new text' 和 'stay close to the old vectors' 的双重目标进行训练会产生有意义的改进组合结果。