当前位置: 首页 > news >正文

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,成为第一批大型语言模型之一,具有 24Transformer 块、1024 个隐藏层、16 个自注意力头和 3.4 亿个参数,模型在一个具有 33 亿词语的大规模语料库上进行训练
    BERT11NLP 任务中取得了优异性能:
  • GLUE 得分 80.4%,比之前的最佳结果提高了 7.6%
  • SQuAD 1.1 上准确率为 93.2%,较人类表现高出 2%

我们将在后续学习中介绍 GLUESQuAD 指标。

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 BerkeleyGoogle 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 对前馈层和反向传播的计算使用了分块技术

Reformer

5. BigBird

BigBirdGoogle Research 提出的一种 Transformer 模型,它采用了稀疏注意力机制,以解决计算长序列全注意力所需的平方级复杂度,关键思想如下:

  • BigBird 相比 BERT 能够处理更长的上下文,在类似硬件上,序列长度可以达到 BERT8 倍。在某些自然语言处理任务上(如问答和文档摘要),模型性能有显著提升
  • BigBird 通过稀疏注意力机制克服了 BERT 的平方级复杂度,其复杂度从 O ( L 2 ) O(L^2) O(L2) 降低到了 O ( L ) O(L) O(L)
  • BigBird 能够处理长度最多为 BERT8 倍的序列。换句话说,BERT 的限制是 512 个词元,而 BigBird 增加到了 4,096 个词元

6. Transformer-XL

Transformer-XLCarnegie Mellon University 和 Google Brain 提出的一种基于自注意力的模型,关键思想如下:

  • 与原始 Transformer 和循环神经网络 (Recurrent Neural Network, RNN) 不同,Transformer-XL 可以在生成相对连贯的文本时,建模超出固定长度上下文的长期依赖
  • Transformer-XL 引入了一种新的段级循环机制和一种新的相对位置编码(而非绝对位置编码),允许模型学习比 RNN80% 和比原始 Transformer45% 的依赖关系。传统上,Transformer 将整个语料库分成较短的段,因为计算限制,只在每个段内训练模型
  • 在训练过程中,为前一个段计算的隐藏状态序列是固定的,并缓存起来,在模型处理下一个新段时作为扩展上下文重用,如下图所示。尽管梯度仍然保持在一个段内,但这种额外的输入允许网络利用历史信息,从而具备建模长期依赖性的能力,并避免上下文碎片化
  • 在模型评估过程中,可以重用来自之前段的表示,而不是像普通模型那样从头计算。这样,Transformer-XL 在评估时的速度比原始 Transformer 模型快了多达 1,800

Transformer-XL

7. XLNet

XLNet 是由 Carnegie Mellon University和Google Brain 提出的一种无监督的语言表示学习方法。XLNet 基于广义的排列语言建模目标,XLNet 采用 Transformer-XL 作为基础模型,关键思想如下:

  • BERT 相似,XLNet 使用双向上下文,即在预测某个词元时,考虑其前后的单词
  • XLNet 最大化序列在所有可能排列的因子化顺序下的期望对数似然。由于排列操作,每个位置的上下文可以包含来自左右两边的词元。换句话说,XLNet 捕获了双向上下文
  • XLNet20 个任务上优于 BERT
  • 代码和预训练模型可以在 GigHub 中获取

XLNet 在几乎所有 NLP 任务中都被认为优于 BERT,在 20 个任务上超越了 BERT,且性能差距较大,包括情感分析、自然语言推理、问答和文档排序等。

8. RoBERTa

RoBERTa (Robustly Optimized BERT) 是由 University of WashingtonMeta 提出的模型,关键思想如下:

  • 在复刻 BERT 的过程中,研究人员发现 BERT 的训练显著不足
  • RoBERTa 提出了一种 BERT 的变体,修改了关键超参数(更长的训练时间、更大的批大小、更大量的数据),去除了下一句子的预训练目标,并在更长的序列上进行训练,还提出了动态改变应用于训练数据的掩码模式
  • 收集了一个新的数据集 CC-News,大小与其他数据集相似
  • 代码可以在 GitHub 中获取

