TensorFlow深度学习实战——Transformer变体模型
- 0. 前言
- 1. BERT
- 2. GPT-2
- 3. GPT-3
- 4. Reformer
- 5. BigBird
- 6. Transformer-XL
- 7. XLNet
- 8. RoBERTa
- 9. ALBERT
- 10. StructBERT
- 11. T5 和 MUM
- 12. ELECTRA
- 13. DeBERTa
- 14. 进化 Transformer 和 MEENA
- 15. LaMDA
- 16. Switch Transformer
- 17. RETRO
- 18. Pathways 和 PaLM
- 相关链接
0. 前言
在 Transformer 模型提出之后,研究人员提出了大量基于 Transformer 的变体模型。本节中,介绍了流行的 Transformer 变体模型。
1. BERT
BERT (Bidirectional Encoder Representations from Transformers) 是 Google AI 研究团队在 2018 年开发的语言表示模型,该模型的重要思想包括:
BERT通过双向自注意力 (bidirectional self-attention) 考虑每个词的上下文,既包括左侧也包括右侧。- 训练通过随机掩码输入词元 (
token) 进行,并避免循环,以便单词不能间接看到自身。在自然语言处理 (Natural Language Processing,NLP) 中,称为填空 (fill in the blank)。换句话说,预训练任务掩码少量未标记的输入,然后训练网络恢复这些原始输入 - 模型使用分类任务进行预训练,预测句子序列
S是否在句子T之前。通过这种方式,BERT可以理解句子之间的关系(即下一句子预测),例如,句子T是否跟在句子S之后?。预训练的理念成为大语言模型的新标准 BERT,特别是BERT Large,成为第一批大型语言模型之一,具有24个Transformer块、1024个隐藏层、16个自注意力头和3.4亿个参数,模型在一个具有33亿词语的大规模语料库上进行训练
BERT在11个NLP任务中取得了优异性能:GLUE得分80.4%,比之前的最佳结果提高了7.6%- 在
SQuAD 1.1上准确率为93.2%,较人类表现高出2%
我们将在后续学习中介绍 GLUE 和 SQuAD 指标。
2. GPT-2
GPT-2 是由 OpenAI 引入的模型,GPT-2 的关键思想如下:
- 四种模型尺寸中最大的一个是一个拥有
15亿个参数的Transformer模型,包含48层,在Webtext数据集上训练,该数据集包含了来自4500万个网页的文本 GPT-2基于原始Transformer架构,并对原始GPT模型进行了改进- 研究表明,在大型多样化数据集上训练的大语言模型 (
Large Language Model,LLM) 在多种自然语言处理任务中表现良好,例如问答、机器翻译、阅读理解和摘要生成。在大模型之前,这些任务通常通过在特定数据集上进行监督学习来解决,GPT-2以无监督的方式进行训练,并在零样本任务迁移方面表现出色 - 起初,
OpenAI仅发布了一个较小的GPT-2版本,参数为1.17亿,原因是担心大语言模型会被用来生成具有欺骗性、偏见或恶意的语言,随后,该模型正式发布 OpenAI开发了一种基于机器学习的检测方法,用于测试文本是否是模型生成的的合成文本。对于检测1.5B GPT-2生成的文本,检测率约为95%
类似于原始 GPT 模型,GPT-2 不需要原始 Transformer 模型的编码器部分,而是使用多层解码器进行语言建模,解码器只能从句子中之前的词汇获取信息。以词向量作为输入,并生成下一个词的概率估计作为输出,但它是自回归的,这意味着句子中的每个词元依赖于前一个单词提供的上下文。而 BERT 不是自回归的,因为它同时利用整个上下文。
GPT-2 是第一个具备常识推理能力的 LLM,能够执行多种 NLP 任务,包括翻译、问答和阅读理解,该模型在 8 个测试语言数据集中取得了优异结果。
3. GPT-3
GPT-3 是由 OpenAI 开发的自回归语言模型,关键思想如下:
GPT-3使用了与GPT-2类似的架构和模型,主要区别在于采用了稀疏注意力机制- 对于每个任务,使用了三种不同的模型评估方法:
- 少样本学习 (
Few-shot learning):模型在推理时接收少量任务示例样本(通常少于一百个),但不允许进行权重更新 - 单样本学习 (
One-shot learning):模型接收一个示例样本和任务的自然语言描述 - 零样本学习 (
Zero-shot learning):模型没有示例样本,只能访问任务的自然语言描述
- 少样本学习 (
- 对于所有任务,
GPT-3在没有梯度更新的情况下应用,所有任务和少量示例完全通过与模型的文本交互来指定
GPT-3 参数数量从 1.25 亿 (GPT-3 Small) 到 1750 亿 (GPT-3 175B) 不等。在没有微调的情况下,模型在许多自然语言处理任务上取得了优秀成果,包括翻译和问答等。特别是,GPT-3 在自然语言生成方面表现出色,生成的新闻文章难以与真实文章区分。该模型能够解决需要即时推理或领域适应的任务,如解码单词、执行三位数算术运算。
GPT-3 的底层模型并未公开,无法对其进行预训练,但能够获取一些数据集统计信息,可以在此基础上运行数据并微调 GPT-3 引擎。
4. Reformer
Reformer 模型由 UC Berkeley 和 Google AI 的研究人员提出,关键思想如下:
Reformer模型能够以更高效的方式在处理长序列,内存使用和速度上更具优势,且性能与传统的Transformer模型表现相当Transformer的一个限制是处理长序列的能力,由于计算注意力的时间复杂度是平方级的Reformer通过使用三种技术解决了训练Transformer时的计算和内存挑战- 首先,
Reformer用局部敏感哈希注意力替代了(缩放)点积注意力,将注意力层中的 O ( L 2 ) O(L^2) O(L2) 复杂度降为 O ( L l o g L ) O(LlogL) O(LlogL),其中 L L L 是序列长度 - 其次,模型将注意力层和前馈层与可逆残差层结合,而非普通的残差层。可逆残差层允许激活值只存储一次,而不是
N次,从而减少了内存和时间复杂度的开销 - 第三,
Reformer对前馈层和反向传播的计算使用了分块技术

5. BigBird
BigBird 是 Google Research 提出的一种 Transformer 模型,它采用了稀疏注意力机制,以解决计算长序列全注意力所需的平方级复杂度,关键思想如下:
BigBird相比BERT能够处理更长的上下文,在类似硬件上,序列长度可以达到BERT的8倍。在某些自然语言处理任务上(如问答和文档摘要),模型性能有显著提升BigBird通过稀疏注意力机制克服了BERT的平方级复杂度,其复杂度从 O ( L 2 ) O(L^2) O(L2) 降低到了 O ( L ) O(L) O(L)BigBird能够处理长度最多为BERT的8倍的序列。换句话说,BERT的限制是512个词元,而BigBird增加到了4,096个词元
6. Transformer-XL
Transformer-XL 是 Carnegie Mellon University 和 Google Brain 提出的一种基于自注意力的模型,关键思想如下:
- 与原始
Transformer和循环神经网络 (Recurrent Neural Network, RNN) 不同,Transformer-XL可以在生成相对连贯的文本时,建模超出固定长度上下文的长期依赖 Transformer-XL引入了一种新的段级循环机制和一种新的相对位置编码(而非绝对位置编码),允许模型学习比RNN长80%和比原始Transformer长45%的依赖关系。传统上,Transformer将整个语料库分成较短的段,因为计算限制,只在每个段内训练模型- 在训练过程中,为前一个段计算的隐藏状态序列是固定的,并缓存起来,在模型处理下一个新段时作为扩展上下文重用,如下图所示。尽管梯度仍然保持在一个段内,但这种额外的输入允许网络利用历史信息,从而具备建模长期依赖性的能力,并避免上下文碎片化
- 在模型评估过程中,可以重用来自之前段的表示,而不是像普通模型那样从头计算。这样,
Transformer-XL在评估时的速度比原始Transformer模型快了多达1,800倍

7. XLNet
XLNet 是由 Carnegie Mellon University和Google Brain 提出的一种无监督的语言表示学习方法。XLNet 基于广义的排列语言建模目标,XLNet 采用 Transformer-XL 作为基础模型,关键思想如下:
- 与
BERT相似,XLNet使用双向上下文,即在预测某个词元时,考虑其前后的单词 XLNet最大化序列在所有可能排列的因子化顺序下的期望对数似然。由于排列操作,每个位置的上下文可以包含来自左右两边的词元。换句话说,XLNet捕获了双向上下文XLNet在20个任务上优于BERT- 代码和预训练模型可以在 GigHub 中获取
XLNet 在几乎所有 NLP 任务中都被认为优于 BERT,在 20 个任务上超越了 BERT,且性能差距较大,包括情感分析、自然语言推理、问答和文档排序等。
8. RoBERTa
RoBERTa (Robustly Optimized BERT) 是由 University of Washington 和 Meta 提出的模型,关键思想如下:
- 在复刻
BERT的过程中,研究人员发现BERT的训练显著不足 RoBERTa提出了一种BERT的变体,修改了关键超参数(更长的训练时间、更大的批大小、更大量的数据),去除了下一句子的预训练目标,并在更长的序列上进行训练,还提出了动态改变应用于训练数据的掩码模式- 收集了一个新的数据集
CC-News,大小与其他数据集相似 - 代码可以在 GitHub 中获取
RoBERTa 在 GLUE 和 SQuAD 任务上超越了 BERT,并在某些任务上与 XLNet 性能持平。
9. ALBERT
ALBERT (A Lite BERT) 是由 Google Research 和 Toyota Technological Institute at Chicago 提出的一种模型,关键思想如下:
- 大型模型通常通过增加模型规模来提升自然语言表示的预训练性能。然而,增加模型规模可能因
GPU/TPU内存限制、训练时间延长和意外的模型性能下降而变得困难 ALBERT通过采用以下两种参数减少技术来解决内存限制、通信开销和模型退化问题:分解嵌入参数化和跨层参数共享。因子分解嵌入参数化通过将大型词汇嵌入矩阵分解为两个小矩阵,来将隐藏层的大小与词汇嵌入的大小分开;跨层参数共享则使得模型能够在不同层之间共享参数,防止参数数量随网络深度增。这两种技术在不显著影响性能的情况下提高了参数效率- 相比于原始的
BERT-Large模型,ALBERT的参数数量减少了18倍,训练速度提高了1.7倍,而性能仅略有下降 - 代码可以在 GitHub 中获取
ALBERT 在当前所有的语言基准测试(如 GLUE、SQuAD 和 RACE )上都取得了优异结果。
10. StructBERT
StructBERT 是在论文 StructBERT: Incorporating Language Structures into Pre-training for Deep Language Understanding 中提出的一种模型,关键思想如下:
- 通过利用单词级和句子级的顺序信息来扩展
BERT的预训练过程。在预训练过程中,通过打乱若干个词元来扩展BERT的掩码任务,模型需要预测正确的顺序 - 模型随机打乱句子顺序,并进行特定的预测任务,预测下一个和上一个句子
- 额外的词序和句子打乱,以及预测原始顺序的任务,使
StructBERT能在预训练过程中学习语言结构
StructBERT 在多种 NLP 任务上,如情感分类、自然语言推理、语义文本相似性和问答等,取得了超越了 BERT 的优异表现。
11. T5 和 MUM
Google 在论文 Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer 中提出了 Text-to-Text Transfer Transformer (T5) 框架,关键思想如下:
T5将许多自然语言处理任务视为文本到文本 (Text-to-Text) 的问题。T5是一个可以在多种任务上进行训练的单一模型(具有不同数量的参数),该框架非常强大,可以应用于摘要生成、情感分析、问答和机器翻译等任务- 迁移学习,即在某个数据丰富的任务上进行预训练,然后在下游任务上进行微调,
T5对数十个语言理解任务的预训练目标、架构、无标签数据集、迁移方法和其他因素进行了广泛分析 - 类似于原始
Transformer模型,T5:1) 使用编码器-解码器结构;2) 将输入序列映射到学习的嵌入和位置嵌入,这些嵌入传递到编码器;3) 在编码器和解码器中使用自注意力块,包括自注意力和前馈层(每层都有归一化和跳跃连接) - 训练使用了
Colossal Clean Crawled Corpus(C4) 数据集,每个T5模型的参数数量从6000万 (T5 Small) 到110亿不等 - 计算成本与
BERT相似,但参数量是BERT的两倍 - 代码可以在 GitHub 中获取
具有 110 亿参数的 T5 模型在 24 个任务中具有优异性能表现,成为公认的最佳语言模型之一。

