文章目录
- (一)CNN的发展情况
- (二)多层架构
- (1)神经网络
- (2)循环神经网络
- (3)卷积网络
- (4)生成对抗网络
- (5)多层网络的训练
- (6)迁移学习
- (7)空间卷积网络
- (8)CNN 发展中的关键架构
- (9)时空卷积网络
- (三)理解 CNN 的构建模块
(一)CNN的发展情况
事实上,当前计算机视觉领域的很多成果都是将 CNN 当作黑箱使用,这种做法是有效的,但其有效的原因却非常模糊不清,这严重满足不了科学研究的要求。尤其是这两个可以互补的问题:
(1)在被学习的方面(比如卷积核),究竟被学习的是什么?
(2)在架构设计方面(比如层的数量、核的数量、池化策略、非线性的选择),为什么某些选择优于另一些选择?这些问题的答案不仅有利于提升我们对 CNN 的科学理解,而且还能提升它们的实用性。
此外,目前实现 CNN 的方法需要大量训练数据,而且设计决策对结果表现有很大的影响。更深度的理论理解应该能减轻对数据驱动的设计的依赖。尽管已有实证研究调查了所实现的网络的运行方式,但到目前为止,这些结果很大程度上还局限在内部处理过程的可视化上,目的是为了理解 CNN 中不同层中发生的情况。
(二)多层架构
最先进的用于识别的计算机视觉系统依赖于两个分离但又互补步骤。
1)第一步是通过一组人工设计的操作(比如与基本集的卷积、局部或全局编码方法)将输入数据变换成合适的形式。对输入的变换通常需要找到输入数据的一种紧凑和/或抽象的表征,同时还要根据当前任务注入一些不变量。这种变换的目标是以一种更容易被分类器分离的方式改变数据。
2)其次,被变换的数据通常用于训练某些类型的分类器(比如支持向量机)来识别输入信号的内容。通常而言,任何分类器的表现都会受到所使用的变换方法的严重影响。
多层学习架构为这一问题带来了不同的前景,这种架构提出不仅要学习分类器,而且要从数据中直接学习所需的变换操作。这种形式的学习通常被称为**「表征学习」,当应用在深度多层架构中时即被称为「深度学习」**。
(1)神经网络
典型的神经网络由一个输入层、一个输出层和多个隐藏层构成,其中每一层都包含多个单元。
自动编码器可以定义为由两个主要部分构成的多层神经网络。第一个部分是编码器,可以将输入数据变换成特征向量;第二个部分是解码器,可将生成的特征向量映射回输入空间。
(2)循环神经网络
当谈到依赖于序列输入的任务时,循环神经网络(RNN)是最成功的多层架构之一。RNN 可被视为一种特殊类型的神经网络,其中每个隐藏单元的输入时其当前时间步骤观察到的数据和其前一个时间步骤的状态。
每个 RNN 单元的输入都是当前时间步骤的新输入和前一个时间步骤的状态;然后根据计算得到新输出,这个输出又可被馈送到多层 RNN 的下一层进行处理。
(3)卷积网络
卷积网络(CNN)是一类尤其适合计算机视觉应用的神经网络,因为它们能使用局部操作对表征进行分层抽象。有两大关键的设计思想推动了卷积架构在计算机视觉领域的成功。
第一,CNN 利用了图像的 2D 结构,并且相邻区域内的像素通常是高度相关的。因此,CNN 就无需使用所有像素单元之间的一对一连接(大多数神经网络都会这么做),而可以使用分组的局部连接。
第二,CNN 架构依赖于特征共享,因此每个通道(即输出特征图)是在所有位置使用同一个过滤器进行卷积而生成的。
(4)生成对抗网络
典型的生成对抗网络(GAN)由两个互相竞争的模块或子网络构成,即:生成器网络和鉴别器网络。
(5)多层网络的训练
多种多层架构的成功都很大程度上取决于它们的学习过程的成功。其训练过程通常都基于使用梯度下降的误差的反向传播。由于使用简单,梯度下降在训练多层架构上有广泛的应用。
(6)迁移学习
使用多层架构提取的特征在多种不同数据集和任务上的适用性可以归功于它们的分层性质,表征会在这样的结构中从简单和局部向抽象和全局发展。因此,在其层次结构中的低层级提取的特征往往是多种不同任务共有的特征,因此使得多层结构更容易实现迁移学习
(7)空间卷积网络
理论上而言,卷积网络可以应用于任意维度的数据。它们的二维实例非常适用于单张图像的结构,因此在计算机视觉领域得到了相当大的关注。有了大规模数据集和强大的计算机来进行训练之后,CNN 近来在多种不同任务上的应用都出现了迅猛增长
(8)CNN 发展中的关键架构
- AlexNet 架构 : 单流的架构
- GoogLeNet 架构 : 典型的 inception 模块, 展示了顺序和并行执行的操作
- ResNet 架构。(a)残差模块。
- DenseNet 架构。(a)dense 模块
- 实现 CNN 的不变性
使用 CNN 的一大难题是需要非常大的数据集来学习所有的基本参数。甚至拥有超过 100 万张图像的 ImageNet 等大规模数据集在训练特定的深度架构时仍然被认为太小。满足这种大数据集要求的一种方法是人工增强数据集,具体做法包括对图像进行随机翻转、旋转和抖动(jittering)等。这些增强方法的一大优势是能让所得到的网络在面对各种变换时能更好地保持不变 - 实现 CNN 的定位
除了识别物体等简单的分类任务,CNN 也在需要精准定位的任务上表现出色,比如形义分割和目标检测。
(9)时空卷积网络
使用 CNN 为各种基于图像的应用带来了显著的性能提升,也催生了研究者将 2D 空间 CNN 扩展到视频分析的 3D 时空 CNN 上的兴趣。一般而言,文献中提出的各种时空架构都只是试图将空间域 (x,y) 的 2D 架构扩展到时间域 (x, y, t) 中。在基于训练的时空 CNN 领域存在 3 种比较突出的不同架构设计决策:基于 LSTM 的 CNN、3D CNN 和 Two-Stream CNN。
- 基于 LSTM 的时空 CNN
基于 LSTM 的时空 CNN 是将 2D 网络扩展成能处理时空数据的一些早期尝试。它们的操作可以总结成图 2.16 所示的三个步骤。第一步,使用一个 2D 网络处理每一帧,并从这些 2D 网络的最后一层提取出特征向量。第二步,将这些来自不同时间步骤的特征用作 LSTM 的输入,得到时间上的结果。第三步,再对这些结果求平均或线性组合,然后再传递给一个 softmax 分类器以得到最终预测。 - 3D CNN
这种突出的时空网络是将 2D CNN 最直接地泛化到图像时空域中。它直接处理 RGB 图像的时间流,并通过应用所学习到的 3D 卷积过滤器来处理这些图像。 - Two-Stream CNN
这种类型的时空架构依赖于一种双流式(two-stream)的设计。标准的双流式架构是采用两个并行通路——一个用于处理外观,另一个用于处理运动;这种方法类似于生物视觉系统研究中的双流式假设。
- 以上网络存在的问题:
尽管这些网络在很多计算机视觉应用上都实现了很有竞争力的结果,但它们的主要缺点仍然存在:
- 对所学习到的表征的确切本质的理解很有限、依赖于大规模数据训练集、
- 缺乏支持准确的表现边界的能力、
- 网络超参数选择不清晰。
(三)理解 CNN 的构建模块
- 卷积层
基本而言,卷积是一种线性的、平移不变性的运算,其由在输入信号上执行局部加权的组合构成。根据所选择的权重集合(即所选择的点扩散函数(point spread function))的不同,也将揭示出输入信号的不同性质。在频率域中,与点扩散函数关联的是调制函数——说明了输入的频率组分通过缩放和相移进行调制的方式。因此,选择合适的核(kernel)对获取输入信号中所包含的最显著和最重要的信息而言至关重要,这能让模型对该信号的内容做出更好的推断 - 整流
多层网络通常是高度非线性的,而整流(rectification)则通常是将非线性引入模型的第一个处理阶段。整流是指将点方面的非线性(也被称为激活函数)应用到卷积层的输出上。这一术语借用自信号处理领域,其中整流是指将交流变成直流。这也是一个能从生物学和理论两方面都找到起因的处理步骤。计算神经科学家引入整流步骤的目的是寻找能最好地解释当前神经科学数据的合适模型。另一方面,机器学习研究者使用整流的目的是为了让模型能更快和更好地学习。有趣的是,这两个方面的研究者往往都认同这一点:他们不仅需要整流,而且还会殊途同归到同一种整流上。 - 归一化
由于这些网络中存在级联的非线性运算,所以多层架构是高度非线性的。除了前一节讨论的整流非线性,归一化(normalization)是 CNN 架构中有重要作用的又一种非线性处理模块。CNN 中最广泛使用的归一化形式是所谓的 Divisive Normalization(DN,也被称为局部响应归一化)。 - 池化
不管是生物学启发的,还是纯粹基于学习的或完全人工设计的,几乎所有 CNN 模型都包含池化步骤。池化运算的目标是为位置和尺寸的改变带来一定程度的不变性以及在特征图内部和跨特征图聚合响应。与之前几节讨论的三种 CNN 模块类似,池化在生物学和理论研究上都具有支持。在 CNN 网络的这个处理层上,主要的争论点是池化函数的选择。使用最广泛的两种池化函数分别是平均池化和最大池化。