RoBERTaGLUESQuAD 任务上超越了 BERT,并在某些任务上与 XLNet 性能持平。

9. ALBERT

ALBERT (A Lite BERT) 是由 Google ResearchToyota Technological Institute at Chicago 提出的一种模型,关键思想如下:

  • 大型模型通常通过增加模型规模来提升自然语言表示的预训练性能。然而,增加模型规模可能因 GPU/TPU 内存限制、训练时间延长和意外的模型性能下降而变得困难
  • ALBERT 通过采用以下两种参数减少技术来解决内存限制、通信开销和模型退化问题:分解嵌入参数化和跨层参数共享。因子分解嵌入参数化通过将大型词汇嵌入矩阵分解为两个小矩阵,来将隐藏层的大小与词汇嵌入的大小分开;跨层参数共享则使得模型能够在不同层之间共享参数,防止参数数量随网络深度增。这两种技术在不显著影响性能的情况下提高了参数效率
  • 相比于原始的 BERT-Large 模型,ALBERT 的参数数量减少了 18 倍,训练速度提高了 1.7 倍,而性能仅略有下降
  • 代码可以在 GitHub 中获取

ALBERT 在当前所有的语言基准测试(如 GLUESQuADRACE )上都取得了优异结果。

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 个任务中具有优异性能表现,成为公认的最佳语言模型之一。

T5

mT5,由 Google Research2020 年提出,是对 T5 的扩展,通过使用单一 Transformer 来建模多种语言。它在基于 Common Crawl 的数据集上进行了预训练,涵盖了 101 种语言。
MUM (Multitask Unified Model) 是使用 T5 文本到文本框架的模型,比 BERT 强大 1000 倍。MUM 不仅能够理解语言,还能生成语言。它也是多模态的,涵盖了文本和图像等多种模态。该模型在 75 种不同语言和许多不同任务上进行了训练。

12. ELECTRA

ELECTRAStanford UniversityGoogle Brain 在论文 ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators 中提出的一种模型,主要思想如下:

  • BERT 预训练的过程是对一小部分未标记输入进行掩码,然后训练网络去恢复这些被掩码的词。通常情况下,仅使用少量单词(约 15%)
  • ELECTRA 采用了一种新的预训练任务,称为替换词元检测 (replaced token detection)。其思路是将一些词元替换为由小型语言模型生成的替代词元。然后,预训练的判别器用于预测每个词元是原始词元还是替换词元。通过这种方式,模型可以从所有词元中学习,而不是仅从一个子集学习。

ELECTRA

ELECTRA 在性能上有了新的突破,同时也减少了预训练的工作量,代码可以在 GitHub 上获取。

13. DeBERTa

DeBERTaMicrosoft 在论文 DeBERTa: Decoding-enhanced BERT with Disentangled Attention 中提出的一种模型,主要思想如下:

  • BERT 的自注意力机制关注内容与内容之间、内容与位置之间的关系,其中内容和位置嵌入在自注意力计算之前相加。DeBERTa 则保持两个独立的向量来表示内容和位置,从而计算内容对内容、内容对位置、位置对内容和位置对位置的自注意力
  • DeBERTa 保留绝对位置和相关位置的信息。

由于模型使用了额外的结构信息,DeBERTa 在与其他模型(如 RoBERTa )的比较中,使用了一半的训练数据就能取得优异结果,代码可以在 GitHub 上获取。

14. 进化 Transformer 和 MEENA

