卷积神经网络(CNN)综述

本文为2017年十二月份所做的关于卷积神经网络CNN汇报的PTT讲稿,相关资料在文末附录。

第一页

目录    1、CNN的历史发展    2、基本原理与结构    3、应用实例    4、结论与展望

第二页

1、CNN的历史发展


        卷积神经网络(CNN)是一种常见的深度学习架构,受生物自然视觉认知机制启发而来。1959年,Hubel & Wiesel [1] 发现,动物视觉皮层细胞负责检测光学信号。受此启发,1980年 Kunihiko Fukushima 提出了CNN的前身——neocognitron 。 

      20世纪 90 年代,LeCun et al. [3] 等人发表论文,确立了CNN的现代结构,后来又对其进行完善。他们设计了一种多层的人工神经网络,取名叫做LeNet-5,可以对手写数字做分类。和其他神经网络一样, LeNet-5 也能使用 backpropagation 算法训练。   

      CNN能够得出原始图像的有效表征,这使得CNN能够直接从原始像素中,经过极少的预处理,识别视觉上面的规律。然而,由于当时缺乏大规模训练数据,计算机的计算能力也跟不上,LeNet-5 对于复杂问题的处理结果并不理想。   2006年起,人们设计了很多方法,想要克服难以训练深度CNN的困难。其中,最著名的是 Krizhevsky et al.提出了一个经典的CNN 结构,并在图像识别任务上取得了重大突破。其方法的整体框架叫做 AlexNet,与 LeNet-5 类似,但要更加深一些。   

       AlexNet 取得成功后,研究人员又提出了其他的完善方法,其中最著名的要数 ZFNet [7], VGGNet [8], GoogleNet [9] 和 ResNet [10] 这四种。从结构看,CNN 发展的一个方向就是层数变得更多,ILSVRC 2015 冠军 ResNet 是 AlexNet 的20 多倍,是 VGGNet 的8 倍多。通过增加深度,网络便能够利用增加的非线性得出目标函数的近似结构,同时得出更好的特性表征。但是,这样做同时也增加了网络的整体复杂程度,使网络变得难以优化,很容易过拟合。 

  


第二页

2、CNN基本原理与结构

v 1. 神经网络

首先介绍神经网络,简要介绍下。神经网络的每个单元如下:

其对应的公式如:

其中,该单元也可以被称作是Logistic回归模型。当将多个单元组合起来并具有分层结构时,就形成了神经网络模型。下图展示了一个具有一个隐含层的神经网络。

其对应的公式如下:

比较类似的,可以拓展到有2,3,4,5个隐含层。

神经网络的训练方法也同Logistic类似,不过由于其多层性,还需要利用链式求导法则对隐含层的节点进行求导,即梯度下降+链式求导法则,专业名称为反向传播(BP)。关于训练算法,本文暂不涉及。

v 2 卷积神经网络

    在图像处理中,往往把图像表示为像素的向量,比如一个1000×1000的图像,可以表示为一个1000000的向量。在上一节中提到的神经网络中,如果隐含层数目与输入层一样,即也是1000000时,那么输入层到隐含层的参数数据为1000000×1000000=10^12,这样就太多了,基本没法训练。所以图像处理要想练成神经网络大法,必先减少参数加快速度。

     卷积神经网络有两种神器可以降低参数数目,第一种神器叫做局部感知野。一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。

但其实这样的话参数仍然过多,那么就启动第二级神器,即 权值共享(卷积核的概念) 。怎么理解权值共享呢?我们可以把利用卷积核(也就是卷积操作)看成是提取特征的方式,该方式与位置无关。这其中隐含的原理则是:图像的一部分的统计特性与其他部分是一样的。这也意味着我们在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。




其实从这些图片里面我们就可以看到,卷积可以用来提取图片中的特征值。不同的卷积核凸显出来的图片效果不同,就可以得到自己感兴趣的一些特征。那么为什它能提取我们感兴趣的特征?下页给出解释


假设上面的卷积核(滤波器)按照卷积顺序沿着下图移动:


当移动到对应位置时,按照矩阵操作,将这个地方对应的像素址与卷积核相乘,那么我们就可以得到一个较大的值(6600) 



更直观一些,当从一个大尺寸图像中随机选取一小块,比如说8×8 作为样本,并且从这个小块样本中学习到了一些特征,这时我们可以把从这个8×8 样本中学习到的特征作为探测器(卷积核/滤波器),应用到这个图像的任意地方中去。特别是,我们可以用从 8×8 样本中所学习到的特征(卷积核)跟原本的大尺寸图像作卷积,从而对这个大尺寸图像上的任一位置获得一个不同特征的激活值。

如下图所示,展示了一个3×3的卷积核在5×5的图像上做卷积的过程。每个卷积都是一种特征提取方式,就像一个筛子,将图像中符合条件(激活值越大越符合条件)的部分筛选出来。


