文 | ZenMoore
编 | 小轶

GPT3 一声枪响,给 NLP 带来了大模型风潮。这么长时间过来,无论是中文还是英文,模型越做越大。当然,这确实是符合逻辑的,因为如果以人脑为向导的话,那么多神经元,不得不需要大参数量来模拟。但是,过于关注“大”本身,是存在很多问题的:一方面,模型规模增大带来的性能增益逐渐饱和,让我们不得不思考“精”这个维度;另一方面,大模型实在臃肿,在部署成本、下游任务适配、绿色、边缘化等等方面,有着难以解决的劣势。

因此,大模型发展至今,我们同样需要重点思考的,是如何把模型做精做强,如何把模型轻量化而效果不减! 毕竟,模型之大有涯,而知也无涯!以有涯随无涯,殆已!

当然,2021 年出现了很多轻量化模型相关的工作,他们的 Motivation 基本都是采用一系列技巧,把模型的 size 减下来,但是 performance 依旧不输给 GPT3、Megatron等等超大模型。例如:使用 Prompting 技术的 T0 模型;使用知识增强、训练策略改进、压缩蒸馏、Prompting 等一系列方案的中文孟子模型 等等。

DeepMind 最近也入局了 NLP 模型,上来就是一套组合拳,总计三篇论文:

  1. 280B 参数的 Transformer 语言模型:Gopher

  2. 大模型的伦理与社会风险研究

  3. 检索增强的自回归语言模型:Retro

我们重点聊一聊第三篇:使用检索增强的方式,不仅减小了模型的参数量,而且效果也非常能打!因此不失为模型轻量化的又一条路:把模型做成 Open System !

论文标题:
Improving language models by retrieving from trillions of tokens

作者机构:
DeepMind

论文链接:
https://arxiv.org/pdf/2112.04426.pdf

方法

1. 检索增强的自回归语言模型

从输入开始,首先将输入文本均分为 个块(chunk), 每个 chunk 总共 个 tokens, 即输入文本长度为 . 这些 chunk 分别 记为 . 对每个 , 从 Rertieval Dataset 召回 个 neighbours, 记为 或者 .

因此,目标函数,即序列的对数似然公式如下:

需要注意的是,.

整个模型的结构是基于 Transformer Encoder-Decoder 的。

2. kNN 检索

然后介绍 Frozen kNN Retriever 部分。

首先有一个事先搜集好的 Retrieval Database (数据来源:MassiveText), 总共有 5T tokens 的数据量。将他们以键值对的形式一个 chunk 一个 chunk 地存储起来(不得不说,DeepMind 还是壕啊...):

  • 值:包含两个组分,记为 , 其中, 是 text token chunk, 是这个 token chunk 在数据源文档中的接续文本 (continuation)

  • 键:即对应的 BERT embedding, 记为 (这里的 BERT 是训练好的,参数不会改变)。

这样,计算输入文本 chunk 的 BERT embedding,将其与 Retrieval Database 中的各个键计算 距离,作为度量,就可以得到这个输入文本 chunk 的 个 nearest neighbours.

3. Retro Model

▲Retro 算法流程

接下来介绍 Retro 模型的主体部分,包含 层 Encoder, 以及 层 Decoder.

首先记输入文本的第 个 chunk 的 activation 为 .

在 Decoder 部分,定义一个整数集合 ,决定哪些层需要使用 Retro-block, 然后其余层均使用 Transformer 原版 Decoder 层即可。即:

同样地,在 Encoder 部分,也有一个对应的 .

我们这里不聊 Transformer 原版的 Encoder 或者 Decoder 层,只聊新的 Decoder (即 Retro-block) 和新的 Encoder.

新的 Encoder :

对于第 个 chunk 的 第 近邻的 retrieval neighbour, 我们使用这个方式对其进行编码:

这样就能以一种可微分的方式将输入文本的信息融合到 Retrieval Encoder 里面,从而控制 Retrieval Neighbour 的编码。

新的 Decoder :

