Transformers 文档

Transformer 模型家族

Hugging Face's logo
加入 Hugging Face 社区

并获取增强的文档体验

开始使用

Transformer 模型家族

自 2017 年推出以来,最初的 Transformer 模型(有关友好的技术介绍,请参阅带注释的 Transformer 博客文章)激发了许多新的令人兴奋的模型,这些模型扩展到自然语言处理 (NLP) 任务之外。有一些模型用于预测蛋白质的折叠结构训练猎豹跑步时间序列预测。由于有如此多的 Transformer 变体可用,因此很容易忽略大局。所有这些模型的共同点是它们都基于原始的 Transformer 架构。一些模型仅使用编码器或解码器,而另一些模型则同时使用两者。这提供了一个有用的分类法来对 Transformer 家族中模型的高级差异进行分类和检查,并且它将帮助您理解您以前从未遇到过的 Transformer。

如果您不熟悉原始的 Transformer 模型或需要复习,请查看 Hugging Face 课程的Transformer 如何工作章节。

计算机视觉

卷积神经网络

长期以来,卷积神经网络(CNN)一直是计算机视觉任务的主流范式,直到Vision Transformer展示了其可扩展性和效率。即使在那时,CNN的一些最佳特性,如平移不变性,仍然非常强大(尤其是在某些任务中),以至于一些Transformer在其架构中也引入了卷积。ConvNeXt颠覆了这种交换,并结合了Transformer的设计选择来使CNN现代化。例如,ConvNeXt使用不重叠的滑动窗口对图像进行分块,并使用更大的卷积核来增加其全局感受野。ConvNeXt还在多层设计方面做出了一些选择,以提高内存效率和性能,因此它可以与Transformer很好地竞争!

编码器

Vision Transformer (ViT) 为无需卷积的计算机视觉任务打开了大门。ViT 使用标准的 Transformer 编码器,但其主要突破在于它处理图像的方式。它将图像分割成固定大小的块,并使用它们来创建嵌入,就像句子被分割成标记一样。ViT 利用 Transformer 高效的架构,在当时展现了与 CNN 具有竞争力的结果,同时需要更少的训练资源。ViT 很快就被其他视觉模型所取代,这些模型也可以处理密集的视觉任务,如分割和检测。

其中一个模型是Swin Transformer。它从更小尺寸的块构建分层特征图(类似于 CNN 👀 并且与 ViT 不同),并在更深层的层中将其与相邻的块合并。注意力仅在局部窗口内计算,并且窗口在注意力层之间进行移动以创建连接,以帮助模型更好地学习。由于 Swin Transformer 可以生成分层特征图,因此它是密集预测任务(如分割和检测)的良好候选者。SegFormer 也使用 Transformer 编码器来构建分层特征图,但它在顶部添加了一个简单的多层感知器 (MLP) 解码器来组合所有特征图并进行预测。

其他视觉模型,如 BeIT 和 ViTMAE,借鉴了 BERT 的预训练目标。BeIT 通过掩码图像建模 (MIM)进行预训练;图像块被随机掩码,图像也被标记化为视觉标记。BeIT 训练的目标是预测与掩码块对应的视觉标记。ViTMAE 有一个类似的预训练目标,除了它必须预测像素而不是视觉标记。不同寻常的是,75% 的图像块被掩码了!解码器从掩码标记和编码块重建像素。预训练后,解码器被丢弃,编码器就可以用于下游任务。

解码器

仅解码器的视觉模型很少见,因为大多数视觉模型都依赖于编码器来学习图像表示。但是对于图像生成等用例,解码器是一个自然的适配,正如我们在 GPT-2 等文本生成模型中所见。ImageGPT 使用与 GPT-2 相同的架构,但它不是预测序列中的下一个标记,而是预测图像中的下一个像素。除了图像生成之外,ImageGPT 还可以微调用于图像分类。

编码器-解码器

