信息检索(七):Transformer Memory as a Differentiable Search Index

news2024/11/6 9:35:45

Transformer Memory as a Differentiable Search Index

  • 摘要
  • 1. 引言
  • 2. 相关工作
  • 3. 可微搜索索引
    • 3.1 索引策略
      • 3.1.1 索引方法
      • 3.1.2 文档表示策略
    • 3.2 用于检索的 Docids 表示
    • 3.3 训练和优化
  • 4. 实验
    • 4.1 基线
    • 4.2 实验结果
  • 5. 结论
  • 参考资料


原文链接:https://proceedings.neurips.cc/paper_files/paper/2022/file/892840a6123b5ec99ebaab8be1530fba-Paper-Conference.pdf
(2022)


摘要

在本文中,我们证明可以使用单个 Transformer 来完成信息检索,其中有关语料库的所有信息都编码在模型的参数中。为此,我们引入了可微搜索索引(DSI),这是一种新的范例,它学习文本到文本的模型,将字符串查询直接映射到相关的文档 id;换句话说,DSI 模型仅使用其参数直接回答查询,从而极大地简化了整个检索过程。我们研究文档及其标识符的表示方式的变化、训练程序的变化以及模型和语料库大小之间的相互作用。实验表明,如果选择适当的设计,DSI 的性能显着优于双编码器模型等强基线。此外,DSI 展示了强大的泛化能力,在零样本设置中优于 BM25 基线。

1. 引言

信息检索 (IR) 系统将用户查询 q ∈ Q 映射到相关文档的排序列表 {d1,… , dn} ⊆ D,通常由称为文档标识符 (docids) 的整数或短字符串表示。最广泛使用的 IR 方法基于流水线 “ 检索然后排序 ” 策略。对于检索,基于倒排索引或最近邻搜索的方法很常见,其中基于对比学习的双编码器(DE)(Gillick 等人,2018;Karpukhin 等人,2020;Ni 等人,2021)是当前的soat。

本文提出了一种替代架构,其中使用序列到序列(seq2seq)学习系统(Sutskever 等人,2014)将查询 q 直接映射到相关的 docid j ∈ Y。该建议显示在下半部分图 1 的序列到序列编码器-解码器架构。
在这里插入图片描述

我们将这种提出的架构称为可微搜索索引(DSI),并使用大型预训练 Transformer(V aswani 等人,2017)模型来实现它,该模型建立在大型生成语言模型(LM)(Brown 等人)最近成功的基础上,2020;Raffel 等,2019;Devlin 等,2018;Thoppilan 等,2022;Du 等,2021)。在这个提出的架构中,语料库的所有信息都被编码在 Transformer 语言模型的参数内。

在推理时,训练后的模型将文本查询 q 作为输入并输出 docid j。如果需要,可以使用集束搜索来生成潜在相关 docid 的排名列表。正如我们所展示的,如果训练得当,这个过程可以出奇地顺利。在我们的实验中,它可以始终优于 DE 基线,有时甚至远远超过:对于 base 大小的 T5 模型,最小语料库上的 Hits@1 提高了 20 多个点,从 DE 的 12.4% 提高到 DSI 的 33.9%;在 30 倍大的语料库上,性能提高了近 7 个百分点。当使用更大的模型时,这些增益会增加:对于 11B 参数的 T5 模型,Hits@1 性能在小语料库上比 DE 提高了 25 点以上,在大语料库上提高了 15 点以上。 DSI 在零样本设置中也表现得非常好,例如,Hits@1 比 BM25 提高了 14 点。

除了这些定量收益之外,DSI 架构比 DE 简单得多(参见表 1)。DE 系统固定搜索过程 (MIPS,Maximal Inner Product Search) 并学习内部表示来优化该搜索过程的性能;相反,DSI 系统不包含特殊用途的固定搜索过程,而是使用标准模型推理从编码映射到 docids。

正如表 1 所示,机器学习社区特别感兴趣的是,在 DSI 中,检索的所有方面都被映射到易于理解的 ML 任务中。这可能会带来新的潜在方法来解决长期存在的IR问题。举一个例子,由于索引现在是模型训练的一种特殊情况,因此增量更新索引成为模型更新的一种特殊情况(Sun 等人,2020)。
(通过训练模型来建立索引)

在本文中,DSI 应用于中等规模的语料库(从 10k 到 320k 文档),所有这些都源自一项具有挑战性的检索任务,我们将 DSI 扩展到更大语料库的重要问题留给未来的工作。考虑的任务是从自然问题(NQ)数据集中检索给定问题的支持段落,这对于词汇模型来说是一项具有挑战性的任务。

