使用预训练模型的原因是什么?

数据挖掘 nlp 词嵌入 word2vec
2022-02-09 07:26:54

上个月,我一直在研究所有关于词嵌入和最知名的预训练词嵌入,Word2Vec、GloVe、FastText 等。我已经读过很多次了任务但是我不明白预训练模型如何适应我给定的语料库。此外,如果我有新词不存在于预训练模型中,我是否能够使用这个预训练模型来学习新词的嵌入?

3个回答

我不明白预训练模型如何适应我给定的语料库

你这样想是对的。它不是魔杖。它根据语料库的底层上下文(例如新闻)学习嵌入值,这可能在广义上有效,但不适用于特定情况。
两个城市可能会根据其地理位置获得嵌入,但如果我们比较城市的犯罪率/GDP 等,这可能不是我们可能喜欢的

嵌入。Word Embedding 的最佳帖子之一[ Sebastian Ruder 的博客文章] 提到详细的所有限制。摘自帖子,

...使用预训练嵌入的主要缺点之一是用于训练它们的新闻数据通常与我们想要使用它们的数据大不相同。然而,在大多数情况下,我们没有访问我们目标域中数百万个未标记的文档,这将允许从头开始预训练好的嵌入......

如果我有预训练模型中不存在的新词,我可以使用这个预训练模型来学习新词的嵌入吗?

它将从所有词汇表外(OOV)列表的存储桶中获取一个值。有时它可以是所有新词的相同值。但是有一些已知的策略来处理这种情况。检查帖子以获取相关论文。
从相同的帖子中,

....使用预训练词嵌入的主要问题之一是它们无法处理词汇表外 (OOV) 词,即在训练期间未见过的词。通常,这些词是设置为UNK标记并分配相同的向量,如果OOV单词的数量很大,这是一个无效的选择......

但是,即使您使用自己的语料库学习嵌入,这个问题也会占上风。所以我相信它不仅限于预训练的嵌入。

模型的大脑存在于它的权重中。在任何训练发生之前 - 一个空模型的权重被随机初始化。然后模型训练过程将权重调整到 N 维空间中更“有利”的区域。

因此,当您使用预训练模型时 - 您的模型权重实际上是从“有利”区域(代表过去的学习)而不是随机选择(即尝试从头开始)开始的。这就是为什么预训练模型的学习速度更快的原因——如果你的训练数据看起来与用于训练原始模型的数据相似,你可能会得到很好的结果。

我应该补充一点,因为你提到了 FastText,FastText 使用子词信息来构建它的词向量。子词信息与任何特定词无关,因此可用于为 OOV 或稀有词创建向量(FastText 算法的作者特别提到了迎合未遇到的稀有词向量的能力)。

BERT、GPT 等是最新的一组预训练模型,它们通过基本上研究非常大和非常多的上下文中的单词来改进单词的向量,例如句子、文档等,在这些上下文中可能找到并应用单词专门的注意力机制(转换器)尽可能地扩展单词的上下文以细化单词的嵌入(BERT 在上下文中一次查看多达 512 个标记以确定向量表示)。BERT 还使用子词信息/句子字节对编码算法来迎合 OOV 词。

BERT 的特别用途是,您可以从预训练模型中为您正在研究的语料库中的单词提升嵌入,并将其用于您的 NLP 任务。这些预训练的嵌入非常强大,通常需要几天甚至几周的时间才能在非常大的上下文中进行微调。如果你看一下,例如像 HuggingFace(https://huggingface.co/)这样的工具包,他们有很多带有嵌入的模型,可以满足特定任务,例如一组用于分类,一组用于序列标签等。