Transformer:开山之作,主要关注翻译任务。
![](https://i-blog.csdnimg.cn/blog_migrate/9770a842632ad8d223248740b70690d0.gif#pic_center)
论文的主要贡献有以下几点:
- 提出了一种新颖的注意力机制,叫做多头自注意力(Multi-Head Self-Attention),它可以同时关注输入序列中不同位置和不同表示空间的信息,从而捕捉序列中的全局依赖关系。
- 提出了一种新颖的位置编码(Positional Encoding),它可以将序列中元素的位置信息注入到模型中,从而使模型能够区分不同位置的元素。
- 提出了一种新颖的残差连接(Residual Connection)和层归一化(Layer Normalization)的组合方式,它可以有效地防止梯度消失或爆炸,从而使模型能够深度堆叠。
- 提出了一种新颖的标签平滑(Label Smoothing)技术,它可以防止模型过拟合于某些标签,从而提高模型的泛化能力。
论文的核心思想是将传统的编码器-解码器架构中的循环神经网络或卷积神经网络替换为基于注意力机制的子层。具体来说,编码器由N个相同的层组成,每个层由两个子层组成:一个是多头自注意力子层,另一个是全连接前馈子层。解码器也由N个相同的层组成,每个层由三个子层组成:一个是多头自注意力子层,一个是多头编码器-解码器注意力子层(Multi-Head Encoder-Decoder Attention),另一个是全连接前馈子层。每个子层后面都跟着一个残差连接和一个层归一化。为了使模型能够感知序列中元素的位置信息,论文还在编码器和解码器的输入端加入了位置编码。论文在两个机器翻译任务上进行了实验:WMT 2014英语-德语翻译任务和WMT 2014英语-法语翻译任务。
BERT:双向上下文感知。
![](https://i-blog.csdnimg.cn/blog_migrate/a18762b52073837577c270d6191a34fa.gif#pic_center)
论文的主要贡献有以下几点:
- 提出了一种新颖的预训练目标,叫做掩码语言模型(Masked Language Model),它可以随机地掩盖输入序列中的一些词,然后根据上下文信息来预测被掩盖词的原始词汇id。与单向语言模型预训练不同,掩码语言模型可以使得预训练好的表示能够融合左右两个方向的上下文信息。
- 提出了另一种预训练目标,叫做下一句预测(Next Sentence Prediction),它可以同时预训练文本对表示。具体来说,它会随机地从语料库中抽取两个句子,并用一个二分类器来判断第二个句子是否是第一个句子在原始文档中的下一句。
- 提出了一种新颖的词汇表构建方法,叫做WordPiece,它可以将词汇表中不存在或低频的词分解为更小的子词单元(Subword Units),从而降低词汇表大小和稀疏性。
- 提出了一种新颖的微调方法,它可以利用预训练好的参数作为初始化,并对所有参数进行微调,从而适应不同的下游任务。每个下游任务都有单独微调过的模型,即使它们都是用相同的预训练参数初始化的。论文在两个预训练数据集上进行了实验。
GPT:常规单向语言任务。
![](https://i-blog.csdnimg.cn/blog_migrate/b9891e7d8ec054527ed64e2d22687d23.gif#pic_center)
GPT和BERT都是基于Transformer的语言模型,它们可以利用大规模的无标注文本进行预训练,然后在各种自然语言处理任务上进行微调或零样本或少样本的推理。但是,它们之间也有一些关键的区别,主要体现在以下几个方面:
- 架构:GPT是一个单向的Transformer解码器,它只能考虑当前位置之前的上下文信息,而BERT是一个双向的Transformer编码器,它可以同时考虑当前位置之前和之后的上下文信息。这使得BERT能够更好地理解句子或短语的完整语义,而GPT则更擅长生成连贯的文本。
- 预训练目标:GPT使用了一个单向语言模型作为预训练目标,它要求模型根据前面的词来预测下一个词。而BERT使用了两个预训练目标,一个是掩码语言模型,它要求模型根据上下文来预测被随机掩盖的词;另一个是下一句预测,它要求模型判断两个句子是否有逻辑关系。
- 预训练数据:GPT使用了40GB的英文文本作为预训练数据,而BERT使用了3TB的英文文本作为预训练数据。这意味着BERT拥有更多的信息和知识,可能在一些特定的任务上有优势。
- 微调方式:GPT在微调时需要指定输入输出的语言模型任务,例如文本生成、摘要、翻译等。而BERT在微调时可以应用在多种任务上,例如文本分类、命名实体识别、问答等。这使得BERT更加灵活和通用。总之,GPT和BERT都是非常强大和流行的语言模型,它们各有优劣和适用场景。
VIT:Transformer杀入CV领域的跨坑之作。
![](https://i-blog.csdnimg.cn/blog_migrate/ccf70f24c37755f38fd6eb2fe65420b9.gif#pic_center)
ViT模型是由Google团队在2020年提出的一种将Transformer应用在图像分类的模型1,它的全称是Vision Transformer,意思是视觉变换器。它的核心思想是将图像分割成固定大小的小块(patch),然后将每个小块线性嵌入成一个向量,再加上位置编码,形成一个序列,作为Transformer编码器的输入。为了进行分类,它还在序列的开头加入了一个额外的可学习的“分类标记”,并在Transformer编码器的输出端接一个线性层作为分类器。ViT模型在大规模的图像数据集(ImageNet-21k)上进行了预训练,然后在小规模的图像数据集(ImageNet)上进行了微调,取得了与当时最佳的卷积神经网络模型相媲美甚至超越的效果。
ViT模型的主要贡献有以下几点:
- 提出了一种新颖的将Transformer应用在图像分类的方法,证明了Transformer不仅可以处理自然语言,也可以处理视觉信息。
- 提出了一种新颖的图像分割和嵌入方法,使得Transformer可以直接处理原始图像而不需要额外的特征提取器。
- 提出了一种新颖的预训练和微调方法,使得ViT模型可以从大规模的图像数据中学习通用的视觉表示,并迁移到小规模的图像数据上。
- 提出了一种新颖的可扩展性分析方法,发现ViT模型可以随着参数数量和训练数据量的增加而不断提升性能,而卷积神经网络则很难做到。
ViT模型是Transformer在计算机视觉领域应用的一个里程碑,它开启了一系列后续研究和应用,例如DeiT、Swin Transformer、PVT等。
SWIN:CNN与Transformer的集大成者。
![](https://i-blog.csdnimg.cn/blog_migrate/ab767f2a6e0c09a6ee46988be1c6b677.gif#pic_center)
Swin模型是由微软团队在2021年提出的一种将Transformer应用在计算机视觉的模型,它的全称是Shifted Window Transformer,意思是平移窗口变换器。它的核心思想是将图像分割成固定大小的小块(patch),然后将每个小块线性嵌入成一个向量,再加上位置编码,形成一个序列,作为Transformer编码器的输入。与ViT模型不同的是,Swin模型在每个Transformer编码器层中使用了一种新颖的注意力机制,叫做平移窗口注意力(Shifted Window Attention),它可以将序列划分为多个重叠的局部窗口,并在每个窗口内部计算自注意力。为了增加感受野和捕捉多尺度信息,Swin模型还在不同层之间使用了一种新颖的特征融合方法,叫做块合并(Patch Merging),它可以将相邻的小块合并成一个大块,并降低特征图的分辨率。Swin模型在大规模的图像数据集(ImageNet-1k)上进行了预训练,然后在多种计算机视觉任务上进行了微调或零样本或少样本的推理,取得了当时最佳的效果。
Swin模型的主要贡献有以下几点:
- 提出了一种新颖的平移窗口注意力机制,使得Transformer可以在局部窗口内部计算自注意力,从而降低计算复杂度和内存消耗,并提高长距离依赖的建模能力。
提出了一种新颖的块合并方法,使得Transformer可以构建层次化的特征图,并捕捉多尺度信息。 - 提出了一种新颖的随机深度方法,使得Transformer可以动态地调整网络深度,并提高泛化能力和训练效率。
- 提出了一种新颖的可扩展性分析方法,发现Swin模型可以随着参数数量和训练数据量的增加而不断提升性能。
DETR:基于Transformer端到端的物体检测。
![](https://i-blog.csdnimg.cn/blog_migrate/630cd0a36c49080147cc60ee597665f8.gif#pic_center)
DETR模型是由Facebook团队在2020年提出的一种将Transformer应用在目标检测的模型,它的全称是Detection Transformer,意思是检测变换器。它的核心思想是将目标检测视为一个直接的集合预测问题,而不是一个复杂的手工设计的流程。它使用了一个传统的CNN骨干网络来学习图像的二维表示,然后将其展平并加上位置编码,作为Transformer编码器的输入。一个Transformer解码器则以一小组固定数量的可学习的对象查询(Object Queries)作为输入,并额外地注意编码器的输出。我们将解码器的每个输出嵌入传递给一个共享的前馈网络(FFN),用来预测一个检测结果(类别和边界框)或者一个“无对象”类别。DETR模型使用了一种基于双边匹配(Bipartite Matching)的集合损失函数,来强制模型输出唯一的预测,并避免重复或遗漏。DETR模型在大规模的目标检测数据集(COCO)上进行了训练和评估,取得了与当时最佳的Faster R-CNN相当甚至超越的效果。
DETR模型将目标检测视为一个直接的集合预测问题,是因为它不需要经过多个阶段或组件来生成候选框、筛选重复框、分配标签等,而是直接输出一个固定数量的检测结果,每个结果包含一个类别和一个边界框。这些检测结果是无序的,也就是说,它们不依赖于输入图像中的位置或顺序,而是构成了一个集合。DETR模型使用了一种集合损失函数,来比较预测集合和真实集合之间的差异,并通过双边匹配来找到最佳的对应关系。这样,DETR模型可以直接优化目标检测的最终指标,而不需要考虑中间过程的细节。
MaskFormer:分割不应该面向每个像素解决。
![](https://i-blog.csdnimg.cn/blog_migrate/f26afbf7792f730306144a01fe258cf6.gif#pic_center)
MaskFormer模型是由Facebook团队在2021年提出的一种将Transformer应用在语义分割的模型,它的全称是Mask Classification Former,意思是掩码分类变换器。它的核心思想是将语义分割视为一个掩码分类问题,而不是一个逐像素分类问题。它使用了一个传统的CNN骨干网络来学习图像的二维表示,然后将其展平并加上位置编码,作为Transformer编码器的输入。一个Transformer解码器则以一小组固定数量的可学习的对象查询(Object Queries)作为输入,并额外地注意编码器的输出。我们将解码器的每个输出嵌入传递给一个共享的前馈网络(FFN),用来预测一个掩码分类结果(类别和掩码)。MaskFormer模型使用了一种基于双边匹配(Bipartite Matching)的集合损失函数,来强制模型输出唯一的预测,并避免重复或遗漏。MaskFormer模型在大规模的语义分割数据集(ADE20K、Cityscapes、COCO-Stuff、Mapillary Vistas)上进行了训练和评估,取得了当时最佳的效果。