虽然 DSI 的想法很简单,但实现它的方法有很多种,其中一些方法效果出奇的好,而另一些方法的效果却出奇的差。下面我们探讨 DSI 架构的多种变体。
在这里插入图片描述

文档表示
我们探索了几种表示文档的方法,包括使用文档全文的“简单”方法,以及传统 IR 引擎使用的词袋表示的变体。

Docid 表示
我们研究了几种表示 docids 的方法。除了将整数简单地表示为文本字符串之外,我们还考虑非结构化原子文档ID,其中每个文档都被分配一个唯一的标记,以及一些用于构建结构化语义文档ID的简单基线,这些文档描述如何通过语料库的层次聚类导航到文档。结构化文档ID(通过聚类进行语义结构化,或者简单地结构化为标记化整数)可以更好地扩展到大型语料库,因为解码器中使用的词汇量更大。

索引
可训练的 IR 系统传统上有两个阶段:对语料库建立索引(即记住每个文档的信息),以及学习如何有效地从索引中检索。在DSI中,索引存储在模型参数中,索引只是另一种模型训练。图 1 提出了一种对语料库进行索引的方法:即,训练 (1) 示例 (dj, j),将文档 dj 与其 docid j 配对, (2) 示例 (q, j) 将查询 q 与相关 docid j 配对。在此设置中,类型 (1) 的示例是“索引”示例。
虽然很明显,类型(2)的示例本身并不能为系统提供足够的信息来推广到新颖的检索,但类型(1)的示例有许多替代方案,可以合理地“teach”模型文档和docid之间的关系。我们在下面探讨了其中的一些,并表明一些看似合理的技术表现非常差。我们还探索了许多替代的多任务优化和课程学习方案来结合这些类型的示例。

1)如何表示文档;2)如何表示文档id
a)如何建立文档与文档id的联系;b)如何建立query与文档id的联系

模型和语料库大小的影响
由于最近的结果表明,大型 LM 的某些属性仅在非常大的模型大小下出现(Brown 等人(2020)),因此我们探索了 DSI 对于一系列模型大小和 10k、100k 和 320k 文档的语料库大小的性能。

总结
我们证明,即使是简单的文档和 docids 表示,再加上适当的训练程序来微调现代大型 LM,也能表现得令人惊讶地好;我们提出了两种改进的 docid 表示,即非结构化 docids 和语义结构化 docid,它们改进了朴素表示选择。我们表明,索引/训练策略之间的性能存在很大差异,并且 DSI 的性能随着模型规模的扩大而显着且持续地提高。据我们所知,这是生成索引在经过充分研究的文档检索任务的强基线上提高性能的第一个案例。
1)docid 的两种表示方式
2)index / train 的策略对于性能有很大影响
3)DSI 性能跟模型规模相关

2. 相关工作

De Cao 等人 (2020) 描述了一种称为自回归实体链接的相关序列到序列系统,其中提及实体的文档(可能是隐式的,例如通过提出该实体作为答案的问题)被映射到规范该实体的名称。就维基百科而言,规范实体名称对应于页面标题,因此这可以被视为一种文档检索。这种方法已适应其他目的,例如以规范形式生成知识库三元组(Josifoski 等人,2021)。我们考虑的任务与自回归实体链接中考虑的任务不同:我们的目标是检索包含答案的文档,而不是标题是答案的文档。更重要的是,在自回归实体中,链接生成目标是一个语义上有意义的名称,而我们允许目标是任意的 docids。这使得我们的方法适用于一般检索任务,但提出了有关文档id表示和索引策略的新问题。

在自回归实体链接中,生成被限制为从固定集合返回输出。将 DSI 生成输出限制为有效的 docids 是可行的。尽管我们不使用这种技术,但它能在多大程度上提高性能是一个值得思考的问题。
不使用限制生成

在检索增强生成方面有大量工作,即检索辅助文档以增强语言模型(Borgeaud 等人,2021;Guu 等人,2020)。这些技术对于包括问答在内的许多任务都很有用,但依赖于传统的检索方法,例如 DE。在这里,我们使用生成来代替检索过程,而不是使用检索来增强生成过程。

双编码器(Dehghani 等人,2017;Gillick 等人,2018;Gao 等人,2021;Ni 等人,2021;Karpukhin 等人,2020)是一种成熟的检索范例。关键思想是独立生成查询和文档嵌入,并在向量空间中跨所有嵌入对执行相似性检索。查询和候选文档由序列编码器生成,并使用对比损失的形式进行训练。