进化 Transformer (Evolved Transformer) 由 Google Brain2019 年提出,主要思想如下:

  • 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 是一个由 Google2022 年推出的模型,它是一系列基于 Transformer 的神经语言模型,专注于对话,主要思想如下:

  • 在预训练阶段,LaMDA 使用了一个包含 1.56 万亿个词的数据集,这比之前用于大型语言模型的数据量多近 40 倍,数据来源于公共对话数据和其他公共网页文档。数据集经过分词处理后,生成了 2.81 万亿个 SentencePiece 词元,预训练的任务是根据前面的词元预测句子中的下一个词元
  • 在微调阶段,LaMDA 执行了一系列生成任务,以针对给定上下文生成自然语言响应,并进行分类任务以判断响应是否安全且高质量。
    LaMDA 定义了一套健全的质量、安全性和基础性的评估指标:
    • 质量 (Quality):该指标分解为三个维度,即合理性 (Sensibleness)、特异性 (Specificity) 和趣味性 (Interestingness)。合理性考虑模型是否在对话上下文中产生有意义的响应;特异性评估响应是否与前面的对话上下文相关,而不是适用于大多数上下文的通用性响应;趣味性衡量模型是否生成具有洞察力、出乎意料或机智的响应
    • 安全性 (Safety):考虑如何避免产生可能对用户造成伤害的意外结果,并避免强化偏见
    • 实证性 (Groundedness):考虑到信息的可信度,即虽然信息可以得到权威外部来源的支持,但它可能与事实相悖

LaMDA 展示了与人脑相近的令人印象深刻的结果,LaMDA 在每个维度和所有模型规模上具有显著优势。质量指标(合理性、特异性和趣味性)通常随着模型参数的增加而提高,不论是否进行了微调;安全性似乎仅通过模型规模无法改善,但通过微调可以得到提升;实证性随着模型规模的增加而改善,这可能是因为更大的模型具有更强的记忆不常见知识的能力,但微调使得模型能够访问外部知识源,并有效地将部分记忆知识的负担转移到外部知识源。通过微调,模型的质量差距可以缩小到接近人类水平,但模型在安全性和实证性方面仍低于人类水平。

LaMDA

16. Switch Transformer

Switch Transformer 是由 Google2021 年提出的模型,主要思想包括:

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

Switch Transformer

  • 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 上高效训练单一模型。GooglePaLM 在数百项语言理解和生成任务上的表现进行了评估,在大多数任务中达到了领先性能,在许多情况下显著超出其它模型。

相关链接

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机器翻译

相关文章:

  • C++11中alignof和alignas的入门到精通指南
  • C++ 标准模板库各个容器的应用场景分析
  • 查询pgsql表字段 包含 name 的表
  • 基于Rust的Polars学习笔记
  • C# .net core添加单元测试项目,依赖注入接口测试
  • QtitanRibbon为能源工业打造高效应用体验:实现系统中的现代化UI
  • java设计模式[4]之设计型模式
  • qt 实现socket 通讯 demo
  • 一篇文章快速学会HTML
  • 用Go写一个飞书机器人定时发送消息的程序
  • 《企业司法风险监控系统架构设计:从数据采集到T+1实时预警的完整解决方案》
  • macOS版的节点小宝上架苹果APP Store了
  • 碳化硅在轨道车辆永磁牵引电动机的优势和应用
  • 深度解析 Cursor(逐行解析系统提示词、分享高效制定 Cursor Rules 的技巧...)
  • 架构优化——submodule转为subtree
  • 【生活】ECMO原理、作用、费用及使用方法
  • Go语言中的 函数、闭包、defer、错误处理
  • SKUA-GOCAD入门教程-第八节 线的创建与编辑5
  • 黄金价格触及3400美元临界点:AI量化模型揭示美元强势的“逆周期”压制力与零售数据爆冷信号
  • React+Taro创建小程序
  • 二次疫情最新通报今天/官网seo是什么
  • 政府网站系统源码/软文发稿公司
  • 网站开发与管理课程设计心得/惠州百度seo
  • nba网站开发毕业论文/网络推广计划书范文
  • 常熟市建设局网站/网店营销与推广策划方案
  • 完成网站建设成本/聚名网