Word2Vec 如何选择嵌入大小参数

数据挖掘 Python nlp word2vec gensim
2021-09-24 03:02:48

我正在对文档集合运行 word2vec。我知道模型的大小是嵌入单词的向量空间的维数。并且不同的维度在某种程度上与一个单词可以分组的不同的、独立的“概念”有关。但除此之外,我找不到任何合适的启发式方法来准确地选择数字。这里有一些关于词汇量大小的讨论:https ://stackoverflow.com/questions/45444964/python-what-is-the-size-parameter-in-gensim-word2vec-model-class 但是,我怀疑词汇量是不是最重要的,但更重要的是您拥有多少样本文档以及它们有多长。当然每个“维度”都应该有足够的例子来学习吗?

我收集了 200 000 个文档,每个文档平均长度约为 20 页,涵盖了大部分英语语言的词汇。我使用 word2vec 嵌入作为查找句子和文档之间距离的基础。如果重要的话,我正在使用 Gensim。我使用的是 240 的尺寸。这合理吗?是否有关于使用什么启发式方法来选择大小参数的研究?谢谢。

3个回答

我查看了四篇与词嵌入相关的高引用论文:2013 Word2Vec2014 GloVe 、2018 BERT2018 ELMo只有 GloVe 对类比任务(回答"a" is to "b" as "c" is to ?)的嵌入维度进行了实验。

其他论文没有报道嵌入维度大小的实验。它们都使用数百个数量级的任意维度(更频繁地使用100 和 300 )。缺乏嵌入大小的实验意味着性能对这个参数不是很敏感,只有数量级很重要,而且模型架构的其他方面也更重要。

您可以使用 10、100 和 1000 这三个数量级的值进行类似的实验。所需的尺寸大小也取决于任务我推测分类(判别)任务比句子生成任务需要更少的维度。

通常,对于超参数优化,可以使用像贝叶斯优化这样的方法来找到最好的超参数(这里是嵌入维度),并且尽可能少(昂贵)的训练评估。这些技术在每项改进都很重要的竞争环境中更有用。

如果您不想将其视为常规超参数,您可能会发现这篇论文可能最接近您正在寻找的内容:Towards Lower Bounds on Number of Dimensions for Word Embeddings

该论文声称基于语料库的嵌入存在下界。它还提供了一种找到所述下限的方法,我将留下论文来解释,因为我认为我不会公正地做到这一点。以下是论文结论中最相关的部分:

我们讨论了通过查看语料库来决定词嵌入训练的维数的重要性。我们使用抽象示例激发了这个想法,并给出了一个寻找下限的算法。我们的实验表明,词嵌入的性能很差,直到达到下限。此后,它趋于稳定。因此,应该使用这样的界限来决定维数,而不是反复试验。

它已经获取并引用了您可能感兴趣的关于嵌入维度的先前工作。不幸的是,结论似乎如下:

从上面的讨论可以看出,对维度数量的分析并没有得到足够的重视。本文是朝着这个方向做出的贡献。

通常,嵌入维度的确切数量不会影响任务性能。

维度的数量会影响训练时间。

一个常见的启发式方法是选择 2 的幂来加快训练时间。2 的幂将增加数据移动期间的缓存利用率,从而减少瓶颈。

词嵌入最常见的 2 次方是 128 或 256,具体取决于首选的数量级。