视觉模型通常使用编码器(也称为骨干网络)来提取重要的图像特征,然后将其传递到 Transformer 解码器。DETR 具有预训练的骨干网络,但它也使用完整的 Transformer 编码器-解码器架构进行目标检测。编码器学习图像表示,并在解码器中将它们与目标查询(每个目标查询是一个学习到的嵌入,专注于图像中的区域或目标)结合起来。DETR 预测每个目标查询的边界框坐标和类别标签。

自然语言处理

编码器

BERT 是一种仅编码器的 Transformer,它随机掩码输入中的某些标记以避免看到其他标记,这将允许它“作弊”。预训练的目标是根据上下文预测掩码标记。这使得 BERT 可以充分利用左右上下文来帮助它学习更深、更丰富的输入表示。然而,BERT 的预训练策略仍有改进的空间。RoBERTa 通过引入新的预训练方法进行了改进,包括更长时间和更大批次的训练,在每个 epoch 随机掩码标记而不是只在预处理期间掩码一次,以及删除下一句预测目标。

提高性能的主要策略是增加模型大小。但是训练大型模型在计算上代价很高。一种减少计算成本的方法是使用较小的模型,如DistilBERT。DistilBERT 使用知识蒸馏(一种压缩技术)来创建 BERT 的较小版本,同时保留其几乎所有语言理解能力。

然而,大多数 Transformer 模型继续朝着更多参数的方向发展,导致新的模型专注于提高训练效率。ALBERT 通过两种方式减少内存消耗:将较大的词汇嵌入分成两个较小的矩阵,并允许层共享参数。DeBERTa 添加了一种分离的注意力机制,其中单词及其位置分别编码在两个向量中。注意力是从这些单独的向量而不是包含单词和位置嵌入的单个向量计算出来的。Longformer 也专注于使注意力更有效,尤其是在处理具有更长序列长度的文档时。它结合使用局部窗口注意力(仅从每个标记周围的固定窗口大小计算注意力)和全局注意力(仅用于特定任务标记,如分类的[CLS])来创建一个稀疏注意力矩阵而不是完整的注意力矩阵。

解码器

GPT-2 是一种仅解码器的 Transformer,用于预测序列中的下一个单词。它会屏蔽右侧的标记,因此模型无法通过提前查看来“作弊”。通过在大规模文本语料库上进行预训练,GPT-2 变得非常擅长生成文本,即使文本有时不准确或不真实。但 GPT-2 缺乏 BERT 预训练中的双向上下文,这使得它不适合某些任务。XLNET 通过使用允许它双向学习的排列语言建模目标 (PLM),结合了 BERT 和 GPT-2 预训练目标的优点。

在 GPT-2 之后,语言模型变得更大,现在被称为大型语言模型 (LLM)。如果在足够大的数据集上进行预训练,LLM 可以展示少样本甚至零样本学习。GPT-J 是一个拥有 60 亿参数并在 4000 亿个标记上训练的 LLM。GPT-J 之后是 OPT,一个仅解码器的模型系列,其中最大的模型拥有 1750 亿参数,并在 1800 亿个标记上训练。BLOOM 也是在同一时期发布的,该系列中最大的模型拥有 1760 亿参数,并在 46 种语言和 13 种编程语言的 3660 亿个标记上训练。

编码器-解码器

BART 保留了原始的 Transformer 架构,但它使用文本填充损坏修改了预训练目标,其中一些文本跨度被替换为单个mask标记。解码器预测未损坏的标记(未来的标记被屏蔽)并使用编码器的隐藏状态来帮助它。Pegasus 类似于 BART,但 Pegasus 屏蔽整个句子而不是文本跨度。除了掩码语言建模外,Pegasus 还通过句子间隙生成 (GSG) 进行预训练。GSG 目标屏蔽对文档重要的整个句子,用mask标记替换它们。解码器必须根据剩余的句子生成输出。T5 是一个更独特的模型,它使用特定的前缀将所有 NLP 任务转换为文本到文本问题。例如,前缀Summarize:表示摘要任务。T5 通过监督(GLUE 和 SuperGLUE)训练和自监督训练(随机采样并丢弃 15% 的标记)进行预训练。

