再见卷积神经网络,使用Transformers创建计算机视觉模型

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 再见卷积神经网络,使用Transformers创建计算机视觉模型

本文旨在介绍/更新Transformers背后的主要思想,并介绍在计算机视觉应用中使用这些模型的最新进展。

读完这篇文章,你会知道……

  • 为什么Transformers在NLP任务中的表现优于SOTA模型。
  • Transformer模型的工作原理
  • 这是卷积模型的主要限制。
  • Transformers如何克服卷积模型的限制。
  • 用Transformers完成计算机视觉任务。

长期依赖和效率权衡

在NLP中,神经语言模型的目标是创建对文本中的单词语义尽可能多的信息进行编码的嵌入。这些语义不仅限于单词的定义,实际上,如果我们不知道它们所属的上下文,那么很多单词本身就毫无意义:在句子“Transformers 很酷,因为它们高效”中嵌入 因为“他们”一词如果没有考虑到它是指“Transformers ”,将毫无意义。

最佳模型应该能够表示单词之间的这些相关性,即使在处理这些单词可能距离较远的大型文本时也是如此。我们说具有这种能力的模型可以编码长期依赖性。

以下内容介绍了NLP(在Transformers之前)中的SOTA模型所面临的问题,以便有效地对长期依赖性进行建模。

RNN问题

特别是,LSTM和GRU是流行的RNN,能够从文本中的单词编码丰富的语义。它们以顺序方式工作,一次处理一个令牌,并保留模型已经看到的所有这些令牌的“内存”,以便将其某些语义添加到需要它们的其他单词中。

这些RNN能够通过被称为“门”的组件,使用神经网络来了解信息的元素应该保留,哪些信息应该被删除,哪些信息应该更新每次处理一个新的令牌

这些模型的体系结构使其对爆炸和消失梯度具有鲁棒性,这是RNN中的一个常见问题,这使它们能够跟踪序列中元素之间相当长的依赖性,尽管顺序地处理令牌并依靠将其信息保留在内存中,但是如果依赖关系真的很远,进行处理的并不很好。

这种顺序性质也使它们难以有效地扩展或并行化。每个前向通过都基于已经看到序列的先前样本的模型,即一次只能计算一次嵌入。

CNN的问题

卷积在NLP任务中也很流行,这是由于使用gpu训练时的效率和可伸缩性。就像2D卷积可以从图像中提取特征一样,这些模型使用1D过滤器从文本中提取信息,文本以1D序列表示。

这类神经网络的感受域取决于过滤器的大小和使用的卷积层的数量。增加这些超参数的值会增加模型的复杂性,会产生消失梯度甚至无法训练的模型。残差连接和扩展的卷积也被用于增加这些模型的接受域,但是卷积在文本上操作的方式总是在它能够捕获的接受域上存在限制和权衡。

Transformers

Transformers于2017年以一种简单且可扩展的方式出现,以在语言翻译中获得SOTA结果。它们很快应用于其他NLP任务,成为几个基准(例如GLUE,SQuAD或SWAG)的新SOTA。

通常会训练这些模型的大型版本并针对不同的任务进行微调,因此即使在数据匮乏的情况下它们也很有用。即使具有数十亿个参数,这些模型的性能似乎也不会饱和。模型越大,结果越准确,并且模型呈现的新兴知识越有趣(例如GPT-3)。

Transformer模型

给定一个包含N个单词的输入文本,每个Transformer(W)都会创建N个权重,文本中的每个单词(Wn)都会产生一个权重。每个权重的值将取决于单词在上下文中的依赖性(Wn),以表示正在处理的单词的语义(W)。下图代表了这个想法。请注意,蓝线的透明度表示分配的关注权重的值。

640.png

在此,上一行代表正在处理的单词,下一行代表用作上下文的单词(请参见这些单词相同,但是如果它们被处理或用于处理另一个单词,则它们将被区别对待)。请注意,第一行中的“他们”,“酷”或“效率”具有较高的权重指向“Transformers”,因为这确实是他们所指的词。

