卷积神经网络(CNN)

活动地址:CSDN21天学习挑战赛

目录

    • 1、什么是CNN
    • 2、CNN的层级结构
        • 2.1 数据输入层(Input layer)
        • 2.2 卷积层(Convolutional laye)
        • 2.3线性整流层(Rectified Linear Units layer, ReLU layer )
        • 2.4 池化层(Pooling Layer)
        • 2.5 全连接层 / Fully-Connected layer
    • 3、 卷积神经网络之优缺点
    • 4、 卷积神经网络之典型CNN

1、什么是CNN

卷积神经网络(Convolutional Neural Network, CNN)是一种包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。基于它们的共享权重架构和平移不变性特征,它们也被称为移位不变或空间不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)。与其他图像分类算法相比,CNN使用相对较少的预处理。

CNN的应用

  • 图片分类、检索
  • 目标定位检测
  • 目标分割
  • 人脸识别
  • 骨骼识别

神经网络结构
卷积神经网络(CNN)_第1张图片
其实卷积神经网络依旧是层级网络,只是层的功能和形式做了变化,可以说是传统神经网络的一个改进。比如下图中就多了许多传统神经网络没有的层次,图为一个卷积层实例。
卷积神经网络(CNN)_第2张图片
简化一下为:
卷积神经网络(CNN)_第3张图片

2、CNN的层级结构

  • 数据输入层/ Input layer
  • 卷积计算层/ Convolutional laye
  • 线性整流层 / Rectified Linear Units layer, ReLU layer
  • 池化层 /Pooling layer
  • 全连接层 / Fully-Connected layer
2.1 数据输入层(Input layer)

数据输入层主要是对原始图像数据进行预处理,包括:

  • 去均值:把输入数据各个维度都中心化为0,如下图所示,其目的就是把样本的中心拉回到坐标系原点上。
  • 归一化:幅度归一化到同样的范围,如下所示,即减少各维度数据取值范围的差异而带来的干扰,比如,我们有两个维度的特征A和B,A范围是0到10,而B范围是0到10000,如果直接使用这两个特征是有问题的,好的做法就是归一化,即A和B的数据都变为0到1的范围。
  • PCA/白化:用PCA降维;白化是对数据各个特征轴上的幅度归一化

去均值与归一化效果图:
卷积神经网络(CNN)_第4张图片
去相关与白化效果图:
卷积神经网络(CNN)_第5张图片

2.2 卷积层(Convolutional laye)

卷积层(Convolutional layer),卷积神经网路中每层卷积层由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法优化得到的。卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。

局部感知(Local Connectivity)

普通神经网络把输入层和隐含层进行“全连接(Full Connected)“的设计。从计算的角度来讲,相对较小的图像从整幅图像中计算特征是可行的。但是,如果是更大的图像(如 96x96 的图像),要通过这种全联通网络的这种方法来学习整幅图像上的特征,从计算角度而言,将变得非常耗时。你需要设计 10 的 4 次方(=10000)个输入单元,假设你要学习 100 个特征,那么就有 10 的 6 次方个参数需要去学习。与 28x28 的小块图像相比较, 96x96 的图像使用前向输送或者后向传导的计算方式,计算过程也会慢 10 的 2 次方(=100)倍。

卷积层解决这类问题的一种简单方法是对隐含单元和输入单元间的连接加以限制:每个隐含单元仅仅只能连接输入单元的一部分。例如,每个隐含单元仅仅连接输入图像的一小片相邻区域。(对于不同于图像输入的输入形式,也会有一些特别的连接到单隐含层的输入信号“连接区域”选择方式。如音频作为一种信号输入方式,一个隐含单元所需要连接的输入单元的子集,可能仅仅是一段音频输入所对应的某个时间段上的信号。)

每个隐含单元连接的输入区域大小叫r神经元的感受野(receptive field)

由于卷积层的神经元也是三维的,所以也具有深度。卷积层的参数包含一系列过滤器(filter),每个过滤器训练一个深度,有几个过滤器输出单元就具有多少深度。

具体如下图所示,样例输入单元大小是32×32×3, 输出单元的深度是5, 对于输出单元不同深度的同一位置,与输入图片连接的区域是相同的,但是参数(过滤器)不同。
卷积神经网络(CNN)_第6张图片
空间排列(Spatial arrangement)

一个输出单元的大小有以下三个量控制:depth, stride 和 zero-padding

深度(depth) : 顾名思义,它控制输出单元的深度,也就是filter的个数,连接同一块区域的神经元个数。又名:depth column
步幅(stride): 它控制在同一深度的相邻两个隐含单元,与他们相连接的输入区域的距离。如果步幅很小(比如 stride = 1)的话,相邻隐含单元的输入区域的重叠部分会很多; 步幅很大则重叠区域变少。
补零(zero-padding) : 我们可以通过在输入单元周围补零来改变输入单元整体大小,从而控制输出单元的空间大小。
输出的维度的计算
输入单元的宽或高(input): W W W
感受野(receptive filed): F F F
深度,输出单元的深度: K K K
补零的数量(padding): P P P
步长(strides): S S S
输出的维度(output): ( ( W + 2 P − F ) S + 1 ) (\frac{(W+2P-F)}{S} +1) (S(W+2PF)+1)

