一、图片识别--前馈神经网络
前馈神经网络 要识别上面各图中不同位置的“横折”,必须要用大量物体位于图片的不同位置的数据进行训练,同时增加网络的隐藏层个数从而扩大网络学习这些变体的能力。
然而这样做效率并不高,不管“横折”在哪个位置,都是横折,明明是相同的东西,在不同位置为什么就要重新学习。有没有方法可以将中间所学到的规律也运用到其它位置,换句话说,就是让不同的位置用相同的权重。
二、卷积神经网络
卷积神经网络(Convolution Neural Network),简称CNN。卷积神经网络就是让权重在不同位置共享的神经网络。
常见的卷积神经网络框架有LeNet-5、AlexNet、ZFNet、VGGNet、GoogleNet、ResNet,我们常用的是VGGNet,GoogleNet,ResNet。
CNN主要用于图像分类和物品识别等应用场合。
1、卷积神经网络的工作原理
在卷积神经网络中,我们选择一个局部区域去扫描整张图片,局部区域所圈起来的所有节点会被连接到下一层的一个节点上,如下图所示:
卷积层是卷积核在上一级输入层上通逐一滑动窗口计算而得,卷积核中的每一个参数都相当于传统神经网络中的权值参数,与对应的局部像素相连接,将卷积核的各个参数与对应的局部像素相乘之和,得到卷积层上的结果。卷积核的作用就是进行特征提取和特征映射。通过对卷积层的处理,再用模型对其训练,即可进行数据分类。
所以,用不同的卷积核可以提取到不同的图片特征。
左边两个卷积核可以分别提取水平特征和垂直特征,下图为用不同的卷积核得到的不同的卷积层。
2、CNN的核心思想
CNN模型限制了参数个数并挖掘了局部特征结构。主要用于识别位移、缩放及其它形式的扭曲不变性的二维图形。局部感受视野,权值共享以及时间或空间的采样三种思想的结合,获得某种程度的位移、尺度、形变不变性。通过“卷积核”作为中介。同一个卷积核在所有图像内是共享的,图像通过卷积操作后,仍然保留原先的位置关系。
3、CNN的实质
CNN本质上是一种输入到输出的映射,它能够学习大量的输入与输出的映射关系,而不需要任何输入与输出的精确数学表达示,只要用已知的模式对卷积网络加以训练,网络就具有输入与输出之间的映射能力,在开始训练前,所有的权重都应该用一些不同的小随机数进行初始化。“小随机数”用来保证网络不会因权值过大而进入饱和状态从而导致训练失败,用来保证可以正常的学习。
4、CNN的结构
卷积神经网络结构一般包括以下几层:
1)、输入层
用于数据的输入。
2)、卷积层
卷积层是卷积核在上一层输入层上通过逐一滑动窗口计算而得,卷积核中的每一个参数都相当于传统神经网络中的权值参数,将卷积核中的各个参数与对应的局部象素相乘之和,得到的卷积层上的结果。一般的,使用卷积核进行特征提取与特征映射。
特征提取:每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征。一旦该局部特征被提取后,它与其它特征之间的位置关系也相应被确定下来了;
特征映射:网络的每个计算层由多个特征映射组成,每个特征映射是一个平面,平面上所有神经元的权值相等。由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数。
3)、激励层
由于卷积也是一种线性运算,因此需要增加非线性映射。使用的激励函数一般用Relu函数。
4)、池化层
进行下采样,对特征图进行稀疏处理,减少数据运算量。通过卷积层获得了图像的特征之后,理论上可以直接使用这些特征进行训练分类,但这样可能会面对巨大的数据量挑战,从而会产生过拟合现象。为了进一步降低网络训练参数及模型的过拟合程度,需要对卷积层进行池化/采样处理。池化采样方式有两种:
a)、max_pool:最大池化,取池化窗口中最大值作为采样值
b)、mean_pool:平均池化,取池化窗口中所有数的平均值作为采样值
5)、全链接层
CNN尾部进行重新拟合,减少特征信息损失。
6)、输出层
用于最后结果的输出
5、CNN优点
1)、输入图像与网络的拓扑结构能够很好的吻合
2)、尽管使用较少的参数,仍然有出色的性能
3)、避免了显式的特征抽取,而隐式地从训练数据中抽取
4)、特征提取与模式分类同时进行,并同时在训练中产生,网络可以并行学习
5)、权值共享减少网络的训练参数,降低了网络的复杂性,适用性更强
6)、无需手动选取特征,训练好权重,即得特征,分类效果好
7)、直接输入网络,避免了提取和分类过程中数据重建的复杂度
6、CNN缺点
1)、需要调整参数
2)、需要大样本量,训练最好用GPU
3)、物理 含义不明确,神经网络本身就是一种难以理解的“黑箱”模型