音频

编码器

Wav2Vec2 使用 Transformer 编码器直接从原始音频波形学习语音表示。它使用对比任务进行预训练,以从一组错误的语音表示中确定真实的语音表示。HuBERT 类似于 Wav2Vec2,但训练过程不同。目标标签是通过聚类步骤创建的,其中将相似音频的片段分配到一个聚类,该聚类成为一个隐藏单元。隐藏单元被映射到一个嵌入以进行预测。

编码器-解码器

Speech2Text 是一种语音模型,专为自动语音识别 (ASR) 和语音翻译而设计。该模型接收从音频波形提取的对数梅尔滤波器组特征,并进行自回归预训练以生成成绩单或翻译。Whisper 也是一种 ASR 模型,但与许多其他语音模型不同,它是在大量✨标记的✨音频转录数据上进行预训练的,以实现零样本性能。数据集的大部分也包含非英语语言,这意味着 Whisper 也可用于低资源语言。在结构上,Whisper 类似于 Speech2Text。音频信号被转换为对数梅尔谱图,由编码器进行编码。解码器根据编码器的隐藏状态和前一个标记自回归地生成成绩单。

多模态

编码器

VisualBERT 是一种用于视觉语言任务的多模态模型,在 BERT 发布后不久发布。它结合了 BERT 和一个预训练的目标检测系统,将图像特征提取到视觉嵌入中,并与文本嵌入一起传递到 BERT。VisualBERT 根据未掩码文本和视觉嵌入预测掩码文本,并且它还必须预测文本是否与图像对齐。当 ViT 发布时,ViLT 在其架构中采用了 ViT,因为它更容易以这种方式获取图像嵌入。图像嵌入与文本嵌入一起处理。从那里,ViLT 通过图像文本匹配、掩码语言建模和整个单词掩码进行预训练。

CLIP 采用了一种不同的方法,并对 (image, text) 进行配对预测。图像编码器 (ViT) 和文本编码器 (Transformer) 在 4 亿个 (image, text) 配对数据集上联合训练,以最大化 (image, text) 配对的图像和文本嵌入之间的相似性。预训练后,您可以使用自然语言指示 CLIP 根据图像预测文本,反之亦然。OWL-ViT 在 CLIP 的基础上构建,使用它作为其零样本目标检测的骨干。预训练后,添加一个目标检测头以对 (class, bounding box) 配对进行集合预测。

编码器-解码器

光学字符识别 (OCR) 是一项长期存在的文本识别任务,通常涉及多个组件来理解图像并生成文本。TrOCR 使用端到端 Transformer 简化了该过程。编码器是用于图像理解的 ViT 样式模型,并将图像处理为固定大小的补丁。解码器接收编码器的隐藏状态并自回归地生成文本。Donut 是一种更通用的视觉文档理解模型,不依赖于基于 OCR 的方法。它使用 Swin Transformer 作为编码器,使用多语言 BART 作为解码器。Donut 通过根据图像和文本注释预测下一个单词来进行预训练以读取文本。解码器根据提示生成标记序列。提示由每个下游任务的特殊标记表示。例如,文档解析有一个特殊的parsing标记,它与编码器隐藏状态相结合以将文档解析为结构化输出格式 (JSON)。

强化学习

解码器

决策和轨迹Transformer将状态、动作和奖励视为一个序列建模问题。 决策Transformer 基于未来回报、过去状态和动作生成一系列导致未来期望回报的动作。 对于最后 K 个时间步,这三种模态中的每一个都被转换为标记嵌入,并由类似GPT的模型处理以预测未来的动作标记。 轨迹Transformer 也将状态、动作和奖励标记化,并使用GPT架构对其进行处理。与专注于奖励条件的决策Transformer不同,轨迹Transformer使用束搜索生成未来的动作。

< > 在GitHub上更新