要:深度卷积神经网络是这一波 AI 浪潮背后的大功臣。虽然很多人可能都已经听说过这个名词,但是对于这个领域的相关从业者或者科研学者来说,浅显的了解并不足够。
通过这篇文章,我们希望帮助大家加深对卷积神经网络的理解,并对这个重要概念有一个全面的认知。
以下为翻译后的内容:
第一章
引言
▌本文动机
过去几年,计算机视觉研究主要集中在卷积神经网络上(通常简称为 ConvNet 或 CNN),在大量诸如分类和回归任务上已经实现了目前为止最佳的表现。
实际上,计算机视觉领域的很多成果都把 CNN 当作了一种黑箱,这种方式虽然有效的,但对结果的解释却是模糊不清的,这也无法满足科学研究的需求。尤其是当这两个问题是互补关系时:
(1)学习的方面(比如卷积核),它到底学习到的是什么?
(2)模型结构设计方面(比如卷积层数量、卷积核数量、池化策略、非线性函数的选择),为什么某些组合会优于其他组合呢?求解这些问题的答案,不仅有利于我们更好地理解卷积神经网络,而且还能进一步提升它的工程实用性。
此外,当前 CNN 的实现方法都需要大量训练数据,而且模型的设计方案对最终的结果有很大的影响。
▌本文目标
针对以上问题,本文将综述几种当前最优秀的多层卷积结构模型。更重要的是,本文还将通过不同方法来总结标准卷积神经网络的各种组件,并介绍它们所基于的生物学或合理的理论基础。此外,本文还将介绍如何通过可视化方法及实例研究来尝试理解卷积神经网络内部的变化情况。我们的最终目标是向读者详细展示卷积神经网络中所涉及到的每一个卷积层操作,着重强调当前最先进的卷积神经网络模型并说明未来仍需解决的问题。
第二章
▌多层网络结构
近年来,在深度学习或深层神经网络取得成功前,计算机视觉识别系统最先进的方法主要由两个步骤组成,这两个步骤各自分离但又互补:首先,我们需要通过人工设计操作(如卷积、局部或全局编码方法)将输入数据转换成合适的形式。这种输入的变换形式,通常是为了得到输入数据的一种紧凑或抽象的表征,同时还要根据当前任务的需要手动设计一些不变量。
神经网络
标准的神经网络结构通常由输入层 x,输出层 y 和多个隐藏层 h 堆叠而成,其中每个层还由多个单元组成,如下图所示。通常,每个隐藏单元 hj 接受上一层所有单元的输入,并将其加权组合,其非线性组合的数学形式如下:
wij 是权重值,用于控制输入单位和隐藏单位之间连接的强度,bj 是隐藏单位的偏置,F 是非线性函数,如 Sigmoid 函数。
深度神经网络可以被视为是 Rosenblatt 感知器及多层感知器的实例。 尽管神经网络模型已经存在多年(即自 1960 年代以来),但它们并未被广泛使用。
直到最近,一些研究人员将简单感知器扩展到多层神经网络模型。 此更重要的是,多层神经网络结构依赖于大量的参数,这就意味着我们需要大量的训练数据和计算资源来支持模型训练及学习参数过程。
标准神经网络结构示意图
受限波尔茨曼机(RBM)的提出是深层神经网络领域的一大重要贡献。受限玻耳兹曼机可以看作是两层的神经网络,只允许网络以前馈连接的方式堆叠。而神经网络可以看作是使用受限波尔茨曼机进行分层无监督预训练的一种模型,在图像识别任务中,这种无监督学习方法主要包括三个步骤:首先,对于图像中的每个像素,对 xi 及初始化的 wij、偏置 bj、隐藏层状态 hj,其概率可以被定义为:
其中,σ(y)= 1 /(1 + exp(-y))。
其次,如上式所示,一旦所有的隐藏状态都被随机设定,我们可以根据概率将每个像素设定为 1,并以此重建图像。
然后,隐藏单元将通过重建的权重和偏差来更新校正单位的误差:
其中,α 是学习率,(xihj)表示隐藏单元 hj 中像素 xi 出现的次数。整个训练过程将重复 N 次或直到误差下降到预设的阈值 τ。通常,网络中的所有层经过预训练后,它们还将通过梯度下降的方式,反向传播误差来进一步微调标记数据。使用这种分层无监督预训练的方式可以不需大量标记数据的情况下,训练深层神经网络结构。因为利用受限波尔茨曼机进行无监督预训练,能够为模型参数的初始化提供了一种有效途径。受限波尔茨曼机的第一个成功应用案例是用于人脸识别的降维,它们被当作是一种自编码器。
标准的自编码器结构
循环神经网络
循环神经网络是处理序列数据相关任务最成功的多层神经网络模型(RNN)。 RNN,其结构示意图如下图所示,它可以看作是神经网络的一种特殊类型,隐藏单元的输入由当前时间步所观察到的数据中获取输入以及它在前一个时间步的状态组合而成。 循环神经网络的输出定义如下:
其中 σ 表示一些非线性函数,wi 和ui 是网络参数,用于控制当前和过去信息的相对重要性。
标准的循环神经网络结构示意图
每个循环单元的输入将由当前时刻的输入 xt 及上一时刻 ht-1 组成,新的输出表示可通过上式计算得到,并传递给循环神经网络中的其他层。
虽然循环神经网络是一类强大的多层神经网络模型,但其的主要问题是模型对时间的长期依赖性,由于梯度爆炸或梯度消失,这种限制将导致模型训练过程在网络回传过程中误差的不平稳变化。为了纠正这个困难,引入了长短期记忆网络(LSTM)。
值得注意的是,LSTM 还包含遗忘门,即网络能够删除一些不必要的信息。总的来说, LSTM 的结构主要包含有:三个控制不同的门(输入门、遗忘门及输出门),以及存储单元状态。 输入门由当前输入 xt 和前一个状态 ht-1 控制,它的定义如下:
其中,wi,ui,bi 表示权重和偏差项,用于控制与输入门相关的权重,σ 通常是一个 Sigmoid 函数。类似地,遗忘门定义如下:
相应地,权重和偏差项由 wf,uf,bf 控制。 可以说,LSTM 最重要的一点是它可以应对梯度消失或梯度爆炸时网络中误差传播不平稳的挑战。
标准的长短期记忆网络结构示意图
每个循环单元的输入将由当前时刻的输入 xt 及上一时刻 ht-1 组成,网络的返回值将馈送到下一时刻 ht。LSTM 最终的输出由输入门 it,遗忘门 ft 及输出门 ot 和记忆单元状态 ct 共同决定。
卷积神经网络
卷积网络(ConvNets)是一种特殊的神经网络类型,其特别适合计算机视觉应用,因为它们对于局部操作有很强的抽象表征能力。推动卷积神经网络结构在计算机视觉中成功应用的两个关键性的因素:
第一,卷积神经网络能够利用图像的 2D 结构和图像相邻像素之间的高度相关性,从而避免在所有像素单元之间使用一对一连接(即如同大多数全连接的神经网络),这有利于使用分组的局部连接。此外,卷积神经网络结构依赖于特征共享原则,正如下图所示,每个通道的输出(或输出的特征映射)都是通过所有位置的相同滤波器的卷积生成。
标准的卷积神经网络结构示意图
第二,卷积神经网络还引入一个池化步骤,在一定程度上保证了图像的平移不变性,这使得模型不受位置变化的影响。还值得注意的是,池化操作使得网络拥有更大的感受野,从而能够接受更大的输入。感受野的增大,将允许网络在更深层学习到更加抽象的特征表征。例如,对于目标识别任务,卷积网络中的浅层将学习到图像的一些边、角特征,而在更深层能够学习到整个目标的特征。
卷积神经网络的结构最早是受生物视觉机制启发而设计的,正如 Hube 在其开创性的研究中所描述的人类视觉皮层的工作原理。随后,Fukushima 提出的神经感知器(Neocognitron)是卷积神经网络的前身,它依赖局部连接的方式,由 K 层神经网络层级联而成,每层神经网络由 S-cell 单元,U sl 及复杂的单元相间分布而成,这种交替分布的形式是模仿生物简单细胞中的处理机制而设计的,其结构示意图如下图所示。
神经感知器结构示意图
此外,在卷积操作后都会跟随一个非线性变化单元,常见的非线性函数是修正线形单元 ReLu,其数学表达式如下:
在非线性变换后,通常会引入池化单元。平均池化操作是常用的池化操作之一,通过平均化感受野中的像素值,来综合考虑周围像素的特征。经典的卷积网络由四个基本处理层组成: 卷积层、非线性变换层、归一化层及池化层。
生成对抗网络
生成对抗网络是 2014 年首次引入的一种新型多层神经网络模型,这种模型结构充分体现了多层网络架构的强大性。虽然生成对抗网络并没有多种不同的网络构建模块,但这种网络结构具有一些特殊性,最关键的是引入了无监督学习方式,使得模型的训练学习不再依赖大量的标记数据。
一个标准的生成对抗模型主要由两部分子网络组成:生成网络 G 和判别网络 D,如下图所示,两个子网络都是预先定义好的多层网络结构(最初提出的模型中二者都是多层全连接网络)。
通用的生成对抗网络结构示意图
生成对抗网络自提出以来,因其强大的多层网络结构及独特的无监督学习方式,得到了广泛的关注和研究。GAN 的成功应用包括:文本到图像合成(其中网络的输入是要呈现图像的文字描述);超分辨率图像的生成,即用较低分辨率的输入生成逼真的高分辨率图像;图像修复,即用 GAN 来生成来自输入图像中的缺失信息;纹理合成,即从输入噪声中生成逼真的纹理特征。
多层网络的训练
如前所述,当前各种多层神经网络结构所取得的成功,在很大程度上取决于网络训练学习过程的进步。通常,神经网络的训练首先需要进行多层无监督预训练,随后,将预训练好的模型进行有监督训练,训练过程都是基于梯度下降的反向传播原则,通过反向传播网络误差,来更正修正模型的参数值,从而优化网络结构及输出结果。
迁移学习
多层神经网络结构的一大益处是在跨数据集甚至跨不同任务中,模型所学得的特征具有通用的适用性。在多层网络结构中,随着层次的增加,所学得的特征表征通常也是从简单到复杂、从局部到全局发展。
▌空间卷积神经网络
理论上,卷积神经网络可以应用于任意维度的数据,特别适用于二维的图像数据,因此卷积结构在计算机视觉领域受到了相当关注。
AlexNet 模型结构示意图
值得注意的是,这种结构由两个分支网络构成,分别在两个不同的 GPU 上并行训练。
GoogleNet 模型结构示意图。该模型由多个 Inception 模块构成。
ResNet 模型结构示意图。该模型由多个残差模块构成。
DenseNet 模型结构示意图。该模型由多个密集模块堆叠而成。
卷积神经网络的不变形
使用卷积神经网络的一大挑战是需要非常大的数据集来训练并学习模型的所有基本参数。但即便是当前大规模的数据集,如 ImageNet 拥有超过一百万张图像数据的数据集,仍然无法满足深层卷积结构训练的需要。
处理不变性最大化的一种优秀结构是空间变换网络(STN)。该模型结构由三个子模块组成:一个定位模块,一个网格生成模块和一个采样模块,如下图所示。
空间变换网络结构示意图
卷积神经网络中的目标定位问题
全卷积网络(FCN)是其中最成功的卷积结构之一,主要用于图像语义分割。顾名思义,FCN 并未使用全连接层,而是将它们转换为卷积层,其感受野范围覆盖整个卷积层的底层特征图。更重要的是,网络通过学习一个上采样或者去卷积滤波器,可以恢复最后一层图像的全分辨率,其结构示意图如下图所示。
全卷积网络结构示意图。经过上采样操作,在模型最后一层得到全分辨率的特征图,适用 softmax 将每个像素分类,并生成最终的分割结果。
在 FCN 中,语义分割问题被转化成一个密集的逐像素分类问题,通过投射来实现。换句话说,每个像素都与 softmax 层关联,通过像素逐类分组来实现图像的语义分割。更值得注意的是,在这项工作中对较低结构层的特征适用上采样操作,起着至关重要作用。
▌时域卷积神经网络
如上所述,卷积神经网络在计算机视觉二维空间的应用中所取得的显着性能,引发了人们对 3D 时空应用的研究。许多文献中提出的时域卷积结构通常只是试图从空间域(x,y)扩展到时间域(x,y,t)的二维卷积结构。而时域神经网络结构有三种不同的形式:基于 LSTM 的时域卷积网络、3D 卷积神经网络和双流卷积神经网络,其模型结构示意图如下图。
基于 LSTM 的时域卷积神经网络。该模型中,由视频流的每帧数据构成模型的输入。
双流卷积神经网络。该模型以 RGB 光流数据作为输入。
▌总结
相比于手动设计的特征或浅层的特征表示,多层卷积结构是当前计算机视觉领域最先进、最具吸引力的结构之一。总体而言,大多数模型结构都是基于四个共同的构件块,即卷积、非线性单元、归一化和池化操作。接下来我们将进一步讨论卷积神经网络设计过程中这些超参数的选择。
第三章
理解卷积神经网络的构建模块
考虑到卷积神经网络领域还存在大量未解决的问题,在本章我们将探讨一些典型案例中卷积网络的每一层处理操作的作用及意义,尤其我们将从理论和生物学角度给出合理解释。
▌卷积层
卷积神经网络的核心层是卷积层,这是模型最重要的一步。总的来说,卷积是一种线性的、具有平移不变性的运算,它是通过局部加权输入信号来实现的。权重集合是根据点扩散函数(point spread function)来确定的,不同的权重函数能够反映出输入信号的不同性质。
▌非线性单元
多层神经网络通常是高度的非线性模型,而修正单元(rectification)通常将引入一个非线性函数(也被称为激活函数),即将非线性函数应用到卷积层输出中。引入修正单元的目的,一方面是为了最好的、最合适的模型解释;另一方面是为了让模型能更快和更好地学习。常用的非线性函数主要包括 Logistic 函数、tanh 函数、Sigmoid 函数、ReLU 及其变体 LReLU,SReLU,EReLU 等,其函数图像如下图所示。
多层网络结构中的非线性激活函数
▌归一化
如上所述,由于这些多层网络中存在级联的非线性运算,因此多层神经网络都是高度的非线性模型。除了上面讨论的修正非线性单元外,归一化(normalization)同样是卷积神经网络结构中重要的非线性处理模块。最广泛使用的归一化形式即所谓的局部响应归一化操作(LRN,Local Response Normalization)。此外,还有诸如批归一化(batch normalization),分裂归一化(divisive normalization)等。
▌池化操作
几乎所有的卷积神经网络,都包含池化操作。池化操作是为了提取特征在不同位置和规模上的变化,同时聚合不同特征映射的响应。正如卷积结构中前三个组份,池化操作也是受到生物学启发和理论支持而提出的。 平均池化和最大池化是两个最广泛使用的池化操作,其池化效果依次如下图所示。
经平均池化操作后Gabor特征的变化情况
经最大池化操作后Gabor特征的变化情况
第四章
当前研究状态
对卷积神经网络结构中各组作用的阐述凸显了卷积模块的重要性,这个模块主要用于捕获最抽象的特征信息。相对而言,我们对卷积模块操作的理解却很模糊,对其中繁琐的计算过程的理解并不透彻。本章我们将尝试理解卷积网络中不同层所学习的内容及不同的可视化方法。同时,我们还将重点展望这些方面仍待解决的问题。
▌当前趋势
尽管各种优秀的卷积模型在多种计算机视觉应用中取得了最优表现,但在理解这些模型结构的工作方式及探索这些结构的有效性方面的研究进展仍相当缓慢。如今,这个问题已经引起了众多研究者的兴趣,为此很多研究提出用于理解卷积结构的方法。
总的来说,这些方法可以分成三个方向:对所学习到的过滤器和提取的特征图进行可视化分析、受生物视觉皮层理解方法所启发的消融学习(ablation study)、以及通过引入主成分分析法设计并分析网络最小化学习过程,我们将简要概述这三种方法。
卷积的可视化分析
卷积可视化的第一种方法是以数据集为中心的方法,因为卷积操作依靠从数据集输入来探测网络在网络中找到最大响应单元。这种方法的第一个应用是反卷积(DeConvNet)。其中可视化是分两步实现:首先,一个卷积结构接收来自数据集 a 的几个图像并记录数据集中输入的特征映射最大响应;其次,这些特征地图使用反卷积结构,通过反转卷积操作模块,将卷积操作中学习到的滤波器特征进行转置来执行“解卷积”操作,从而实现卷积的可视化分析。反卷积操作的示意图如下图所示:
反卷积构建模块
卷积可视化的第二种方法称为以网络为中心的方法,因为它仅使用网络参数而不需要任何用于可视化的数据。这种方法首次应用于深层置信网络的可视化分析中,后来才应用于卷积网络结构中。具体地说,这种卷积可视化是通过合成图像来实现的,该图像将最大化某些神经元(或过滤器)的响应。
卷积的消融学习
另一种流行的可视化方法是使用所谓的网络消融研究。实际上,许多著名的卷积结构都包括模型消融研究实验部分,其目的是隔离卷积结构的不同部分组成网络,来查看删除或添加某些模块如何模拟整体的性能。消融研究能够指导研究者设计出性能更优的网络结构。
卷积结构的控制设计
理解卷积结构的另一种方法是在网络设计时添加先验知识,从而最大限度地减少所需学习的模型参数。例如,一些方法是减少每层卷积层所需学习的过滤器数量,并用转换后的版本在每一层中学习的滤波器来模拟旋转不变性。
▌待解决问题
通过上述内容,我们总结了卷积模型一些关键技术以及如何更好地理解卷积结构的方法。下面,我们将进一步讨论在卷积模型领域仍待解决的一些问题。
基于卷积可视化的研究方法仍待解决的几个关键问题:
首先,开发更加客观的可视化评价方法是非常重要的,可以通过引入评价指标来评估所生成的可视化图像质量或含义来实现。
此外,尽管看起来以网络为中心的卷积可视化方法更有前景(因为它们在生成可视化结果过程中不依赖模型结构自身),但也缺乏一套标准化的评估流程。一种可能的解决方案是使用一个评估基准来评价同样条件下生成的网络可视化结果。这样的标准化方法反过来也能实现基于指标的评估方法,而不是当前的解释性分析。
另一个可视化分析的发展方向是同时可视化网络的多个单元,以更好地理解模型中特征表征的分布情况,甚至还能遵循一种控制方法。
基于 ablation study 的研究方法仍待解决的几个关键问题:
使用共同的、系统性组织的数据集。我们不仅要解决计算机视觉领域常见的不同挑战(比如视角和光照变化),还必须要应对复杂度更大的类别问题(如图像纹理、部件和目标复杂度等)。近年来,已经出现了一些这样的数据集。在这样的数据集上,使用 ablation study,辅以混淆矩阵分析,可以确定卷积结构中出错的模块,以便实现更好的理解卷积。
此外,分析多个协同的 ablation 对模型表现的影响方式,是一个很受关注的研究方向。这样的研究也能有助于我们理解独立单元的工作方式。
相比于完全基于学习的方法,还有一些受控方法能让我们对这些结构的运算和表征有更深入的理解,因而具有很大的研究前景。这些有趣的研究方向包括:
逐层固定网络参数及分析对网络行为的影响。例如,基于当前特定任务的先验知识,一次固定一层的卷积核参数,以分析每一卷积层中卷积核的适用性。这个逐层渐进式的学习方式有助于揭示卷积学习的作用,还可用作最小化训练时间的初始化方法。
类似地,可以通过分析输入的特征来研究网络结构的设计(如层的数量或每层中过滤器数量的选择方案),这种方法有助于设计出最适合模型结构。
最后,将受控方法应用于网络的同时,可以对卷积神经网络的其它方面的作用进行系统性的研究。通常,我们重点关注的是模型所学习的参数,所以对这方面得到的关注较少。例如,我们可以在固定大多数参数的情况下,研究各种池化策略和残差连接的作用。