REALM:将检索集成到语言表示模型中

Posted 雨夜的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了REALM:将检索集成到语言表示模型中相关的知识,希望对你有一定的参考价值。

自然语言处理的最新进展在很大程度上建立在无监督预训练的能力之上,该预训练使用大量文本训练通用语言表示模型,无需人工注释或标签。这些预先训练好的模型,例如BERT和RoBERTa,已被证明能够记住惊人数量的世界知识,例如“ Francesco Bartolomeo Conti的出生地”、“ JDK的开发者”和“ Border TV的所有者””。虽然对知识进行编码的能力对于某些自然语言处理任务(例如问答、信息检索和文本生成)尤其重要,但这些模型会隐式地记忆知识——即,世界知识在模型权重中以抽象方式被捕获——这使得它变得困难以确定存储了哪些知识以及将其保存在模型中的位置。此外,存储空间以及模型的准确性受到网络大小的限制。为了获取更多的世界知识,标准做法是训练更大的网络,这可能会非常缓慢或昂贵。

相反,如果有一种可以显式访问知识的预训练方法,例如,通过引用额外的大型外部文本语料库,以便在不增加模型大小或复杂性的情况下获得准确结果,该怎么办?例如,在外部文档集合中发现的句子“Francesco Bartolomeo Conti 出生于佛罗伦萨”,可以被模型引用来确定音乐家的出生地,而不是依赖模型访问存储在其中的知识的不透明能力它自己的参数。检索包含此类显性知识的文本的能力将提高预训练的效率,同时使模型能够在不使用数十亿参数的情况下在知识密集型任务上表现良好。

在2020 年机器学习国际会议接受的“ REALM: Retrieval-Augmented Language Model Pre-Training ”中,我们分享了一种新的语言模型预训练范式,它用知识检索器增强了语言表示模型,允许 REALM 模型从原始文本文档中明确检索文本世界知识,而不是记住模型参数中的所有知识。我们还开源了REALM 代码库,以演示如何联合训练检索器和语言表示。

monarchy.

由于检索步骤需要添加更多的上下文,因此可能有多个检索目标可以帮助填补缺失的单词,例如,“ The official currency of the United Kingdom is the Pound.”整个过程如下图所示:

REALM 的计算挑战

扩展 REALM 预训练以便模型可以从数百万个文档中检索知识具有挑战性。在 REALM 中,最佳文档的选择被表述为最大内积搜索(MIPS)。为了执行检索,MIPS 模型需要首先对集合中的所有文档进行编码,使得每个文档都有一个对应的文档向量。当输入到达时,它被编码为查询向量。在MIPS中,给定一个查询,检索集合中其文档向量和查询向量之间具有最大内积值的文档,如下图所示:

在 REALM 中,我们使用ScaNN包有效地进行 MIPS,这使得寻找最大内积值的成本相对较低,因为文档向量是预先计算的。但是,如果模型参数在训练期间更新,通常需要为整个文档集合重新编码文档向量。为了解决计算挑战,我们构建了检索器,以便可以缓存和异步更新为每个文档执行的计算。我们还发现,每 500 个训练步骤而不是每一步更新文档向量能够取得良好的性能并使训练易于处理。

将 REALM 应用于开放域问答

我们通过将 REALM 应用于开放域问答(Open-QA)(自然语言处理中知识密集程度最高的任务之一)来评估 REALM 的有效性。任务的目标是回答问题,例如“等边三角形的角度是多少?”

