论文:Pre-Trained Models: Past, Present and Future

摘要

BERT、GPT 等大规模预训练模型(PTM)最近取得了巨大成功,成为人工智能领域的里程碑。由于复杂的预训练目标和庞大的模型参数,大规模 PTM 可以有效地从大量标记和未标记的数据中捕获知识。通过将知识存储到大量的参数中并对特定任务进行微调,大量参数中隐式编码的丰富知识可以使各种下游任务受益,这已通过实验验证和实证分析得到广泛证明。现在人工智能社区的共识是采用 PTM 作为下游任务的支柱,而不是从头开始学习模型。

我们深入研究了预训练的历史,尤其是它与迁移学习和自监督学习的特殊关系,以揭示 PTM 在 AI 开发领域中的关键地位。 此外,我们全面回顾了 PTM 的最新突破。 这些突破是由计算能力的激增和数据可用性的增加推动的,朝着四个重要方向发展:设计有效的架构、利用丰富的上下文、提高计算效率以及进行解释和理论分析。 最后,我们讨论了 PTMs 的一系列开放问题和研究方向,希望我们的观点能够启发和推动 PTMs 的未来研究

介绍

点出了目前做一个AI任务所遇到的难题,制作一个大批量数据集成本高而且时间长,如果每个AI任务都需要对应的大批量数据集,那么会变得非常低效。

引出解决上述难题的方法:迁移学习

Benefiting from the strong visual knowledge distributed in ImageNet, fine-tuning these pre-trained CNNs with aas small amount of task-specific data can perform well on downstream tasks

NLP那一块就省略了。

背景

预训练模型的发展过程与简单分类如下图所示。迁移学习可以分为四个子类: inductive transfer learning, transductive transfer learning,self-taught
learning和unsupervised transfer learning。

Transformer and Representative PTMs

