当提到“Transformers”一词时,可能会引起我们这些在80年代长大、玩着能够变形成各种形式的塞伯坦机器人的人的记忆,比如卡车、飞机、微型磁带录音机或恐龙。虽然我们很想深入探讨那种类型的Transformer,但这篇博文集中讨论的是一种不同的Transformer:Vaswani及其团队在他们的2017年开创性论文“Attention Is All You Need”中引入的Transformer。这篇论文改变了自然语言处理(NLP)和计算机视觉领域,为解决一系列问题带来了新的最先进的模型。
在这篇文章中,我们将深入探讨:
Transformer是什么;Transformer是如何工作的;Transformer在计算机视觉中的应用。让我们开始吧!
什么是Transformer?Transformer最早在2017年由Google发表的一篇名为“Attention Is All You Need”的论文中概述,它利用自注意机制解决各种序列到序列的任务,如语言翻译和文本生成。在论文的摘要中,研究人员指出,相对于先前的模型,Transformer的结构更简单,可以“完全放弃重复和卷积”。
Transformer在以下任务中使用:
文本摘要;文本从一种语言翻译到另一种语言;在给定查询的情况下,从文本语料库中检索相关信息;图像分类。深度学习的最新进展已成功地将Transformer架构适应于计算机视觉任务,例如图像分类,这些被称为视觉Transformer。
与卷积神经网络(CNN)相比,视觉Transformer没有诸如平移不变性和局部性等归纳偏差。尽管如此,与已建立的CNN模型相比,视觉Transformer在图像分类方面显示出了令人印象深刻的结果。在数据和计算需求方面的最新改进使得视觉Transformer成为深度学习从业者在工作中考虑的实用且有效的工具。
Transformer架构:深入了解视觉Transformer的架构受到原始Transformer架构的很大影响。对于全面理解Transformer的架构,特别是编码器组件,具有坚实的掌握至关重要。
本节将概述Transformer的关键要素,如附图所示。尽管这个解释专注于使用文本数据,也可以使用其他形式的输入,如视觉Transformer中的扁平化图像块。
ViT在ImageNet-A图像上的注意力热力图可视化
Transformer在计算机视觉中的应用:ViTs计算机视觉中的Transformer是一种利用Transformer架构的模型,最初设计用于文本任务,用于处理图像分类。与卷积神经网络不同,后者将图像处理为像素数组,ViT将图像分解为固定大小的块,将其视为视觉标记并进行嵌入。然后,模型使用位置嵌入处理块作为序列,并将其传递到Transformer编码器中以预测图像类别标签。
在大型数据集上训练时,ViT展现出出色的性能,超过了同等大小的卷积神经网络在准确性方面,并且所需的计算资源少4倍。Transformer架构在小型数据集上训练时性能较差,因为其具有大量的参数,这在较小的数据集上很难优化,而卷积神经网络通常在这些情况下更有效。总而言之,在CNN和ViT之间的选择将取决于具体任务和可用资源,如数据集的大小和计算能力。
流行的基于Transformer的模型让我们来看看一些在NLP、图像生成和计算机视觉中利用Transformer的最知名模型。
GPTGPT是OpenAI开发的一种语言模型,使用生成式训练,不需要标记的数据进行训练。它预测语言中单词序列的概率。截至2023年2月,GPT有四个版本:GPT-1、GPT-2、GPT-3和GPT-3.5。
GPT-1模型经历了一个两阶段的训练过程,首先是使用大量未标记数据的无监督预训练,使用语言模型目标函数。然后,通过使用特定任务的任务特定数据对模型进行监督微调。GPT-1模型基于Transformer架构。
GPT-2的主要重点是生成文本。为了生成文本,GPT-2采用自回归方法,并以预测序列中每个点的下一个标记为目标进行训练。该模型采用Transformer块构建,重点放在注意机制上。与BERT相比,GPT-2具有更少的维度参数。然而,GPT-2包含更多的Transformer块(48块),可以处理更长的序列。
GPT-3的架构类似于GPT-2,但它具有更多的Transformer块(96块),并且在更大的数据集上进行了训练。此外,GPT-3中输入句子的序列长度是GPT-2的两倍。
BERTBERT(双向编码器使用转换器生成)是由Google开发的用于NLP任务(如文本分类和自然语言推理)的深度学习模型。该架构包括仅编码器的Transformer,学习给定文本语料库中单词的上下文表示。
BERT使用自监督预训练技术,模型通过双向表示学习来预测输入文本中的掩码标记。这使BERT能够学习文本中单词的上下文关系,捕捉其左右上下文。
预训练后,BERT可以在特定的NLP任务上进行微调,如情感分析或问题回答,在预训练表示层之上使用特定任务的输出层。微调过程允许模型根据特定任务的标记数据来调整预训练权重。
BERT学习和保持了给定文本中单词的上下文关系的能力,在NLP中相对于传统模型取得了显著的改进,现在广泛应用于许多NLP任务中。
DALLE-2DALLE-2是由OpenAI开发的基于Transformer的生成模型。它能够根据文本描述生成多样化和高分辨率的图像。DALLE-2的架构包括一个12层的Transformer,其中每一层都有多头自我注意力和前馈模块。
模型将文本描述作为输入,并将其通过嵌入层转换为密集向量表示。然后,将该向量通过Transformer层,生成一个捕捉文本描述上下文的表示。
最后一个Transformer层的输出被重塑并通过几个密集层进行转换,以生成图像。在DALLE-2中,使用ImageNet特征和L2损失函数的组合进行模型训练。L2损失用于将生成的图像与目标图像进行比较,而ImageNet特征用于强制保持语义一致性。
总之,DALLE-2通过Transformer层生成文本描述的密集表示,然后通过几个密集层将该表示转换为图像。模型训练的目标是生成在语义上一致且类似于目标图像的图像。
Detectron2Detectron2是用于计算机视觉和目标检测任务的开源软件框架。它是Meta AI(前Facebook AI)开发的Detectron框架的新版本。
Detectron2建立在模块化设计的基础上,使用户可以轻松地插入各种骨干网络、头部网络和损失函数。该框架的骨干网络通常是卷积神经网络,用于从图像中提取特征。然后,这些特征被馈送到头部网络中,头部网络负责对图像中的对象进行预测。头部网络可以包括用于确定对象类别的分类头以及用于确定对象在图像中位置的回归头。
Detectron2中的损失函数用于训练网络,以最小化预测和真实注释之间的差异。损失函数的定义基于正在执行的任务(例如目标检测、实例分割等)。在训练阶段,该框架接受一批图像及其对应的注释作为输入,并优化网络的参数以最小化损失。训练后,该网络可以在新图像上进行预测。
总的来说,Detectron2的模块化设计及其对多种骨干网络、头部网络和损失函数的支持使其成为计算机视觉和目标检测任务中高度灵活和可扩展的框架。
结论Transformer是一种用于解决自然语言处理任务的神经网络架构。它基于自注意机制,使网络能够考虑输入序列中所有元素之间的关系。
最流行的Transformer架构是编码器-架构,但也有专用于特定问题解决的仅编码器和仅变体。使用自监督预训练技术在大量文本数据上预训练Transformer,取得了在NLP任务中的显著性能改进。
在计算机视觉中,Transformer在目标检测和语义分割等任务中显示出潜力,尽管自监督预训练的应用在视觉领域尚未像在NLP领域那样成功。尽管如此,Transformer架构仍在计算机视觉社区中积极研究和探索,并且已经提出了几项工作,例如DALLE-2和ViT,对原始Transformer架构进行了修改以更好地适应计算机视觉任务。
本文翻译自https://blog.roboflow.com/what-is-a-transformer/