这个的核心在于 Chunked Cross-Attention(CCA). 首先以 Figure.2 右侧图的方式,将 分割为 个 attending chunks, 分别记为

然后计算 和 的 cross-attention, 即

其中,cross-attention 这样计算:.

最后,在 Transformer 的实现上,还有两点小小的细节:

  1. LayerNorm 替换为 RMSNorm

  2. 使用相对位置编码 (relative position encoding)

4. 数据泄露的量化

除了模型上的改进,作者为了让自己的工作更加严谨有说服力,还针对大规模 Retrieval Database 以及训练集常见的数据泄露问题,提出了更加科学的定量分析方法,可圈可点!

这个问题其实非常自然,训练集、测试集都来自互联网,规模大了,测试数据很容易泄露(即测试集数据出现在训练集中),很多工作对这样的问题睁一只眼闭一只眼,但其实,在卖萌屋往期的推文也谈到过,这非常的不严谨!有没有什么解决办法呢?

首先对于每个测试集(或者验证集)的 chunk , 从训练集中召回 10 个 nearest neighbours, 计算 与这些 neighbours 的最长公共子序列长度,记作 . 定义 ,用来表征测试集(或验证集)中的 chunk 和训练数据的重合程度。另外,再记 编码的字节数为 , 的对数似然为 ,对 设置一个阈值 ,就可以定义一个新的评估指标 bits-per-bytes(bpb) :

bpb 值越小,模型的效果越好,同时,可以用阈值 来控制对数据泄露问题的容忍度,即 越小,bpb 越能代表无数据泄露时的模型效果,另外,bpb 的斜率还能表征模型对泄露数据的依赖度 (how much the model exploits evaluation leakage).

5. 与其他检索方法的对比

