完爆GPT3、谷歌PaLM!检索增强模型Atlas刷新知识类小样本任务SOTA

人工智能 新闻
今天介绍的这篇由 Meta AI 推出的论文,便另辟蹊径的将检索增强的方法应用于小样本学习领域。

不知不觉间,大模型+小样本成为了小样本学习领域的主流打法,在许多的任务背景下,一套通用的思路是先标注小数据样本,再从预训练大模型的基础上使用小数据样本进行训练。尽管如我们所见,大模型在一众小样本学习的任务上都取得了惊人的效果,但是它也自然而然的将一些大模型固有的弊病放置在了小样本学习的聚光灯下。

小样本学习期望模型具有依据少量样本完成自主推理的能力,也就是说理想中的模型应该通过做题而掌握解题思路,从而面对新出现的题可以举一反三。然而大模型+小样本的理想且实用的学习能力,似乎却是靠大模型训练期间储存的大量信息来生生把一道题解设答的过程背诵下来,尽管在各个数据集上神勇无比,但总会给人带来疑惑依照这种方法学习出来的学生真的是一个有潜力的学生吗?

图片

而今天介绍的这篇由 Meta AI 推出的论文,便另辟蹊径的将检索增强的方法应用于小样本学习领域,不仅仅用64个示例便在自然问答数据集(Natural Questions)上取得了42%的正确率,同时还对标大模型 PaLM 将参数量减少了 50 倍(540B—>11B),并且在可解释性、可控性、可更新性等方面上都具有其余大模型所不具备的显著优势。

论文题目:Few-shot Learning with Retrieval Augmented Language Models论文链接:https://arxiv.org/pdf/2208.03299.pdf

检索增强溯源

论文一开始,便向大家抛出了一个问题:“在小样本学习领域,使用巨量的参数去存储信息真的是必要的吗?”,纵观大模型的发展,前仆后继的大模型可以乐此不疲的刷SOTA的原因之一,便是其庞大的参数存储了问题所需的信息。从 Transformer 横空出世以来,大模型一直是 NLP 领域的主流范式,而随着大模型的逐步发展,“大”的问题不断暴露,追问所谓“大”的必要性便相当有意义,论文作者从这个问题出发,给予了这个问题否定的答案,而其方法,便是检索增强模型。

图片

溯源检索增强,其实尽管其技术主要被应用于诸如开放域问答、机器阅读以及文本生成等任务之中,但是检索增强的思想可以一直上溯到 NLP 的 RNN 时代。RNN 模型无法解决数据长期依赖关系的硬伤促使研究者们开始广泛探索解决之道,而我们相当熟悉的 Transformer 便使用 Attention 机制有效解决了这个模型记不住的问题,从而开启了预训练大模型的时代。

而在当时,其实还有另外一条路子,便是 Cached LM,它的核心思想在于,既然 RNN 一上考场就有可能记不住,那么干脆就让 RNN 开卷考试,通过引入 Cache 机制,把训练时预测的词语存在 Cache 中,预测时便可以结合 query 与 Cache 索引两方面的信息来完成任务,从而解决当时 RNN 模型的硬伤。

由此,检索增强技术便走上了一条与大模型依赖参数记忆信息的迥然不同的道路。基于检索增强的模型允许引入不同来源的外部知识,而这些检索源有训练语料、外部数据、无监督数据等多种选择。检索增强模型一般由一个检索器与一个生成器构成,通过检索器根据 query 从外部检索源获得相关知识,通过生成器结合 query 与检索到的相关知识进行模型预测。

归根结底,检索增强模型的目标是期望模型不仅学会记忆数据,同时希望模型学会自己找到数据,这点特性在许多知识密集型的任务中具有极大的优势并且检索增强模型也在这些领域取得了巨大的成功,但是检索增强是否适用于小样本学习却不得而知。回到 Meta AI 的这篇论文,便成功试验了检索增强在小样本学习中的应用,Atlas 便应运而生。

图片

模型结构

Atlas 拥有两个子模型,一个检索器与一个语言模型。当面对一个任务时,Atlas 依据输入的问题使用检索器从大量语料中生成出最相关的 top-k 个文档,之后将这些文档与问题 query 一同放入语言模型之中,进而产生出所需的输出。

图片

Atlas 模型的基本训练策略在于,将检索器与语言模型使用同一损失函数共同训练。检索器与语言模型都基于预训练的 Transformer 网络,其中:

  • 检索器基于 Contriever 设计,Contriever 通过无监督数据进行预训练,使用两层编码器,query 与 document 被独立的编码入编码器中,并通过相应输出的点乘获得 query 与 document 的相似度。这种设计使得 Atlas 可以在没有文档标注的情况下训练检索器,从而显著降低内存需求。
  • 语言模型基于 T5 进行训练,将不同文档与 query 相互拼接,由编码器分别独立处理,最后,解码器对于所有检索的段落串联进行 Cross-Attention 得到最后的输出。这种 Fusion-in-Decoder 的方法有利于 Atlas 有效的适应文档数量的扩展。

值得注意的是,作者对比试验了四种损失函数以及不做检索器与语言模型联合训练的情况,结果如下图:

图片

可以看出,在小样本环境下,使用联合训练的方法所得到的正确率显著高于不使用联合训练的正确率,因此,作者得出结论,检索器与语言模型的这种共同训练是 Atlas 获得小样本学习能力的关键。

实验结果

