【问题标题】:What is the preferred ratio between the vocabulary size and embedding dimension?词汇量大小和嵌入维度之间的首选比率是多少?
【发布时间】:2018-07-06 21:19:34
【问题描述】:

当使用例如 gensimword2vec 或类似的方法来训练您的嵌入向量时,我想知道什么是好的比率,或者嵌入之间是否存在首选比率词汇量的维度? 此外,随着更多数据的出现,这种情况会如何变化?

由于我仍在讨论这个主题,在训练嵌入向量时如何选择一个好的窗口大小?

我之所以这么问,是因为我不是用现实生活中的语言词典来训练我的网络,而是这些句子将描述进程与文件以及其他进程之间的关系等等。 例如,我的文本语料库中的句子如下所示:

smss.exe irp_mj_create systemdrive windows system32 ntdll dll DesiredAccess: Execute/Traverse, Synchronize, Disposition: Open, Options: , 属性:n/a,ShareMode:读取,AllocationSize:n/a,OpenResult: 已打开”

正如您可能想象的那样,变化很多,但问题仍然存在,我如何才能以最佳方式微调这些超参数,以便嵌入空间不会过度拟合,而且每个单词都有足够的有意义的特征。

谢谢,

加布里埃尔

【问题讨论】:

  • Google News 数据集上预训练嵌入的维度只有 300,即使它的词汇量非常大。

标签: machine-learning keras nltk word-embedding nltk-trainer


【解决方案1】:

比率不是您的目标

我不记得有任何关于这个问题的具体论文,但这个问题感觉有点奇怪 - 总的来说,如果我有一个很棒的模型但想切换到两倍或十倍大的词汇表,我不会改变嵌入尺寸。

恕我直言,它们是完全正交的、不相关的参数。决定最佳嵌入维度的关键因素主要与计算资源的可用性有关(越小越好,所以如果结果没有差异并且可以将维度减半,那么就这样做),任务和(最重要的)数量监督训练示例 - 嵌入维度的选择将决定您将压缩多少/有意限制词汇信息;更大的维度将允许您的模型区分更多的词汇细节,当且仅当您的监督数据有足够的信息来正确使用该词汇细节时,这是好的,但如果它不存在,那么额外的词汇信息将过拟合和更小的嵌入维度会更好地泛化。因此,词汇量大小和嵌入维度之间的比率不是(恕我直言,我无法提供证据,这只是实践经验)值得一看,因为嵌入维度的最佳大小由 您使用的位置决定 嵌入,而不是用于训练嵌入的数据。

在任何情况下,这似乎是您的里程会有所不同的情况 - 任何理论和讨论都会很有趣,但您的任务和文本领域非常具体,一般 NLP 的发现可能适用于您的案例,也可能不适用,并且对于您的数据有效的方法,最好获得经验证据。用 64/128/256 或 100/200/400 或任何大小训练嵌入,使用它们中的每一个训练模型,并比较效果;与思考效果应该是什么相比,这将花费更少的精力(人,而不是 GPU)。

【讨论】:

  • 好吧,也许我以一种不太愉快的方式表达了这个问题。我相信我见过人们建议嵌入向量远小于词汇大小以避免过度拟合的地方。无论如何,正如您注意到的那样,我要解决的问题与 NLTK 有点不同,但具有相似的属性。到目前为止,我确实得到了相当不错的结果,但我只是想知道是否以及如何更好的超参数调整会让现实世界的例子变得更好。就我而言,到目前为止,我只使用了这些:window_size、emd_size、vocab、data corpus。
  • @GabrielBercea 嵌入参数的影响大小往往不会很大,最多几个百分点的准确性。如果您正在调整一个可以正常工作并需要减少错误但与概念验证系统无关的系统,这一点很重要。
【解决方案2】:

This Google Developers blog post 说:

嗯,下面的“公式”提供了关于嵌入维数的一般经验法则:

embedding_dimensions =  number_of_categories**0.25

即嵌入向量的维度应该是类别数的4次方根。

有趣的是,the Word2vec Wikipedia article 说(强调我的):

不过,对于在 50 维的中等规模语料库中训练的 skip-gram 模型,15 和 10 个负样本的窗口大小似乎是一个很好的参数设置。

假设一个标准大小的词汇量为 150 万个单词,这个经验法则惊人地接近:

50 == 1.5e6 ** 0.2751

【讨论】:

    猜你喜欢
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 2022-12-16
    • 2020-06-03
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多