Vision Transformer细节理解

Vision Transformer细节理解

  • Transformer模型架构图
  • Patch+Position Embedding
  • Transformer Encoder
  • 参考文献

Transformer模型架构图

首先来看一下Transformer模型的架构图,因为Vision Transformer是Transformer模型在CV领域的应用,所以在学习ViT模型之前有必要了解一下Transformer的基础架构。关于Transformer架构的基础知识可去B站观看这个视频。
Vision Transformer细节理解_第1张图片Transformer由两个部分组成,一个是编码端(左半部分),一个是解码端(右半部分)。对于编码端来说,输入字符Inputs转化为对应的数字,再由数字转化为Input Embedding,然后和对应的Positional Encoding相加,组成了最终的Inputs Embedding。然后这个输入流经多头注意力层,再流经前馈神经网络,堆叠N个后最终输出。

Patch+Position Embedding

由于ViT模型中只使用了编码端,所以我们重点看一下编码端,主要做的是如何把编码器放入CV任务中。

在NLP中,将原始字符转换为数字,再对每个数字进行embeding,在和Positional Embedding相加,解决了输入的问题。
Vision Transformer细节理解_第2张图片
那么现在的问题是,一张图片如果想输入到这个模型中,应该怎么融入进去呢?
Vision Transformer细节理解_第3张图片要把左边的这张图片放进右边的模型架构中去,那么最核心的思想一定是把图片仿照着NLP中的方式转换成一个一个的token,那么怎么转化成一个一个的token呢?

一个非常朴素的思想是这样的,将一个图片(假设是单通道)的每一个像素点当做一个token,再把每个像素点对应的token转化为各自的embedding(可能不准确,但是差不多),和对应的位置编码进行相加不就解决了一个图片输入转换为token的问题吗?
Vision Transformer细节理解_第4张图片但这样的话,会遇到一个非常严重的问题,就是复杂度的问题。一张单通道224224大小的图片,如果每一个像素点都当做一个token的话,序列长度将变成224224=50176,即Transformer模型输入那里变成了50176的大小,相当于BERT的100倍。这个长度太大了,由长度就会导致参数量的问题,长度太大参数量也将会非常大,这是我们所不能承受的。
Vision Transformer细节理解_第5张图片针对复杂度的问题,我们怎么处理呢?
Vision Transformer细节理解_第6张图片这几种改进方式其实都可行,都有论文发表出来,但是实施起来比较复杂。我们其实想得到一个简单的方式去处理这个问题,那么一个非常简单的方式就是把整个图像化整为零,切分为patch
Vision Transformer细节理解_第7张图片相当于减少了输入的长度

现在可以看一下ViT论文中的模型了。
Vision Transformer细节理解_第8张图片模型中的数据流转如下图所示:
Vision Transformer细节理解_第9张图片为什么要加入一个CLS符号呢?
Vision Transformer细节理解_第10张图片简单的意思是说,减少对原始Transformer模型的更改,所以加上了CLS潜在的意思是说,原始的Transformer在训练的时候是带有CLS符号的。这句话的解释其实是不太正确的。

CLS符号的出现不是在原始的Transformer模型中,而是在NLP中的一个预训练模型-BERT中。
其实。整个Transformer在整合输出信息的时候,有多种方式。
Vision Transformer细节理解_第11张图片BERT中为什么使用了CLS符号呢?
Vision Transformer细节理解_第12张图片Vision Transformer细节理解_第13张图片所以在论文中有这样一个实验结果:
Vision Transformer细节理解_第14张图片Transformer模型为什么需要一个位置编码?
Vision Transformer细节理解_第15张图片

为什么需要位置编码?

Vision Transformer细节理解_第16张图片

Vision Transformer细节理解_第17张图片
就是告诉模型哪个图像的patch在前面,哪个图像的patch在后面。
Vision Transformer细节理解_第18张图片

为什么位置编码可以和patch embedding相加?

Vision Transformer细节理解_第19张图片

位置编码究竟有没有作用呢?

Vision Transformer细节理解_第20张图片

Transformer Encoder

Vision Transformer细节理解_第21张图片整体再串讲一遍:
Vision Transformer细节理解_第22张图片

参考文献

  • https://www.bilibili.com/video/BV1Uu411o7oY?spm_id_from=333.999.0.0
  • 代码实现可看我的这个博客。

你可能感兴趣的:(ViT,transformer)