设计有效的架构

  1. 统一序列建模

    结合自回归和自编码建模:XLNet 提出了置换语言建模。针对 BERT 中的掩码恢复策略自然与其下游应用相矛盾(输入句子中没有 [MASK])的问题,XLNet 通过在预训练中置换 token 的顺序,然后应用自回归预测范式来解决这个问题,这赋予了 XLNet 理解和生成的能力。置换语言建模的另一个实例是 MPNet,它修正了 XLNet 的差异。

    除了置换语言建模,另一个方式将是多任务训练。UniLM 提出联合训练不同的语言建模目标,包括单向、双向和序列到序列 (seq2seq) 目标。这可以通过改变 Transformers 中的注意力掩码来实现。UniLM 在生成式问答和摘要摘要方面表现相当出色。

    最近,GLM 提出了一种更优雅的方法来结合自回归和自编码。给定可变长度的掩码跨度,而不是像 BERT 和 SpanBERT 那样提供 [MASK] 的数量进行建模,GLM 要求 Transformer 块自动回归生成掩码标记。并且为了保留 [MASK] 的编号信息,GLM 提出了一种 2D 位置编码策略。GLM 是第一个在包括自然语言理解、条件生成和无条件生成在内的所有类型的任务上同时实现最佳性能的模型。

    应用广义 Encoder-Decoder:在 GLM 之前,无论是 Encoder 结构(例如,BERT)还是 Decoder 结构(例如,GPT)都无法解决一个重要问题:填充可变长度的空白。一个自然的想法是转向最初为机器翻译设计的 Encoder-Decoder 架构,这将产生以源为条件的可变长度的目标序列。

    这种类型的先驱是 MASS ,它将掩码预测策略引入到 Encoder-Decoder 结构中。然而,MASS 没有涉及填充可变长度空白的问题。T5 通过仅用一个掩码标记掩码文本中可变长度的跨度并要求解码器恢复整个掩码序列来解决该问题。BART 通过截断、删除、替换、改组和掩码等多种操作来破坏源序列,而不仅仅是掩码。

    然而,Encoder-Decoder 架构面临着一些挑战。首先,与单个编码器/解码器相比,Encoder-Decoder 引入了更多的参数。虽然这个问题可以通过编码器和解码器的参数共享来缓解,但其参数效率仍然值得怀疑。其次,Encoder-Decoder 结构通常在自然语言理解方面表现不佳。尽管报告了对类似大小的原版 BERT 的改进,但训练有素的 RoBERTa 或 GLM 编码器的性能比它们好得多。

  2. 认知启发结构

    当前的 Transformer 并不足以很好地实现人类的认知系统, 注意力机制是Transformer架构中的核心模块,其灵感来自于人类认知系统的微观和原子操作,只负责感知功能。然而,人类水平的智能远比仅仅理解不同事物之间的关联复杂得多。为了追求人类水平的智能,了解我们认知功能的宏观架构,包括决策、逻辑推理、反事实推理和工作记忆至关重要。

    可维护的工作记忆:Transformer 的一个自然问题是其固定的窗口大小和二次空间复杂度,这极大地阻碍了其在长文档理解中的应用。尽管对二次增长的逐点注意力的近似计算进行了大量修改,但问题是我们人类并没有呈现出如此长距离的注意力机制。作为替代方案,认知科学家已经揭示,人类可以保持工作记忆,它不仅可以记忆和组织,还可以遗忘.传统的长短期记忆网络是这种哲学的典型实践。

    对于基于 Transformer 的架构,Transformer-XL 是第一个引入段级递归和相对位置编码来实现这一目标的架构。然而,递归只是隐式地模拟了工作记忆。作为更明确的解决方案,CogQA 建议在多跳阅读中维护认知图。它由两个系统组成:基于 PTM 的系统1和基于 GNN 的系统2,为多跳理解建模认知图。CogQA 的一个限制是它对系统1的使用仍然基于固定的窗口大小。为了赋予工作记忆理解长文档的能力,CogLTX 利用 MemRecall 语言模型来选择应该保留在工作记忆中的句子和另一个用于回答或分类的模型.

    可持续的长期记忆:GPT-3 的成功以及最近关于语言模型回忆事实知识能力的研究揭示了 Transformer 可以记忆的事实。一些研究通过用大型键值记忆网络替换了 Transformer 层中的前馈网络,证明了 Transformers 中的前馈网络等同于记忆网络。

    然而,Transformers 中的存储容量是相当有限的。对于人类智能而言,除了用于决策和推理的工作记忆外,长时记忆在回忆事实和经验方面也起着关键作用。REALM 是探索如何为 Transformer 构建可持续外部记忆的先驱。RAG 将掩码预训练扩展到自回归生成,这可能比提取式问答更好。

    除了对文本语料库进行张量化之外,还建议对现有知识库中的实体和三元组进行张量化。当实体出现在上下文中时,它们会用来自外部记忆网络的嵌入替换实体 token 在内部 Transformer 层中的嵌入, 从头开始维护一个虚拟知识,并针对它提出了一个可微的推理训练目标。所有这些方法在许多开放域问题回答基准上都取得了改进。

  3. 更多变体

    现有 PTM 的更多变体除了统一序列建模和构建受认知启发的架构的实践之外,当前的大多数研究都集中在优化 BERT 的架构以提高语言模型在自然语言理解方面的性能。

    一系列工作旨在改进掩蔽策略,这可以被视为某种数据增强。SpanBERT 表明,用跨度边界目标 (SBO) 屏蔽连续随机长度的令牌跨度可以提高 BERT 的性能。ERNIE(整个实体被屏蔽)、NEZHA 和 Whole Word Masking 也探索了类似的想法。

    另一个有趣的做法是将掩码预测目标更改为更难的目标。ELECTRA 将 MLM 转换为替换标记检测 (RTD) 目标,其中生成器将替换原始序列中的标记,而鉴别器将预测标记是否被替换。

融合多元数据

这一块我表示看不懂,有兴趣可以去阅读下原论文。

提升运算效率

除了一些系统级的优化方法外,还致力于探索更有效的预训练方法,以便我们能够以较低成本的解决方案预训练大规模 PTM。

有效的训练方法:传统的预训练任务可能是样本效率低下的。例如,对于广泛用于对最近的 PTM 进行预训练的 MLM,模型需要根据上下文来预测掩码标记。屏蔽标记通常是输入标记的子集(通常为 15%),即模型只能从一小组输入标记中学习。

为了解决这个问题,ELECTRA 应用了替换标记检测任务。此外,传统的 MLM 会随机屏蔽文档中的token 以进行预测。由于预测不同token的难度差异很大,随机掩码策略使得训练过程漫无目的且效率低下。因此,一些作品在反向传播中根据它们的重要性或梯度选择性地屏蔽标记以加速模型训练。

除了预训练任务之外,当前的预训练动态也是次优的。最近的大规模 PTM 通常需要较大的batch size。但在早期工作中,研究人员发现简单地增加批量大小可能会导致优化困难。因此,他们提出了一种预热策略,在训练开始时线性增加学习率,这种策略通常用于最近的大规模 PTM。

最近的一些工作研究了基于 Transformer 的模型,并声称不同的层可以共享相似的自注意力模式。因此,可以先训练浅层模型,然后复制以构建深层模型。在训练期间也可以删除一些层以降低反向传播和权重更新的复杂性。此外,You 等人发现,当批量较大时,在不同层自适应地使用不同的学习率也可以加快收敛速度。