参数共享(Parameter Sharing)

应用参数共享可以大量减少参数数量,参数共享基于一个假设:如果图像中的一点(x1, y1)包含的特征很重要,那么它应该和图像中的另一点(x2, y2)一样重要。换种说法,我们把同一深度的平面叫做深度切片(depth slice)((e.g. a volume of size [55x55x96] has 96 depth slices, each of size [55x55])),那么同一个切片应该共享同一组权重和偏置。我们仍然可以使用梯度下降的方法来学习这些权值,只需要对原始算法做一些小的改动, 这里共享权值的梯度是所有共享参数的梯度的总和。

为什么要权重共享呢?一方面,重复单元能够对特征进行识别,而不考虑它在可视域中的位置。另一方面,权值共享使得我们能更有效的进行特征抽取,因为它极大的减少了需要学习的自由变量的个数。通过控制模型的规模,卷积网络对视觉问题可以具有很好的泛化能力。

卷积的计算
下图为单通道计算方法:
卷积神经网络(CNN)_第7张图片
下图为多通道计算方法
卷积神经网络(CNN)_第8张图片
简单说,卷积是乘法,通道间是加法

2.3线性整流层(Rectified Linear Units layer, ReLU layer )

把卷积层输出结果做非线性映射。
卷积神经网络(CNN)_第9张图片
CNN采用的激励函数一般为ReLU(The Rectified Linear Unit/修正线性单元),它的特点是收敛快,求梯度简单,但较脆弱,图像如下。
卷积神经网络(CNN)_第10张图片
激励层的实践经验:
  ①不要用sigmoid!不要用sigmoid!不要用sigmoid!
  ② 首先试RELU,因为快,但要小心点
  ③ 如果2失效,请用Leaky ReLU或者Maxout
  ④ 某些情况下tanh倒是有不错的结果,但是很少

2.4 池化层(Pooling Layer)

池化(pool)即下采样(downsamples),目的是为了减少特征图。池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。
池化层的作用:
这里再展开叙述池化层的具体作用。

  1. 特征不变性,也就是我们在图像处理中经常提到的特征的尺度不变性,池化操作就是图像的resize,平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最重要的特征,我们一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。
  2. 特征降维,我们知道一幅图像含有的信息是很大的,特征也很多,但是有些信息对于我们做图像任务时没有太多用途或者有重复,我们可以把这类冗余信息去除,把最重要的特征抽取出来,这也是池化操作的一大作用。
  3. 在一定程度上防止过拟合,更方便优化。
    卷积神经网络(CNN)_第11张图片
    池化层进行的运算一般有以下几种:
  • 最大池化(Max Pooling)。取4个点的最大值。这是最常用的池化方法。
  • 均值池化(Mean Pooling)。取4个点的均值。
  • 高斯池化。借鉴高斯模糊的方法。不常用。
  • 可训练池化。训练函数 ff ,接受4个点为输入,出入1个点。不常用。

池化层用的方法有Max pooling 和 Mean pooling,而实际用的较多的是Max pooling
卷积神经网络(CNN)_第12张图片

2.5 全连接层 / Fully-Connected layer

两层之间所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。也就是跟传统的神经网络神经元的连接方式是一样的:
卷积神经网络(CNN)_第13张图片

全连接层和卷积层可以相互转换:

  • 对于任意一个卷积层,要把它变成全连接层只需要把权重变成一个巨大的矩阵,其中大部分都是0 除了一些特定区块(因为局部感知),而且好多区块的权值还相同(由于权重共享)。
  • 相反地,对于任何一个全连接层也可以变为卷积层。比如,一个 K = 4096 K=4096 K4096 的全连接层,输入层大小为 &7∗7∗512&,它可以等效为一个* F=7, P=0, S=1, K=4096* 的卷积层。换言之,我们把 filter size 正好设置为整个输入层大小。

3、 卷积神经网络之优缺点

优点
  • 共享卷积核,对高维数据处理无压力
  • 无需手动选取特征,训练好权重,即得特征分类效果好
缺点
  • 需要调参,需要大样本量,训练最好要GPU
  • 物理含义不明确(也就说,我们并不知道没个卷积层到底提取到的是什么特征,而且神经网络本身就是一种难以解释的“黑箱模型”)

4、 卷积神经网络之典型CNN

• LeNet,这是最早用于数字识别的CNN
• AlexNet, 2012 ILSVRC比赛远超第2名的CNN,比
• LeNet更深,用多层小卷积层叠加替换单大卷积层。
• ZF Net, 2013 ILSVRC比赛冠军
• GoogLeNet, 2014 ILSVRC比赛冠军
• VGGNet, 2014 ILSVRC比赛中的模型,图像识别略差于GoogLeNet,但是在很多图像转化学习问题(比如object detection)上效果奇好

你可能感兴趣的:(Tensorflow,cnn,深度学习,神经网络)