之前的工作已经研究过将大型 Transformer 模型解释为内存存储。 (Roberts 等人,2020)在闭卷 QA 任务上取得了成功,他们训练 T5 模型以检索在预训练期间在模型参数中编码的事实。然而,与 CBQA 不同的是,本文提出的问题是基于 docids 检索完整文档,而不是生成直接答案。同时,(Petroni et al, 2019)还研究了作为知识库的语言模型,发现预训练的语言模型可能已经包含关系知识。 (Geva 等人,2020)分析了 Transformer 前馈层中编码的知识。还有一些作品证明了 Transformers 与联想记忆和 Hopfield 网络的关系(Ramsauer 等人,2020),这强化了 Transformers 应该直观地充当良好的联想记忆存储或搜索索引的概念。

3. 可微搜索索引

所提出的可微搜索索引(DSI)背后的核心思想是在单个神经模型中完全参数化传统的多阶段检索然后排名管道。为此,DSI 模型必须支持两种基本操作模式:

索引
DSI 模型应该学会将每个文档 dj 的内容与其相应的 docid j 相关联。本文采用简单的序列到序列(seq2seq)方法,将文档标记作为输入并生成标识符作为输出。
检索
给定输入查询,DSI 模型应返回候选 docid 的排序列表。在这里,这是通过自回归生成来实现的。

在这两个操作之后,可以训练 DSI 模型来索引文档语料库,并可选择对可用的标记数据集(查询和标记文档)进行微调,然后用于检索相关文档 - 所有这些都在一个统一的框架内进行。检索然后排序方法相反,这种类型的模型允许简单的端到端训练,并且可以轻松用作更大、更复杂的神经模型的可微分子组件。
可微分的意思是说:搜索索引的结构和算法能够被嵌入到神经网络中,并且能够通过梯度下降等优化算法进行端到端的训练。

3.1 索引策略

我们研究了各种旨在了解文档及其标识符之间关联的索引策略。我们训练模型来根据给定的文档标记序列来预测 docids。这使得我们的模型能够了解哪个标识符属于哪个文档,并且可以被视为传统搜索索引的可微分形式。我们考虑各种替代方案,并在后续部分中取消这些设置。最终采用的策略是带有直接索引的Inputs2Targets。
索引策略:直接索引(doc前 k 个token)+ Inputs2Targets(doc--》docid)

3.1.1 索引方法

本节讨论我们考虑的索引任务变体。

Inputs2Target
我们将其构建为 doc_tokens → docid 的 seq2seq 任务。顾名思义,这以一种简单的目标输入方式将 docids 绑定到文档标记。这里的优点是标识符是去噪目标,这使其更接近损失函数。由于检索任务还涉及预测标识符,因此该公式允许网络在序列长度方面遵循类似的输入目标平衡。一个潜在的弱点是文档标记不是去噪目标,因此没有机会对文档标记进行一般预训练。

Targets2Input
该公式考虑了与上述相反的情况,即从标识符生成文档标记,即 docid → doc_tokens。直观上,这相当于训练一个以 docid 为条件的自回归语言模型。

Bidirectional
此公式在同一协同训练设置中训练 Inputs2Targets 和 Targets2Inputs。前置前缀标记是为了让模型知道任务正在执行的方向。

Span Corruption
我们还探索了一种执行基于跨度损坏的去噪的设置(Raffel 等人,2019),其中包含 docid 令牌。在这种方法中,我们将标识符连接到文档标记作为前缀,可以在跨度损坏目标中随机屏蔽为跨度。该方法的优点是(1)在索引期间也执行一般预训练,(2)实现 docids 作为去噪目标和输入的良好平衡。将 docid 作为屏蔽 span。

3.1.2 文档表示策略

在上一节中,我们探讨了“如何索引”。本节研究“索引什么?”,即如何最好地表示 doc_tokens。我们在这里陈述我们的选择,并在稍后的实验中仔细消除它们。最终最好的选择是直接索引方法。

Direct Indexing
该策略准确地代表了一个文档。我们获取文档的前 L 个标记,并保留顺序,并将它们与 docid 相关联。

Set Indexing
文档可能包含重复的术语和/或非信息性单词(例如,停用词)。此策略使用默认的 Python set(集合)操作来删除重复的术语,并从文档中删除停用词。过滤后文档的其余部分以与直接索引类似的方式传递到模型中。

Inverted Index
该策略将分块文档(连续的标记块)而不是整个文档直接映射到 docid。我们对 k 个标记的单个连续块进行随机下采样,并将它们与 docid 相关联。这种方法的主要优点是允许查看前 k 个标记之外的内容。

