Transformers 文档

Transformer 模型家族

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始

Transformer 模型家族

自 2017 年推出以来,原始 Transformer 模型 (有关温和的技术介绍,请参阅 Annotated 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 编码器,但其主要突破在于它如何处理图像。它将图像分成固定大小的图块,并使用它们来创建嵌入,就像句子被分成 token 一样。ViT 利用 Transformer 的高效架构,展示了当时与 CNN 相比具有竞争力的结果,同时训练所需的资源更少。ViT 之后很快出现了其他视觉模型,这些模型也可以处理密集的视觉任务,如分割和检测。

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

其他视觉模型 (如 BeIT 和 ViTMAE) 从 BERT 的预训练目标中汲取灵感。BeIT 通过掩码图像建模 (MIM) 进行预训练;图像图块被随机掩码,并且图像也被 token 化为视觉 token。BeIT 经过训练以预测与掩码图块相对应的视觉 token。ViTMAE 具有类似的预训练目标,只是它必须预测像素而不是视觉 token。不寻常的是,75% 的图像图块被掩码!解码器从掩码 token 和编码图块重建像素。预训练后,解码器被丢弃,编码器即可用于下游任务。

解码器

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

编码器-解码器

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

自然语言处理

编码器

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

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

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

解码器

GPT-2 是一种仅解码器的 Transformer,它预测序列中的下一个单词。它掩码右侧的 token,因此模型无法通过提前查看来“作弊”。通过在大量的文本语料库上进行预训练,GPT-2 在生成文本方面变得非常出色,即使文本有时只是不准确或不真实。但 GPT-2 缺乏 BERT 预训练的双向上下文,这使其不适合某些任务。XLNET 通过使用置换语言建模目标 (PLM) 将 BERT 和 GPT-2 预训练目标的优点结合起来,使其能够双向学习。

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

编码器-解码器

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

音频

编码器

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

编码器-解码器

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

多模态

编码器

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 经过预训练以读取文本,方法是根据图像和文本注释预测下一个单词。解码器根据提示生成 token 序列。提示由每个下游任务的特殊 token 表示。例如,文档解析具有特殊的 parsing token,该 token 与编码器隐藏状态组合以将文档解析为结构化输出格式 (JSON)。

强化学习

解码器

Decision Transformer 和 Trajectory Transformer 将状态、动作和奖励视为序列建模问题。Decision Transformer 基于待返回奖励值 (returns-to-go)、过去的状态和动作,生成一系列动作,以实现未来的期望回报。对于最后 K 个时间步,这三种模态中的每一种都转换为 token 嵌入,并由类似 GPT 的模型处理,以预测未来的动作 token。Trajectory Transformer 也将状态、动作和奖励进行 token 化,并使用 GPT 架构处理它们。与专注于奖励调节的 Decision Transformer 不同,Trajectory Transformer 使用束搜索生成未来的动作。

< > 在 GitHub 上更新