在大规模多任务语言理解任务(MMLU) 中,对比其他模型,Atlas 在参数量只有 11B 的情况下,具有比 15 倍于 Atlas 参数量的 GPT-3 更好的正确率,在引入多任务训练后,在 5-shot 测试上正确率甚至逼近了 25 倍于 Atlas 参数量的 Gopher。

图片

在开放域问答的两个测试数据——NaturalQuestions 以及 TriviaQA 中,对比了 Atlas 与其他模型在 64 个例子上的表现以及全训练集上的表现如下图所示,Atlas 在 64-shot 中取得了新的 SOTA,在 TrivuaQA 上仅用 64 个数据便实现了 84.7% 的准确率。

图片

在事实核查任务(FEVER)中,Atlas 在小样本的表现也显著优于参数量数十倍于 Atlas 的 Gopher 与 ProoFVer,在 15-shot 的任务中,超出了 Gopher 5.1%。

图片

在自家发布的知识密集型自然语言处理任务基准 KILT 上,在一些任务里使用 64 个样本训练的 Atlas 的正确率甚至接近了其他模型使用全样本所获得的正确率,在使用全样本训练 Atlas 后,Atlas 在五个数据集上都刷新了 SOTA。

图片

可解释性、可控性、可更新性

根据这篇论文的研究,检索增强模型不仅兼顾了更小与更好,同时在可解释性方面也拥有其他大模型不具备的显著优势。大模型的黑箱属性,使得研究者很难以利用大模型对模型运行机理进行分析,而检索增强模型可以直接提取其检索到的文档,从而通过分析检索器所检索出的文章,可以获得对 Atlas 工作更好的理解。譬如,论文发现,在抽象代数领域,模型的语料有 73% 借助了维基百科,而在道德相关领域,检索器提取的文档只有3%来源于维基百科,这一点与人类的直觉相符合。如下图左边的统计图,尽管模型更偏好使用 CCNet 的数据,但是在更注重公式与推理的 STEM 领域,维基百科文章的使用率明显上升。

图片

而根据上图右边的统计图作者发现,随着检索出的文章中包含正确答案的次数的升高,模型准确率也不断上升,在文章不包含答案时正确只有 55%,而在答案被提到超过 15 次时,正确率来到了 77%。除此之外,在人为检查了 50 个检索器检索出的文档时,发现其中有 44% 均包含有用的背景信息,显然,这些包含问题背景信息的资料可以为研究者扩展阅读提供很大的帮助。

一般而言,我们往往会认为大模型存在训练数据“泄露”的风险,即有时大模型针对测试问题的回答并非基于模型的学习能力而是基于大模型的记忆能力,也就是说在大模型学习的大量语料中泄露了测试问题的答案,而在这篇论文中,作者通过人为剔除可能会发生泄露的语料信息后,模型正确率从56.4%下降到了55.8%,仅仅下降0.6%,可以看出检索增强的方法可以有效的规避模型作弊的风险。

最后,可更新性也是检索增强模型的一大独特优势,检索增强模型可以无需重新训练而只需更新或替换其依托的语料库实现模型的时时更新。作者通过构造时序数据集,如下图所示,在不更新 Atlas 参数的情况下,仅仅通过使用 2020 年的语料库 Atlas 便实现了 53.1% 的正确率,而有趣的是即使是用2020年的数据微调 T5 ,T5 也没有很好的表现,作者认为,原因很大程度上是由于 T5 的预训练使用的数据是 2020 年以前的数据。

图片

结论

我们可以想象有三个学生,一个学生解题只靠死记硬背,一道数学题可以把答案分毫不差的背诵下来,一个学生就靠查书,遇到不会先去翻找资料找到最合适的再一一作答,而最后一个学生则天资聪明,简单的学习一些教科书上的知识便可以自信去考场挥毫泼墨指点江山。

显然,小样本学习的理想是成为第三个学生,而现实却很可能停留在了第一个学生之上。大模型很好用,但“大”绝不是模型最终的目的,回到小样本学习期望模型具有与人类相似的推理判断与举一反三能力的初心,那么我们可以看到,这篇论文是换个角度也好是前进一步也罢,至少是让那个学生可以轻松一点不往脑袋里装那么多可能大量冗余的知识,而可以拎起一本教科书轻装上阵,或许哪怕允许学生开卷考试带着教科书不断翻查,也会比学生生搬硬套死记硬背更接近智能吧!

图片

责任编辑:张燕妮 来源: 夕小瑶的卖萌屋
相关推荐

2021-12-10 15:46:18

谷歌模型人工智能

2021-09-08 17:23:33

谷歌模型开发

2019-07-02 13:37:23

神经网络运算Python

2024-03-05 09:22:36

2023-11-15 09:23:00

模型AI

2022-04-01 15:30:18

语言模型自然语言AI

2020-09-30 10:56:13

Facebook 开发开源

2022-06-25 21:46:04

模型

2021-08-19 15:48:05

增量攻击网络安全网络攻击

2022-06-07 11:14:23

神经网络AI中科院

2015-10-22 09:05:12

2023-01-30 08:00:00

开发人工智能语言

2022-08-20 07:52:56

语言模型参数PaLM

2023-08-02 12:52:02

谷歌模型

2023-03-01 15:43:49

2023-09-11 09:00:00

检索增强生成大数据模型自然语言处理

2024-01-19 12:51:00

AI数据

2023-05-13 07:27:59

GPT-4PaLM 2人工智能

2022-06-23 12:12:31

达摩院自动驾驶

2021-12-23 10:00:38

谷歌训练技术
点赞
收藏

51CTO技术栈公众号