然后,这些权重用于组合每对单词的值,并为每个单词(W)生成更新的嵌入,该嵌入现在包含有关特定单词(W)的上下文中那些重要单词(Wn)的信息。

在幕后,为了计算这些更新的嵌入,转换器使用了自注意力机制,这是一种高效的技术,可以并行更新输入文本中每个单词的嵌入。

自注意力机制

从从输入文本中嵌入单词(W)开始,我们需要以某种方式找到一种方法来测量同一文本中每隔一个单词嵌入(Wn)的重要性(相对于W的重要性)并合并其信息 创建更新的嵌入(W')。

自注意力会将嵌入到输入文本中的每个单词线性地投影到三个不同的空间中,从而产生三个新的表示形式,称为查询,键和值。这些新的嵌入将用于获得一个分数,该分数将表示W与每个Wn之间的依赖关系(如果W取决于W',则为高正分数;如果W与W'不相关,则为高负分数)。然后,该分数将用于合并来自不同Wn单词嵌入的信息,从而为单词W创建更新的嵌入W'。

下图显示了如何计算两个单词之间的注意力得分:

640.png

在图像中,蓝线表示来自第一个单词(W)的信息流,而棕线表示第二个单词(Wn)的信息流。

每个单词嵌入都乘以一个Key和一个Query矩阵,从而得到每个单词的查询和键表示。为了计算W和Wn之间的分数,将W(W_q)的查询嵌入“发送”到Wn(Wn_k)的关键嵌入,并且将两个张量相乘(使用点积)。点积的结果值是它们之间的分数,它将表示W相对于Wn的依赖性。

我们也可以将第二个单词用作W,将第一个单词用作Wn,这样我们将计算出一个分数,该分数代表第二个单词对第一个单词的依赖性。我们甚至可以使用与W和Wn相同的单词来计算单词本身对其定义的重要性!

自我注意力将计算文本中每对单词之间的注意力得分。分数将被 softmax,将其转换为权重,范围在0到1之间。

下图表示如何使用这些权重获得每个单词的最终单词嵌入:

640.png

看到现在每个单词嵌入都乘以生成其值表示形式的第三个矩阵。该张量将用于计算每个单词的最终嵌入。对于每个单词W,将在文本Wn中为每个其他单词计算的权重乘以它们相应的值表示形式(Wn_v),并将它们加在一起。该加权和的结果将是单词W!的更新嵌入。(在图中以e1和e1表示)。

我建议看看杰伊·阿拉玛(Jay Alamar)给那些想要更深入地了解自我注意力和模型的文章(https://jalammar.github.io/illustrated-transformer/),因为这是对该技术最重要部分的简短描述。

卷积归纳偏置

卷积模型已经在计算机视觉领域占据了主导地位,并取得了巨大的成功。卷积可以使用GPU有效地并行化,当从图像中提取特征时,它们可以提供合适的归纳偏差。

卷积运算施加了两个重要的空间约束,这些约束促进了视觉特征的学习:

  • 由于权重共享,从卷积层提取的特征是平移不变的,它们对特征的全局位置不敏感,而是确定特征是否存在。
  • 由于卷积算子的性质,从卷积层提取的特征是局部敏感的,每个操作仅考虑图像的局部区域。

但是,卷积归纳偏差对图像本身缺乏全局理解。他们擅长提取视觉特征,但无法对它们之间的依赖关系进行建模。

例如,卷积层模型的训练来识别人脸可以编码信息是否“眼睛”的特性,“鼻子”或“嘴”出现在输入图像,但是这些表示不会有这样的“眼睛上面鼻子”或“嘴下面的鼻子”,因为每一个卷积内核不会足够大来处理多个这些特性。

为了跟踪图像中的远距离依赖关系,需要大的接收场,实际上,这涉及使用大核或卷积层的长序列,但以牺牲效率为代价,并使模型极其复杂,甚至无法训练。

计算机视觉中的Transformer

与Transformers如何利用自我注意在文本中建模远程依赖类似,一些新颖的作品也展示了利用自我注意有效地克服归纳卷积偏差带来的局限性的技术。

这些工作已经在目标检测、视频分类、图像分类和图像生成等多个领域的计算机视觉基准中显示了良好的结果。其中一些架构能够匹配或优于SOTA的结果,即使在摆脱了卷积层并完全依赖于自我关注时也是如此。

从自我注意力生成的视觉表示不包含卷积所施加的空间约束。取而代之的是,他们能够根据任务以及在管道中放置该层的阶段来学习最合适的感应偏置。在模型的早期阶段使用的自我注意,可以学习到类似于卷积的行为。

自注意力层

计算机视觉中的自注意层以特征图为输入。目标是计算每对特征之间的注意力权重,从而生成一个更新的特征图,其中每个位置都有关于同一图像中任何其他特征的信息。

这些层可以直接替换或与卷积结合,它们能够比常规卷积关注更大的接受域,因此能够建模空间上距离较远的特征之间的依赖关系。

所使用的最基本的方法(非本地网络和注意力增强卷积网络)由压扁的空间维度的输入特性映射到一个序列特征形状HW x F, HW代表了扁平的空间维度和F的深度特征映射,并使用自我关注直接在序列获得更新后的表征。

这种自注意层的计算成本对于高分辨率的输入可能是昂贵的,因此它只适用于小的空间维度。

一些工作已经提出了解决此问题的方法,例如Axial-DeepLab,他们沿两个空间轴顺序计算注意力,而不是直接处理整个图像,从而使操作效率更高。其他更简单的解决方案包括以较小的接收场为代价来处理特征图的贴片而不是整个空间尺寸(这是在视觉模型中的独立自我注意中完成的)。但是,这些较小的接收场仍可能比卷积核大得多。

将这些层与卷积层结合使用的模型,在模型的后一层中使用自注意时,会获得最优结果。事实上,在自我注意和卷积层之间的关系中,研究表明,模型中早期使用的自我注意层学习到的归纳偏差与卷积默认存在的偏差相似。

视觉Transformers

与在卷积管道中包含自我注意不同,其他的工作已经提出了独特地依赖于自我注意层,并利用原来为Transformer提供的编解码器架构,使其适应计算机视觉任务。

在使用大量参数和使用大量数据进行训练时,这些模型以更简单的模型和更快的训练速度,在图像分类或目标检测等任务中产生与SOTA相似或更好的结果。

以下是三篇使用Transformer架构完成计算机视觉任务的重要论文的快速摘要:

Image Transformer (https://arxiv.org/pdf/1802.05751.pdf

这项工作为ImageNet上的图像生成提供了一个新的SOTA,并在超分辨率任务上显示了良好的效果。

他们提出将图像生成视为一个自回归问题,即每个新像素的生成只考虑图像中已知的像素值。在每一次特征生成中,self-attention都将m个特征的平摊patch作为上下文,生成未知像素值的表示。

为了使这些像素值适合作为自关注层的输入,我们使用一维卷积将每个RGB值转换为d维张量,并将上下文patch的m个特征平化为1维。

下图为所提模型:

640.png

这里q表示待更新的嵌入像素。使用查询和关键矩阵(Wq和Wk),它与内存中的像素(用m表示)中的所有其他嵌入相乘,生成一个分数,然后进行softmax并用作与矩阵Wv获得的值向量之和的权重。将结果嵌入到原q嵌入中,得到最终结果。在该图中,p表示添加到每个输入嵌入的位置编码。该编码是由每个像素的坐标生成的。

注意,通过使用self-attention,多个像素值可以同时被预测(因为我们已经知道输入图像的原始像素值),而用于计算self-attention的patch可以处理比卷积层更高的接受域。然而在评估中,图像生成依赖于每个像素具有其邻居的可用值,因此只能一次执行一步。

DETR(https://arxiv.org/pdf/2005.12872.pdf

DETR提出了一个简单的模型,实现了与SOTA对象检测方法相同的精度和性能。

所提模型的结构如下图所示:

640.png

它使用从卷积主干中提取的视觉特征进行自我注意。在主干模块中计算的特征图将在其空间尺寸上展平,即,如果特征图具有形状(h x w x d),则展平的结果将具有形状(hw x d)。将可学习的位置编码添加到每个维度,并将结果序列馈入编码器。

编码器使用多个自我注意块来组合不同嵌入之间的信息。处理后的嵌入被传递到一个解码器模块,该模块使用可学习的嵌入作为查询(对象查询),能够处理所有计算的可视化特征,生成嵌入。在这种嵌入中,执行目标检测所需的所有信息都被编码。每个输出都被送入一个完全连接的层,该层将输出一个包含元素c和b的五维张量,其中c表示该元素的预测类,b表示边界盒的坐标(分别为1D和4D)。c的值可以分配给一个“no object”标记,它表示一个没有发现任何有意义的检测的对象查询,因此不会考虑坐标。

该模型能够并行计算对一幅图像的多次检测。但是,它可以检测到的对象数量仅限于使用的对象查询的数量。

论文的作者声称,该模型在大型对象的图像上优于SOTA模型。他们假设,这是由于自我注意给模型提供了较高的接受域。

Vision Transformer (https://arxiv.org/pdf/2010.11929.pdf

该模型提出了一种新的图像识别SOTA,该模型甚至可以完全依靠自我关注,并且能够提供与当前SOTA相当的性能。

以下是所呈现模型的表示。

640.png

输入序列由从大小为PxP的小块中提取的像素值的扁平向量组成。每个扁平化元素被馈送到线性投影层,该线性投影层将产生它们所谓的“补丁嵌入”。在序列的开头附加了一个额外的可学习的嵌入。通过自我关注更新后,此嵌入将用于预测输入图像的类别。可学习的位置嵌入也添加到这些嵌入的每个嵌入中。

通过将MLP Head堆叠在Transformer顶部(在我们添加到序列中的额外易学嵌入的位置)即可执行分类。

这项工作中还提出了一种混合体系结构。他们使用ResNet早期阶段的特征图来代替将投影的图像斑块用作Transformer的输入。通过端到端培训《Transformers》和此CNN骨干,他们可以实现最佳性能。

位置编码

由于Transformers需要学习他们正在接受培训的任务的归纳偏见,因此以各种方式帮助学习过程总是有益的。我们可以在模型输入中包含的任何归纳偏差都会促进其学习并改善结果。

当用转换器更新特性时,会丢失输入序列的顺序。Transformer本身很难甚至不可能了解这个顺序,因此它所做的就是将位置表示聚合到模型的嵌入输入中。这种位置编码可以学习,也可以从一个固定的函数中进行采样,它被聚集的位置可以有所不同,尽管它通常是在输入嵌入处完成的,就在被输入到模型之前。

在计算机视觉中,这些嵌入可以表示特征按一维扁平化序列的位置,也可以表示特征的二维位置。

在该领域中,已经发现相对位置编码非常好用。它们由可学习的嵌入组成,这些嵌入学会对要素之间的相对距离进行编码,而不是对要素的全局位置进行编码。

总结

  • Transformer解决了不仅仅限于NLP的问题,长期依赖对改善计算机视觉任务也很重要。
  • Transformer模型是一种简单但可扩展的方法,如果将其建模为一系列嵌入,则可以应用于任何类型的数据。
  • 卷积是平移不变的,对位置敏感,并且对图像缺乏全局理解。
  • 可以在卷积管道中使用Transformer来生成图像的全局表示。
  • Transformer可以用于计算机视觉,即使摆脱常规的卷积管道也可以产生SOTA结果。


目录
相关文章
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其应用
【9月更文挑战第24天】本文将深入探讨深度学习中的一种重要模型——卷积神经网络(CNN)。我们将通过简单的代码示例,了解CNN的工作原理和应用场景。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息。
18 1
|
8天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
37 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
4天前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
18 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
3天前
|
存储 机器人 Linux
Netty(二)-服务端网络编程常见网络IO模型讲解
Netty(二)-服务端网络编程常见网络IO模型讲解
|
4天前
|
机器学习/深度学习 人工智能 算法
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台。果蔬识别系统,本系统使用Python作为主要开发语言,通过收集了12种常见的水果和蔬菜('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜'),然后基于TensorFlow库搭建CNN卷积神经网络算法模型,然后对数据集进行训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地文件方便后期调用。再使用Django框架搭建Web网页平台操作界面,实现用户上传一张果蔬图片识别其名称。
19 0
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
7天前
|
机器学习/深度学习 自动驾驶 TensorFlow
深入理解卷积神经网络(CNN)在图像识别中的应用
【9月更文挑战第20天】本文旨在通过直观的解释和代码示例,向初学者介绍卷积神经网络(CNN)的基本概念及其在图像识别领域的应用。文章将首先解释什么是CNN以及它如何工作,然后通过一个简单的Python代码示例展示如何构建一个基本的CNN模型。最后,我们将讨论CNN在现实世界问题中的潜在应用,并探讨其面临的挑战和发展方向。
26 2
|
7天前
|
机器学习/深度学习 人工智能 算法
深入浅出卷积神经网络(CNN)
【9月更文挑战第20天】在人工智能的璀璨星河中,卷积神经网络(CNN)如同一颗耀眼的星辰,以其独特的魅力照亮了图像处理的天空。本文将带你遨游CNN的宇宙,从其诞生之初的微弱光芒,到成为深度学习领域的超级巨星,我们将一同探索它的结构奥秘、工作原理以及在实际场景中的惊艳应用。你将发现,CNN不仅仅是一段段代码和算法的堆砌,它更是一种让机器“看”懂世界的强大工具。让我们扣好安全带,一起深入CNN的世界,体验技术与创新交织的精彩旅程。
|
1天前
|
存储 安全 网络安全
网络安全与信息安全的守护之道
本文聚焦于网络安全与信息安全领域,深入剖析了网络漏洞、加密技术及安全意识等核心要素。通过详尽的技术分析与实例展示,旨在为读者构建一道坚实的网络防线,同时强调人为因素在网络安全中的关键作用,共同维护网络世界的和谐与安全。
|
1天前
|
SQL 安全 网络安全
网络安全与信息安全:构建数字世界的坚固防线
在数字化时代,网络安全与信息安全已成为维护数据完整性、保障隐私安全和确保业务连续性的关键。本文将深入探讨网络安全漏洞的形成原因、常见类型及其影响,解析加密技术的原理、分类及应用场景,强调个人和企业提升安全意识的重要性,并分享实用的防护措施。通过这些内容的学习,读者将能够更好地理解网络安全挑战,掌握保护自身免受网络威胁的方法,共同构建一个更加安全的网络环境。
|
1天前
|
存储 SQL 安全
网络安全与信息安全:守护数字世界的坚盾在这个高度数字化的时代,网络安全和信息安全已经成为个人、企业乃至国家安全的重要组成部分。本文将深入探讨网络安全漏洞、加密技术以及安全意识的重要性,旨在为读者提供一个全面的网络安全知识框架。
随着互联网技术的飞速发展,网络安全问题日益凸显。从个人信息泄露到企业数据被盗,再到国家安全受到威胁,网络安全事件层出不穷。本文将从网络安全漏洞的定义与分类入手,探讨常见的网络攻击手段;随后深入解析加密技术的原理及其在保护信息安全中的作用;最后强调提升公众与企业的安全意识的重要性,并提出具体的建议。通过综合运用这些知识点,我们可以更好地构建起一道道坚固的防线,守护我们的数字世界。