TensorFlow深度学习实战——Transformer变体模型
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机器翻译