Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

张倩、蛋酱编译

参数量仅为4%,性能媲美GPT-3:开发者图解DeepMind的RETRO

构建越来越大的模型并不是提高性能的唯一方法。

从 BERT 到 GPT-2 再到 GPT-3,大模型的规模是一路看涨,表现也越来越惊艳。增大模型规模已经被证明是一条可行的改进路径,而且 DeepMind 前段时间的一些研究表明:这条路还没有走到头,继续增大模型依然有着可观的收益。

但与此同时,我们也知道,增大模型可能并不是提升性能的唯一路径,前段时间的几个研究也证明了这一点。其中比较有代表性的研究要数 DeepMind 的 RETRO Transformer 和 OpenAI 的 WebGPT。这两项研究表明,如果我们用一种搜索 / 查询信息的方式来增强模型,小一点的生成语言模型也能达到之前大模型才能达到的性能。

在大模型一统天下的今天,这类研究显得非常难能可贵。

在这篇文章中,擅长机器学习可视化的知名博客作者 Jay Alammar 详细分析了 DeepMind 的 RETRO(Retrieval-Enhanced TRansfOrmer)模型。该模型与 GPT-3 性能相当,但参数量仅为 GPT-3 的 4%。

RETRO 整合了从数据库中检索到的信息,将其参数从昂贵的事实和世界知识存储中解放出来。

在 RETRO 之前,研究社区也有一些工作采用了类似的方法,因此本文并不是要解释它的新颖性,而是该模型本身。

将语言信息和世界知识信息分离开来

一般来讲,语言模型的任务就是做填空题,这项任务有时候需要与事实有关的信息,比如
但有时候,如果你对某种语言比较熟悉,你也可以直接猜出空白部分要填什么,例如:
这种区别非常重要,因为大型语言模型将它们所知道的一切都编码到模型参数中。虽然这对于语言信息是有意义的,但是对于事实信息和世界知识信息是无效的。加入检索方法之后,语言模型可以缩小很多。在文本生成过程中,神经数据库可以帮助模型检索它需要的事实信息。
随着训练数据记忆量的减少,我们可以使用较小的语言模型来加速训练。任何人都可以在更小、更便宜的 GPU 上部署这些模型,并根据需要对它们进行调整。

从结构上看,RETRO 是一个编码器 - 解码器模型,就像原始的 Transformer。然而,它在检索数据库的帮助下增加了输入序列。该模型在数据库中找到最可能的序列,并将它们添加到输入中。RETRO 利用它的魔力生成输出预测。

在探索模型架构之前,让我们先深入挖掘一下检索数据库

RETRO 的检索数据库

此处的数据库是一个键值存储(key-value store)数据库。其中 key 是标准的 BERT 句子嵌入,value 是由两部分组成的文本:
  1. Neighbor,用于计算 key;

  2. Completion,原文件中文本的延续。

RETRO 的数据库包含基于 MassiveText 数据集的 2 万亿个多语言 token。neighbor chunk 和 completion chunk 的长度最多为 64 个 token。

RETRO 数据库内部展示了 RETRO 数据库中键值对的示例。

RETRO 将输入提示分成多个 chunk。为简单起见,此处重点关注如何用检索到的文本扩充一个 chunk。但是,模型会针对输入提示中的每个 chunk(第一个 chunk 除外)执行此过程。

数据库查找

在点击 RETRO 之前,输入提示进入 BERT。对输出的上下文向量进行平均以构建句子嵌入向量。然后使用该向量查询数据库

使用 BERT 处理输入提示会生成上下文化的 token 嵌入 。对它们求平均值会产生一个句子嵌入。

然后将该句子嵌入用于近似最近邻搜索。检索两个最近邻,它们的文本成为 RETRO 输入的一部分。

BERT 句子嵌入用于从 RETRO 的神经数据库中检索最近邻。然后将这些添加到语言模型的输入中。

现在 RETRO 的输入是:输入提示及其来自数据库的两个最近邻(及其延续)。

从这里开始,Transformer 和 RETRO 块将信息合并到它们的处理中。

检索到的近邻被添加到语言模型的输入中。然而,它们在模型内部的处理方式略有不同。

高层次的 RETRO 架构

RETRO 的架构由一个编码器堆栈和一个解码器堆栈组成。

RETRO Transformer 由一个编码器堆栈(处理近邻)和一个解码器堆栈(处理输入)组成。

编码器由标准的 Transformer 编码器块(self-attention + FFNN)组成。Retro 使用由两个 Transformer 编码器块组成的编码器。

解码器堆栈包含了两种解码器 block:
  • 标准 Transformer 解码器块(ATTN + FFNN)

  • RETRO 解码器块(ATTN + Chunked cross attention (CCA) + FFNN)

构成 RETRO 的三种 Transformer 模块。

编码器堆栈会处理检索到的近邻,生成后续将用于注意力的 KEYS 和 VALUES 矩阵。

解码器 block 像 GPT 一样处理输入文本。它对提示 token 应用自注意力(因此只关注之前的 token),然后通过 FFNN 层。
只有到达 RETRO 解码器时,它才开始合并检索到的信息。从 9 开始的每个第三个 block 是一个 RETRO block(允许其输入关注近邻)。所以第 9、12、15…32 层是 RETRO block。
下图展示了检索到的信息可以浏览完成提示所需的节点步骤。
原文链接:http://jalammar.github.io/illustrated-retrieval-transformer/
入门复现图解DeepMindRETRO
相关数据
DeepMind机构

DeepMind是一家英国的人工智能公司。公司创建于2010年,最初名称是DeepMind科技(DeepMind Technologies Limited),在2014年被谷歌收购。在2010年由杰米斯·哈萨比斯,谢恩·列格和穆斯塔法·苏莱曼成立创业公司。继AlphaGo之后,Google DeepMind首席执行官杰米斯·哈萨比斯表示将研究用人工智能与人类玩其他游戏,例如即时战略游戏《星际争霸II》(StarCraft II)。深度AI如果能直接使用在其他各种不同领域,除了未来能玩不同的游戏外,例如自动驾驶、投资顾问、音乐评论、甚至司法判决等等目前需要人脑才能处理的工作,基本上也可以直接使用相同的神经网上去学而习得与人类相同的思考力。

https://deepmind.com/
机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

最近邻搜索技术

最邻近搜索(Nearest Neighbor Search, NNS)又称为“最近点搜索”(Closest point search),是一个在尺度空间中寻找最近点的优化问题。问题描述如下:在尺度空间M中给定一个点集S和一个目标点q ∈ M,在S中找到距离q最近的点。很多情况下,M为多维的欧几里得空间,距离由欧几里得距离或曼哈顿距离决定。

自注意力技术

自注意力(Self-attention),有时也称为内部注意力,它是一种涉及单序列不同位置的注意力机制,并能计算序列的表征。自注意力在多种任务中都有非常成功的应用,例如阅读理解、摘要概括、文字蕴含和语句表征等。自注意力这种在序列内部执行 Attention 的方法可以视为搜索序列内部的隐藏关系,这种内部关系对于翻译以及序列任务的性能非常重要。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

数据库技术

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

查询技术

一般来说,查询是询问的一种形式。它在不同的学科里涵义有所不同。在信息检索领域,查询指的是数据库和信息系统对信息检索的精确要求

文本生成技术

文本生成是生成文本的任务,其目的是使人类书写文本难以区分。

语言模型技术

统计式的语言模型是借由一个几率分布,而指派几率给字词所组成的字串。语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。

推荐文章
暂无评论
暂无评论~