我们怎样理解卷积神经网络
章节1
引言
1.1 动机
近几年来,计算机视觉研究主要聚焦在卷积神经网络,通常称为ConvNets或CNNs。这些工作在广泛的分类任务(例如,64,88,139)和回归(例如,36,97,159)任务上取得了优异的表现。然而,尽管这些方法的历史可以追溯到很多年前(49,91),但是理论上对于这些系统为什么能取得优异的成绩的研究仍然滞后。实际上,目前计算机视觉研究领域将卷积神经网络当作一个黑盒子,尽管对于它为什么能工作有一个模糊的理论概念,但是从科学角度看是非常令人不满的。特别的有两个主要的补充关注点:(1) 对于学习方面(例如卷积核),究竟学习到了什么?(2) 对于结构设计方面(例如层数,核数/层数,池化策略,非线性选择),为什么一些选择比另一些要好?对于这些问题的答案不仅可以提高对卷积神经网络科学的理解,而且可以提高它们的实用能力。
此外,目前卷积神经网络的实现需要海量数据用于训练(84,88,91),并且设计决策对性能有很大的影响(23,77)。更深入的理论认识应该减少对数据驱动的依赖。尽管经验研究已经证实了实现神经网络的操作,至今,它们的这些结果主要受限于内部处理的可视化,以便了解ConvNet不同层面发生的情况(104,33,154)。
1.2 目标
针对上述情况,本文将回顾最主流的多层复合卷积结构方案。重要的是,典型的卷积神经网络的各个组成部分将通过回顾不同的方法来进行讨论,这些方法的设计决策基于生物研究发现和/或合理的理论基础。此外,将通过可视化和实证研究来了解ConvNet的不同尝试。最终目标是阐明ConvNet体系结构中每一层的处理作用,提炼我们目前对ConvNets的理解,并强调关键的开放问题。
1.3 报告大纲
本报告结构如下:本章促使我们回顾对卷积神经网络的理解。章节2将介绍各种多层网络结构,并介绍计算机视觉应用中最成功的体系结构。章节3将更详细的关注于特定神经网络的每一层结构,并从生物学和理论两个角度讨论不同组件的设计。最后,章节4将讨论卷积神经网络的当前趋势以及理解卷积神经网络做出的努力,并且强调当前遗留的特别突出的缺点。
章节2
多层网络
大体上,本章简要概述了计算机视觉应用中最流行的多层体系结构。值得注意的是,虽然本章涵盖了文献中的最重要的贡献,但它不会提供对这样体系结构的综合评论,此类评论可以从别处获得(例,17,56,90)。相反,本章的目的是为为文档的其余部分机器详细介绍和讨论当前应用于视觉信息处理的卷积网络所了解的内容奠定基础。
多层体系结构
在最近深度学习网络成功之前,最成功的计算机视觉识别系统依赖两个独立但互补的步骤。首先,输入数据通过手工设计的操作(与基本集的卷积,局部或全局编码方式)变成合适的形式。输入引起的转换通常需要找到输入数据的紧密 和\或 抽象的表示,同时根据手边的任务注入不变量。转换的目的是采取某种方法改变数据使之可以更容易被分类器分类。其次,转换后的数据通常用来训练某种分类器(例如支持向量机等)去识别输入信号的内容。通常,使用的任何分类器的表现受采取的转换方式的极大影响。
具有学习能力的多层体系结构在这个问题上有不同的方法,那便是建议学习,不仅仅学习分类器,而且直接从数据中学习变换操作。这种学习形式通常称为表示学习(7,90),当用深度网络结构时称为深度学习。
多层结构可以使用计算模型定义,允许从多个抽象层面从输入数据中提取有用的信息。通常,多层结构被设计用于放大较高层的输入的重要方面,同时对于不显著的变化变得越来越健壮。大多数多层结构将交织线性和非线性函数,简单的堆叠在一起。这些年来,提出了大量各种多层体系结构,本节将介绍计算机视觉应用中最流行的几种。特别是,人工神经网络架构由于它们卓越的表现,将重点介绍。为简洁起见,这样的网络在下文中将简单的成为神经网络。
2.1.1 神经网络
一个典型的神经网络由输入层,x,输出层,y,及一系列的隐藏层,h,组成。其中,每层由多个元件或单元组成,如图2.1所示。通常,每个隐藏层,h_j,接受前一层所有单元的输入并且被定义为输入的权重组合,通过下列非线性函数
h_j=F(b_j+\sum_i w_{ij}x_i) \tag{2.1}
其中,w_{ij},控制输入单元与输出单元的连接长度,b_j是隐藏层的一个小偏置,F(.)是饱和非线性函数,例如sigmoid函数。
深度神经网络可以看作是Rosenblatt感知器(122)和多层感知器(123).尽管神经网络模型已经出现了很多年,但是并没有大规模的使用,直到最近。造成这样的原因有很多。最初的负面结果现实感知器不能模拟像XOR这样简单的操作,阻碍了对感知器的进一步研究,直到他们对许多层的概括(106)。此外,缺乏适当的训练算法延缓了该进程直到反向传播算法的流行(125)。然而,多层神经网络最大的拦路虎依赖海量的参数,这意味着需要海量的训练数据和计算资源去支持参数的学习。
能够在深度神经网络领域取得重大进展的主要贡献是使用首先玻尔兹曼机(RBM)(68)进行分层无监督预训练。受限玻尔兹曼机可以看作两层神经网络,在其限制情形下,只允许前馈连接。在图像识别的背景下,用于训练玻尔兹曼机的无监督学习方法可以总结为三个步骤。第一,对于每个像素,x_i,且用一些列随机权重,w_{ij},偏置,b_i,开始,每个单元的隐藏状态h_j以概率p_j被设置为1.概率被定义为:
p_j = \sigma(b_j + \sum_i x_i w_{ij}) \tag{2.2}
其中,\sigma(y) = 1/(1+exp(-y))。第二,一旦所有隐藏状态按照公式2.2随机化,则通过以概率p_i = \sigma(b_i+\sum_ih_jw_{ij})将每个像素x_i设置为1来执行重构图像的尝试。第三,通过更新权重和偏置来纠正隐藏单位。
\Delta w_{ij} = \alpha ((x_i h_i)_{input}-(x_ih_i)_{reconstruction})\tag{2.3}
其中,\alpha是学习速率,是像素x_i和隐藏单元h_j一起的次数。全部的过程重复N次或者误差下降到预设的值,\tau。训练完一层后,其输出将作为下一层的输入,然后按照相同的步骤对其进行训练。通常,在网络的所有图层都进行了与训练后,通过使用梯度下降的误差反响传播对标记数据进一步微调(68)。使用这种分层无监督训练允许训练森都神经网络而不需要大量的标记数据,因为无监督的RBM与训练为各种网络参数的有用的初始化提供了一种途径。
神经网络依靠叠加的RBMS首先成功的部署为一种降维方法,应用于人脸识别(69),其中,它们被用作自动编码。不严格地说,自动编码被定义为由两部分组成的多层神经网络:首先,编码器将输入数据转换为特征向量;其次,解码器将生成的特征向量映射会输入空间;见图2.2。自动编码器的参数通过最小化输入与器重构版本之间的重建误差来学习。
处理基于自动编码的RBM之外,后来还提出了其他集中自动编码器。每种自动编码器引入了一种不同的正则化方法来防止学习到过度复杂的解,即使面对不同的不变量。例子包括稀疏自动编码器(SAE)(8),去噪自动编码器(DAE)(14,142)和压缩自动编码器(CAE)(118)。稀疏自动编码器允许中间表示(即由编码器部分生成)尺寸大于输入尺寸,同时通过惩罚负输出强化稀疏性。相比之下,去噪自动编码器(141,142)通过尝试从认为破坏的版本重建干净的输入来改变重建本身的目标,器目标是学习鲁棒的表示。类似的,压缩自动编码器(118)通过进一步出发注入噪声最敏感的单元来建立去噪声自动编码器。各种类型的自动编码器的详细评论可以在别处找到(7)
2.1.2 循环神经网络
当考虑到任务依赖有顺序的输入时,循环神经网络是一个非常成功的多层体系结构(RNN)(9)。如图2.3所示,RNNS可以看作是一个特殊的神经网络,其中,每个隐藏单元从当前时间步所观察到的数据以及之前步的状态中获取输入。RNN的输出被定义为:
h_i=\sigma(w_ix_i+u_ih_{t-1})\tag{2.4}
其中,\sigma是一些非线性压缩函数,w_i和u_i是控制当前和过去信息相对重要的网络参数。
尽管RNNs看起来是非常强大的结构,其中一个主要的问题是它们对长期依赖关系建模的能力有限。这种限制是由于反向传播回来的误差通过多次时间步,导致梯度爆炸或消失,从而导致训练困难(9)。特别的是,在训练期间,反向传播梯度与当前时间不长一直返回到初始时间步的网络权重相乘。因此,由于乘积累积,权重拥有很重要的作用。如果权重很小,梯度会消失,反之,权重很大,梯度会爆炸。为了纠正这个困难,引入了长时短暂记忆(LSTM)(70)。
LSTMs是配备了存储或记忆的循环网络,如图2.4所示,可随时间积累信息。LSTM的记忆单元是门控的,以便它可以从中读取或写入信息。值得注意的是。LSTMs同时包含以往们,允许网络擦出不再使用的信息。LSTMs由三个不同的门(输入门,i_t,遗忘门,f_t,输出门,o_t)以及记忆单元转发太,c_{t},控制。输入门由当前输入,x_t,以前的状态,h_{t-1}控制。它被定义为:
i_t=\sigma(w_ix_t+u_ih_{t-1}+b_i)\tag{2.5}
其中,w_i,u_i,b_i表示控制连接的输入门的权重和偏置,\sigma通常是sigmoid函数,忘记门被类似的定义为:
f_t=\sigma(w_fx_t+u_f+h_{t-1}+b_f)\tag{2.6}
它由相应的权重和偏差控制,w_f,u_f,b_f.通常,LSTM最重要的一个挑战便是解决梯度消失或者爆炸的问题。这种能力是通过确定记忆单元的状态时通过添加忘记和输入门的组合来首先的,这翻过来又控制信息是否通过输出门传递到另一个单元。具体来说,单元状态由两部分计算出。第一步,候选单元状态由下列估算出:
g_t=\phi(w_cx_t+u_c+h_{t-1}+b_c)\tag{2.7}
其中,\phi通常是双线正切函数。第二步,最终的单元状态是由当前估算的但愿状态,g_t,和前一个单元状态,c_{t-1}控制,由输入门和遗忘门根据:
o_t = \sigma(w_ox_t+u_oh_{t-1}+b_o)\tag{2.8}
其中,h_t=\phi(c_t)o_t\tag{2.9}
2.1.3 卷积神经网络
卷积神经网络(ConvNets)是一种特殊的神经网络,广泛的应用于计算机视觉应用,因为其具有本地操作分层抽象表示的能力。其中有两个关键的设计思想推动了卷积结构在计算机视觉中的成功。首先,ConvNets 利用了图像的2D结构以及相邻像素之间高度相关的这一事实。因此,ConvNets避免了所有像素单元间的一对一连接(即像大多数神经网络一样),而采用分组本地连接。此外,ConvNets结构依靠特征共享,因此每个通道(或输出特征映射)都是都过在所有位置使用相同的滤波器而生成的,如图2.5所示。与标准神经网络相比,ConvNets的这一重要特性导致了一种依赖于更少参数的架构。其次,ConvNets还引进了池化操作,该操作提供一定程度的平移不变性,从而使体系结构位置的微小变化影响较小。值得注意的使,由于网络接收区域的大小增加,池化还允许网络逐渐看到更大部分的输入。随着网络深度的增加,接受域尺寸的增加(加上输入分辨率的降低)使得网络能够表示输入的更加抽象的特征。例如,对于对象识别任务,主张ConvNets图层首先关注对象各部分的边缘,最后覆盖层次结构中较高层的整个对象。
卷积网络的体系结构受到大脑视觉皮层处理的极大启发。实际上,最早的卷积神经网络实例是Fukushima’s Neocognitron,它依赖于本地连接,其中每个特征图最大程度的响应特定特征类型。Neocognitron是由K层级联而成,其中每层由候选S-cell,U_{sl}和复杂单元,U_{cl}构成,这是粗略的模仿生物的简单细胞和复杂细胞的处理过程,如图2.6所示。这些简单细胞单元和使用ReLu函数进行局部卷积一样,复杂细胞进行的操作类似于平均池化。该模型包含了分裂的非线性来完成现在ConvNets规范化实现的一些东西。
不同于大多数标准ConvNet结构(例,88,91),Neocognitron网络不需要标注的数据来进行学习,它是基于自组织的映射,通过重复呈现一组刺激图像来学习连续层之间的局部连接。特别的是,Neocognitron被训练用来学习输入特征图和简单层之间的联系(简单层和复杂层之间的连接时预固定的),学习的步骤可以粗略的概括为两个步骤。首先,每一轮新刺激在输入时呈现,最大程度的响应这种刺激的细胞被选为这种刺激的代表性细胞。其次,输入和代表性细胞之间的联系每次响应相同输入类型而得到加强。值得注意的是,简单细胞层以不同的方式组织成团或平面,这样每种平面只响应相同的刺激类型(和现代ConvNet结构中的特征图类似)。对于Neocognitron的随后扩展包括监督学习以及自上而下的注意力机制。
大多数ConvNets体系架构部署在计算机视觉应用是受到LeCun在1998年针对手写识别提出的结构的启发,这种结构现在被称作LeNet。如关键文献所述,一个经典的卷积网络由四个基本的处理层构成:(1)卷积层(2)非线性层或整流层(3)标准化层(4)池化层。如上所述,这些元素都极大的在Neocognitron中表现出。LeNet中一个关键附加便是加入了反向传播,卷积参数相对高效的学习方法。
尽管ConvNets允许优化后的架构,这样会由更少的参数,与全连接的神经网络相比。它们最主要的缺陷是过度依赖学习和标注的数据。这种数据依赖也许是2012年之前ConvNets没有广泛流行的原因,知道大数据集ImageNet出现以及伴随计算资源的提升才使人们重新对ConvNets燃起兴趣。ConvNets在ImageNet数据集上的成功使得短时间内出现了很多ConvNet结构。大多数的结构票都是在ConvNet上的变形,随后将在第2.2节讨论。
2.1.4 生成性对抗网络
生成性对抗网络是相对较新的模型,充分利用了多层体系结构的强表示能力。GANS在2014年第一次被引进。尽管没有引进不同的结构(例如在新网络构造方面)。它们由一些新特性,使得它们和经典的多层结构有些不同。一个关键的挑战是GANs引进了无监督学习方法并不需要标记的数据。
一个典型的GAN由两个竞争模块或自网络构成,就像图2.7所显示的那样。一个生成网络,G(z;\theta_g)和一个鉴别网络,D(x;\theta_d),其中,z是输入随机噪声,x是真实输入数据(比如一张图片),\theta_g和\theta_g是两个部分的参数。两个网络可以使用以前定义的多层网络。在原始论文中都是使用的全连接多层网络。辨别器,D,被训练用作识别来自生成器的数据,用概率p_d标识为“假”的标签,用1-p_d来标识真实的输入数据。另外,生成网络会尽可能的优化它生成假数据来迷惑识别器的能力。两个模块训练交替进行,训练过程最理想的结果是识别器会分别分配50%的概率给真假数据。换句话说,收敛后的生成器能够从随机输入中产生真实的数据。
在原始文章中,通过利用更加有力的多层网络作为GAN网络的基石来加强GANs的能力(例如为识别器使用预训练的卷积神经网络和反卷积神经网络,学习生成器上的采样过滤器)。GANs成功应用的场景包括:文本的图片合成(输入是文字性的描述,输出是该描述对应的场景);GANs使用低分辨率的图片生成高分辨率的图片,图像修复中GANs的作用是填充输入图像丢失的信息;
纹理合成中GAN用于从输入噪声合成逼真的纹理。