machine-learning - 在 Word2Vec 中合并预训练模型?

标签 machine-learning word2vec

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

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

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

最佳答案

没有直接的方法来合并单独培训类(class)的最终结果。

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

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

例如,无论您达到什么最终状态,都会有许多旋转/反射,这些旋转/反射在训练预测任务上可以完全一样好,或者在其他任务(例如类比求解)上表现也一样好。但这些可能的替代方案中的大多数都没有可以混合和匹配以进行有用的相互比较的坐标。

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

例如,如果 Google 新闻语料库与您自己的训练数据或您将使用词向量理解的文本不同,则将其用作起点可能只会减慢您的训练速度或产生偏差。另一方面,如果您对新数据进行足够长时间的训练,最终预加载值的任何影响都可能会被稀释为零。 (如果您确实想要“混合”结果,则可能必须同时对新数据进行训练,并以交错目标将向量推回先前数据集的值。)

结合独立 session 结果的方法可能会成为一个很好的研究项目。也许 word2vec 语言翻译项目中使用的方法——学习词汇空间之间的投影——也可以在不同运行的不同坐标之间进行“翻译”。也许将一些向量锁定在适当的位置,或者对“预测新文本”和“保持接近旧向量”的双重目标进行训练将带来有意义的改进组合结果。

关于machine-learning - 在 Word2Vec 中合并预训练模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30482669/

相关文章:

r - 控制台和 Rmarkdown 的准确度结果不同

python - 如何从Word2Vec模型中获取词频

python - Tensorflow/Keras/BERT 多类文本分类准确率

machine-learning - keras(cnn + nn)在4个类别中仅预测一个类别

python-3.x - 在Python中计算confusion_matrix

python - 了解 Gensim 包中 Doc2Vec 的输出

python - 找到与单词集最接近的单词

python - 属性错误 : module 'boto' has no attribute 'plugin'

machine-learning - 在进行迁移学习时,保留哪些 CNN 全连接层的最佳实践是什么?