1.位置编码有哪些?
a. 正弦和余弦位置编码(Sinusoidal Positional Encoding)
原理:使用固定的正弦和余弦函数来生成位置编码。
b.学习位置编码(Learnable Positional Encoding)
原理:将位置编码作为可训练参数,类似于词嵌入。
c.相对位置编码(Relative Positional Encoding)
原理:考虑相对位置关系而不是绝对位置,通常用于更复杂的结构,如Transformer-XL。
2.ViT为什么要分patch?
a.PatchEmbed的目的
将输入的图片用分块再拼接的思想转化为序列的形式,因为Transformer只能接收序列数据。注意这里只是用了分块再拼接的思想,看代码的时候,不需要这个思想也是可以看懂的,如果理解不了,就直接看代码就可以了。或者说看懂了代码之后就理解这个思想了。
b.代码的执行过程
1.输入的图片size为[B, 3, 224, 224]
2.确定好分块的大小为patch_size=16,确定好16,就可以确定卷积核的大小为16,步长为16,即patch_size = kernel_size = stride
3.首先图片通过卷积nn.Conv2d(3, 768,(16,16), (16,16))后size变为[B, 768, 14, 14]
4.再经历一次flatten(2),变为[B, 768, 14*14=196],这里flatten(2)的2意思是在位序为2开始进行展平
5.最后经过一次转置transpose(1, 2),size变成[B, 196, 768]
3.介绍Transformer和ViT
4.介绍Transformer的Q,K,V
5.介绍Layer Normalization
6.Transformer训练和部署技巧
7.介绍自注意力机制和数学公式
8.画图说明 Transformer 基本流程
9.介绍Transformer的Encoder模块
10.介绍Transformer的Decoder模块
11.Transformer和Mamba(SSM)的区别
12.Transformer中的残差结构以及意义
13.为什么Transformer适合多模态任务?
14.Transformer的并行化体现在哪个地方?
15.为什么Transformer一般使用LayerNorm?
16.Transformer为什么使用多头注意力机制?
17.Transformer训练的Dropout是如何设定的?
18.Transformer 模型中的自注意力机制是如何工作的?