Transformers 文档

Transformer模型家族

Transformer 模型家族

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

如果你不熟悉原始的Transformer模型或需要复习,请查看Hugging Face课程中的How do Transformers work章节。

计算机视觉

卷积网络

长期以来,卷积网络(CNNs)一直是计算机视觉任务的主导范式,直到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 通过引入一种新的预训练方法对此进行了改进,包括更长时间的训练和更大的批次,每个时期随机屏蔽标记而不是仅在预处理时屏蔽一次,并移除了下一句预测目标。

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

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

解码器

GPT-2 是一个仅解码器的Transformer模型,用于预测序列中的下一个词。它通过屏蔽右侧的标记,使模型无法通过“偷看”来“作弊”。通过在大量文本上进行预训练,GPT-2 在生成文本方面表现得非常出色,尽管生成的文本有时并不准确或真实。但 GPT-2 缺乏 BERT 预训练中的双向上下文,这使得它不适合某些任务。XLNET 结合了 BERT 和 GPT-2 预训练目标的最佳部分,通过使用排列语言建模目标(PLM),使其能够双向学习。

在GPT-2之后,语言模型变得更大,现在被称为大型语言模型(LLMs)。如果在一个足够大的数据集上进行预训练,LLMs可以展示出少样本甚至零样本学习的能力。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) 配对的数据集上联合训练,以最大化图像和文本嵌入之间的相似性。在预训练之后,您可以使用自然语言来指示 CLIP 根据图像预测文本,反之亦然。OWL-ViT 在 CLIP 的基础上构建,将其作为零样本目标检测的骨干网络。在预训练之后,添加了一个目标检测头,以对 (class, bounding box) 配对进行集合预测。

编码器-解码器

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

强化学习

解码器

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

< > Update on GitHub