3.2 用于检索的 Docids 表示

基于 seq2seq 的 DSI 模型中的检索是通过解码给定输入查询的 docids 来完成的。如何有效地进行解码很大程度上取决于 docids 在模型中的表示方式。本节的其余部分探讨了表示 docids 的多种可能方法以及如何处理每种方法的解码。

非结构化原子标识符
表示文档的最简单的方法是为每个文档分配一个任意(并且可能是随机的)唯一整数标识符。我们将它们称为非结构化原子标识符。有了这些标识符,一个明显的解码公式是学习标识符的概率分布。在这种情况下,模型经过训练,为每个唯一的 docid (|Ndocuments|) 发出一个 logit。这类似于标准语言模型中的输出层,但扩展为包括 docids。为了适应这一点,我们扩展了标准语言模型的输出词汇,如下所示:

请添加图片描述
在哪里 [; ] 是逐行串联运算符,Wtokens ∈ Rdmodel×|Ntokens|且 Wdocs ∈ Rdmodel×|Ndocuments|。 hlast 是解码器堆栈的最后一层的隐藏状态(ε Rdmodel)。要检索给定查询的前 k 个文档,我们只需对输出 logits 进行排序并返回相应的索引。这也让人想起标准的列表学习,其中所有文档都被同时考虑进行排名。

简单结构化的字符串标识符
我们还考虑了一种表面上荒谬的方法,它将非结构化标识符(即任意唯一整数)视为可标记的字符串。我们将这些称为简单的结构化标识符。在此公式中,检索是通过一次一个标记顺序解码 docid 字符串来完成的。这消除了对非结构化原子标识符附带的大型 softmax 输出空间的需要。它还消除了学习每个单独的 docid 嵌入的需要。解码时,使用波束搜索来获得预测的最佳docid。通过这种策略,获得 top-k 排名就不那么简单了。人们可以详尽地梳理整个 docid 空间并获得给定查询的每个 docid 的可能性。相反,我们使用部分波束搜索树来构建 top-k 检索分数。我们发现这种近似在实践中非常有效。

语义结构标识符
迄今为止,用于表示 docids 的所有方法都假设标识符是以任意方式分配的。虽然探索任意标识符的限制非常有趣,但直观的是,将语义结构注入文档空间可以带来更好的索引和检索功能。因此,本节探讨语义结构化标识符。
具体来说,我们的目标是自动创建满足以下属性的标识符:(1) docid 应捕获有关其关联文档语义的一些信息,(2) docid 的结构应能够有效减少搜索空间每个解码步骤。这会产生语义相似的文档共享标识符前缀的标识符。
在这项工作中,我们将其视为完全无监督的预处理步骤。然而,作为未来工作的一部分,有可能以完全端到端的方式集成并自动学习语义标识符。
为了构造具有此属性的标识符,我们在文档嵌入上采用简单的层次聚类过程来生成十进制树(或更一般地说,trie树)。
给定一个要索引的语料库,所有文档都分为 10 个簇。每个文档都分配有一个标识符,其簇号为 0-9。对于包含超过 c 个文档的每个簇,递归应用该算法,并将下一级的结果(标识符的剩余后缀)附加到现有标识符。
对于具有 c 个或更少文档的簇,每个元素都被分配一个从 0 到最多 c-1 的任意数字,同样,它的数字会附加到现有标识符后。虽然这个特定过程会产生十进制树,但可以使用任意数量的其他合理策略来产生类似类型的尝试。在实践中,我们简单地将 k 均值应用于小型 8 层 BERT 模型生成的嵌入,其中 c = 100. 我们在算法 1 中包含此过程的伪代码。
在这里插入图片描述

3.3 训练和优化

我们训练的 DSI 模型针对 seq2seq 交叉熵损失进行了优化,并使用教师强制进行训练。我们探索了训练 DSI 模型的两种主要策略。
1)第一个也是更直接的策略是首先训练模型来执行索引(记忆),然后是微调阶段,其中训练的模型用于将查询映射到 docids(例如检索)。
2)第二个策略是在多任务设置中一起训练他们。为此,我们以与 T5 式协同训练类似的方式构建协同训练任务(例如,使用任务提示来区分它们)。后者的表现明显更好,特别是当索引与检索任务示例的比例很高时。因此,我们采用多任务学习作为默认策略。
联合训练是类似于 T5 任务提示的方式,本工作使用联合训练 / 多任务学习方式