高效的模型架构:除了有效的预训练方法外,模型架构的更多变体也可以降低计算复杂度,从而提高训练 PTM 的效率。对于大多数基于 Transformer 的 PTM,随着它们的输入序列变长,由于其序列长度的二次时间和空间复杂度,它们的效率受到注意力权重计算的限制。

因此,许多作品试图降低 Transformer 的复杂性。一些研究设计低秩内核以在理论上近似原始注意力权重并导致线性复杂度,还有一些通过将每个标记的视图限制为固定大小并将标记分成几个块来将稀疏性引入注意力机制,这样注意力权重的计算发生在每个单独的块中,而不是一个完整的序列。与预定义的块相比,一些工作发现使用可学习参数将标记分配到块中会产生更好的性能。另一种方法结合全局和局部注意力机制,然后使用全局节点按顺序收集令牌。这样,长序列被压缩成少量的元素,这样我们就可以降低复杂度。

保持与原始 Transformer 相同的理论计算复杂度,模型结构的更多变体也可以加速模型收敛。专家混合 (MoE) 已被早期证明可以增加深度神经模型的参数,同时保持计算开销几乎不变。最近,Switch Transformers在预训练中采用了这种技术。他们为 Transformers 的每一层添加了多个专家。在每个前进和后退步骤中,他们只选择一位专家进行计算,因此训练和推理时间与没有专家的普通 Transformer 相似。一些实验结果表明,由于多个专家带来的模型容量明显更大,基于 MoE 的模型比普通模型收敛得更快。

提高 PTM 效率的另一个重要方法是模型压缩。在这种情况下,大型模型被压缩为小型模型,以满足在资源受限设备上进行更快推理和部署的需求。

参数共享:PTM 可以通过在相似单元之间共享参数进行压缩。ALBERT使用分解嵌入参数化和跨层参数共享来减少 PTM 的参数。在所有 Transformer 层上使用相同的权重,ALBERT 在 BERT 模型的基础上实现了显着的 参数减少,同时具有相同甚至更好的性能。这表明 PTM 可能被过度参数化。

模型剪枝:为了更多地利用当前 PTM 的过度参数化特性,另一种减少模型参数的方法是模型剪枝,它在 PTM 中剪掉一些无用的部分,以在保持性能的同时实现加速。Fan等人将Transformer 层在训练过程中被有选择地删除,从而在推理过程中产生更浅的模型。研究人员还研究了 Transformer 中注意力头的冗余,发现其中只有一小部分就足以很好的表现。大多数这些磁头都可以移除,而对精度几乎没有影响。CompressingBERT 等其他试验试图修剪注意力层和线性层的权重以减少 PTM 中的参数数量,同时保持与原始模型相当的性能。

知识蒸馏:尽管 ALBERT 节省了 PTM 的内存使用量,但它的推理时间并没有显着减少,因为特征仍然需要通过与原始模型相同数量的层。知识提炼旨在训练一个小型模型来重现大型教师模型的行为。使用小型蒸馏模型进行推理时,内存使用量和时间开销都减少了。

有一些典型的 PTM 使用知识蒸馏的作品,例如 DistillBERT、TinyBERT 、BERT-PKD 和 MiniLM。在这些工作中,在预训练和微调阶段,训练一个小型学生模型来模仿大型教师模型的输出概率、隐藏状态和注意力矩阵。通过知识蒸馏,教师模型中的模型被转移到学生模型中,与单独训练学生模型相比,这可以提高性能。然而,上面提到的知识蒸馏方法需要用于预训练教师模型的数据,考虑到数据版权和隐私,通常不会发布这些数据。此外,教师模型需要对整个预训练数据进行转发,以生成用于知识提炼的 logits 或中间表示,从而导致更长的训练时间。

模型量化:为了获得更压缩的模型,模型量化也是一种有用的技术,它在一些基于 CNN 的模型中得到了广泛的探索。模型量化是指将较高精度的浮点参数压缩为较低精度的浮点参数。传统的 PTM 通常用 32 位或 16 位表示,而量化后的模型可以用 8 位甚至 1 或 2 位表示。对于最近的基于 Transformer 的模型,8 位量化已被证明对 Q8BERT 中的模型压缩有效,对模型性能几乎没有影响。

尽管如此,由于模型容量的显着下降,训练 1 位或 2 位模型仍然具有挑战性。为了减轻性能下降,也可以采用其他方法来保持精度。Q-BERT 使用混合比特量化,其中具有较高 Hessian 频谱的参数需要更高的精度,而具有较低 Hessian 频谱的参数需要较低的精度。三元BERT 在量化中应用知识蒸馏,迫使低位模型模仿全精度模型。Q-BERT 和 TernaryBERT 都会产生超低位模型。然而,低位表示是一种与硬件高度相关的技术,这意味着量化通常需要特定的硬件,不能推广到其他设备。

