今天看的是《Recent Advances in Convolutional Neural Networks》。
目录
一、摘要
1.1 原文
In the last few years, deep learning has led to very good performance on a variety of problems, such as visual recognition, speech recognition and natural language processing. Among different types of deep neural networks, convolutional neural networks have been most extensively studied. Leveraging on the rapid growth in the amount of the annotated data and the great improvements in the strengths of graphics processor units, the research on convolutional neural networks has been emerged swiftly and achieved stateof-the-art results on various tasks. In this paper, we provide a broad survey of the recent advances in convolutional neural networks. We detailize the improvements of CNN on different aspects, including layer design, activation function, loss function, regularization, optimization and fast computation. Besides, we also introduce various applications of convolutional neural networks in computer vision, speech and natural language processing.
1.2 翻译
在过去的几年里,深度学习在视觉识别、语音识别和自然语言处理等各种问题上都取得了非常好的表现。在不同类型的深度神经网络中,卷积神经网络的研究最为广泛。借助标注数据量的快速增长和图形处理器单元能力的巨大提升,卷积神经网络的研究迅速兴起,并在各种任务上取得了最先进的成果。在本文中,我们对卷积神经网络的最新进展进行了广泛的调查。详细介绍了CNN在层设计、激活函数、损失函数、正则化、优化和快速计算等方面的改进。此外,我们还介绍了卷积神经网络在计算机视觉、语音和自然语言处理方面的各种应用。
二、介绍
卷积神经网络(CNN)是一种著名的深度学习架构,其灵感来自于生物的自然视觉感知机制。1959年,Hubel & Wiesel等人发现动物视觉皮层中的细胞负责在接受区探测光线。受到这一发现的启发,福岛邦彦于1980年提出了新认知器,这可以被视为CNN的前身。1990年,LeCun et al.[3]发表了建立CNN现代框架的开创性论文,并在[3]中对其进行了改进。他们开发了一种多层人工神经网络,名为LeNet-5,可以对手写数字进行分类。像其他神经网络一样,LeNet-5有多层,可以用反向传播算法[5]进行训练。它可以获得原始图像的有效表示,这使得直接从原始像素识别视觉模式成为可能,几乎不需要预处理。Zhang等人的一项平行研究使用了移位不变性人工神经网络(SIANN)从图像中识别字符。然而,由于当时缺乏大量的训练数据和计算能力,他们的网络在更复杂的问题上表现不佳,例如大规模的图像和视频分类。
自2006年以来,已经开发了许多方法来克服深度cnn训练中遇到的困难[7-10]。最值得注意的是,Krizhevsky等人提出了一种经典的CNN架构,并在图像分类任务上对以前的方法进行了显著改进。他们的方法的整体架构,即AlexNet[8],类似于LeNet-5,但具有更深层次的结构。随着AlexNet的成功,人们提出了许多改进其性能的工作。其中代表作品有ZFNet[11]、VGGNet[9]、GoogleNet[10]和ResNet[12]。从架构的演变来看,一个典型的趋势是网络越来越深,例如获得ILSVRC 2015冠军的ResNet,深度大约是AlexNet的20倍,是VGGNet的8倍。通过增加深度,网络可以更好地逼近非线性增加的目标函数,得到更好的特征表示。然而,这也增加了网络的复杂性,使得网络更难优化,更容易出现过拟合。在此过程中,人们提出了各种方法来处理各个方面的问题。在本文中,我们试图对最近的进展进行全面的回顾,并进行一些深入的讨论。
在下面的部分中,我们确定了与CNN相关的广泛类别的作品。图1显示了本文的层次结构分类法。在第二节中,我们首先概述了CNN的基本组成部分。然后,我们在第3节介绍了CNN在卷积层、池化层、激活函数、损失函数、正则化和优化等不同方面的一些最新改进,并在第4节介绍了快速计算技术。接下来,我们在第5节讨论了CNN的一些典型应用,包括图像分类、目标检测、目标跟踪、姿态估计、文本检测和识别、视觉显著性检测、动作识别、场景标注、语音和自然语言处理。最后,我们在第六节对本文进行总结。
三、基础CNN组件
文献中有许多CNN架构的变体。然而,它们的基本组成非常相似。以著名的LeNet-5为例,它由三种类型的层组成,即卷积层、池化层和全连接层。卷积层的目的是学习输入的特征表示。如图2(a)所示,卷积层由多个卷积核组成,用于计算不同的特征映射。具体来说,特征映射的每个神经元都连接到前一层相邻神经元的区域。这样的邻域在前一层被称为神经元的感受野。新的特征映射可以通过首先将输入与学习到的核进行卷积,然后在卷积结果上应用基于元素的非线性激活函数来获得。注意,为了生成每个特征映射,内核是由输入的所有空间位置共享的。通过使用几个不同的内核获得完整的特征映射。数学上,第l层(zl i,j,k)的第k个特征映射中(i, j)处的特征值计算公式为:
其中wl k和bl k分别为第l层第k个滤波器的权向量和偏置项,xl i,j为第l层以位置(i, j)为中心的输入patch。请注意,生成特征映射zl:,:,k的内核wl k是共享的。这种权值共享机制具有降低模型复杂度和使网络更容易训练等优点。激活函数将非线性引入到CNN中,这是多层网络检测非线性特征所需要的。设a(·)表示非线性激活函数。卷积特征zl i,j,k的激活值al i,j,k可以计算为:
典型的激活函数有sigmoid、tanh[13]和ReLU[14]。池化层的目的是通过降低特征映射的分辨率来实现平移不变性。它通常被放置在两个卷积层之间。池化层的每个特征映射连接到前面卷积层的相应特征映射。将池化函数记为pool(·),对于每个特征映射al:,:,k,我们有:
其中Rij是位置(i, j)周围的局部邻域。典型的池化操作是平均池化[15]和最大池化[16]。图2(b)显示了前两个卷积层学习到的数字7的特征映射。第一层卷积层的核被设计用于检测低级特征,如边缘和曲线,而更高层的核被学习编码更抽象的特征。通过堆叠多个卷积层和池化层,我们可以逐渐提取更高级别的特征表示。
在几个卷积层和池化层之后,可能会有一个或多个旨在执行高级推理的全连接层[9,11,17]。它们将前一层的所有神经元与当前层的每个神经元连接起来,生成全局语义信息。请注意,完全连接层并不总是必要的,因为它可以由1 × 1卷积层[18]代替。
cnn的最后一层是输出层。对于分类任务,通常使用softmax算子[8]。另一种常用的方法是SVM,它可以结合CNN的特征来解决不同的分类任务[19,20]。设θ表示CNN的所有参数(例如,权重向量和偏置项)。可以通过最小化在该任务上定义的适当损失函数来获得特定任务的最佳参数。假设我们有N个期望的输入输出关系{(x (N), y (N));n∈[1,···,n]},其中x (n)为第n个输入数据,y (n)为其对应的目标标签,o (n)为CNN的输出。CNN的损失可以计算如下:
训练CNN是一个全局优化问题。通过最小化损失函数,我们可以找到参数的最佳拟合集。随机梯度下降是优化CNN网络的常用方法[21,22]。
四、基于CNN的改进
自2012年AlexNet成功以来,cnn已经有了各种各样的改进。在本节中,我们从卷积层、池化层、激活函数、损失函数、正则化和优化六个方面描述了cnn的主要改进。
4.1 卷积层
基本cnn中的卷积滤波器是对底层局部图像patch的广义线性模型(GLM)。当潜在概念的实例线性可分时,它可以很好地用于抽象。在这里,我们将介绍一些旨在提高其表现能力的作品。
4.1.1 平铺卷积
cnn中的权值共享机制可以大幅减少参数的数量。然而,它也可能限制模型学习其他类型的不变性。tied CNN[23]是CNN的一种变体,它对特征映射进行贴片和多重贴片,以学习旋转和比例不变的特征。在同一层内学习单独的核,并且可以通过相邻单元的平方根池隐式学习复杂的不变性。如图3(b)所示,每k个单元应用卷积操作,其中k是用于控制权重共享距离的贴图大小。当瓦片大小k为1时,每个地图内的单元将具有相同的权重,并且瓦片CNN与传统CNN相同。在[23]中,他们在NORB和CIFAR-10数据集上的实验表明,k = 2获得了最好的结果。Wang等人发现,Tiled CNN在小时间序列数据集上的表现优于传统CNN[25]。
4.1.2 转置卷积
转置卷积可以看作是一个相应的传统卷积的反向传递。它也被称为反褶积[11,26 - 28]和分数阶卷积[29]。为了与大多数文献[11,30]保持一致,我们使用术语“反卷积”。与将多个输入激活连接到单个激活的传统卷积相反,反卷积将单个激活与多个输出激活关联起来。图3(d)显示了在4 × 4输入上使用单位步长和零填充的3 × 3核反卷积操作。反褶积步幅给出了输入特征映射的扩张系数。具体来说,反卷积首先将输入上采样一个带有填充的步长值因子,然后对上采样的输入执行卷积操作。近年来,反卷积被广泛应用于可视化[11]、识别[31-33]、定位[34]、语义分割[30]、视觉问答[35]、超分辨率[36]等领域。
4.1.3 扩展卷积
扩展CNN[37]是CNN的最新发展,它向卷积层引入了一个超参数。通过在过滤器元素之间插入零,Dilated CNN可以增加网络的感受野大小,使网络覆盖更多相关信息。这对于在进行预测时需要一个大的感受野的任务非常重要。形式上,将信号F与大小为r的核k进行卷积的1-D展开卷积定义为(F∗l k)t =τ kτFt−lτ,其中∗l表示l-展开卷积。这个公式可以直接推广到二维展开卷积。图3(c)显示了三个膨胀卷积层的示例,其中每层的膨胀因子l呈指数增长。中间特征图F2是通过应用1扩展卷积从底部特征图F1产生的,其中F2中的每个元素都有一个感受野3×3。F3通过应用2-展开卷积从F2产生,其中F3中的每个元素具有(23−1)×(23−1)的感受野。顶部特征图F4由F3应用4-展开卷积得到,其中F4中的每个元素的感受野为(24−1)×(24−1)。可以看出,Fi+1中每个元素的感受野大小为(2i+2−1)×(2(i+2)−1)。扩展cnn在场景分割[37]、机器翻译[38]、语音合成[39]和语音识别[40]等任务中取得了令人印象深刻的表现。
4.1.4 网路中的网络(NIN)
网中网(Network In Network, NIN)是Lin等人提出的一种通用网络结构。它用微网络代替卷积层的线性滤波器,例如本文中的多层感知器卷积(mlpconv)层,这使得它能够近似潜在概念的更抽象的表示。NIN的整体结构就是这些微网络的叠加。图4显示了线性卷积层和mlpconv层之间的区别。形式上,卷积层(具有非线性激活函数,如ReLU[14])的特征映射计算为:
其中ai,j,k为位置(i, j)处第k个特征映射的激活值,xi,j为以位置(i, j)为中心的输入patch, wk, bk为第k个滤波器的权重向量和偏置项。作为对比,mlpconv层的计算公式为:
式中n∈[1,n], n为mlpconv层的层数,a0 i,j,:等于xi,j。在mlpconv层中,1×1卷积被放置在传统卷积层之后。1×1卷积相当于由ReLU[14]接替的跨通道参数池化操作。因此,mlpconv层也可以看作是在法卷积层上的级联跨通道参数池化。最后,他们还应用了一个全局平均池,该池在空间上平均最后一层的特征映射,并直接将输出向量馈送到softmax层。与全连接层相比,全局平均池化具有更少的参数,从而降低了过拟合风险和计算量。
4.1.5 创始模块
Inception模块是由Szegedy等人引入的,可以看作是NIN的逻辑高潮。他们使用可变的过滤器大小来捕获不同大小的不同视觉模式,并通过初始模块近似最优稀疏结构。具体来说,inception模块由一个池化操作和三种类型的卷积操作组成(见图5(b)),并且在3×3和5×5卷积之前放置1 × 1卷积作为降维模块,这样可以在不增加计算复杂度的情况下增加CNN的深度和宽度。在inception模块的帮助下,网络参数可以大幅减少到500万个,远远少于AlexNet(6000万个)和ZFNet(7500万个)。
在他们后来的论文[41]中,为了找到具有相对适度计算成本的高性能网络,他们建议表示大小应该从输入到输出逐渐减小,并且可以在较低维度嵌入上进行空间聚合,而不会在表示能力上有太大损失。通过平衡每层过滤器的数量和网络的深度,可以达到网络的最佳性能。受ResNet[12]的启发,他们最新的inception - v4[42]结合了inception架构和快捷连接(参见图5(d))。他们发现,快捷连接可以显著加速初始网络的训练。他们的Inception-v4模型架构(75个可训练层)集成了三个残差和一个Inception-v4,在ILSVRC 2012验证数据集上可以达到3.08%的前5名错误率。
4.2 池化层
池化是CNN的一个重要概念。它通过减少卷积层之间的连接数量来降低计算负担。在本节中,我们将介绍一些最近在cnn中使用的池化方法。
4.2.1 Lp池化
Lp池化是一种以复杂细胞[43]为模型的生物学启发池化过程。在[44]中进行了理论分析,表明Lp池化比max池化具有更好的泛化能力。Lp池化可以表示为:
式中yi,j,k为第k个特征映射中位置(i, j)处池化算子的输出,am,n,k为第k个特征映射中池化区域Rij中位置(m,n)处的特征值。特别地,当p = 1时,Lp对应于平均池化,当p =∞时,Lp约化为最大池化。
4.2.2 混合池化
Yu等人[46]受到随机Dropout[17]和DropConnect[45]的启发,提出了一种最大池化和平均池化相结合的混合池化方法。混合池化的函数可表述为:
其中λ是0或1的随机值,表示使用平均池化或最大池化的选择。在正向传播过程中,λ被记录下来并将用于反向传播操作。[46]的实验表明,混合池化可以更好地解决过拟合问题,性能优于最大池化和平均池化。
4.2.3 随机池化
随机池化[47]是一种退学启发池化方法。随机池化不像max池化那样选择每个池化区域内的最大值,而是根据多项分布随机选择激活值,从而保证了feature map的非极大激活值也可以被利用。具体来说,随机池化首先通过对区域内的激活进行归一化来计算每个区域Rj的概率p,即pi = ai/k∈Rj (ak)。得到分布P(p1,…, p|Rj|),我们可以从基于p的多项分布中采样,在区域内选择一个位置l,然后将池激活设为yj = al,其中l ~ p (p1,…, p|Rj|)。与最大池化相比,随机池化可以避免由于随机成分而导致的过拟合。
4.2.4 频谱池化
频谱池化[48]通过在频域裁剪输入的表示来进行降维。给定输入特征映射x∈Rm×m,假设期望输出特征映射的维数为h × w,频谱池首先计算输入特征映射的离散傅里叶变换(DFT),然后通过仅保持频率的中心h × w子矩阵来截断频率表示,最后使用逆DFT将近似映射回空间域。与最大池化相比,光谱池化的线性低通滤波运算可以在相同的输出维数下保留更多的信息。同时,它也不会受到其他池化方法所表现出的输出图维数急剧下降的影响。此外,频谱池化的过程是通过矩阵截断来实现的,这使得它能够在使用FFT作为卷积核的cnn(例如[49])中以很少的计算成本实现。
4.2.5 空间金字塔池化
空间金字塔池化(SPP)是由He等人提出的。SPP的主要优点是,无论输入大小如何,它都可以生成固定长度的表示。SPP将输入的特征映射集中到局部空间箱中,箱的大小与图像的大小成正比,从而得到固定数量的箱。这与之前深度网络中的滑动窗口池化不同,滑动窗口的数量取决于输入的大小。通过用SPP取代最后一个池化层,他们提出了一个新的SPP-net,它能够处理不同大小的图像。
4.2.6 多尺度无秩序池化
受[51]的启发,Gong等人使用多尺度有序池化(MOP)在不降低其判别能力的情况下提高cnn的不变性。他们提取了整个图像和多个尺度的局部斑块的深度激活特征。整个图像的激活与之前的cnn相同,目的是捕获全局空间布局信息。通过编码[53]的VLAD对局部补丁的激活进行聚合,旨在捕获更多的局部、细粒度的图像细节,并增强不变性。将全局激活和局部补丁激活的VLAD特征拼接起来,得到新的图像表示形式。