Transformer
李宏毅老师讲解transformer:Transformer - YouTube
有关疑惑解答:
机器学习-31-Transformer详解以及我的三个疑惑和解答_transformer不收敛-CSDN博客
segmentation detection语义分割
patch partition补丁分区 liner embeding 线性嵌入 patch merging 补丁合并
layernorm 层归一化
bert:是“Bidirectional Encoder Representations from Transformers”的缩写,是一种基于Transformer架构的预训练语言模型。
"Matrix"(矩阵)
LSTM是"Long Short-Term Memory"(长短期记忆)的缩写,是一种常用于处理序列数据的深度学习模型。LSTM模型可以解决传统的循环神经网络(RNN)在处理长序列时出现的梯度消失或梯度爆炸问题。它通过引入三个门机制(输入门、遗忘门和输出门)来控制信息的流动。这些门可以决定是否将新信息添加到内存单元中、是否保留旧信息以及何时从内存单元中输出信息。
交叉熵(Cross Entropy)是一种用于比较两个概率分布之间差异的度量方法。它常被用于机器学习领域中的分类任务,特别是在神经网络中的损失函数中。在分类任务中,我们通常有一个目标概率分布和一个预测概率分布。目标概率分布表示真实的类别标签,而预测概率分布表示模型对每个类别的预测概率。交叉熵衡量了两个概率分布之间的差异程度。
"Error"(误差)在计算机科学中是指预测值与真实值之间的差异。在机器学习、数据分析、图像处理等领域,误差通常用于评价模型的准确性。误差可以分为多种类型,如平均绝对误差(Mean Absolute Error,MAE)、均方误差(Mean Squared Error,MSE)、均方根误差(Root Mean Squared Error,RMSE)等。不同的误差度量方法适用于不同的场景。
"Prob. vector"(概率向量)是指包含多个元素的向量,其中每个元素表示一个事件发生的概率。概率向量常用于描述离散型随机变量的概率分布。概率向量的元素一般满足以下条件:
- 每个元素的取值范围在0到1之间,表示概率值;
- 所有元素的概率之和等于1。
token:"token"(标记)通常指的是文本中的最小单位或语法单元。它可以是一个单词、一个字符、一个符号或者其他更大或更小的片段,取决于上下文和应用场景。
(sequence)seq2seq model
RNN不能够parallel,用self-attenion取代RNN
q:query(to match others)
k:key(to be matched)
v:information to be extracted
masked:attend on the generated sequence(解码时会attend到已经产生出来的部分)
来看看输入I和输出O,中间的self-attention做了哪些事情:I乘以wq,wk,wv,得到Q,K,V.每一个颜色就得到每一个位置的Q,K,V。A代表每一个位置(sequence)两两之间的attention。A接下来做softmax得到。
乘以V得到输出O。(一连串的矩阵乘法)
muitl-head self-attention:每个head关注的点不一样。(各司其职)
位置资讯pi,wp为人手设的(通过公式),将位置信息加入到其中。
seq to seq model
整个transformer所做的事情(复述李老师版):左边是encoder的部分。Inputs通过一个Input Embedding变成一个vector,这个vector会加上Positional Encoding,接着进入下面的block,这个block会重复N次。在block里,首先经过一个Multi-Head Attetion(结构如箭头所示),也就是seq经过Multi-Head Attetion layer,会得到另外的seq。下一个layer叫做Add & Norm,其中Add的作用是将Multi-Head Attetion的input(a)和output(b)加起来得到b’。Norm的意思是将b'做Layer Norm。Feed Forward会将每一个vector进行处理,再进行Add & Norm。
右边是decoder的部分:decoder的Input是它前一个tensor产生的Output,一样通过Output Embedding,加上Positional Encoding,进入到block,block会重复N次。vector进入到Masked Multi-Head Attetion,Masked的意思是,我们在做self-Attetion layer时,这个decoder只会attend到它已经产生出来的sequence上。接着是Add & Norm操作。然后进入到Multi-Head Attetion,这个Multi-Head Attetion是atten到之前encoder的输出。随后是Add & Norm操作,Feed Forward,再是Add & Norm,Linear和softmax,得到最终的output。
新翻译的单词不仅仅依赖 encoding attention vector, 也依赖过去翻译好的单词的attention vector。
Vision Transformer
ViT(vision transformer)原理快速入门_vit算法-CSDN博客
VIT (Vision Transformer) 模型论文+代码(源码)从零详细解读,看不懂来打我_哔哩哔哩_bilibili
Dropout层是深度学习中常用的一种正则化技术,用于减少神经网络的过拟合。在训练过程中,Dropout层会随机地将一部分神经元的输出设置为0,即将其 "dropout" 掉,从而减少神经网络的复杂性。
如何将图片放进去?一个像素点代表一个token?
将视觉问题转换成seq2seq问题
1:将一幅图分成九个patch,将16*16变成256*256一维的长度。
2:将256映射到规定的向量长度
3:生成一个cls的token(*特征表示);生成所有序列的位置编码0-9;token+位置编码
4:输入到encoder中
5:进行多分类任务
cls:class拼接
Swim Transformer
论文笔记:Swim Transformer - 知乎 (zhihu.com)
在Vit的基础上进行改进(修改了注意力的计算形式)。
VIT的缺陷:
- Patch小->Token数量多 ->MHA复杂度高->资源不足,炸显存
- Patch大->Token数量小->Feature Map分辨率低->精度下降,性能差
Swim Transformer如何解决以上问题:
- 解决物体大小尺度不一的问题:采用了分层的结构(金字塔结构)
- 解决在高分辨率上运行的问题:限制了attention的计算范围,使得它成为线性复杂度。

Swim Transformer中的Patch Merging是一种操作,用于将图像的分块表示合并为更大的块。Swim Transformer是一种基于Transformer架构的图像分类模型,它将图像划分为多个小的非重叠块。
在Swim Transformer中,图像被分割为固定大小的小块(也称为patches)。这些小块之间没有重叠,每个小块都会经过Transformer模型进行处理。然而,为了捕捉到更全局的上下文信息,Swim Transformer引入了Patch Merging操作。
Patch Merging操作将相邻的小块合并为更大的块,以便在后续层级中对更大的块进行处理。具体而言,Patch Merging可以通过将四个小块组合成一个更大的块来实现。这种合并操作有助于模型在后续层级中更好地理解图像的全局结构和上下文关系。
通过Patch Merging操作,Swim Transformer能够在不同层级上同时处理细节和全局信息。这种多尺度的处理有助于提高模型对图像的理解和图像分类的性能。