何时使用 GloVe 词汇与从训练数据中构建词汇?

数据挖掘 nlp 词嵌入
2022-03-06 22:14:24

在研究一些使用预训练 GloVe 向量的(pytorch)示例时,我遇到了两个变体:

  1. 使用 GloVe 向量的词汇表,从而使用预训练的 GloVe 向量初始化嵌入层。
  2. 从语料库中构建一个词汇表,然后仅使用与该词汇表对应的预训练 GloVe 向量来初始化嵌入层。

在我看来,通过使用 GloVe 向量的词汇表,训练集中的某些标记可​​能没有对应的 GloVe 向量,因此会被排除在词汇表之外。因此,您可能会错过对任务很重要的标记。

另一方面,从语料库构建词汇表意味着该模型无法处理看不见的单词(据我理解正确)。

因此,我想知道:什么时候应该使用 GloVe 词汇表,而不是从训练数据中构建词汇表?使用这两个词汇的“联合”是否有意义?

1个回答

你说的论点是非常正确的。

使用预训练嵌入的主要原因通常是缺乏特定于任务的训练数据。在(至少对于某些语言而言)具有大量训练数据的任务中,例如机器翻译,词嵌入总是与模型的其余部分一起训练。

您使用 GloVe 的事实表明您的训练数据并没有那么大。在这种情况下,很有可能在推理时,可能会出现不在训练数据中的单词,但 GloVe 仍然可以很好地表示它们,并且模型的其余部分知道如何使用它。GloVe 的词汇量非常大,在推理时出现 GloVe 词的可能性比未知的训练词要大得多。

您也可以选择混合解决方案。如果训练数据中有单词不在 GloVe 中,但仍然足够频繁,您可以与模型的其余部分一起学习它们的嵌入,同时保持其余 GloVe 嵌入冻结。(但实现这可能有点乏味。)