在这里,我们观察到我们的设置是独特的,与传统的多任务学习或迁移学习不同。在典型的多任务设置中,两个任务具有共同点,如果一起学习,可以提高这两个任务的性能。然而,在我们的设置中,检索任务完全依赖于索引任务。特别是,如果没有索引任务,检索任务所利用的标识符将完全没有意义。因此,为了解决任务 B(检索),模型需要足够好地学习任务 A(索引)。这个问题设置提出了 ML 社区可能感兴趣的独特且很大程度上尚未探索的研究挑战。

4. 实验

在本节中,我们讨论我们的实验设置、使用的数据集和比较的基线。我们还讨论了本文前面部分讨论的实验结果、发现和各种策略的效果。由于这是一个相当新的概念,因此这项工作旨在提出 “ 概念验证 ” 并寻求回答研究问题,而不是进行“sotaesque”比较。我们将其他设置和基线的广泛比较留给未来的工作。
重点在验证概念,而不是比较方法

数据集
我们在具有挑战性的自然问题(NQ)(Kwiatkowski 等人,2019)数据集上进行了实验。 NQ 由 307K 个查询-文档训练对和 8K 验证对组成,其中查询是自然语言问题,文档是维基百科文章。给定一个问题,检索任务是识别回答该问题的维基百科文章。为了评估 DSI 模型在不同规模下的表现,我们从 NQ 构建了三个集合来形成我们的测试床,即 NQ10K、NQ100K 和 NQ320K,表示组合训练和验证分割中不同数量的总查询文档对。 NQ320K 是完整的 NQ 集,并使用其预定的训练和验证分割来进行评估。与 NQ320K 不同,NQ10K 和 NQ100K 构建随机采样的验证集。对于所有数据集,我们对所有非结构化原子和朴素结构化标识符实验使用相同的 320K 令牌的文档空间/预算。为每个数据集单独生成语义结构化标识符,以防止语义信息从较大的分割泄漏到较小的分割中。文本为小写。请注意,这些数据集中存在的唯一文档少于查询文档对。请参阅表4(附录),其中报告了这些数据集的统计数据。

评价
我们在 Hits@N 上评估我们的模型,其中 N={1, 10}。该指标报告排名前 N 个预测的正确文档的比例。

实现细节
所有 DSI 模型均使用标准预训练 T5(Raffel 等人,2019)模型配置进行初始化。配置名称和相应的模型参数数量为:Base (0.2B)、Large (0.8B)、XL (3B) 和 XXL (11B)。1)对于非结构化原子标识符运行,我们将标识符随机初始化为新参数,并且仅在索引阶段微调权重。我们使用 Jax/T5X 2 实现进行实验。 DSI 模型使用 128 的批量大小进行最多 1M 步骤的训练。我们根据检索验证性能选择最佳检查点。我们的训练硬件由 128-256 个 TPUv4 芯片(用于 1B 参数以上的模型)和 64-128 个 TPUv3 或 TPUv4 芯片组成。据估计,NQ320K 参数高于 1B 的模型通常至少需要一整天的时间才能收敛。我们在 {0.001, 0.0005} 之间调整学习率,并在 {10K, 100K, 200K, 300K} 和/或无之间调整线性预热。
2)语义结构化标识符是使用 8 层 BERT(Devlin 等人,2018)模型和 scikit-learn 中默认的 k-means 聚类生成的。基于我们对各种 DSI 设置的早期消融实验,给出的主要结果使用直接索引 (L = 32) 和 Inputs2Targets 索引策略。我们展示了所有文档id表示方法的结果。在主要结果之后,我们介绍了我们的消融研究。

4.1 基线

对于基线,我们使用 (Ni et al, 2021) 实现的基于 T5 的双编码器。我们使用 gensim4包来计算 BM25 分数。
1)对于基于 T5 的双编码器,我们对 NQ 对进行对比学习进行训练,直到收敛(约 10K 步),并使用类似于 ScaNN 的系统获得前 k 个最近邻(Guo 等人,2020)。
2)对于零样本检索,我们还与最先进的无监督基线 Sentence T5(Ni 等人,2021)进行比较,该基线经过相似性学习任务的专门预训练。我们考虑(Ni et al, 2021)这项工作的相关双编码器基线而不是其他密集检索工作(例如 DPR)(Karpukhin et al, 2020)有两个原因。首先,我们采用完全相同的预训练模型,它允许系统地消除所提出的方法,而不会合并其他因素。从科学角度来说,我们相信与微调 T5 的比较是我们提供的最佳同类比较。其次,微调 T5 双编码器被认为在架构和方法上与 DPR 非常相似(有一些细微的差别,例如参数共享,但使用相同的批内负片概念)。