mT5,由 Google Research 于 2020 年提出,是对 T5 的扩展,通过使用单一 Transformer 来建模多种语言。它在基于 Common Crawl 的数据集上进行了预训练,涵盖了 101 种语言。
MUM (Multitask Unified Model) 是使用 T5 文本到文本框架的模型,比 BERT 强大 1000 倍。MUM 不仅能够理解语言,还能生成语言。它也是多模态的,涵盖了文本和图像等多种模态。该模型在 75 种不同语言和许多不同任务上进行了训练。
12. ELECTRA
ELECTRA 是 Stanford University 和 Google Brain 在论文 ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators 中提出的一种模型,主要思想如下:
BERT预训练的过程是对一小部分未标记输入进行掩码,然后训练网络去恢复这些被掩码的词。通常情况下,仅使用少量单词(约15%)ELECTRA采用了一种新的预训练任务,称为替换词元检测 (replaced token detection)。其思路是将一些词元替换为由小型语言模型生成的替代词元。然后,预训练的判别器用于预测每个词元是原始词元还是替换词元。通过这种方式,模型可以从所有词元中学习,而不是仅从一个子集学习。

ELECTRA 在性能上有了新的突破,同时也减少了预训练的工作量,代码可以在 GitHub 上获取。
13. DeBERTa
DeBERTa 是 Microsoft 在论文 DeBERTa: Decoding-enhanced BERT with Disentangled Attention 中提出的一种模型,主要思想如下:
BERT的自注意力机制关注内容与内容之间、内容与位置之间的关系,其中内容和位置嵌入在自注意力计算之前相加。DeBERTa则保持两个独立的向量来表示内容和位置,从而计算内容对内容、内容对位置、位置对内容和位置对位置的自注意力DeBERTa保留绝对位置和相关位置的信息。
由于模型使用了额外的结构信息,DeBERTa 在与其他模型(如 RoBERTa )的比较中,使用了一半的训练数据就能取得优异结果,代码可以在 GitHub 上获取。
14. 进化 Transformer 和 MEENA
进化 Transformer (Evolved Transformer) 由 Google Brain 在 2019 年提出,主要思想如下:
Transformers是一类手动设计的架构。Evolved Transformers的研究人员应用了神经架构搜索 (Neural Architecture Search,NAS),这是一套自动优化技术,能够学习如何组合基本的架构构建模块,从而找到比人工设计的模型更优的结构NAS应用于Transformer编码器和解码器块,结果得到了一种新的架构,如下图所示