在标准问答任务(例如 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 代码库做了什么!


REALM:将检索集成到语言表征模型,搞定知识密集型任务!

图片

文 / Ming-Wei Chang 和 Kelvin Guu,研究员,Google Research

自然语言处理的最新进展以 无监督预训练 为基础,使用大量文本训练通用语言表征模型 (Language Representation Models),无需人工标注或标签。这些预训练模型,如 BERT 和 RoBERTa经证明可以记忆大量世界知识,例如“the birthplace of Francesco Bartolomeo Conti”、“the developer of JDK”和“the owner of Border TV”。

虽然知识编码能力对于某些自然语言处理任务(如问题回答、信息检索和文本生成等)尤为重要,但这些模型是 隐式地 记忆知识,也就是说世界知识在模型权重中以抽象的方式被捕获,导致已存储的知识及其在模型中的位置都难以确定。此外,存储空间以及模型的准确率也受到网络规模的限制。为了获取更多的世界知识,标准做法是训练更大的网络,这可能非常缓慢或非常昂贵。

如果有一种预训练方法可以 显式地 获取知识,如引用额外的大型外部文本语料库,在不增加模型大小或复杂性的情况下获得准确结果,会怎么样?

例如,模型可以引用外部文集中的句子“Francesco Bartolomeo Conti was born in Florence”来确定这位音乐家的出生地,而不是依靠模型隐晦的访问存储于自身参数中的某个知识。像这样检索包含显性知识的文本,将提高预训练的效率,同时使模型能够在不使用数十亿个参数的情况下顺利完成知识密集型任务。

在 2020 ICML  我们介绍的 “REALM: Retrieval-Augmented Language Model Pre-Training”中,我们分享了一种语言预训练模型的新范例,用 知识检索器 (Knowledge Retriever) 增强语言模型,让 REALM 模型能够从原始文本文档中 显式 检索文本中的世界知识,而不是将所有知识存储在模型参数中。我们还开源了 REALM 代码库,以演示如何联合训练检索器和语言表示。

背景:预训练语言表征模型

要了解标准语言表征模型记忆世界知识的方式,首先应该回顾这些模型的预训练过程。自从 BERT 问世以来,称为 遮蔽语言建模 (Masked Language Modeling) 的填空任务已广泛用于预训练语言表征模型。给定某些单词被遮盖的文本,任务是填充缺失的单词。任务的样本如下所示:

I am so thirsty. I need to __ water.

预训练期间,模型将遍历大量样本并调整参数,预测缺失的单词(上述样本中的答案:answer: drink)。于是,填空任务使模型记住了世界中的某些事实。例如,在以下样本中,需要了解爱因斯坦的出生地才能填补缺失单词:

Einstein was a __-born scientist. (answer: German)

但是,模型捕获的世界知识存储在模型权重中,因此是抽象的,难以模型到底理解存储了哪些信息。

检索增强型语言表征模型预训练

与标准语言表征模型相比,REALM 通过 知识检索器 增强语言表征模型,首先从外部文档集中检索另一段文本作为支持知识,在实验中为 Wikipedia 文本语料库,然后将这一段支持文本与原始文本一起输入语言表征模型。

REALM 的关键理念是检索系统应提高模型填补缺失单词的能力。因此,应该奖励提供了更多上下文填补缺失单词的检索。如果检索到的信息不能帮助模型做出预测,就应该进行阻拦,为更好的检索腾出空间。

假定预训练期间只有未标记的文本,那么该如何训练知识检索器?事实证明,可以使用填补单词的任务来间接训练知识检索器,无需任何人工标注。假设查询的输入为:

We paid twenty __ at the Buckingham Palace gift shop.

在没有检索的情况下,很难填补句子中缺失的单词 (answer: pounds),因为模型需要隐式存储白金汉宫所在国家和相关货币的知识,并在两者之间建立联系。如果提供了一段与从外部语料库中检索的必要知识显式连接的段落,模型会更容易填补缺失的单词。

在此例中,检索器会因为检索以下句子获得奖励。

Buckingham Palace is the London residence of the British monarchy.

由于检索步骤需要添加更多上下文,因此可能会有多个检索目标对填补缺失单词有所帮助,例如“The official currency of the United Kingdom is the Pound.”。下图演示了整个过程:

图片

REALM 的计算挑战

扩展 REALM 预训练使模型从数百万个文档中检索知识具有一定挑战性。在 REALM 中,最佳文档选择为 最大内积搜索 (Maximum Inner Product Search,MIPS)。检索前,MIPS 模型需要首先对集合中的所有文档进行编码,使每个文档都有一个对应的文档向量。输入到达时会被编码为一个查询向量。在 MIPS 中,给定查询就会检索出集合中文档向量和查询向量之间具有最大内积值的文档,如下图所示:

图片

REALM 采用 ScaNN 软件包高效执行 MIPS,在预先计算文档向量的情况下,相对降低了寻找最大内积值的成本。但是,如果在训练期间更新了模型参数,通常有必要对整个文档集重新编码文档向量。为了解决算力上的挑战,检索器经过结构化设计可以缓存并异步更新对每个文档执行的计算。另外,要实现良好性能并使训练可控,应每 500 个训练步骤更新文档向量而不是每步都更新。

将 REALM 应用于开放域问答

将 REALM 应用于开放域问答 (Open-QA) 评估其有效性,这是自然语言处理中知识最密集的任务之一。任务的目的是回答问题,例如“What is the angle of the equilateral triangle(等边三角形的一角是多少度)?”

在标准问答任务中(例如 SQuAD 或 Natural Questions),支持文档是输入的一部分,因此模型只需要在给定文档中查找答案。Open-QA 中没有给定文档,因此 Open-QA 模型需要自主查找知识,这就使 Open-QA 成为检查 REALM 有效性的绝佳任务。

下图是 OpenQA 版本 Natural Question 的结果。我们主要将结果与 T5 进行比较,T5 是另一种无需标注文档即可训练模型的方法。从图中可以清楚地看到,REALM 预训练生成了非常强大的 Open-QA 模型,仅使用少量参数 (300M),性能就比更大的 T5 (11B) 模型要高出近 4 个点。

图片

结论

REALM 有助于推动人们对端到端检索增强型模型的关注,包括最近的一个检索增强型生成模型。我们期待以多种方式扩展这一工作范围,包括 :

  1. 将类似 REALM 的方法应用于需要知识密集型推理和可解释出处的新应用(超越 Open-QA)

  2. 了解对其他形式的知识进行检索的好处,例如图像、知识图谱结构甚至其他语言的文本。我们也很高兴看到研究界开始使用开源 REALM 代码库

致谢

本研究由 Kelvin Guu、Kenton Lee、Zora Tung、Panupong Pasupat 与 Ming-Wei Chang 合作完成。

推荐阅读

推出 BlazePose:实现设备端实时人体姿态追踪

张量操作太繁琐?新工具 TF-Coder 来帮你!

通过自监督学习对语音表征与个性化模型进行改善

扫描下方二维码关注 TensorFlow 官方微信公众号,获取更多资讯。

以上是关于REALM:将检索集成到语言表示模型中的主要内容,如果未能解决你的问题,请参考以下文章

可以使用 Realm 作为持久模型来表示 CloudKit 公共数据库吗?

Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC

『IR 信息检索入门必看』#3 向量空间模型(简明)

shiro中realm注入service方法无效

在 IOS(Objective-C)中有效地解析 JSON 到 Realm DB

从 Realm 数据库中检索单个对象的正确方法