ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【CV】Transformer学习笔记

2021-06-07 17:02:05  阅读:455  来源: 互联网

标签:NLP Transformer attention 笔记 https 图像 com CV


    最近Transformer很火热,在很多领域都有所贡献,我也进行了学习。因为主要研究领域不是NLP所以学的知识属于比较通识性的没有非常深入,适合同样想要了解一下的朋友。现将相关资料学习整理后记录。

目录

1、NLP中的Attention

2、NLP中的Transformer

2.1、Encoder

2.2、Decoder

2.3、Positional Encoding

3、CV中的Transformer

3.1、Vision Transformer

3.2、Transformer在CV领域其他研究


参考资料链接:

NLP中的Attention原理和源码解析 - 知乎 (zhihu.com)

【NLP】Transformer模型原理详解 - 知乎 (zhihu.com)

attention机制原理及简单实现 - 简书 (jianshu.com)

Attention机制简单总结 - 知乎 (zhihu.com)

(6条消息) 图解Transformer(完整版)_龙心尘-CSDN博客_transformer

Transformer在计算机视觉领域走到哪了? (qq.com)

(6条消息) Vision Transformer 论文_368chen的博客-CSDN博客

1、NLP中的Attention

对于一段文本序列,通常要使用某种机制对该序列进行编码,通过降维等方式将其encode成一个固定长度的向量,用于输入到后面的全连接层。而使用CNN或者RNN等编码方法在句子很长时也会无法关注到句子中关键的语素。

Attention,注意力,就是关注与任务最相关、最重要的那些特征,赋予重要特征高权重。

如何计算权重呢?链接中的两篇博文结合起来就很好理解:

attention最基本最抽象的流程(以seq2seq模型为例):

基本流程:对于一个句子序列S,其由单词序列[w1,w2,w3,...,wn]构成。

1、将每个单词wi编码为向量vi;

2、解码时使用学习到的注意力权重ai与1中所有向量vi做加权和;

3、在decoder进行下一个词的预测时,使用2中得到的线性组合。

Query:decoder中的信息

encoder中包含了所有可能出现的词语,我们将其作为一个字典,该字典的Key:所有encoder的序列信息;字典的Value:通常也是所有encoder的序列信息。

而注意力权重ai就是用Q和K计算的:a=softmax(f(QK)),其中f的具体运算有多种方法,常见的有加性attention和乘性attention。

self-attention:Q和K,V都是相同的。

2、NLP中的Transformer

Transformer是纯用attention搭建的模型,计算快效果也不错。transformer的结构是由encoder和decoder组成。

2.1、Encoder

Encoder由N=6个相同的layer组成,layer指的就是上图左侧的单元,最左边有个“Nx”,这里是x6个。   

左侧单元也就是编码器(encoder),6不是必然的,可以尝试其他个数;解码器(decoder)数量与编码器相同,一一对应。

每个Layer由两个sub-layer组成,分别是multi-head self-attention mechanism和fully connected feed-forward network。其中每个sub-layer都加了residual connection和normalisation。

Multi-head self-attention:通过h个不同的线性变换对Q,K,V进行投影,最后将不同的attention结果拼接起来。

 

 

 

self-attention在1中有提到。具体使用公式可以参见论文。

Position-wise feed-forward networks前馈神经网络:主要是提供非线性变换。Attention输出的维度是[bsz*seq_len, num_heads*head_size],第二个sub-layer是个全连接层,之所以是position-wise是因为过线性层时每个位置i的变换参数是一样的。

2.2、Decoder

Decoder和Encoder的结构差不多,但是多了一个attention的sub-layer,这里先明确一下decoder的输入输出和解码过程:

  • 输出:对应i位置的输出词的概率分布
  • 输入:encoder的输出 & 对应i-1位置decoder的输出。所以中间的attention不是self-attention,它的K,V来自encoder,Q来自上一位置decoder的输出
  • 解码:这里要注意一下,训练和预测是不一样的。在训练时,解码是一次全部decode出来,用上一步的ground truth来预测(mask矩阵也会改动,让解码时看不到未来的token);而预测时,因为没有ground truth了,需要一个个预测。

