Vision Transformer细节理解

Transformer模型架构图

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

Patch+Position Embedding

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

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

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

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

CLS符号的出现不是在原始的Transformer模型中,而是在NLP中的一个预训练模型-BERT中。
其实。整个Transformer在整合输出信息的时候,有多种方式。
在这里插入图片描述BERT中为什么使用了CLS符号呢?
在这里插入图片描述在这里插入图片描述所以在论文中有这样一个实验结果:
在这里插入图片描述Transformer模型为什么需要一个位置编码?
在这里插入图片描述

为什么需要位置编码?

在这里插入图片描述

在这里插入图片描述
就是告诉模型哪个图像的patch在前面,哪个图像的patch在后面。
在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

Transformer Encoder

在这里插入图片描述整体再串讲一遍:
在这里插入图片描述

参考文献

  • https://www.bilibili.com/video/BV1Uu411o7oY?spm_id_from=333.999.0.0
  • 代码实现可看我的这个博客
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值