Pre-Trained_Models_Past_Present_and_Future相关推荐

  1. html width字符数,HTML pre标签 width 属性

    HTML 标签 width 属性 定义和用法 HTML5 不支持 width 属性.请使用 CSS 代替. 在 HTML 4.01 中, 的 width 属性 已废弃. width 属性规定每行的最大 ...

  2. pre使页面正确显示文本格式

    用django从数据库中提取文本文件内容,但用{{ content }}传送给页面时格式不正确,回车与制表位没有显示. 其实把{{ content }}内容用<pre></pre&g ...

  3. html中加入好看的行号,仅使用CSS在pre上创建行号

    小编典典 为什么计数器不增加? 您不是在父标记级别重置或创建计数器.如果pre将以下行添加到选择器,代码将正常工作.如果您没有counter- reset在父级创建计数器(使用),则每个元素都会创建自 ...

  4. 数据结构2:中序线索化二叉树为什么要通过pre设置后继结点

    在听尚硅谷韩顺平老师课程的时候这个地方没有理解,先把java中序线索化二叉树代码附上: private HeroNode pre = null;//在递归线索化,pre总是保留前一个结点 /**** ...

  5. html中<pre>标签

    pre翻译为预处理标签 菜鸟教程内的定义: <pre> 标签可定义预格式化的文本. 被包围在 <pre> 标签 元素中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. ...

  6. 软件版本中 release stable alpha beta pre snapshot 区别

    我们在下载软件会遇到诸如release,stable,alpha,beta,pre,current,eval,rc,snapshot等版本,程序猿下载插件时尤为常见,现在我说明以下版本的意思 1,sn ...

  7. html怎么让文本自动换行不,【HTML】让pre标签文本自动换行

    利用 这个标签可以将其包起来的文字排版.格式,原封不动的呈现出来. 也就是说你输入的东西被原封不动的输出,包括你输入的空格之类的,不用 和 等来表示空格或者回车了. 但是,默认情况下, 标签中的内容若 ...

  8. Palm pre,我的M8又要落伍了

    Palm Pre Video Walkthrough 1 from Gizmodo on Vimeo. Palm Pre Video Walkthrough 2 from Gizmodo on Vim ...

  9. pre标签 首行会自动换行解决方案

    利用pre标签可以 解决文本文档里面的空格及换行在页面上不显示的方案, 自行换行 加 white-space: pre-wrap; word-wrap: break-word; 英文字母换行 word ...

  10. php输出pre自动换行,解决 html pre 标签的内容自动换行的问题

    元素可定义预格式化的文本.被包围在 pre 元素中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. 标签的一个常见应用就是用来表示计算机的源代码. 而我们经常碰到的一个问题是如果一个代码上碰到 ...

最新文章

  1. debian10 mariadb安装
  2. (三)ajax请求不同源之websocket跨域
  3. 【嵌入式】Libmodbus源码分析(一)-类型和结构体
  4. python中对列表浅复制深复制另类的理解方式
  5. HOW-TO:具有MySQL的JEE应用程序中具有集群功能的Quartz Scheduler
  6. linux 实现共享内存同步
  7. java二分法查找_java 中二分法查找的应用实例
  8. Ooooops! 这通骚扰电话是AI机器人打的(浙大出品,中文很6)
  9. java word转pdf jacob_java使用jacob.jar将word转pdf
  10. rocketMq错误日志所在位置
  11. Java 常见面试题
  12. 服务器硬盘噪音大怎么回事,东芝服务器硬盘响声大吗?
  13. mysql busy buffer_buffer busy waits 等待事件
  14. eclipse中的svn提交代码时文件上出现蓝色加号或者十字架时最笨但最有效的方法
  15. 日期转换 例如 二零零六年十二月二十一日 转换成 2006年12月21日
  16. Vscode——调整左侧菜单字体大小
  17. sql注入基础原理(SQL injection)
  18. VIP邮箱批量群发效果哪家最好?
  19. 初学者-python中自定义类的已有self定义,后面使用出现object has no attribute问题
  20. AutoHotKey的那些事儿:(七)、AutoHotkey程序在win8下不能运行的解决办法

热门文章

  1. 谁能解释一下,这是什么骚操作???
  2. 计算机硬盘sata,sata硬盘是什么
  3. vw 前端_css3的vw单位,vh单位的讲解,以及vw vh的兼容性
  4. CSS中怎样调整字体之间的间隔
  5. 音视频SDK封装截图
  6. 最新最全论文合集——丘成桐数学科学中心
  7. 【nvivo11plus教程】01_nvivo介绍、案例与批注
  8. matcom v4.5 软件下载
  9. 探访河北舌尖上的“美味”:留住传统 留住乡情
  10. 深度强化学习落地方法论(5)——状态空间篇