4.2 实验结果

表 2 报告了经过微调的 NQ10K、NQ100K 和 NQ320K 的检索结果,表 3 报告了零样本检索结果。对于零样本检索,模型仅针对索引任务而不是检索任务进行训练,因此模型看不到带标签的 query → docid 数据。附录第 7.2 节报告了有关 DSI 索引性能和训练动态的扩展结果。

监督微调结果
我们的结果表明,DSI 在所有数据集大小上都优于 DE。在小数据集(NQ10K)上,DSI 和 DE 之间的性能差距很大,例如,最好的 DSI 变体比 DE 性能好 2 倍。在 NQ100K 上,差距变得不那么明显,最佳 DSI 模型(非结构化原子标识符)的 Hits@1 和 Hits@10 的表现优于 DE +5%。在大型数据集 (NQ320K) 上,最佳 DSI 模型(结构化语义标识符)比最佳 DE 模型的性能高出 +66% 相对 Hits@1 和 +4.5% Hits@10。
请添加图片描述

zero-shot 结果
零样本是只训练索引,不训练检索。
表 3 报告了零样本检索的结果。回想一下,零样本检索是通过仅执行索引而不执行检索任务来执行的。换句话说,模型看不到任何带注释的查询或文档对。一般来说,在 NQ100K 和 NQ320K 上通过使用非结构化原子标识符的 DSI 可以获得最佳结果。
所有 NQ 数据集上的最佳性能均优于 BM25 等完善的无监督检索基线。此外,DSI 优于无监督表示学习方法,例如 SentenceT5(Ni 等人,2021),该方法经过训练以通过对比学习来学习相似性感知表示。我们还注意到,原始 T5 嵌入的性能极差,并且在无监督检索任务中无法产生合理的结果。鉴于无监督神经方法通常很难超越 BM25,我们发现这些早期结果非常令人鼓舞。
在这里插入图片描述

文档标识符
本文的一个关键研究问题是如何表示 docids 的关键选择。一般来说,我们发现结构化语义标识符很有帮助,并且比非结构化标识符有所改进。在比较朴素字符串标识符和语义字符串标识符时,如果可能的话,似乎必须使用语义标识符。这是直观的,因为向目标空间注入语义结构可以促进更轻松的优化和额外的无监督表示学习方法作为外部知识。非结构化原子标识符的竞争力有些好坏参半,我们在优化此类模型时遇到了一些困难。我们假设这可能是因为新初始化的 softmax 层,并且从头开始训练这样的系统可以缓解这些问题。然而,我们将这一调查线推迟到未来的工作中。由于非结构化原子标识符的不稳定性和高方差,不同数据集的性能并不一致。此外,这些文档也可能会遇到间歇性不收敛的情况,我们可以追溯到与优化相关的怪癖。然而,我们还注意到,非结构化原子标识符在零样本检索设置上表现最好,并且性能通常比波束解码方法高出一倍以上。

索引策略
在本节中,我们探讨不同索引方法的效果(第 3.1.1 节)。我们使用前面描述的不同索引策略在 NQ100K 上进行实验。使用 Naive Docid 方法训练模型。在没有索引的情况下,该模型实现了 0% Hits@1。这是直观的,因为如果没有索引任务,文档就没有意义。其次,Inputs2Targets 和双向公式表现最好,与前者相比,双向方法表现稍差(13.5 比 13.2)。最后,Targets2Inputs 的准确性和 Docids 的 Span Corrpution 没有产生任何有意义的结果(0% 准确性)。这表明索引策略之间可能存在巨大差异,有些策略效果相当好,有些则完全不起作用。
不同的索引策略,效果差距很大。(索引策略:利用模型训练 doc--》docid)

文档表示
在本节中,我们将探讨第 3.1.2 节中描述的不同文档表示策略的性能。图 5 报告了 NQ320K 上的结果。总的来说,我们发现直接索引方法效果最好。我们还发现,由于 docid 反复暴露于不同的 token,因此很难训练倒排索引方法。我们还发现,较短的文档长度似乎在性能似乎大幅下降到超过 64 个标记的情况下效果很好,这表明当文档标记数量较多时,优化或有效记忆可能会更加困难。最后,我们还发现对文档标记应用集合处理或停用词预处理没有额外的优势。
使用少量的 token 表示文档反而更好。
在这里插入图片描述
Scaling Laws
另一个有趣的见解是 DSI 的缩放法则与双编码器有何不同。近年来,了解 Transformer 的缩放行为引起了人们的极大兴趣(Kaplan 等人,2020;Tay 等人,2021;Abnar 等人,2021)。我们发现,在 DE 中增加模型参数化所获得的检索性能增益似乎相对较小。相反,DSI 的扩展特性似乎更为乐观。图 3 绘制了三种方法(具有朴素 ID 和语义 ID 的 DE 和 DSI)的缩放行为(对数刻度)。 DSI(天真的)从从基础到 XXL 的规模中受益匪浅,并且似乎仍有改进的空间。与此同时,DSI(语义)一开始与 DE 基础具有同样的竞争力,但在规模方面表现得更好。不幸的是,DE 模型在较小的参数化下或多或少处于稳定状态。
在这里插入图片描述