作者在这个表中总结得很明白,就不赘述了(溜...

实验结果

  • Baseline 基本是原版的 Transformer,没有使用 Retrieval 进行增强,改动仅限于 RMSNorm 和相对位置编码

  • Retro[OFF] 指的是在 evaluation 阶段,Retro 是不带 Retrieval 的

  • Retro[ON] 就是上面介绍的完整的 Retro 模型

▲注意:纵坐标越小,模型越好
  1. 第一张图:蓝色的圆点代表 172M 的 Retro[ON], 红色的三角代表 7.5B 的 Baseline,这两个效果差不多,证明了 Retrieval 确实可以在保证模型效果的前提下,缩减模型的参数量

  2. 增大 Retrieval Database 的规模,可以有效地提升模型效果

  3. Retrieval Neighbours 的数量也会影响模型效果,但是有一个最优点

  1. 不同 model size、不同模型在各个数据集上的效果,可以看上面这张图

  1. 这里挑一个 retrieval intensive 的下游任务——Question Answering. 可见,Retro 仍然战胜了不少模型。(至于为什么比 FID 等略逊一筹,主要是因为 FID 等使用的是 T5-style model,这些模型更加依赖于 encoder output, 而这是影响 QA 性能的关键)

  2. baseline 模型可以快速灵活地 finetuned 为 Retro 模型,同时效果与 trained from scratch 的模型相比,基本相同。这个结论感觉还挺重要的,有了这个结论,我们就能够非常灵活地将现有的模型进一步精调成检索型模型,而不需要重新进行漫长的预训练

  3. 使用作者这种数据泄露问题的定量分析方法,可以证明 Retro 模型的效果增益,基本和数据泄露没有关系。另外,也提倡学界、业界重视起这个问题来,让实验更加严谨!!!

写在最后

DeepMind 很善于从人类身上汲取创造智能的灵感,这一波的灵感是:人类学习的过程,不仅仅是对当下知识的整合,还包括对记忆的检索,甚至包括对学习资料的检索。那么,这样一个检索型的语言模型,是非常自然的想法。

另外,虽然作者进行这个工作的初衷并不一定是模型轻量化,但是从它 10x 的参数缩减量来看,确确实实给轻量化提供了一个新的思路。无论是为了 training efficient, 还是为了 green, 模型的轻量化任重而道远!正如孟子模型的开篇语引用的话一样:“以力服人者, 非心服也,力不赡也。权,然后知轻重;度,然后知长短。” 把模型做精做强,也是我们应该考虑的核心问题

笔者还有一点思考是,当下的语言模型大多是 closed system :输入数据训练,训练完之后“包裹”起来使用。但是,封闭式系统就意味着,在使用模型进行 inference 的时候,不能“查资料”,是“闭卷考试”,这样真的合理吗?我们都知道,对人类来说,这个世界不会被排除在外,我们一直都在做“开卷考试”:写作时,难免查一查词典,翻一翻名著;编文案时,难免上网找一找灵感,看一看模板。相信对于机器来说,也更需要一个 open system,毕竟 “知也无涯”,而 “模型之大有涯”!以有涯随无涯,殆已!

萌屋作者:ZenMoore

来自北航中法的本科生,数学转码 (AI),想从 NLP 出发探索人工认知人工情感的奥秘... 个人主页是 zenmoore.github.io, 知乎 ID 是 ZenMoore, 微信号是 zen1057398161, 嘤其鸣矣,求其友声!

作品推荐

  1. 一文跟进Prompt进展!综述+15篇最新论文逐一梳理

  2. 图灵奖大佬+谷歌团队,为通用人工智能背书!CV 任务也能用 LM 建模!

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

 

[1]. Language Models are Few-Shot Learners: https://arxiv.org/abs/2005.14165

[2]. Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism: https://arxiv.org/pdf/1909.08053.pdf

[3]. Multitask Prompted Training Enables Zero-Shot Task Generalization: https://arxiv.org/abs/2110.08207

[4]. Mengzi: Towards Lightweight yet Ingenious Pre-trained Models for Chinese:https://arxiv.org/pdf/2110.06696.pdf

[5]. Scaling Language Models: Methods, Analysis & Insights from Training Gopher: https://arxiv.org/abs/2112.11446

[6]. Ethical and social risks of harm from Language Models: https://arxiv.org/abs/2112.04359

[7]. Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering: https://arxiv.org/pdf/2007.01282.pdf

[8]. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer: https://arxiv.org/abs/1910.10683

[9]. Multitask Prompted Training Enables Zero-Shot Task Generalization: https://arxiv.org/abs/2110.08207

以4%参数量比肩GPT-3!Deepmind 发布检索型 LM,或将成为 LM 发展新趋势!?相关推荐

  1. 首届飞瓜智投“品牌自播行业”沙龙 | 大咖云集,解读新“全量”时代直播新趋势

    导语:2022年1月初,巨量引擎大会首次提出整合"全能力",激发"全增长"概念.通过流量协同为品牌带来更高的营销效能,未来品牌商家该如何实现全增长? 2022年 ...

  2. 不用1750亿!OpenAI CEO放话:GPT-4参数量不增反减

      视学算法报道   来源:AIM 编辑:好困 [新智元导读]不要100万亿!也不要10万亿!更不要1750亿!GPT-4参数量竟然比GPT-3还少! GPT-4官宣? ‍ 近日,OpenAI的首席执 ...

  3. 性能堪比GPT-3,但参数量仅为0.1%,LMU团队推出NLP最强文本生成模型

    2020-09-24 04:21:08 作者 | 贝爽 编辑 | 陈彩娴 模型越大,性能越佳?不一定. 在NLP领域,谈到超大模型必然想到预训练语言模型GPT-3,自今年3月份对外开放以来,其因超大模 ...

  4. 以小25倍参数量媲美GPT-3的检索增强自回归语言模型:RETRO

    ©NLP论文解读 原创•作者 | 吴雪梦Shinemon 研究方向 | 计算机视觉 导读说明: 一个具有良好性能的语言模型,一定量的数据样本必不可少.现有的各种语言模型中,例如GPT3具有1750亿的 ...

  5. NLP-预训练模型-2019:ALBert【 轻Bert;使用 “输入层向量矩阵分解”、“跨层参数共享” 减少参数量;使用SOP代替NSP】【较Bert而言缩短训练及推理时间】

    预训练模型(Pretrained model):一般情况下预训练模型都是大型模型,具备复杂的网络结构,众多的参数量,以及在足够大的数据集下进行训练而产生的模型. 在NLP领域,预训练模型往往是语言模型 ...

  6. 如何训练2457亿参数量的中文巨量模型“源1.0”

    如何训练2457亿参数量的中文巨量模型"源1.0" 浪潮人工智能研究院 从2018年的BERT到2020年的GPT-3,NLP语言模型经历了爆发式的发展过程,其中BERT模型的参数 ...

  7. 训练时间和参数量百倍降低,直接使用标签进行预测,性能竟超GNN

    选自arXiv 作者:Qian Huang等 机器之心编译 机器之心编辑部 将传统标签传播方法与简单模型相结合即在某些数据集上超过了当前最优 GNN 的性能,这是康奈尔大学与 Facebook 联合提 ...

  8. 性能媲美BERT,但参数量仅为1/300,这是谷歌最新的NLP模型

    选自Google AI Blog 作者:Prabhu Kaliamoorthi 机器之心编译 机器之心编辑部 在最新的博客文章中,谷歌公布了一个新的 NLP 模型,在文本分类任务上可以达到 BERT ...

  9. 参数量下降85%,性能全面超越ViT:全新图像分类方法ViR

    来源:机器之心 本文共1700字,建议阅读5分钟 ViT 还不够完美?来自华东师范大学等机构的研究者提出了全新的图像分类方法 ViR,在模型和计算复杂性方面都优于 ViT. 近一年来,视觉 Trans ...

  10. 深度学习模型参数量/计算量和推理速度计算

    作者|龟壳 来源 | 知乎 地址 | https://zhuanlan.zhihu.com/p/376925457 本文仅作学术分享,若侵权请联系后台删文处理 本文总结了一些关于模型参数量计算以及推理 ...

最新文章

  1. Android 自定义 —— View moveTo与 rMoveTo 的区别
  2. Survey | 基于图卷积网络的药物发现方法
  3. linux下模拟CPU占用100%小程序
  4. 不是计算机专业学python能找到工作吗-本科学历,非计算机专业,想学Python找工作靠谱吗?...
  5. Linux安装jupyter debugger+Conda设置proxy代理
  6. 给你的Flex程序添加深链接和分析-其实比你想象的要简单
  7. 服务器系统2012怎么多人连接,windows2012服务器TCP连接数
  8. ROS:Nvidia Jetson TK1平台安装使用ROS
  9. ASP.Net中OnBeforeUnLoad事件中调用__doPostBack不起作用?
  10. ASP.NET的錯誤類型及錯誤處理方式
  11. 关于在openstack执行nova get-vnc-console命令,无法得到vnc url并提示服务器超时的问题描述...
  12. Spatial Pyramid 小结
  13. 三维GIS引擎平台设计
  14. ctf piapiapia(反序列化逃逸)解题记录
  15. 元数据管理器中存在错误
  16. 精灵图与字体图标的使用
  17. Mysql_DML数据修改语言
  18. 泡泡机器人原创专栏-Cartographer】Cartographer理论及实现浅析
  19. 使用MyBatis时出现java.io.IOException: Could not find resource com/ee/mybatis/mapper/Usermapper.xml 类似的错误
  20. 汇编语言——子程序调用

热门文章

  1. 去除 WinRAR 广告
  2. 黑客帝国1-3 1080P 35.9G 下载
  3. vb.net 使用ftp协议上传、下载文件(Visual Studio 2019)
  4. 用SPSS做数据分析
  5. Unity 3D 萌萌哒三消游戏《宝石消消乐》源码
  6. [C#] TestHttpPost:测试Http的POST方法的小工具
  7. Django Zip文件下载
  8. linux系统共享文件夹,Linux系统如何设置共享文件夹?新建文件夹以及指令是什么?...
  9. 磁传感器之电子罗盘详解
  10. 论文计算机制图,计算机制图教学设计运用论文