自然语言处理(NLP)在回答问题、总结或翻译报告以及分析情感或冒犯性方面取得了令人印象深刻的发展。这一进展在很大程度上归功于训练越来越大的语言模型,如**T5或GPT-3**,它们使用深度单片机架构来内化大量网络抓取的文本中的语言使用方式。在训练过程中,这些模型将它们读取的事实提炼成隐性知识,在它们的参数中不仅储存了 "理解 "语言任务的能力,而且还储存了模型解决任务所需的实体、事件和事实的高度抽象的知识表示。
尽管大型语言模型取得了众所周知的成功,但其黑箱性质阻碍了NLP的关键目标。特别是,现有的大型语言模型通常是:
-
效率低下:研究人员继续扩大这些模型,导致了惊人的低效率,因为该领域已经超过了1万亿个参数。这对环境造成了相当大的影响,而且其成本将除少数大型组织外的所有组织排除在训练或在许多情况下甚至部署这些模型的能力之外。
-
不透明:它们将 "知识 "编码到模型权重中,综合了它们设法从训练实例中记忆到的东西。这使得人们很难辨别模型在进行预测时使用了哪些资源(如果有的话),这在实践中是一个令人担忧的问题,因为这些模型经常产生流畅但不真实的陈述。
-
静态:它们的更新成本很高。我们无法有效地调整在2019年的维基百科文本上训练的GPT模型,使其反映2021年维基百科中编码的知识,或医学预印本服务器medRXiv的最新快照。在实践中,适应往往需要在新的语料库上进行昂贵的重新训练或微调。
这篇文章探讨了一种新兴的替代方法,即基于检索的NLP,其中模型直接 "搜索 "文本语料库中的信息以展示知识,利用语言模型的代表性优势,同时解决上述挑战。这类模型--包括**REALM、RAG、ColBERT-QA和Baleen--已经推动了回答开放领域问题和验证复杂索赔等任务的技术水平,所有这些模型的架构都以可检查的来源支持它们的预测,同时比GPT-3小100-1000倍,因此执行起来要便宜很多。在斯坦福大学,我们已经证明,提高可扩展的神经检索器的表达能力和监督能力可以带来更强大的NLP系统:例如,ColBERT-QA将开放QA基准的答案正确率提高了16个EM点,Baleen将HoVer上的复杂索赔的检查能力提高了42个**百分点,正确并有出处。
基于检索的NLP
基于检索的NLP方法将任务视为 "开卷"考试:知识以维基百科、医学文献或软件的API文档等文本库的形式明确编码。在解决语言任务时,模型学会搜索相关的段落,然后使用检索到的信息来制作知识性的回应。 这样做,检索有助于将语言模型理解文本的能力与它们存储知识的方式解耦,从而带来三个关键的优势。
解决效率低下的问题:基于检索的模型可以更小、更快,因此更环保。与黑盒子语言模型不同,参数不再需要存储一个不断增长的事实列表,因为这样的事实可以被检索到。相反,我们可以将这些参数专门用于处理语言和解决任务,让我们拥有更小的模型,但却非常有效。例如,ColBERT-QA在开放领域的自然问题任务上取得了47.8%的EM,而微调的T5-11B模型(有24倍的参数)和少量的GPT-3模型(有400倍的参数)分别只取得34.8%和29.9%。
应对不透明性:基于检索的NLP为用户提供了一个透明的契约:当模型产生一个答案时,我们可以阅读它所检索到的来源,并自行判断其相关性和可信度。 无论模型在事实上是否正确,这都是至关重要的:通过检查像Baleen这样的系统所浮现的来源,只有当我们发现可靠的来源确实支持它们时,我们才能信任它的输出。
应对静态知识:基于检索的模型强调学习一般的技术,从可用的资源中寻找和连接信息。由于事实是以文本形式存储的,检索知识库可以通过修改文本语料库来有效地更新或扩展,同时模型寻找和使用信息的能力保持不变。除了计算成本的降低,这也加快了通用性:开发人员,即使是在利基领域,也可以 "插入 "一个特定领域的文本集,并依靠检索来促进领域意识的响应。
ColBERT:可扩展但有表现力的神经检索
顾名思义,基于检索的NLP依靠语义丰富的搜索来提取信息。为了使搜索切实有效,它必须扩展到大规模的文本语料库。 借用开卷考试的比喻,在考试期间线性地翻阅厚厚的教科书是没有希望的--我们需要可扩展的策略来提前组织内容,并在推理时找到相关信息的高效技术。
传统上,在IR中,搜索任务是使用像BM25这样的词包模型进行的,它寻求包含与查询相同的标记的文档。2019年,用**BERT进行排名,并在谷歌和必应的网络搜索中部署,使搜索 发生了革命性变化。标准方法如图2(a)**所示。每个文档都与查询串联起来,两者共同输入BERT模型,经过微调以估计相关性。在流行的MS MARCO Passage Ranking排行榜上,BERT比BM25的MRR@10质量指标提高了一倍,但它同时带来了一个基本的限制:对每个查询-文档对进行评分需要数十亿的计算操作(FLOPs)。因此,BERT只能用于重新排列已经被BM25等较简单方法提取的前k(例如前1000)个文档,没有能力恢复词包搜索所遗漏的有用文档。
这种方法的关键限制是它对查询和文档进行联合编码。许多表征相似性系统已经被提出来解决这个问题,其中一些是在图2(b)所描述的范式中重新使用BERT。在这些系统中(如**SBERT和ORQA,以及最近的DPR和ANCE),语料库中的每个文档都被送入一个BERT编码器,该编码器产生一个密集的向量,旨在捕捉文档的语义。在搜索时,查询被单独编码,通过另一个BERT编码器,并使用查询和文档向量之间的点积找到前k个相关文档。通过消除查询和文档之间昂贵的互动,这些模型能够比图2(a**)中的方法更有效地扩展。
然而,表示相似性模型受到了结构上的瓶颈:它们将查询和文档编码为粗粒度的表示,并将相关性建模为一个单一的点积。与昂贵的重新排序器相比,这大大降低了质量,这些重新排序器对查询和文档内容之间的标记级互动进行建模。我们能不能在不影响速度和质量的情况下,有效地将细粒度的上下文互动扩展到大规模的语料库中呢? 事实证明,答案是 "可以 "的,使用一种叫做晚期互动的范式,最早是在我们的ColBERT1[代码]模型中设计的,它出现在SIGIR 2020上。
ColBERT将查询和文件独立编码为细粒度的多矢量表示。然后,它试图在文档中对每个查询标记进行软定位和上下文定位:对于每个查询嵌入,它用 "MaxSim "操作符找到文档中最相似的嵌入,然后将所有的MaxSims相加,对文档进行评分。"MaxSim "是一个谨慎的选择,它允许我们为近似近邻(ANN)搜索的文档嵌入建立索引,使我们能够以几十毫秒的延迟将这种丰富的互动扩展到数百万的通道。例如,ColBERT可以在每次查询中以大约70毫秒的时间搜索英语维基百科的所有段落。 在MS MARCO段落排名中,ColBERT保留了BERT重新排名器的MRR@10质量,同时将召回率@1k提高到近97%,而官方BM25排名的召回率@1k只有81%。
让神经检索器更轻巧仍然是一个活跃的发展领域,像**DeepImpact这样的模型以牺牲一些质量来换取极端形式的效率,而像BPR和量化的ColBERT**这样的发展则在保留DPR和ColBERT的质量的同时,将存储占用率降低一个数量级。
ColBERT-QA和Baleen:专门针对复杂任务的神经检索,有跟踪的出处
虽然扩展表达式搜索机制是至关重要的,但NLP模型需要的不仅仅是找到正确的文件。特别是,我们希望NLP模型能够利用检索来回答问题、事实核查索赔、在对话中作出有价值的回应,或识别一段文本的情感。许多这类任务--被称为知识密集型语言任务--被收集在**KILT**基准中。 最受欢迎的任务是开放领域的问题回答(或称Open-QA)。 系统被赋予一个来自任何领域的问题,并且必须产生一个答案,通常通过参考大型语料库中的段落:
| 基准 | 系统 | 衡量标准 | 收益 | 基准线 |
|---|---|---|---|---|
| 开放领域的问题回答 | ||||
| 开放式自然问题 | 科尔贝特-QA | 答案匹配 | +3 | rag, dpr, realm, bm25+bert |
| 开放式小问题QA | +12 | |||
| 公开赛-QuAD | +17 | |||
| 多跳推理 | ||||
| 热血沸腾QA | Baleen | 检索成功率@20 | +10 / NA | MDR / IRRR |
| 通过率-配对匹配 | +5 / +3 | |||
| 猎手 | 检索成功率@100 | +48 / +17 | TF-IDF / ColBERT-Hop | |
| 索赔验证的 "HoVer得分 " | ||||
| ,有证据证明的。 | +42 | 官方 "TF-IDF + BERT "基线 | ||
| 跨语言的开放域问题回答 | ||||
| XOR TyDi | GAAMA与ColBERT | |||
| ,来自IBM研究院 | Recall@5000-tokens | +10 | 官方 "DPR + Vanilla Transformer "基线 | |
| 零起点信息检索 | ||||
| BEIR | 科尔贝特 | 召回率@100 | 在13/17项任务上优于其他现成的 | |
| 密集检索器 | DPR, ANCE, SERT, ME-QA |
表1:使用ColBERT、ColBERT-QA和Baleen的模型在各种语言任务中的结果。
这个领域的两个流行模型是REALM和RAG,它们依赖于前面讨论的ORQA和DPR检索器。REALM和RAG共同调整了一个检索器以及一个阅读器,这是一个消耗检索到的文件并产生答案或响应的建模组件。以RAG为例:它的读取器是一个生成性的BART模型,它在生成目标输出的同时关注段落。虽然它们构成了走向基于检索的NLP的重要步骤,但REALM和RAG受到两个主要限制。首先,它们使用图2(b)的限制性范式进行检索,从而牺牲了召回率:它们经常无法找到相关的段落来进行任务。其次,在训练检索器时,REALM和RAG通过在训练环路内搜索来收集文件,为了使之实用,它们在微调时冻结了文件编码器,限制了模型对任务的适应。
ColBERT-QA2是一个开放的质量保证系统(在TACL'21上发表),我们在ColBERT的基础上建立,以解决这两个问题。通过使ColBERT的表达式搜索适应任务,ColBERT-QA为更多的问题找到了有用的段落,从而使读者组件能够正确地回答更多的问题并提供证据。 此外,ColBERT-QA引入了相关性引导的监督(RGS),这是一种训练策略,其目标是使ColBERT这样的检索器适应像Open-QA这样的NLP任务的具体情况。RGS分几轮进行,使用前一轮训练的检索器来收集可能对读者有用的 "正面 "段落--具体地说,就是被最新版本的检索器排名很高的段落,而且还与问题的黄金答案重叠--以及挑战 "负面 "段落。通过收敛到高覆盖率的积极段落和有效地抽查困难的消极段落,ColBERT-QA提高了检索成功率@20,在NaturalQuestions、TriviaQA和SQuAD的开放域QA设置上分别提高了5分、5分和12分,从而大大提高了下游的答案匹配。
开放式QA任务的一个更复杂的版本是多跳推理,即系统必须通过从多个来源收集信息来回答问题或验证主张。这个领域的系统,如**GoldEn、MDR和IRRR**,找到相关的文件并在它们之间 "跳跃",通常是通过运行额外的搜索来找到所有相关的来源。虽然这些模型在两跳任务中表现出很强的性能,但由于搜索空间呈指数级增长,要想稳健地扩展到更多的跳数是一个挑战。
为了解决这个问题,我们的Baleen3系统(在NeurIPS'21上被接受为焦点论文)为多跳检索引入了一个更丰富的管道:在每次检索 "跳 "之后,Baleen将段落中的相关信息总结为一个简短的上下文,用于通知未来的跳。这样一来,Baleen从结构上控制了搜索空间--避免了在每一跳中探索每个潜在段落的需要--同时又不牺牲召回率。Baleen还扩展了ColBERT的后期互动:它允许不同文档的表述 "聚焦 "于同一查询的不同部分,因为语料库中的每一个文档都可能满足同一复杂查询的不同方面。 由于其更慎重的架构和更强大的检索模型,Baleen在流行的两跳HotPotQA基准上的检索达到了饱和(将答案召回@20从MDR的89%提高到96%),并在更难的四跳索赔验证基准HoVer上大幅提高了性能,在92%的例子中找到所有需要的段落,而官方基线只有45%,ColBERT的多跳风味只有75%。
在这些任务中,当我们基于检索的模型做出预测时,我们可以检查它们的基本来源,并决定我们是否可以相信这个答案。而当模型的错误源于特定的来源时,这些错误可以被删除或编辑,确保模型忠实于这种编辑是一个积极的工作领域。
用强大的神经检索将模型推广到新领域
除了帮助提高效率和透明度外,检索方法有望使NLP中的领域概括和知识更新变得更加容易。展示最新的、特定领域的知识对许多应用来说是至关重要的:你可能想回答关于COVID-19的最新出版物的问题,或者开发一个聊天机器人,引导客户在快速发展的库存中找到合适的产品。对于这样的应用,NLP模型应该能够利用提供给他们的任何语料库,而不需要为每个新出现的场景或领域训练新版本的模型。
虽然大型语言模型是使用来自网络的大量数据进行训练的,但这种快照是:
-
静态的:网络是随着世界的发展而发展的。维基百科的文章反映了新当选的官员,新闻文章描述了当前的事件,而科学论文则传达了新的研究。尽管如此,一个在2020年训练的语言模型没有办法了解2021年的事件,除非训练和发布一个新版本的模型。
-
不完整:许多主题在C4和The Pile这样的网络抓取中都没有得到充分的体现。假设我们想回答2010-2021年发表的ACL论文的问题;不能保证The Pile包含ACL文集中的所有论文,也没有办法在没有额外训练的情况下临时插入。即使有一些ACL论文存在(例如,通过arXiv,它包括在The Pile中),它们只构成了数据的一小部分,而且很难可靠地将模型限制在专门回答NLP问题的那些论文上。
-
只对公众开放:许多应用取决于私人文本,如公司内部政策、内部软件文档、受版权保护的教科书和小说,或个人电子邮件。由于像GPT-3这样的模型在其训练中从未见过这些数据,因此,如果不进行特别的重新训练或微调,它们从根本上无法表现出与这些主题有关的知识。
通过基于检索的NLP,模型学会了编码和提取信息的有效方法,使它们能够在不借助额外训练的情况下,概括地处理更新的文本、专业领域或私人数据。这表明了一个愿景,即开发者 "插入 "他们的文本语料库,如内部软件文档,由一个强大的基于检索的NLP模型编制索引,然后可以回答问题,解决分类任务,或使用语料库的知识生成摘要,同时始终以语料库的出处支持其预测。
与此相关的一个令人兴奋的基准是BEIR,它评估了检索器在未见过的IR任务(如论点检索)和新领域(如COVID-19研究文献)中 "开箱即用 "的搜索能力。虽然检索提供了一个将NLP模型推广到新领域的具体机制,但并不是每个IR模型的推广都是一样的:BEIR的评估强调了建模和监督选择对推广的影响。例如,由于其较晚的交互建模,在最初的BEIR评估中,一个普通的现成的ColBERT检索器在所有竞争的IR模型中取得了最强的召回率,在17个数据集中的13个上超过了其他现成的密集检索器,即DPR、ANCE、SBERT和USE-QA。BEIR基准继续快速发展,最近增加的是TAS-B模型,它推进了一种复杂的监督方法,将ColBERT和BERT模型提炼成单矢量表示,在这样做时继承了它们的大部分鲁棒性。虽然检索允许在新领域快速部署,但明确地使检索适应新场景也是可能的。这是一个活跃的研究领域,像QGen和AugDPR**这样的工作产生了合成问题,并利用这些问题明确地对检索器进行微调,以瞄准一个新的语料库。
摘要:检索是 "你需要的全部 "吗?
像T5和GPT-3这样的大型语言模型的黑箱性质使得它们的训练和部署效率低下,它们的知识表示和用出处来支持它们的主张是不透明的,而且在面对不断发展的世界和不同的下游语境时是静态的。 这篇文章探讨了基于检索的NLP,其中模型从插入的文本语料中检索与解决其任务相关的信息。这种模式允许NLP模型利用语言模型的表现力,同时需要更小的架构,为索赔提供透明的证明,并实现高效的更新和适应。
我们调查了这一领域现有的和新出现的许多工作,并强调了我们在斯坦福大学的一些工作,包括**ColBERT通过后期交互将表达式检索扩展到大规模语料库,ColBERT-QA通过使高召回检索适应任务来准确回答开放领域的问题,以及Baleen使用一个浓缩的检索架构来解决需要来自几个独立来源的信息的任务。 我们将继续积极维护我们的代码**作为开放源。