综述卷积神经网络从基础技术到文档格式.docx
《综述卷积神经网络从基础技术到文档格式.docx》由会员分享,可在线阅读,更多相关《综述卷积神经网络从基础技术到文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
![综述卷积神经网络从基础技术到文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/4/c1cb3aad-8ad6-4263-ac6e-7cd8c1439abe/c1cb3aad-8ad6-4263-ac6e-7cd8c1439abe1.gif)
本报告的结构如下:
本章给出了回顾我们对卷积网络的理解的动机。
第2章将描述各种多层网络并给出计算机视觉应用中使用的最成功的架构。
第3章将更具体地关注典型卷积网络的每种构造模块,并将从生物学和理论两个角度讨论不同组件的设计。
最后,第4章将会讨论CNN设计的当前趋势以及理解CNN的工作,并且还将重点说明仍然存在的一些关键短板。
2多层网络
总的来说,本章将简要概述计算机视觉领域中所用的最突出的多层架构。
需要指出,尽管本章涵盖了文献中最重要的贡献,但却不会对这些架构进行全面概述,因为其它地方已经存在这样的概述了(比如[17,56,90])。
相反,本章的目的是为本报告的剩余部分设定讨论基础,以便我们详细展示和讨论当前对用于视觉信息处理的卷积网络的理解。
2.1多层架构
在近来基于深度学习的网络取得成功之前,最先进的用于识别的计算机视觉系统依赖于两个分离但又互补步骤。
第一步是通过一组人工设计的操作(比如与基本集的卷积、局部或全局编码方法)将输入数据变换成合适的形式。
对输入的变换通常需要找到输入数据的一种紧凑和/或抽象的表征,同时还要根据当前任务注入一些不变量。
这种变换的目标是以一种更容易被分类器分离的方式改变数据。
其次,被变换的数据通常用于训练某些类型的分类器(比如支持向量机)来识别输入信号的内容。
通常而言,任何分类器的表现都会受到所使用的变换方法的严重影响。
多层学习架构为这一问题带来了不同的前景,这种架构提出不仅要学习分类器,而且要从数据中直接学习所需的变换操作。
这种形式的学习通常被称为「表征学习」,当应用在深度多层架构中时即被称为「深度学习」。
多层架构可以定义为允许从输入数据的多层抽象中提取有用信息的计算模型。
一般而言,多层架构的设计目标是在更高层凸显输入中的重要方面,同时能在遇到更不重要的变化时变得越来越稳健。
大多数多层架构都是将带有交替的线性和非线性函数的简单构建模块堆叠在一起。
多年以来,研究者已经提出了很多不同类型的多层架构,本章将会覆盖计算机视觉应用中所采用的最为突出的此类架构。
人工神经网络是其中的关注重点,因为这种架构的表现非常突出。
为了简单起见,后面会直接将这类网络称为「神经网络」。
2.1.1神经网络
典型的神经网络由一个输入层、一个输出层和多个隐藏层构成,其中每一层都包含多个单元。
图2.1:
典型神经网络架构示意图,图来自[17]
自动编码器可以定义为由两个主要部分构成的多层神经网络。
第一个部分是编码器,可以将输入数据变换成特征向量;
第二个部分是解码器,可将生成的特征向量映射回输入空间。
图2.2:
典型自动编码器网络的结构,图来自[17]
2.1.2循环神经网络
当谈到依赖于序列输入的任务时,循环神经网络(RNN)是最成功的多层架构之一。
RNN可被视为一种特殊类型的神经网络,其中每个隐藏单元的输入时其当前时间步骤观察到的数据和其前一个时间步骤的状态。
图2.3:
标准循环神经网络的运算的示意图。
每个RNN单元的输入都是当前时间步骤的新输入和前一个时间步骤的状态;
然后根据
计算得到新输出,这个输出又可被馈送到多层RNN的下一层进行处理。
图2.4:
典型LSTM单元示意图。
该单元的输入是当前时间的输入和前一时间的输入,然后它会返回一个输出并将其馈送给下一时间。
LSTM单元的最终输出由输入门、输出门和记忆单元状态控制。
图来自[33]
2.1.3卷积网络
卷积网络(CNN)是一类尤其适合计算机视觉应用的神经网络,因为它们能使用局部操作对表征进行分层抽象。
有两大关键的设计思想推动了卷积架构在计算机视觉领域的成功。
第一,CNN利用了图像的2D结构,并且相邻区域内的像素通常是高度相关的。
因此,CNN就无需使用所有像素单元之间的一对一连接(大多数神经网络都会这么做),而可以使用分组的局部连接。
第二,CNN架构依赖于特征共享,因此每个通道(即输出特征图)是在所有位置使用同一个过滤器进行卷积而生成的。
图2.5:
标准卷积网络的结构的示意图,图来自[93]
图2.6:
Neocognitron的结构示意图,图来自[49]
2.1.4生成对抗网络
典型的生成对抗网络(GAN)由两个互相竞争的模块或子网络构成,即:
生成器网络和鉴别器网络。
图2.7:
生成对抗网络的一般结构的示意图
2.1.5多层网络的训练
如前面讨论的一样,多种多层架构的成功都很大程度上取决于它们的学习过程的成功。
其训练过程通常都基于使用梯度下降的误差的反向传播。
由于使用简单,梯度下降在训练多层架构上有广泛的应用。
2.1.6简单说说迁移学习
使用多层架构提取的特征在多种不同数据集和任务上的适用性可以归功于它们的分层性质,表征会在这样的结构中从简单和局部向抽象和全局发展。
因此,在其层次结构中的低层级提取的特征往往是多种不同任务共有的特征,因此使得多层结构更容易实现迁移学习。
2.2空间卷积网络
理论上而言,卷积网络可以应用于任意维度的数据。
它们的二维实例非常适用于单张图像的结构,因此在计算机视觉领域得到了相当大的关注。
有了大规模数据集和强大的计算机来进行训练之后,CNN近来在多种不同任务上的应用都出现了迅猛增长。
本节将介绍为原来的LeNet引入了相对新颖的组件的比较突出的2DCNN架构。
2.2.1CNN近期发展中的关键架构
图2.8:
AlexNet架构。
需要指出,虽然从图上看这是一种有两个流的架构,但实际上这是一种单流的架构,这张图只是说明AlexNet在2个不同GPU上并行训练的情况。
图来自[88]
图2.9:
GoogLeNet架构。
(a)典型的inception模块,展示了顺序和并行执行的操作。
(b)由层叠的许多inception模块构成的典型inception架构的示意图。
图来自[138]
图2.10:
ResNet架构。
(a)残差模块。
(b)由层叠的许多残差模块构成的典型ResNet架构示意图。
图来自[64]
图2.11:
DenseNet架构。
(a)dense模块。
(b)(b)由层叠的许多dense模块构成的典型DenseNet架构的示意图。
图来自[72]
2.2.2实现CNN的不变性
使用CNN的一大难题是需要非常大的数据集来学习所有的基本参数。
甚至拥有超过100万张图像的ImageNet等大规模数据集在训练特定的深度架构时仍然被认为太小。
满足这种大数据集要求的一种方法是人工增强数据集,具体做法包括对图像进行随机翻转、旋转和抖动(jittering)等。
这些增强方法的一大优势是能让所得到的网络在面对各种变换时能更好地保持不变。
2.2.3实现CNN的定位
除了识别物体等简单的分类任务,CNN近来也在需要精准定位的任务上表现出色,比如形义分割和目标检测。
2.3时空卷积网络
使用CNN为各种基于图像的应用带来了显著的性能提升,也催生了研究者将2D空间CNN扩展到视频分析的3D时空CNN上的兴趣。
一般而言,文献中提出的各种时空架构都只是试图将空间域(x,y)的2D架构扩展到时间域(x,y,t)中。
在基于训练的时空CNN领域存在3种比较突出的不同架构设计决策:
基于LSTM的CNN、3DCNN和Two-StreamCNN。
2.3.1基于LSTM的时空CNN
基于LSTM的时空CNN是将2D网络扩展成能处理时空数据的一些早期尝试。
它们的操作可以总结成图2.16所示的三个步骤。
第一步,使用一个2D网络处理每一帧,并从这些2D网络的最后一层提取出特征向量。
第二步,将这些来自不同时间步骤的特征用作LSTM的输入,得到时间上的结果。
第三步,再对这些结果求平均或线性组合,然后再传递给一个softmax分类器以得到最终预测。
2.3.23DCNN
这种突出的时空网络是将2DCNN最直接地泛化到图像时空域中。
它直接处理RGB图像的时间流,并通过应用所学习到的3D卷积过滤器来处理这些图像。
2.3.3Two-StreamCNN
这种类型的时空架构依赖于一种双流式(two-stream)的设计。
标准的双流式架构是采用两个并行通路——一个用于处理外观,另一个用于处理运动;
这种方法类似于生物视觉系统研究中的双流式假设。
2.4整体讨论
需要重点指出的是,尽管这些网络在很多计算机视觉应用上都实现了很有竞争力的结果,但它们的主要缺点仍然存在:
对所学习到的表征的确切本质的理解很有限、依赖于大规模数据训练集、缺乏支持准确的表现边界的能力、网络超参数选择不清晰。
3理解CNN的构建模块
鉴于CNN领域存在大量悬而未决的问题,本章将介绍典型卷积网络中每种处理层的作用和意义。
为此本章将概述在解决这些问题上最突出的工作。
尤其值得一提的是,我们将从理论和生物学两个角度来展示CNN组件的建模方式。
每种组件的介绍后面都总结了我们当前的理解水平。
3.1卷积层
卷积层可以说是CNN架构中最重要的步骤之一。
基本而言,卷积是一种线性的、平移不变性的运算,其由在输入信号上执行局部加权的组合构成。
根据所选择的权重集合(即所选择的点扩散函数(pointspreadfunction))的不同,也将揭示出输入信号的不同性质。
在频率域中,与点扩散函数关联的是调制函数——说明了输入的频率组分通过缩放和相移进行调制的方式。
因此,选择合适的核(kernel)对获取输入信号中所包含的最显著和最重要的信息而言至关重要,这能让模型对该信号的内容做出更好的推断。
本节将讨论一些实现这个核选择步骤的不同方法。
3.2整流
多层网络通常是高度非线性的,而整流(rectification)则通常是将非线性引入模型的第一个处理阶段。
整流是指将点方面的非线性(也被称为激活函数)应用到卷积层的输出上。
这一术语借用自信号处理领域,其中整流是指将交流变成直流。
这也是一个能从生物学和理论两方面都找到起因的处理步骤。
计算神经科学家引入整流步骤的目的是寻找能最好地解释当前神经科学数据的合适模型。
另一方面,机器学习研究者使用整流的目的是为了让模型能更快和更好地学习。
有趣的是,这两个方面的研究者往往都认同这一点:
他们不仅需要整流,而且还会殊途同归到同一种整流上。
图3.7:
多层网络的文献中所使用的非线性整流函数
3.3归一化
正如前面提到的,由于这些网络中存在级联的非线性运算,所以多层架构是高度非线性的。
除了前一节讨论的整流非线性,归一化(normalization)是CNN架构中有重要作用的又一种非线性处理模块。
CNN中最广泛使用的归一化形式是所谓的DivisiveNormalization(DN,也被称为局部响应归一化)。
本节将介绍归一化的作用并描述其纠正前两个处理模块(卷积和整流)的缺点的方式。
同样,我们会从生物学和理论两个方面讨论归一化。
3.4池化
不管是生物学启发的,还是纯粹基于学习的或完全人工设计的,几乎所有CNN模型都包含池化步骤。
池化运算的目标是为位置和尺寸的改变带来一定程度的不变性以及在特征图内部和跨特征图聚合响应。
与之前几节讨论的三种CNN模块类似,池化在生物学和理论研究上都具有支持。
在CNN网络的这个处理层上,主要的争论点是池化函数的选择。
使用最广泛的两种池化函数分别是平均池化和最大池化。
本节将探索相关文献中描述的各种池化函数的优点和缺点。
图3.10:
平均池化和最大池化在Gabor滤波后的图像上的比较。
(a)展示了不同尺度的平均池化的效果,其中(a)中上面一行是应用于原始灰度值图像的结果,(a)中下面一行是应用于Gabor滤波后的图像上的结果。
平均池化能得到灰度值图像的更平滑的版本,而稀疏的Gabor滤波后的图像则会褪色消散。
相对而言,(b)给出了不同尺度的最大池化的效果,其中(b)中上面一行是应用于原始灰度值图像的结果,(b)中下面一行是应用于Gabor滤波后的图像上的结果。
这里可以看到,最大池化会导致灰度值图像质量下降,而Gabor滤波后的图像中的稀疏边则会得到增强。
图来自[131]
4当前状态
对CNN架构中各种组件的作用的论述凸显了卷积模块的重要性,这个模块很大程度上负责了在网络中获取最抽象的信息。
相对而言,我们对这个处理模块的理解却最少,因为这需要最繁重的计算。
本章将介绍在尝试理解不同的CNN层所学习的内容上的当前趋势。
同时,我们还将重点说明这些趋势方面仍有待解决的问题。
4.1当前趋势
尽管各种CNN模型仍继续在多种计算机视觉应用中进一步推进当前最佳的表现,但在理解这些系统的工作方式和如此有效的原因上的进展仍还有限。
这个问题已经引起了很多研究者的兴趣,为此也涌现出了很多用于理解CNN的方法。
一般而言,这些方法可以分成三个方向:
对所学习到的过滤器和提取出的特征图进行可视化、受理解视觉皮层的生物学方法启发的ablationstudy、通过向网络设计中引入分析原理来最小化学习过程。
本节将简要概述其中每种方法。
4.2仍待解决的问题
基于上述讨论,基于可视化的方法存在以下关键研究方向:
∙首要的一点:
开发使可视化评估更为客观的方法是非常重要的,可以通过引入评估所生成的可视化图像的质量和/或含义的指标来实现。
∙另外,尽管看起来以网络为中心的可视化方法更有前景(因为它们在生成可视化结果上不依赖网络自身),但似乎也有必要标准化它们的评估流程。
一种可能的解决方案是使用一个基准来为同样条件下训练的网络生成可视化结果。
这样的标准化方法反过来也能实现基于指标的评估,而不是当前的解释性的分析。
∙另一个发展方向是同时可视化多个单元以更好地理解处于研究中的表征的分布式方面,甚至同时还能遵循一种受控式方法。
以下是基于ablationstudy的方法的潜在研究方向:
∙使用共同的系统性组织的数据集,其中带有计算机视觉领域常见的不同难题(比如视角和光照变化),并且还必需有复杂度更大的类别(比如纹理、部件和目标上的复杂度)。
事实上,近期已经出现了这样的数据集[6]。
在这样的数据集上使用ablationstudy,加上对所得到的混淆矩阵的分析,可以确定CNN架构出错的模式,进而实现更好的理解。
∙此外,对多个协同的ablation对模型表现的影响方式的系统性研究是很受关注的。
这样的研究应该能延伸我们对独立单元的工作方式的理解。
最后,这些受控方法是很有前景的未来研究方向;
因为相比于完全基于学习的方法,这些方法能让我们对这些系统的运算和表征有更深入的理解。
这些有趣的研究方向包括:
∙逐步固定网络参数和分析对网络行为的影响。
比如,一次固定一层的卷积核参数(基于当前已有的对该任务的先验知识),以分析所采用的核在每一层的适用性。
这个渐进式的方法有望揭示学习的作用,而且也可用作最小化训练时间的初始化方法。
∙类似地,可以通过分析输入信号的性质(比如信号中的常见内容)来研究网络架构本身的设计(比如层的数量或每层中过滤器的数量)。
这种方法有助于让架构达到适宜应用的复杂度。
∙最后,将受控方法用在网络实现上的同时可以对CNN的其它方面的作用进行系统性的研究,由于人们重点关注的所学习的参数,所以这方面得到的关注较少。
比如,可以在大多数所学习的参数固定时,研究各种池化策略和残差连接的作用。