CNN结构

神经网络

卷积神经网络依旧是层级网络,只是层的功能和形式做了变化,可以说是传统神经网络的一个改进。多了许多传统神经网络没有的层次。

卷积神经网络的层级结构

  • 数据输入层/Input Layer
  • 卷积计算层/Conv Layer
  • 激励层/ReLU Layer
  • 池化层/Pooling Layer
  • 全连接层/FC Layer

1.数据输入层

该层要做的处理主要是对原始图像数据进行预处理,其中包括:

  • 去均值:把输入数据各个维度都中心化为0
  • 归一化:幅度归一化到同样的范围
  • PCA/白化:用PCA降维;白化是对数据哥哥特征轴上的幅度归一化

去均值归一化的效果图:

去相关与白化效果图:

2.卷积计算层

在卷积层,有两个关键操作:

  • 局部关联。每个神经元看做一个滤波器(filter)
  • 窗口(receptive field)滑动,filter对局部数据进行计算

卷积层遇到的几个名词:

  • 深度/depth
  • 步长/stride(窗口一次滑动的长度)
  • 填充值/zero-padding

填充值是什么呢?比如一个5*5的图片(一个格子一个像素),我们滑动窗口取2*2,步长取2,那么我们发现还剩下1个像素无法滑完,那怎么办?

在原先的矩阵加了一层填充值,使得变成6*6的矩阵,那么窗口就可以刚好把所有像素遍历完。这就是填充值的作用。

卷积计算过程:

 

参数共享机制

  • 在卷积层中每个神经元连接数据窗的权重是固定的,每个神经元只关注一个特性
  • 需要估算的权重个数减少
  • 一组固定的权重和不同窗口内数据做内积:卷积

3.激励层

把卷积层输出结果做非线性映射。CNN采用的激励函数一般为ReLU(The Rectified Linear Unit/修正线性单元),它的特点是收敛快,求梯度简单,但较脆弱,图像如下:

激励层的实践经验:

  • 不要用sigmoid
  • 首先试ReLU,因为收敛速度快,但要小心
  • 如果不能使用ReLU,试用Leaky ReLU或者Maxout
  • 某些情况下tanh倒是不错的结果,但是很少

4.池化层

池化层夹在连续的卷积层中间,用于压缩数据和参数的量,减少过拟合。简而言之,如果输入是图像的话,那么池化层的作用就是压缩图像。

池化层用的方法有Max pooling和average pooling,而实际用的较多的是Max pooling。

5.全连接层

跟传统的神经网络的连接方式一样。

卷积神经网络的精华:三概念两核心

两个核心:卷积和池化

  • 卷积:主要起到作用的是抽取特征,是网络具有一定转移不变性,也有一定的降维作用。概述:设定一个n行m列的卷积窗口,采用的ReLU作为激励函数,对于输入X进行卷积操作。注意:1,卷积可能是单通道或者多通道卷积;2,卷积操作分为padding和非padding两种方式,padding也分为很多方式,比如zero-padding,mean-padding等。3,对同一个输入可以设置不同大小卷积和,或从不同的位置,或不同的卷积步长多次进行卷积,目的就是为了尽可能多的抽取特征。
  • 池化:主要起到降维的作用。概述:设置一个n行m列的池化窗口,对输入X进行池化操作,采用Relu作为激活函数,也可以采用sigmoid或tans型激活函数,但注意函数的饱和死区特性导致的反向传播时的梯度消失问题,可以配合Batch Normalization使用。池化也有多种方式,比如max pooling,average polling

三概念:局部感受野,权值共享和下采样/降采样

  • 局部感受野:卷积操作时卷积窗口与输入X重合的部分。
  • 权值共享:卷积操作或池化操作时,卷积窗口或池化窗口的权值不发生变化。
  • 下采样/降采样:直观感觉就是池化操作。

卷积神经网络的训练

  • 同一般机器学习算法,先定义Loss function,衡量和实际结果之间的差距。
  • 找到最小化损失函数的W和b,CNN中用的算法是SGD(随机梯度下降)

卷积神经网络的优缺点

优点:

  • 共享卷积核,对高维数据处理无压力
  • 无需手动选取特征,训练好权重,即得特征分类效果好

缺点:

  • 需要调参,需要大样本量,训练最好要GPU
  • 物理含义不明确(也就是说,我们并不知道每个卷积层提取到的是什么特征,而且神经网络本身就是一种难以解释的“黑箱模型”)

卷积神经网络之典型CNN

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

卷积神经网络之fine-tuning

fine-tuning就是使用已用于其他目标,预训练好模型的权重或者部分权重,作为初始值开始训练,那么我们为什么不随机选取几个数作为权重初始值?原因很简单,第一,自己从头训练卷积神经网络容易出现问题;第二,fine-tuning能很快收敛到一个较理想的状态,省时。

fine-tuning具体做法:

  • 复用相同层的权重,新定义层取随机权重初始值
  • 调大新定义层的学习率,调小复用层学习率

边缘过渡不平滑

  • 解决办法:采样窗口彼此重叠

总结

卷积网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出对之间的映射能力。

CNN一个非常重要的特点就是头重脚轻(越往输入权值越小,越往输出权值越多),呈现出一个倒三角的形态,这就很好的避免了BP神经网络中反向传播时候梯度损失得太快。

卷积神经网络CNN主要用来识别位移,缩放及其他形式扭曲不变性的二维图形,由于CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显式的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。

原文地址:https://www.cnblogs.com/fangpengchengbupter/p/7677155.html