上图特征提取需要用到卷积核,不同的卷积核就可以提取上面提到的纹理、阴暗等特征。然后通过一系列多层结构来完成,在前面的网络层,它回答关于输入图像非常简单明确的问题,在后面的网络层,它建立了一个更加复杂和抽象的层级结构。最后用全连接层就能够实现高阶的推理能力。

目前我描述的网络结构只能检测一种局部特征的类型。为了完成图像识别我们需要超过一个的特征映射。所以一个完整的卷积层由几个不同的特征映射(多卷积核)组成


    为了让上面的图示简单些,我仅仅展示了 3 个特征映射。每个特征映射定义为一个 5 ×5 共享权重和单个共享偏置的集合(卷积核)。每个卷积核都会将图像生成为另一幅图像。比如3个卷积核就可以将生成3幅图像,这3幅图像可以看做是一张图像的不同的通道。其结果是网络能够检测 3 种不同的特征,每个特征都在整个图像中可检测。

下图展示了在四个通道上的卷积操作,有两个卷积核,生成两个通道。其中需要注意的是,四个通道上每个通道对应一个卷积核,先将w2忽略,只看w1,那么在w1的某位置(i,j)处的值,是由四个通道上(i,j)处的卷积结果相加然后再取激活函数值得到的。


上图由4个通道卷积得到2个通道的过程中,参数的数目为4×2×2×2个,其中4表示4个通道,第一个2表示生成2个通道,最后的2×2表示卷积核大小。

在通过卷积获得了特征(features) 之后,下一步我们希望利用这些特征去做分类。理论上讲,人们可以用所有提取得到的特征去训练分类器,例如softmax分类器,但这样做面临计算量的挑战。例如:对于一个 96X96 像素的图像,假设我们已经学习得到了400个定义在8X8输入上的特征,每一个特征和图像卷积都会得到一个 (96 − 8 + 1) × (96 − 8 + 1) =7921 维的卷积特征,由于有 400 个特征,所以每个样例 (example) 都会得到一个 7921× 400 = 3,168,400 维的卷积特征向量。学习一个拥有超过 3 百万特征输入的分类器十分不便,并且容易出现过拟合 (over-fitting)

    为了解决这个问题,首先回忆一下,我们之所以决定使用卷积后的特征是因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值(或最大值)。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化 (pooling),有时也称为平均池化或者最大池化(取决于计算池化的方法)

第三页

3、CNN应用实例

在实际应用中,往往使用多层卷积,然后再使用全连接层进行训练,多层卷积的目的是一层卷积学到的特征往往是局部的,层数越高,学到的特征就越全局化。


模型的基本参数为:

输入:224×224大小的图片,3通道
第一层卷积5×5大小的卷积核96个,每个GPU48个。
第一层max-pooling2×2的核。
第二层卷积3×3卷积核256个,每个GPU128个。
第二层max-pooling2×2的核。
第三层卷积:与上一层是全连接,3*3的卷积核384个。分到两个GPU上个192个。
第四层卷积3×3的卷积核384个,两个GPU192个。该层与上一层连接没有经过pooling层。
第五层卷积3×3的卷积核256个,两个GPU上个128个。
第五层max-pooling2×2的核。
第一层全连接4096维,将第五层max-pooling的输出连接成为一个一维向量,作为该层的输入。
第二层全连接4096
Softmax:输出为1000,输出的每一维都是图片属于该类别的概率。

    ImageNet LSVRC是一个图片分类的比赛,其训练集包括127W+张图片,验证集有5W张图片,测试集有15W张图片。上页图即为AlexCNN结构图。需要注意的是,该模型采用了2-GPU并行结构,即第1245卷积层都是将模型参数分为2部分进行训练的。在这里,更进一步,并行结构分为数据并行与模型并行。数据并行是指在不同的GPU上,模型结构相同,但将训练数据进行切分,分别训练得到不同的模型,然后再将模型进行融合。而模型并行则是,将若干层的模型参数进行切分,不同的GPU上使用相同的数据进行训练,得到的结果直接连接作为下一层的输入。

第四页 

4、结论与展望

CNN的基本结构从功能上讲包括两层,其一为特征提取层,每个神经元的输入与前一层的局部接受域(也称局部感受野)相连,并提取该局部的特征。一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来;其二是特征映射层,网络的每个计算层(隐藏层)由多个特征映射组成,每个特征映射是一个平面(二维图),平面上所有神经元的权值(卷积核)相等。特征映射结构采用影响函数核小的sigmoid函数(还有tanhreluLeakyrelu等改进版)作为卷积网络的激活函数,使得特征映射具有位移不变性。此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数。卷积神经网络中的每一个卷积层都紧跟着一个用来求局部平均或最大的二次提取的计算层(池化),这种特有的两次特征提取结构减小了特征分辨率(极大的减少了参数)。

     CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。由于CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显式的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习(GPU具有并行计算能力),这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。




20180312

附:

1、深度卷积神经网络大事件一览(http://blog.csdn.net/u013088062/article/details/51118744

2、配套PPT(http://download.csdn.net/download/sir_chai/10168463

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页