这里写目录标题
论文详情
名称:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
研究团队:Google Research, Brain Team
原文:原文
参考笔记:笔记1
自注意力及多头注意力讲解笔记
李沐vitb站视频笔记
transformer的self att和multi-head att:视频讲解霹雳吧啦Wz
vit理解笔记1
vit理解笔记2
transormer与cnn
-
transformer:
使用注意力、做序列转录的模型,把之前在 encoder - decoder 的结构换成了 multi-headed self-attention. -
区别:
CNN(局部像素–>全部像素;多通道 --> multi-head)
Transformer 仅依赖 self-attention 计算输入输出的表征 -
cnn缺点:
1 CNN 对较长的序列难以建模。因为卷积计算的时候看一个比较小的窗口,i.e., 3 * 3 窗口,如果 2 个像素隔得比较远,需要用很多 3 * 3 的卷积层、一层一层的叠加上去,才能把隔得很远的 2个像素联系起来。
Transformer 的 attention mechanism 每一次看到所有的像素,一层能够看到整个序列。
2 cnn多个输出通道,每个通道可以识别不同的模式。
Transformer 的 multi-head self-attention 模拟 CNNs 多通道输出的效果。
预备知识- Self-Attention和Multi-Head Attention
Self-Attention
query:查询 ;key:关键字;键值:value
1 注意力函数: 一个将一个 query 和一些 key - value 对 映射成一个输出的函数,其中所有的 query、key、value 和 output 都是一些向量。
2 输出:output 是 value 的一个加权和 --> 输出的维度 == value 的维度。
3 权重:output 中 value 的权重 = 查询 query 和对应的 key 的相似度 or compatibility function,
通常用内积实现,用来衡量每个key对每个query的影响大小
4 注意力的具体计算是:对每一个 query 和 key 做内积,然后把它作为相似度
attention = softmax( 两个向量的内积值 / sqrt(dk)) * V ,dk 是向量的长度
使用 softmax :一个 query 给 n 个 key - value pair ,这个 query 会跟每个 key - value pair 做内积,会产生 n 个相似度值。传入 softmax 得到 n 个非负、求和为 1 的权重值。把 softmax 得到的权重值 与 value 矩阵 V 相乘 得到 attention 输出。
因为 softmax 最后的结果是希望 softmax 的预测值,置信的地方尽量靠近,不置信的地方尽量靠近零,以保证收敛差不多了。这时候梯度就会变得比较小,那就会跑不动。
5 输入:encoder 的注意力层,有三个输入,它分别表示的是key、value 和 query。
一根线过来,它复制成了三下:同样一个东西,既 key 也作为 value 也作为 query,所以叫做自注意力机制。key、value 和 query 其实就是一个东西,就是自己本身。
6 总结:输入了 n 个 query,每个 query 会得到一个输出,那么会有 n 个输出。
输出 是 value 加权和(权重是 query 和 key 的相似度),输出的维度 == d – > 输入维度 == 输出维度