BERT和GPT等大型预训练模型近年来取得了巨大的成功,成为人工智能领域的一个里程碑。基于复杂的训练目标和庞大的模型参数,大规模的PTMs可以有效地从大量标注和未标注的数据中获取知识。通过将知识存储到巨大的参数中,并对特定的任务进行微调,在巨大的参数中隐含的丰富知识可以使下游的各种任务受益,这已被实验验证和实证分析广泛证明。本文主要讨论了PTMs四个重要方向:设计有效的架构,利用丰富的上下文,提高计算效率,以及理论解释分析。
早期模型
预训练的早期主要涉及迁移学习。迁移学习的研究很大程度上是由人依靠学到的知识来解决新的问题,甚至取得更好的结果。具体讲,迁移学习的目的是从多个源任务中获取重要的知识,然后应用到目标任务中。
在迁移学习中,两种预训练方法被广泛研究:特征迁移和参数迁移。特征转移方法预先训练有效的特征表示,以预先编码跨领域和任务的知识。参数传递方法遵循源任务和目标任务可以共享模型参数或超参数的先验分布的直观假设。
自我监督学习与自监督预训练
迁移学习可以分为归纳迁移学习、转导迁移学习、自学迁移学习和无监督迁移学习四个子方向。如下图所示:
自我监督学习和非监督学习在设置上有许多相似之处。在某种程度上,自我监督学习可以被视为无监督学习的一个分支,因为它们都应用无标记数据。然而,无监督的学习主要侧重于检测数据模式(例如,聚类,社区发现和异常检测),而自我监督的学习仍然处于监督设定的范例(例如,分类和生成)。
随着自然语言处理任务的PTMs 的发展,应用基于Transformers的PTMs作为自然语言处理任务的骨干已经成为一个标准程序。在大规模文本语料库上对这些基于Transformer的模型进行预训练后,模型的结构和参数都可以作为特定自然语言处理任务的起点,即仅对特定自然语言处理任务的模型参数进行微调就可以获得具有竞争力的性能。到目前为止,这些基于Transformers的 PTMs 在几乎所有的NLP任务上都取得了最先进的结果。受GPT和BERT的启发,也提出了许多更有效的用于NLP任务的PTMs ,如XLNET、RoBERTa、BART和T5。研究表明,自我监督学习和Transformers可以优于传统的监督CNN和RNN。
Transformer and 代表性的PTMs
两个里程碑式基于Transformer的PTMs, GPT和BERT,它们分别使用自回归语言建模和自动编码语言建模作为预训练的目标。所有后面的PTMs都是这两种模型的变体。
Transformer
Transformer是一种应用自注意机制的编码器-解码器结构,它可以并行地建模输入序列中所有单词之间的相关性。在编码阶段,对于一个给定的单词,Transformer通过将其与输入序列中的其他单词进行比较来计算注意力得分。在解码阶段,注意机制与编码相似,只是它一次只从左到右解码一个表征。由于其突出的性质,Transformer逐渐成为自然语言理解和生成的标准神经结构。
GPT
GPT以Transformer解码器为骨干,采用生成式预训练和判别式微调。在GPT预训练阶段,对每个单词的条件概率进行Transformer建模。对于每个单词,GPT通过之前单词应用多头自注意,然后根据前馈层来计算其概率分布。GPT对特定任务的适应过程是微调,利用GPT预训练参数作为下游任务起点。在微调阶段,通过GPT传递输入序列,我们得到GPT Transformer最后一层的表示。通过使用最后一层的表示和特定于任务的标签,GPT用简单的额外输出层优化下游任务目标。
BERT
BERT的出现也极大地促进了PTM领域的发展。理论上,与GPT相比,BERT采用了一种双向深层Transformer作为主要结构。还有两个单独的阶段来调整BERT,用于特定的任务,预处理和微调(见图7)。
在预训练阶段,BERT采用自动编码语言建模,而不是GPT中使用的自回归语言建模。受完形填空的启发,设计了目标掩码语言建模(MLM)。在MLM过程中,使用一个特殊的令牌[MASK]对令牌进行随机掩蔽,目的是根据上下文预测其掩蔽位置上的单词。除了MLM外,在自然语言推理和问答等下游多句任务中,还采用了下句预测(NSP)这一目标来捕捉句子之间的语篇关系。
GPT和BERT之后
GPT和BERT之后,提出了一些改进方案,如RoBERTa和ALBERT。下图是目前主要的改进模型:
有效的架构设计
bert后Transformer架构分类:统一序列模型和认知启发架构。
多种下游任务和应用程序,一般可以分为三种类型:
- 自然语言理解:包括语法分析,句法分析,单词/句子/段落分类,问题应答,事实/常识知识推理等。
- 开放式语言生成:包括对话生成、故事生成、数据到文本生成等。
- 非开放式语言生成:包括机器翻译、摘要总结、填空等。
统一序列模型
- 结合自回归和自编码建模。如XLNet通过在预训练对token进行排列,然后应用自回归预测范式。
- 应用广义编解码器。如编码器结构(如BERT)或解码器结构(如GPT)都不能解决重要问题:用可变长度填充空白。
认知启发架构
- 可维护工作记忆。如Transformer-XL 引入段级递归和相对位置编码,CogQA 提出多跳阅读中保持认知图。
- 可持续的长短记忆。 如用大型键值存储网络取代Transformer 层的前馈网络,或者将masked预训练扩展为自回归生成。
利用多源数据
利用多源异构数据的PTMs,包括多语言PTMs、多模态PTMs和知识增强PTMs。
提高计算效率
提高计算效率主要集中在三个方面:系统级优化、高效学习和模型压缩策略。
系统级优化
单设备优化
-
现代深层学习系统主要基于单精度浮点格式(FP32)。使用半精度浮点格式(FP16)可以在精度损失很小的情况下完成大部分计算。
-
混合精度训练方法在FP32中保留一些关键权值以避免浮点溢出,并使用动态损失缩放操作来消除浮点截断。
-
除了注意层和线性层的权重外,计算设备还存储了每一层的隐藏状态,以提高梯度反向传播中使用的链规则的效率。
-
通过只存储前向传递后的部分激活状态来节省内存。
-
设计了精细策略来调度CPU内存和GPU内存交换,使内存交换和设备计算尽可能重叠。
多设备优化
-
分布在多个计算节点上的多个图形处理器一起训练一个模型。
-
将自注意头和前馈层分成不同的GPU,减少了单个GPU的内存负担。
-
沿着任意张量维度拆分张量,为模型并行性带来更多定制选项。
-
将优化器状态平均划分并分配到数据并行性的每个节点,每个节点只更新其分区对应的优化器状态。
高效学习
-
高效训练方法: 不同层次上自适应地使用不同的学习速率在batch size较大时加快收敛速度。
-
高效模型架构 :更多模型结构变体也可以降低计算复杂度,提高训练 PTMs效率。
模型压缩
-
参数共享 可以通过在相似单元之间共享参数来压缩PTMs。
-
知识蒸馏 训练一个小模型,以再现一个大模型的行为。即使用一个小型的精馏模型进行推断时,内存使用和时间开销都减少了。
-
模型剪枝 削减注意层和线性层的权重,以减少PTMs中的参数数量,同时保持与原始模型的可比性能。
-
模型量化 指将精度较高的浮点参数压缩为精度较低的浮点参数。
理论解释分析
PTMs知识
-
表示探测:固定PTMs的参数,针对特定探测任务在PTMs隐藏表示训练一个新的线性层。
-
表示分析:利用PTMs隐藏表示来计算统计量,如距离或相似度。根据这些统计数据,我们可以构建不同单词、短语或句子之间的关系。
-
注意力分析:注意力分析计算注意矩阵的统计,更适合发现文本的层次结构。
-
生成分析:使用语言模型直接估计不同序列或单词的概率。目标文本在某些语言现象上可能存在纠错。
词汇知识
-
将相关知识的生成表述为填空语句。
-
基于挖掘和基于措施的方法来自动搜索更好的陈述/提示
-
将关系三元组转换为掩模句,然后根据PTMs给出的互信息对这些句子进行排序。
-
在表征空间中基于一系列探测任务学习了各种常识性特征。
PTMS鲁棒性
对抗性攻击的目的是通过对原始输入的微小扰动来生成新的样本,这些样本会被模型误分类。PTMs很容易被同义词替换所愚弄。与此同时,形词等无关紧要的句子误导PTMs做出错误的预测 。目前主要是利用模型预测、预测概率和模型梯度来搜索对抗实例。
PTMs结构稀疏性
经PTMs头部编码信息进行了定性和定量分析。发现表明不同头部的注意力行为可以被归类为一组有限的模式。除了多头注意力,其他几个工作探索识别稀疏参数:(1)修剪(30-40%)根本不会影响预训练的损失或下游任务的表现。(2)找到与完整模型性能相当的子网络。(3)通过简单地复制一些隐藏层来提高模型的性能,冗余参数可能有利于微调。
PTMs理论分析
提出两个假设来解释预训练的效果。(1)更好的优化和(2)更好的正则化。
未来方向
架构和预训练方法
- 新架构 Transformers已经被证明是一种有效的预训练架构。然而,Transformers主要局限性是其计算复杂性。
- 新训练任务 通用的语言认知模型一直是我们学习语言内在的普遍知识(甚至世界知识)的追求。
- 超越微调 精细调整是将PTMs知识转移到下游任务的主要方法,但其参数的低效率是其不足之处:每个下游任务都有自己的微调参数。
- 可靠性 随着PTMs在生产系统中的广泛应用,PTMs的可靠性也成为一个备受关注的问题。
多语言和多模态预训练
- 更多模态 除了图像和文本,视频和音频也可以用于多模态的预训练。
- 更深刻解释 深度学习可视化工具可以用于多模式训练前的解释。
- 更多下游应用 多模态预处理可以应用于图像-文本检索、图像-文本生成、文本-图像生成和其他下游任务。
- 迁移学习 要使多模态多语言模型处理不同的语言,预训练需要每种语言的数据。
计算有效性
- 数据传输 开发一个高效分布式深度学习框架。
- 并行策略 在并行策略的选择上,数据并行、模型并行、流水线并行以及各种混合并行方法都可以根据神经网络的结构和硬件配置找到自己的最佳使用。
- 大规模训练 鉴深度学习框架对模型并行性和流水线并行性的支持不足,一开发了专门用于大规模训练框架。
- 包装和插件 通过在现有框架上计算操作之间手工插入数据路由操作来开发各种专门用于某些特定算法的库。
理论基础
- 不确定性 贝叶斯深度学习将贝叶斯方法和深度网络结合起来,可以进一步扩展到大规模PTMs,以适当地描述不确定性和避免过度自信的输出。
- 泛化鲁棒性 是否有有效的方法将PTMs作为额外的数据资源来探索以提高下游任务的鲁棒性。
模型学习
知识-意识任务 知识感知任务中发现大量的人类知识被PTMs捕获并以模型边缘形式存储。如何促进PTMs模型边缘是值得进一步探索的问题。
模型边缘存储和管理 现有PTMs模型建立在不同的体系结构上,并且可能使用不同的语料库进行训练,因此它们包含不同的模型边缘。如何在PTMs中存储和管理各种连续的模型边缘成为一个新的挑战。
认知学习与知识学习
- 知识增加 对于一个输入文本,有丰富的外部相关知识,可以用来扩大输入。
- 知识支持 当前模型体系结构是手工设计的,通常是非常常规的。利用输入的先验知识,训练不同的子模块来处理不同类型的输入,可以加快训练和推理的过程,提高模型的效率。
- 知识管理 知识库存储了大量的结构数据,可以在预训练作为补充来源使用。
- 认知架构 由于神经网络的灵感来自于人类神经系统的微观结构,人们期望看到人类认知系统的宏观功能和组织如何启发下一代智能系统的设计。
- 易于理解和可控推理 虽然深度学习已经在很多感知任务中取得了成功,但是如何进行复杂的决策和高效的多步骤推理仍然是未解决的问题,这可能需要机器自动将决策过程规划到认知图中,并像人类一样对图中的因素进行显式推理。
- 知识相互作用 尽管我们的PTMs越来越大,越来越普遍,但它从预训练学到的知识在很大程度上还没有被探索。
应用
- 自然语言生成 许多自然语言生成任务都由PTMs主导,如GPT-2,BART,T5,UNILM等等。
- 会话系统 许多最近开域对话系统都是建立在大型Transformer结构上。
- 特定领域PTMs 当大规模特定领域的语料库廉价可用时,可以在这些数据上训练特定领域的PTMs。
- 领域适应和任务适应 大规模PTMs从大规模文本中学习一般知识,通过微调或其他技术提供更好的初始观点来进一步学习特定于域的知识。