索引和检索之间的相互作用
我们早期的实验表明,首先学习索引任务,然后按顺序学习检索任务会导致表现平庸。在那里,我们专注于探索使用多任务学习共同训练索引和检索任务的良好比率 r。图 4 显示了修改索引与检索样本比率的效果。我们发现优化过程受到索引和检索任务之间相互作用的显着影响。将 r 设置得太高或太低通常会导致性能不佳。我们发现 32 的比率通常表现良好。
1)先 index,然后 retrieve 效果不好
2)index / retrieve = 32,效果最好
在这里插入图片描述

5. 结论

本文提出了可微分搜索索引(DSI),这是一种以统一方式学习端到端搜索系统的新范式,为下一代搜索铺平了道路(Metzler et al, 2021)。我们定义了新颖的索引和检索任务,将术语和文档之间的关系完全编码在 Transformer 模型的参数内。论文提出了多种不同的方式来表示文档和docid,并探索了不同的模型架构和模型训练策略。在 Natural Questions 数据集上进行的实验表明,无论是在标准微调设置还是零样本设置中,DSI 的性能都优于 BM25 和双编码器等常见基线。尽管这里提出的模型和结果很有希望,但基于这项工作可以探索大量潜在的未来研究来改进这种方法。例如,探索表示文档和文档id的替代策略,以及研究专家混合模型(Du et al, 2021; Fedus et al, 2021; Lepikhin et al, 2020)来扩展DSI 的内存容量。一个重要的方向也是探索如何针对动态语料库更新此类模型,其中可以在系统中添加或删除文档。最后,进一步研究 DSI 作为一种无监督表示学习方法和/或内存存储以供其他语言模型利用也可能很有趣。

参考资料

【1】TPU:https://zhuanlan.zhihu.com/p/619847662

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1484811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的口罩识别系统(Python+PySide6界面+训练代码)

摘要:开发口罩识别系统对于提升公共卫生安全和疫情防控具有重要意义。本篇博客详细介绍了如何利用深度学习构建一个口罩识别系统,并提供了完整的实现代码。该系统基于强大的YOLOv8算法,并结合了YOLOv7、YOLOv6、YOLOv5的对比,给出…

【接口测试】常见HTTP面试题

目录 HTTP GET 和 POST 的区别 GET 和 POST 方法都是安全和幂等的吗 接口幂等实现方式 说说 post 请求的几种参数格式是什么样的? HTTP特性 HTTP(1.1) 的优点有哪些? HTTP(1.1) 的缺点有哪些&#x…

django的模板渲染中的【高级定制】:按数据下标id来提取数据

需求: 1:在一个页面中显示一张数据表的数据 2:不能使用遍历的方式 3:页面中的数据允许通过admin后台来进行修改 4:把一张数据表的某些内容渲染到[xxx.html]页面 5:如公司的新商品页面,已有固定的…

【Redis | 第四篇】基于布隆过滤器解决Redis穿透问题

