卷积神经网络

卷积神经网络的网络结构

卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。

图:卷积神经网络的概念示范:输入图像通过和三个可训练的滤波器和可加偏置进行卷积,滤波过程如上图,卷积后在C1层产生三个特征映射图,然后特征映射图中每组的四个像素再进行求和,加权值,加偏置,通过一个Sigmoid函数得到三个S2层的特征映射图。这些映射图再进行滤波得到C3层。这个层级结构再和S2一样产生S4。最终,这些像素被光栅化,并连接成一个向量输入到传统的神经网络,得到输出。

一般地,C层为特征提取层,每个神经元的输入与前一层的局部感受野相连,并提取该局部的特征,一旦该局部特征被提取之后,它与其他特征之间的位置关系也随之确定下来;S层是特征映射层络的每个计算层由多个特征映射组成,每个特征映射为一个平面,平面上所有特征的权值相等。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。

此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数,降低了网络参数选择的复杂度。卷积神经网络中的每一个特征提取层(C-层)都紧跟着一个用来求局部平均与二次提取的计算层(S-层),这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力。

3)关于参数减少和权值共享

图像的空间联系是局部的,就像人是通过一个局部的感受野去感受外界图像一样,每一个神经元都不需要对全局图像做感受,每个神经元只感受局部的图像区域,然后在更高层,将这些感受不同局部的神经元综合起来就可以得到全局的信息了。这样,我们就可以减少连接的数目,也就是减少神经网络需要训练的权值参数的个数了。

每个神经元用同一个卷积核去卷积图像。这样就只需要100个参数了,但是这样就只提取了1种特征,一种滤波器,也就是一种卷积核就是提出图像的一种特征,例如某个方向的边缘。那么需要提取不同的特征,多用几个滤波器就可以了。

这样每种滤波器去卷积图像就得到对图像的不同特征的放映,我们称之为Feature Map。所以100种卷积核就有100和Feature Map。这100个Feature Map就组成了一层神经元。

隐层的神经元个数和原图像,也就是输入的大小,滤波器的大小和滤波器在图像中的滑动步长都有关!

需要注意的一点是,上面的讨论都没有考虑每个神经元的偏置部分。所以权值个数需要加1.这个也是同一种滤波器共享的。

一个典型的例子:

LeNet-5共有7层,不包含输入,每层都包含可训练参数(连接权重)。输入图像为32*32大小

我们先要明确一点:每个层有多个Feature Map,每个Feature Map通过一种卷积滤波器提取输入的一种特征,然后每个Feature Map有多个神经元。

C1层是一个卷积层,C1层有(5×5+1)×6=156个可训练参数,有156*(28*28)=122304个连接。

S2层是一个下采样层,有6个14*14的特征图。S2层每个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid函数计算。可训练系数和偏置控制着sigmoid函数的非线性程度。每个单元的2*2个感受野并不重叠,因此S2中每个特征图的大小是C1中特征图大小的1/4。S2层有12个可训练参数和5880个连接???(怎么算出来的呢?)

图:卷积和子采样过程:卷积过程包括:用一个可训练的滤波器fx去卷积一个输入的图像(第一阶段是输入的图像,后面的阶段就是卷积特征map了),然后加一个偏置bx,得到卷积层Cx。子采样过程包括:每邻域四个像素求和变为一个像素,然后通过标量Wx+1加权,再增加偏置bx+1,然后通过一个sigmoid激活函数,产生一个大概缩小四倍的特征映射图Sx+1

所以从一个平面到下一个平面的映射可以看作是作卷积运算,S-层可看作是模糊滤波器,起到二次特征提取的作用。隐层与隐层之间空间分辨率递减,而每层所含的平面数递增,这样可用于检测更多的特征信息。

F6层有84个单元,有84×120+81个可训练连接。

最后,输出层由欧式径向基单元组成,每类一个单元,每个有84个输入。换句话说,每个输出RBF单元计算输入向量和参数向量之间的欧氏距离。输入离参数向量越远,RBF输出的越大。一个RBF输出可以被理解为衡量输入模式和与RBF相关联类的一个模型的匹配程度的惩罚项。用概率术语来说,RBF输出可以被理解为使得F6层配置空间的高斯分布的负log-likelihood。给定一个输入模式,损失函数应该能使得F6的配置与RBF参数向量(即模式的期望分类)足够接近。这些单元的参数是人工选取并保持固定的(至少初始时候如此)。这些参数向量的成分被设为-1或1.

RBF参数向量起着F6层目标向量的角色。

5)训练过程

神经网络用于模式识别的主流是有知道学习网络,无指导学习网络更多的是用于聚类分析。对于有指导的模式识别,由于任一样本的类别是已知的,样本在空间的分布不再是依据其自然分布倾向来划分,而是要根据同类样本在空间的分布及不同类型样本之间的分离程度找一种适当的空间划分方法,或者找到一个分类边界,使得不同类样本分别位于不同的区域内。这就需要一个长时间并且复杂的学习过程,不断调整用以划分样本空间的分类位置的边界的位置,是尽可能少的样本被划分到非同类区域中。

卷积网络的本质上是一种输入到输出的映射,它能够学习大量的输入和输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出对之间的映射能力。卷积网络执行的是有导师训练,所以其样本集是由(输入向量,理想输出向量)的向量对构成的。所有这些向量对,都应该是来源于网络即将模拟的系统的实际“运行”结果。它们可以是从实际运行系统中采集来的。在开始训练前,所有的权都应该用一些不同的小随机数进行初始化。“小随机数”用来保证网络不会因权值过大而进入饱和状态,而导致训练失败;“不同”用来保证网络可以正常学习。实际上,如果用相同的数去初始化权矩阵,则网络无能力学习

训练算法与传统的反向传播算法(BP)差不多。主要包括4步,这4步被分为两个阶段:

第一阶段,向前传播阶段:

a) 从样本集中取一个样本(X,Yp),将X输入网络;

b) 计算相应的实际输出Op

     在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常运行时执行的过程。在此过程中,网络执行的是计算(实际上就是输入域每层的权值矩阵相点乘,得到最后的输出结果):

   Op=Fn(…(F2(F1(XpW(1))W(2))…)W(n)

第二阶段:向后传播阶段

a) 算实际输出Op与相应的理想输出Yp的差;

b) 按极小化误差的方法反向传播调整权矩阵。

 

6)卷积神经网络的优点

卷积神经网络CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。由于CNN的特征检测曾通过训练数据进行学习,所以在使用CNN时,避免了显示的特征抽取,而隐式地从训练数据中进行学习。

原文地址:https://www.cnblogs.com/rong86/p/3553950.html