Evolved Transformers 相较于原始 Transformer 架构表现出较大改进,这一模型是 MEENA 的核心,MEENA 是一个开放领域的聊天机器人,经过端到端训练,使用从公共社交媒体对话中提取和过滤的数据集。MEENA 使用了具有 26 亿参数的 Evolved Transformers,其中包含一个进化 Transformer 编码器块和 13 个进化 Transformer 解码器块。训练目标函数集中在最小化困惑度 (perplexity),即预测下一个词元的不确定性。MEENA 能够进行更为细腻和具体的对话。
15. LaMDA
LaMDA 是一个由 Google 于 2022 年推出的模型,它是一系列基于 Transformer 的神经语言模型,专注于对话,主要思想如下:
- 在预训练阶段,
LaMDA使用了一个包含1.56万亿个词的数据集,这比之前用于大型语言模型的数据量多近40倍,数据来源于公共对话数据和其他公共网页文档。数据集经过分词处理后,生成了2.81万亿个SentencePiece词元,预训练的任务是根据前面的词元预测句子中的下一个词元 - 在微调阶段,
LaMDA执行了一系列生成任务,以针对给定上下文生成自然语言响应,并进行分类任务以判断响应是否安全且高质量。
LaMDA定义了一套健全的质量、安全性和基础性的评估指标:- 质量 (
Quality):该指标分解为三个维度,即合理性 (Sensibleness)、特异性 (Specificity) 和趣味性 (Interestingness)。合理性考虑模型是否在对话上下文中产生有意义的响应;特异性评估响应是否与前面的对话上下文相关,而不是适用于大多数上下文的通用性响应;趣味性衡量模型是否生成具有洞察力、出乎意料或机智的响应 - 安全性 (
Safety):考虑如何避免产生可能对用户造成伤害的意外结果,并避免强化偏见 - 实证性 (
Groundedness):考虑到信息的可信度,即虽然信息可以得到权威外部来源的支持,但它可能与事实相悖
- 质量 (
LaMDA 展示了与人脑相近的令人印象深刻的结果,LaMDA 在每个维度和所有模型规模上具有显著优势。质量指标(合理性、特异性和趣味性)通常随着模型参数的增加而提高,不论是否进行了微调;安全性似乎仅通过模型规模无法改善,但通过微调可以得到提升;实证性随着模型规模的增加而改善,这可能是因为更大的模型具有更强的记忆不常见知识的能力,但微调使得模型能够访问外部知识源,并有效地将部分记忆知识的负担转移到外部知识源。通过微调,模型的质量差距可以缩小到接近人类水平,但模型在安全性和实证性方面仍低于人类水平。

16. Switch Transformer
Switch Transformer 是由 Google 于 2021 年提出的模型,主要思想包括:
Switch Transformer的训练参数范围从70亿到1.6万亿,经典的Transformer是一个深层的多头自注意力网络,每层的末尾有一个前馈网络 (feedforward network,FFN) 汇总来自多个头的输出。Switch Transformer将单一的FFN替换为多个FFN,并称之为专家 (experts)。在每次前向传递中,每层对于输入的每个词元,模型仅激活一个专家:

Switch-Base(70亿参数)和Switch-Large(260亿参数)在语言建模、分类、问答和摘要等任务上优于T5 Base(2亿参数)和T5-Large(7亿参数)
Switch Transformer 的实现可以在 Keras 官方获取。
17. RETRO
RETRO (Retrieval-Enhanced Transformer) 是由 DeepMind 于提出的一种增强检索的自回归语言模型,主要思想包括:
- 增加语言模型的参数数量已被证明可以提高结果的质量。然而,这种方法的可持续性有限,因为其计算成本高昂
RETRO将检索数据库与Transformer结合成一个混合架构。其基本思路是,首先在存储于检索数据库中的预计算BERT嵌入上使用最近邻算法进行搜索,然后将这些嵌入用作Transformer编码器的输入- 通过检索与
Transformer的组合,RETRO(从1.5亿个参数扩展到70亿个非嵌入参数)能够减少大语言模型使用的参数数量
例如,对于查询 “The 2021 Women’s US Open was won”,缓存的 BERT 嵌入传递给 Transformer 编码器以获取最终结果。

18. Pathways 和 PaLM
Pathways (Pathways: Next-generation AI architecture) 是一种能够跨领域和任务中进行泛化的单一模型,同时具备高效性。随后,Google 推出了 Pathways 语言模型 (Pathways Language Model, PaLM),这是一种包含 5400 亿参数的全连接解码器模型,能够在多个 TPU v4 Pods 上高效训练单一模型。Google 对 PaLM 在数百项语言理解和生成任务上的表现进行了评估,在大多数任务中达到了领先性能,在许多情况下显著超出其它模型。
相关链接
TensorFlow深度学习实战(1)——神经网络与模型训练过程详解
TensorFlow深度学习实战(2)——使用TensorFlow构建神经网络
TensorFlow深度学习实战(3)——深度学习中常用激活函数详解
TensorFlow深度学习实战(4)——正则化技术详解
TensorFlow深度学习实战(5)——神经网络性能优化技术详解
TensorFlow深度学习实战(6)——回归分析详解
TensorFlow深度学习实战(7)——分类任务详解
TensorFlow深度学习实战(8)——卷积神经网络
TensorFlow深度学习实战(12)——词嵌入技术详解
TensorFlow深度学习实战(13)——神经嵌入详解
TensorFlow深度学习实战(14)——循环神经网络详解
TensorFlow深度学习实战(15)——编码器-解码器架构
TensorFlow深度学习实战(16)——注意力机制详解
TensorFlow深度学习实战(21)——Transformer架构详解与实现
TensorFlow深度学习实战(22)——从零开始实现Transformer机器翻译