文章目录 4.基于布隆过滤器解决Redis穿透问题4.1什么是redis的穿透问题4.2解决穿透问题4.3布隆过滤器4.3.1思想4.3.2特点4.3.3缺点 4.4基于Springboot实现布隆过滤器4.4.1导入依赖4.4.2yml配置4.4.3两个工具类(1)BloomFilterHelper(2&#xf…

李沐动手学习深度学习——4.2练习

1. 在所有其他参数保持不变的情况下,更改超参数num_hiddens的值,并查看此超参数的变化对结果有何影响。确定此超参数的最佳值。 通过改变隐藏层的数量,导致就是函数拟合复杂度下降,隐藏层过多可能导致过拟合,而过少导…

KubeSphere平台安装系列之二【Linux单节点部署KubeSphere】(2/3)

**《KubeSphere平台安装系列》** 【Kubernetes上安装KubeSphere(亲测–实操完整版)】(1/3) 【Linux单节点部署KubeSphere】(2/3) 【Linux多节点部署KubeSphere】(3/3) **《KubeS…

Matlab 机器人工具箱 运动学

文章目录 R.fkine()R.ikine()R.ikine6s()R.jacob0、R.jacobn、R.jacob_dotjtrajctraj参考链接官网:Robotics Toolbox - Peter Corke R.fkine() 正运动学,根据关节坐标求末端执行器位姿 mdl_puma560; % 加载puma560模型 qz % 零角度 qr

备战蓝桥杯---状态压缩DP基础2之TSP问题

先来一个题衔接一下: 与上一题的思路差不多,不过这里有几点需要注意: 1.因为某一列的状态还与上上一行有关,因此我们令f[i][j][k]表示第i行状态为j,第i-1行状态为k的最大炮兵数。 因此,我们可以得到状态转移方程&…

IDEA的安装教程

1、下载软件安装包 官网下载:https://www.jetbrains.com/idea/ 2、开始安装IDEA软件 解压安装包,找到对应的idea可执行文件,右键选择以管理员身份运行,执行安装操作 3、运行之后,点击NEXT,进入下一步 4、…

电子科技大学《数据库原理及应用》(持续更新)

前言 电子科技大学的数据库课程缩减了部分的课时,因此,可能并不适合所有要学习数据库的宝子们,但是,本人尽量将所有数据库的内容写出来。本文章适用于本科生的期中和期末的复习,电子科技大学的考生请在复习前先看必读…

【算法】顺时针打印矩阵(图文详解,代码详细注释

目录 题目 代码如下: 题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则打印出数字:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 这一道题乍一看,没有包含任何复杂的数据结构和…

Android Gradle开发与应用 (三) : Groovy语法概念与闭包

1. Groovy介绍 Groovy是一种基于Java平台的动态编程语言,与Java是完全兼容,除此之外有很多的语法糖来方便我们开发。Groovy代码能够直接运行在Java虚拟机(JVM)上,也可以被编译成Java字节码文件。 以下是Groovy的一些…

驾辰龙跨Llama持Wasm,玩转Yi模型迎新春

今年新年很特别,AI工具添光彩。今天就来感受下最新的AI神器天选组合“WasmEdgeYi-34B”,只要短短三步,为这个甲辰龙年带来一份九紫离火运的科技感。 环境准备 这次用的算力是OpenBayes提供的英伟达RTX_4090*1、24GB显存、20核CPU、80GB内存…

【论文笔记】Mamba:挑战Transformer地位的新架构

Mamba Mamba: Linear-Time Sequence Modeling with Selective State Spaces Mamba Mamba摘要背景存在的问题本文的做法实验结果 文章内容Transformer的缺点Structured state space sequence models (SSMs)介绍本文的工作模型介绍State Space ModelsSelective State Space Mod…

docker三剑客compose+machine+swarm小结

背景 在容器领域,不少公司会使用docker三剑客composemachineswarm进行容器编排和部署,本文就简单记录下这几个工具的用法 三剑客composemachineswarm compose compose主要是用于容器编排,我们部署容器时,容器之间会有依赖&…

git的安装、使用

文章目录 安装gitgit学习网站git初始配置具体配置信息 新建版本库(仓库)git的工作区域和文件状态工作区域文件状态git文件提交的基础指令 git基础指令1. 版本提交2. 分支创建3. 分支切换4. 分支合并(1) git merge(2) git rebase 5. 在git的提交树上移动(…

vue+springboot项目部署服务器

项目仓库:vuespringboot-demo: vuespringboot增删改查的demo (gitee.com) ①vue中修改配置 在public文件夹下新建config.json文件: {"serverUrl": "http://localhost:9090"//这里localhost在打包后记得修改为服务器公网ip } 然后…

三天学会阿里分布式事务框架Seata-seata事务日志mysql持久化配置

锋哥原创的分布式事务框架Seata视频教程: 实战阿里分布式事务框架Seata视频教程(无废话,通俗易懂版)_哔哩哔哩_bilibili实战阿里分布式事务框架Seata视频教程(无废话,通俗易懂版)共计10条视频&…

Java中的Collection

Collection Collection 集合概述和使用 Collection集合概述 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素 JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如Set和List)实现 创建Collection集合的对象 多态的方式 具体的实现类ArrayList C…

Pycharm的下载安装与汉化

一.下载安装包 1.接下来按照步骤来就行 2.然后就能在桌面上找到打开了 3.先建立一个文件夹 二.Pycharm的汉化