2.3、Positional Encoding

除了主要的Encoder和Decoder,还有数据预处理的部分。Transformer抛弃了RNN,而RNN最大的优点就是在时间序列上对数据的抽象,所以文章中作者提出两种Positional Encoding的方法,将encoding后的数据与embedding数据求和,加入了相对位置信息。

这里作者提到了两种方法:

  1. 用不同频率的sine和cosine函数直接计算
  2. 学习出一份positional embedding

3、CV中的Transformer

3.1、Vision Transformer

Transformer 模型在自然语言处理(NLP)领域的应用很广泛,而如今越来越多的研究在尝试将 Transformer 模型强大的建模能力应用到计算机视觉(CV)领域。但是在计算机视觉领域,注意力要么与卷积网络结合使用,要么用来代替卷积网络的某些组件,同时保持其整体架构不变。

论文《AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》表明,对 CNN 的依赖不是必需的,当直接应用于图像块序列时,transformer 也能很好地执行图像分类任务。该研究基于大量数据进行模型预训练,并迁移至多个图像识别基准数据集(ImageNet、CIFAR-100、VTAB 等),结果表明 Vision Transformer(ViT)模型可以获得与当前最优卷积网络相媲美的结果,而其训练所需的计算资源大大减少。

模型:

模型概述:把图像分割成固定大小的小块,线性embedding每个块,还要添加位置embedding,并将生成的向量序列提供给标准Transformer编码器。为了进行分类,使用标准方法添加一个额外的可学习的序列的“classification token”。

结论:

受到 NLP 领域中 Transformer 缩放成功的启发,这项研究尝试将标准 Transformer 直接应用于图像,并尽可能减少修改。为此,该研究将图像分割成多个图像块(patch),并将这些图像块的线性嵌入序列作为 Transformer 的输入。然后用 NLP 领域中处理 token 的方式处理图像块,并以监督的方式训练图像分类模型。

在中等规模的数据集(如 ImageNet)上训练时,这样的模型产生的结果并不理想,准确率比同等大小的 ResNet 低几个百分点。这个看似令人沮丧的结果是可以预料的:Transformer 缺少一些 CNN 固有的归纳偏置,例如平移同变性和局部性,因此在数据量不足的情况下进行训练后,Transformer 不能很好地泛化。

但是,如果在大型数据集(14M-300M 张图像)上训练模型,则情况大为不同。该研究发现大规模训练胜过归纳偏置。在足够大的数据规模上进行预训练并迁移到数据点较少的任务时,Transformer 可以获得出色的结果。

该研究提出的 Vision Transformer 在 JFT-300M 数据集上进行预训练,在多个图像识别基准上接近或超过了 SOTA 水平,在 ImageNet 上达到了 88.36% 的准确率,在 ImageNet ReaL 上达到了 90.77% 的准确率,在 CIFAR-100 上达到了 94.55% 的准确率,在 VTAB 基准 19 个任务中达到了 77.16% 的准确率。

3.2、Transformer在CV领域其他研究

目前,Transformer 已经在三大图像问题上——分类、检测和分割,都取得了不错的效果。视觉与语言预训练、图像超分、视频修复和视频目标追踪等任务也正在成为 Transformer “跨界”的热门方向。

端到端的视觉和语言跨模态预训练模型

论文链接:https://arxiv.org/abs/2104.03135

GitHub地址:https://github.com/researchmm/soho

基于纹理 Transformer 模型的图像超分辩率技术

论文链接:https://arxiv.org/pdf/2006.04139.pdf

GitHub地址:https://github.com/researchmm/TTSR

视频修复:Transformer 初尝试

论文链接:https://arxiv.org/abs/2007.10247

GitHub地址:https://github.com/researchmm/STTN

目标跟踪新范式:基于时空 Transformer

 

链接:https://arxiv.org/abs/2103.17154

GitHub地址:https://github.com/researchmm/stark

 

标签:NLP,Transformer,attention,笔记,https,图像,com,CV
来源: https://blog.csdn.net/whq246/article/details/117563688

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有