自然语言处理的最新进展很大程度上建立在无监督预训练 的功能之上,无监督预训练使用大量文本训练通用语言表示模型,无需人工注释或标签。这些预训练模型,如BERT和RoBERTa,已被证明可以记住大量世界知识,例如“ Francesco Bartolomeo Conti的出生地”、“ JDK的开发者”和“ Border TV的所有者”。虽然编码知识的能力对于某些自然语言处理任务(如问答、信息检索和文本生成)尤为重要,但这些模型隐式地记忆知识(即世界知识以抽象的方式捕获在模型权重中),因此很难确定存储了哪些知识以及它们保存在模型的什么位置。此外,存储空间,以及模型的准确性,都受到网络规模的限制。为了获取更多的世界知识,标准做法是训练越来越大的网络,但这可能会非常慢或昂贵。
相反,如果有一种预训练方法可以显式地访问知识,例如通过引用额外的大型外部文本语料库,以便在不增加模型大小或复杂性的情况下获得准确的结果,那会怎样?例如,模型可以引用外部文档集合中的一句话“Francesco Bartolomeo Conti 出生于佛罗伦萨”,来确定这位音乐家的出生地,而不是依赖于模型访问存储在其自身参数中的知识的不透明能力。检索包含此类显性知识的文本的能力将提高预训练的效率,同时使模型能够在不使用数十亿个参数的情况下在知识密集型任务上表现良好。
在2020 年国际机器学习大会上被接受的 “ REALM:检索增强语言模型预训练”中,我们分享了一种语言模型预训练的新范例,它使用知识检索器增强了语言表示模型,使 REALM 模型能够从原始文本文档中明确检索文本世界知识,而不是将所有知识都记住在模型参数中。我们还开源了REALM 代码库,以演示如何联合训练检索器和语言表示。
背景:预训练语言表示模型要了解标准语言表示模型如何记忆世界知识,首先应该回顾一下这些模型是如何预训练的。自BERT
发明以来,填空任务(称为掩码语言建模)已广泛用于预训练语言表示模型。给定任何文本中的某些单词被掩码掉,任务就是填回缺失的单词。此任务的一个示例如下:
I am so thirsty. I need to __ water.
在预训练期间,模型将查看大量示例并调整参数以预测缺失的单词(上例中的)。有趣的是,填空任务使模型记住了有关世界的某些事实。例如,在以下示例中,需要了解爱因斯坦的出生地才能填补缺失的单词: answer:
drink
Einstein was a __-born scientist. () answer:
German
然而,由于模型捕获的世界知识存储在模型权重中,因此它具有抽象性,很难理解存储了什么信息。
我们的提议:检索增强语言表示模型预训练
与标准语言表示模型相比,REALM 使用知识检索器来增强语言表示模型,该知识检索器首先从外部文档集合中检索另一段文本作为支持知识 - 在我们的实验中,我们使用维基百科文本语料库- 然后将这段支持文本和原始文本输入到语言表示模型中。
REALM 的关键直觉是,检索系统应该提高模型填补缺失单词的能力。因此,为填补缺失单词提供更多上下文的检索应该得到奖励。如果检索到的信息无助于模型做出预测,则应阻止这种检索,为更好的检索腾出空间。
鉴于预训练期间只有未标记的文本可用,如何训练知识检索器?事实证明,人们可以使用填充单词的任务来间接训练知识检索器,而无需任何人工注释。假设查询的输入是:
We paid twenty __ at the Buckingham Palace gift shop.
在没有检索的情况下填补此句子中缺失的单词()可能会很棘手,因为模型需要隐式存储有关白金汉宫所在国家/地区及其相关货币的知识,以及建立两者之间的联系。如果向模型展示一段明确关联一些必要知识(从外部语料库中检索)的段落,模型将更容易填补缺失的单词。 answer:
pounds
在这个例子中,检索器将因检索到以下句子而获得奖励。
REALM 的计算挑战
扩展 REALM 预训练,使模型能够从数百万个文档中检索知识,这是一项挑战。在 REALM 中,最佳文档的选择被表述为最大内积搜索(MIPS)。要执行检索,MIPS 模型需要首先对集合中的所有文档进行编码,以便每个文档都有相应的文档向量。当输入到达时,它会被编码为查询向量。在 MIPS 中,给定一个查询,将检索集合中其文档向量和查询向量之间具有最大内积值的文档,如下图所示:
在 REALM 中,我们使用ScaNN包高效地执行 MIPS,这使得查找最大内积值的成本相对低廉,因为文档向量是预先计算的。但是,如果在训练期间更新了模型参数,通常需要对整个文档集合的文档向量进行重新编码。为了解决计算难题,我们构建了检索器,以便可以缓存并异步更新对每个文档执行的计算。我们还发现,每 500 个训练步骤更新一次文档向量,而不是每一步更新一次,能够实现良好的性能并使训练变得容易处理。
将 REALM 应用于开放域问答
我们将 REALM 应用于开放域问答(Open-QA) 来评估其有效性,这是自然语言处理中最需要知识的任务之一。该任务的目标是回答诸如“等边三角形的角度是多少?”之类的问题。
在标准问答任务(例如 SQuAD或Natural Questions)中,支持文档是作为输入的一部分提供的,因此模型只需在给定的文档中查找答案即可。在 Open-QA 中,没有给定的文档,因此 Open-QA 模型需要自己查找知识 — 这使得 Open-QA 成为检验 REALM 有效性的绝佳任务。
下图显示了Natural Question 的 OpenQA 版本的结果。我们主要将结果与T5进行了比较,T5 是另一种无需注释支持文档即可训练模型的方法。从图中可以清楚地看到,REALM 预训练生成了非常强大的 Open-QA 模型,甚至比更大的 T5 (11B) 模型高出近 4 个百分点,而且只使用了一小部分参数(300M)。
结论
REALM 的发布推动了人们对开发端到端检索增强模型的兴趣,包括最近的检索增强生成模型。我们期待以多种方式扩展这项工作,包括 1) 将类似 REALM 的方法应用于需要知识密集型推理和可解释来源的新应用程序(超越 Open-QA),以及 2) 探索检索其他形式知识的好处,例如图像、知识图谱结构,甚至其他语言的文本。我们也很高兴看到研究社区对开源REALM 代码库的贡献!
致谢
这项工作是 Kelvin Guu、Kenton Lee、Zora Tung、Panupong Pasupat 和 Ming-Wei Chang 共同努力的结果。
评论