资讯详情

卷积神经网络网络详解(上)

1.

卷积神经网络是一种具有卷积结构的深度神经网络。卷积结构可以减少深度网络占用的内存。三个关键操作是,其二是,其三是,有效减少网络参数数,缓解模型过拟合问题。

1.1

卷积神经网络整体架构:**卷积神经网络是对神经网络进行多层监督学习的一种核心模块。该网络模型通过梯度下降法逐层反向调整网络中的权重参数,并通过频繁的迭代训练提高网络的精度。卷积神经网络的低隐层由卷积层和最大池采样层交替组成,高层是对应传统多层传感器的全连接层的隐含层和逻辑回归分类器。第一个全连接层的输入是从卷积层和子采样层中提取的特征图像。最后一层输出层是逻辑回归的分类器,Softmax回归甚至是支持向量机对输入图像进行分类。每层都有多个特征图,每个特征图通过一个卷积滤波器提取输入,每个特征图都有多个神经元。

输入图像统计和滤波器积累后,提取局部特征。一旦提取了局部特征,它与其他特征的位置关系就确定了。每个神经元的输入与前一层的局部感觉相连。每个特征提取层都紧跟一个计算层,用于寻求局部平均和二次提取,也称为特征映射层。网络的每个计算层由多个特征映射平面组成,平面上所有神经元的权重相等。输入层到隐藏层的映射通常称为特征映射,即通过卷积层获得特征提取层pooling然后得到特征映射层。

1.2

卷积神经网络的核心思想是局部感觉野、权值共享和pooling为了简化网络参数,使网络具有一定程度的位移、尺度、缩放和非线性变形稳定性。

  • 由于图像的空间连接是局部的,每个神经元不需要感受到所有的图像,只需要感受到局部特征,然后将这些感觉得到的不同局部神经元整合到更高的水平,以获得整体信息,从而减少连接的数量。
  • 不同神经元之间的参数共享可以减少需要求解的参数,使用多种滤波器去卷积图像就会得到多种特征映射。权重共享实际上是用相同的卷积核对图像进行卷积操作,这意味着第一个隐藏层的所有神经元都可以检测到图像不同位置的完全相同的特征。它的主要能力可以检测到不同位置的相同类型特征,即卷积网络可以很好地适应图像的小范围平移,即具有良好的平移不变性(例如,在移动输入图像的猫的位置后,也可以检测到猫的图像)

:我们可以通过卷积运算提取图像的特征,可以增强原始信号的某些特征,降低噪音。使用训练有素的滤波器fx输入图像(第一阶段是输入图像,后一阶段是),然后加一个偏置,然后加一个偏置,,得到

:因为图像采样可以减少数据处理,保留有用的信息,采样可以混淆特征的具体位置,因为在找到特征后,其位置并不重要,我们只需要这个特征和其他特征的相对位置,可以处理类似物体的变化。每邻域的四个像素求和成为一个像素,然后通过标量Wx 加权,增加偏置bx 然后通过一个sigmoid激活函数产生一个特征映射图,大约缩小四倍Sx 1。

:采用softmax全连接,激活值是从卷积神经网络中提取的图片特征。

  • 网络结构能更好地适应图像结构
  • 同时,特征提取和分类有助于特征分类
  • 权值共享可以减少网络的训练参数,使得神经网络结构变得简单,适应性更强

2.利用CNN实现图像识别的任务

输入层读取规则(统一尺寸)图像后,每层每个神经元输入一组小的局部相邻单元,即局部感觉野生和权力共享,神经元提取一些基本的视觉特征,如边缘、角度等,这些特征将被更高的神经元使用。

卷积神经网络通过卷积操作获得特征图,来自不同特征图的每个位置和单元获得不同类型的特征。一个卷积层通常包含多个具有不同权值向量的特征图,以保留图像更丰富的特征。

一方面可以降低图像的分辨率和参数,另一方面可以获得平移和变形的鲁棒性。卷积层和池化层的交替分布逐渐增加了特征图的数量,并逐渐降低了分辨率。这是一个双金字塔结构。

3.CNN的求解

CNN本质上,它是一种输入输出的映射。它可以学习大量输入输出之间的映射关系,而不需要任何输入输出之间的精确数学表达。只要用已知的模式训练卷积网络,网络就具有输入输出之间的映射能力。卷积网络实行监督训练,因此样本集由形如下:**(输入向量,理想输出向量)**构成的向量。所有这些向量对都应该来自网络即将模拟的实际运行结构,可以从实际运行系统中收集。

3.1

在开始训练之前,所有权应该初始化为一些不同的随机数量。小随机数量用于确保网络不会因权重过大而饱和,导致训练失败;不同用于确保网络能够正常学习。事实上,如果使用相同的数量来初始化权矩阵,网络就没有学习能力。

3.2

  • 从样本集中取样本,输入网络

  • 计算相应的实际输出;在这个阶段,信息从输入层逐步转换到输出层,这也是培训后网络正常执行的过程

  • 计算实际输出与相应理想输出的差异

  • 权值矩阵按照极小化误差的方法进行调整

注意事项

  • 数据集的大小和块

数据驱动模型通常取决于数据集的大小,CNN与其它经验模型一样,数据集可以适用于任何大小,但训练数据集应该足够大, 设计可以覆盖问题域中所有已知可能出现的问题CNN数据集应包括训练集、测试集、验证集三个子集

它包含问题域中的所有数据,并用于在训练阶段调整网络的权重

在训练过程中,用于测试网络对训练集中未出现的数据的分类性能。根据网络在测试集中的性能,可能需要调整网络的结构,或增加训练周期的数量。

验证集中的数据统一应包括未出现在测试集和训练集中的数据,以便在网络确定后更好地测试和测量网络的性能

一般数据集中65%用于训练,25%用于测试,10%用于验证

  • 数据预处理

为了加快训练算法的收敛速度,一般采用一些数据预处理技术,包括去除噪声、输入数据降维、删除无关数据等。数据平衡在分类中非常重要。一般认为,培训集中的数据应与标签类别相似,即每个类别标签对应的数据集在培训集中基本相等,以避免网络过于倾向于表达某些分类的特征。为了平衡数据集,应删除过剩分类中的一些数据,并补充相对罕见的分类数据。另一种方法是复制这些例子稀有分类中的一些数据,并在这些数据中添加随机噪声。

  • 数据规则化

将数据规则化到统一范围(如[0,1])具有非常重要的优点:防止数据中的大值数据削弱甚至无效,常用的方法是将输入和输出数据调整到与激活函数对应的范围。

    网络权值初始化

CNN的初始化主要是初始化卷积层和输出层的卷积核(权值)和偏置。网络权值初始化就是将网络中的所有连接权重赋予一个初始值,如果初始权重向量处在误差曲面的一个相对平缓的区域的时候,网络训练的收敛速度可能会很缓慢,一般情况下网络的连接权重和阈值被初始化在一个具有0均值的相对小的区间内均匀分布。

  • BP算法的学习速率

如果学习速率选取的较大,则会在训练过程中较大幅度的调整权值w,从而加快网络的训练速度,但是这和造成网络在误差曲面上搜索过程中频繁抖动,且有可能使得训练过程不能收敛。如果学习速率选取的较小,能够稳定的使得网络逼近于全局最优点,但也可能陷入一些局部最优,并且参数更新速度较慢。自适应学习率设定有较好的效果。

  • 收敛条件

有几个条件可以作为停止训练的判定条件,训练误差、误差梯度、交叉验证等。一般来说,训练集的误差会随着网络训练的进行而逐步降低。

  • 训练方式

训练样例可以有两种基本的方式提供给网络训练使用,也可以是两者的结合:逐个样例训练(EET)、批量样例训练(BT)。在EET中,先将第一个样例提供给网络,然后开始应用BP算法训练网络,直到训练误差降低到一个可以接受的范围,或者进行了指定步骤的训练次数。然后再将第二个样例提供给网络训练。EET的优点是相对于BT只需要很少的存储空间,并且有更好的随机搜索能力,防止训练过程陷入局部最小区域。EET的缺点是如果网络接收到的第一个样例就是劣质(有可能是噪音数据或者特征不明显)的数据,可能使得网络训练过程朝着全局误差最小化的反方向进行搜索。相对的,BT方法是在所有训练样例都经过网络传播后才更新一次权值,因此每一次学习周期就包含了所有的训练样例数据。BT方法的缺点也很明显,需要大量的存储空间,而且相比EET更容易陷入局部最小区域。而随机训练(ST)则是相对于EET和BT一种折衷的方法,ST和EET一样也是一次只接受一个训练样例,但只进行一次BP算法并更新权值,然后接受下一个样例重复同样的步骤计算并更新权值,并且在接受训练集最后一个样例后,重新回到第一个样例进行计算。ST和EET相比,保留了随机搜索的能力,同时又避免了训练样例中最开始几个样例如果出现劣质数据对训练过程的过度不良影响。

4.LeNet-5结构分析

LeNet-5共包含8层

  • C1层是一个卷积层,由6个特征图Feature Map构成。特征图中每个神经元与输入为5*5的邻域相连。特征图的大小为28*28,这样能防止输入的连接掉到边界之外(32-5+1=28)。C1有156个可训练参数(每个滤波器5*5=25个unit参数和一个bias参数,一共6个滤波器,共(5*5+1)6=156个参数),共156(28*28)=122,304个连接。
  • S2层是一个下采样层,有6个14*14的特征图。特征图中的每个单元与C1中相对应特征图的2*2邻域相连接。S2层每个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。每个单元的22感受野并不重叠,因此S2中每个特征图的大小是C1中特征图大小的1/4(行和列各1/2)。S2层有12(6(1+1)=12)个可训练参数和5880(14*14(2*2+1)*6=5880)个连接。
  • C3层也是一个卷积层,它同样通过5x5的卷积核去卷积层S2,然后得到的特征map就只有10x10个神经元,但是它有16种不同的卷积核,所以就存在16个特征map了。 C3中每个特征图由S2中所有6个或者几个特征map组合而成。为什么不把S2中的每个特征图连接到每个C3的特征图呢?原因有2点。第一,不完全的连接机制将连接的数量保持在合理的范围内。第二,也是最重要的,其破坏了网络的对称性。由于不同的特征图有不同的输入,所以迫使他们抽取不同的特征(希望是互补的)。

例如,存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。这样C3层有1516(6*(325+1)+6(425+1)+3(425+1)+(256+1)=1516)个可训练参数和151600(10*10*1516=151600)个连接。

  • S4层是一个下采样层,由16个55大小的特征图构成。特征图中的每个单元与C3中相应特征图的22邻域相连接,跟C1和S2之间的连接一样。S4层有32个可训练参数(每个特征图1个因子和一个偏置16*(1+1)=32)和2000(16*(2*2+1)5*5=2000)个连接。
  • C5层是一个卷积层,有120个特征图。每个单元与S4层的全部16个单元的55邻域相连。由于S4层特征图的大小也为55(同滤波器一样),故C5特征图的大小为11(5-5+1=1):这构成了S4和C5之间的全连接。之所以仍将C5标示为卷积层而非全相联层,是因为如果LeNet-5的输入变大,而其他的保持不变,那么此时特征图的维数就会比11大。C5层有48120(120*(1655+1)=48120由于与全部16个单元相连,故只加一个偏置)个可训练连接。
  • F6层有84个单元(之所以选这个数字的原因来自于输出层的设计),与C5层全相连。有10164(84*(120*(1*1)+1)=10164)个可训练参数。如同经典神经网络,F6层计算输入向量和权重向量之间的点积,再加上一个偏置。然后将其传递给sigmoid函数产生单元i的一个状态。
  • 最后,输出层由欧式径向基函数(Euclidean Radial Basis Function)单元组成,每类一个单元,每个有84个输入。

输入图像大小为32x32,比MNIST数据库中的字母大,这样做的原因是希望潜在的明显特征,如笔画断点或角点能够出现在最高层特征监测子感受野的中心。

  • 输入图像大小:32x32
  • 卷积核大小:5x5
  • 卷积核个数:6
  • 输出特征图数量:6
  • 输出特征图大小:28x28(32-5+1)
  • 神经元数量:4707(28x28x6)
  • 连接数:122304((28x28x5x5x6)+(28x28x6))
  • 可训练参数:156(5x5x6+6,权值+偏置)

  • 输入图像大小:(28x28x6)
  • 卷积核大小:2x2
  • 卷积核个数:6
  • 输出特征图数量:6
  • 输出特征图大小:14x14(28/2,28/2)
  • 神经元数量:1176(14x14x6)
  • 连接数:5880((2x2x14x14x6)+(14x14x6))
  • 可训练参数:12(1x6+6,权值+偏置)

备注:S2层每个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid函数计算。可训练系数和偏置控制着sigmoid函数的非线性程度。

如果系数比较小,那么运算近似于线性运算,下采样相当于模糊图像。

如果系数比较大,根据偏置的大小下采样可以被看成是有噪声的“或”运算或者有噪声的“与”运算。

每个单元的2*2感受野并不重叠,因此S2中每个特征图的大小是C1中特征图大小的1/4(行和列各1/2)。

  • 输入图像大小:(14x14x6)
  • 卷积核大小:5x5
  • 卷积核个数:16
  • 输出特征图数量:16
  • 输出特征图大小:10x10(14-5+1)
  • 神经元数量:1600(10x10x16)
  • 连接数:151600(1516x10x10)
  • 可训练参数:1516

备注:C3层也是一个卷积层,通过5x5的卷积核去卷积S2层,然后得到的特征图map就有10x10个神经元,但是有16种不同的卷积核,就存在16个不同的特征map。

C3中每个特征图由S2中的所有6个或几个特征图组合而成,为什么不把S2中的所有特征图都连接到C3的特征图呢:

第一,不完全的连接机制将连接的数量保持在合理的范围内 第二,也是最重要的,这样一来就可以破坏网络的对称性,由于不同的特征图有不同的输入,所以迫使他们抽取不同的特征。 5、S4层

  • 输入图像大小:(10x10x16)
  • 卷积核大小:2x2
  • 卷积核个数:16
  • 输出特征图数量:16
  • 输出特征图大小:5x5x16
  • 神经元数量:400(5x5x16)
  • 连接数:2000((2x2x5x5x16)+(5x5x16))
  • 可训练参数:32((1+1)x16)

备注:S4是一个下采样层,由16个5x5大小的特征图构成,特征图的每个单元与C3中相应的特征图的2x2邻域相连,S4层有32个可训练参数(每个特征图1个因子和一个偏置)和2000个连接。

6、C5层

  • 输入图像大小:5x5x16
  • 卷积核大小:5x5
  • 卷积核个数:120
  • 输出特征图数量:120
  • 输出特征图大小:1X1(5-5+1)
  • 神经元数量:120(1x120)
  • 连接数:48120(5x5x16x120x1+120x1)
  • 可训练参数:48120(5x5x16x120+120)

备注:C5层是一个卷积层,有120个特征图,每个单元与S4层的全部16个单元的5x5邻域相连,构成了S4和C5的全连接,之所以仍将C5标识为卷积层而非全连接层是因为如果LeNet-5的输入变大,而其他的保持不变,那么此时特征图的维数就会比1x1大。

7、F6层

  • 输入图像大小:(1x1x120)
  • 卷积核大小:1x1
  • 卷积核个数:84
  • 输出特征图数量:1
  • 输出特征图大小:84
  • 神经元数量:84
  • 连接数:10164(120x84+84)
  • 可训练参数:10164(120x84+84)

备注:F6有84个单元(之所以选择84是源于输出层的设计),与C5层相连,有10164个可训练参数,类似经典的全连接神经网络,F6层计算输入向量和权重向量之间的点积,再加上一个偏置,之后将其传递给sigmoid函数产生一个单元i的状态。

8、output层

  • 输入图像大小:1x84
  • 输出特征图数量:1x10

5.AlexNet

 上图所示是caffe中alexnet的网络结构,上图采用是两台GPU服务器,所有会看到两个流程图。下边把AlexNet的网络结构示意一下:

 

因为使用了两台GPU训练,因而有两股“流”。使用两台GPU训练的原因是计算量太大,只能拆开来。

要点:

  • 数据集:ImageNet数据集,含1500多万个带标记的图像,超过2.2万个类别
  • 激活函数:ReLU(训练速度快,一定程度上减小了梯度消失的问题)
  • 数据增强:平移、镜像、缩放等
  • 过拟合:dropout
  • 如何训练:批处理梯度下降训练模型,注明了动量衰减值和权值衰减值
  • 训练时间:使用两台GTX 580 GPU,训练了5到6天

 

 AlexNet

其实AlexNet的结构很简单,只是LeNet的放大版,输入是一个224x224的图像,经过5个卷积层,3个全连接层(包含一个分类层),达到了最后的标签空间。

AlexNet学习出来的特征是什么样子的?

  • 第一层:都是一些填充的块状物和边界等特征
  • 中间层:学习一些纹理特征
  • 更高层:接近于分类器的层级,可以明显的看到物体的形状特征
  • 最后一层:分类层,完全是物体的不同的姿态,根据不同的物体展现出不同姿态的特征了。

即无论对什么物体,学习过程都是:边缘→ 部分→整体 该方法训练了一个端到端的卷积神经网络实现对图像特征提取和分类,网络结构共7层,包含5层卷积层和2层全连接层。

 AlexNet包含了6亿三千万个连接,6000万个参数和65万个神经元,拥有5个卷积层,其中3个卷积层后面连接了最大池化层,最后还有3个全连接层。

训练技巧:

      训练阶段使用了Dropout技巧随机忽略一部分神经元,缓解了神经网络的过拟合现象,和防止对网络参数优化时陷入局部最优的问题,Dropout虽有单独的论文论述,但是AlexNet将其实用化,通过实践证实了它的效果。在AlexNet中主要是最后几个全连接层使用了Dropout。该网络是利用Dropout在训练过程中将输入层和中间层的一些神经元随机置零,使得训练过程收敛的更慢,但得到的网络模型更加具有鲁棒性。

       通过图像平移、水平翻转、调整图像灰度等方法扩充样本训练集,扩充样本训练集,使得训练得到的网络对局部平移、旋转、光照变化具有一定的不变性,数据经过扩充以后可以达到减轻过拟合并提升泛化能力。进行预测时,则是取图像的四个角加上中间共5个位置,并进行左右翻转,一共获得10张图像,对它们进行预测并对10次结果求均值。

  • 水平翻转:

 

  •  随机裁剪、平移旋转:

  •  颜色变换:

AlexNet全部使用最大池化的方式,避免了平均池化所带来的模糊化的效果,并且步长<池化核的大小,这样一来池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。

Relu函数:f(x)=max(0,x)。采用非饱和线性单元——ReLU代替传统的经常使用的tanh和sigmoid函数,加速了网络训练的速度,降低了计算的复杂度,对各种干扰更加具有鲁棒性,并且在一定程度上避免了梯度消失问题。

ReLU本质上是分段线性模型,前向计算非常简单,无需指数之类操作; ReLU的偏导也很简单,反向传播梯度,无需指数或者除法之类操作; ReLU不容易发生梯度发散问题,Tanh和Logistic激活函数在两端的时候导数容易趋近于零,多级连乘后梯度更加约等于0; ReLU关闭了右边,从而会使得很多的隐层输出为0,即网络变得稀疏,起到了类似L1的正则化作用,可以在一定程度上缓解过拟合。

当然,ReLU也是有缺点的,比如左边全部关了很容易导致某些隐藏节点永无翻身之日,所以后来又出现pReLU、random ReLU等改进,而且ReLU会很容易改变数据的分布,因此ReLU后加Batch Normalization也是常用的改进的方法。

       LRN即Local Response Normalization,局部响应归一化处理,实际就是利用临近的数据做归一化,该策略贡献了1.2%的准确率,该技术是深度学习训练时的一种提高准确度的技术方法,LRN一般是在激活、池化后进行的一种处理方法。LRN是对局部神经元的活动创建竞争机制,使得其中响应较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。

     归一化后有什么好处呢?原因在于神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另外一方面,一旦每批训练数据的分布各不相同(batch 梯度下降),那么网络就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度,这也正是为什么我们需要对数据都要做一个归一化预处理的原因。

对于深度网络的训练是一个复杂的过程,只要网络的前面几层发生微小的改变,那么后面几层就会被累积放大下去。一旦网络某一层的输入数据的分布发生改变,那么这一层网络就需要去适应学习这个新的数据分布,所以如果训练过程中,训练数据的分布一直在发生变化,那么将会影响网络的训练速度。  

AlexNet使用CUDA加速深度卷积网络的训练,利用GPU强大的并行计算能力,处理神经网络训练时大量的矩阵运算,AlexNet使用两个GTX580的GPU进行训练,单个GTX580只有3GB的显存,限制了可训练网络的最大规模,因此将其分布在两个GPU上,在每个GPU的显存中储存一般的神经元参数。

整个AlexNet有8个需要训练参数的层,不包括池化层和LRN层,前5层为卷积层,后3层为全连接层,AlexNet的最后一层是由1000类输出的Softmax层用作分类,LRN层出现在第一个和第二个卷积层之后,最大池化层出现在两个LRN之后和最后一个卷积层之后。

 

     虽然前几个卷积层的计算量很大,但是参数量都很小,在1M左右甚至更小。只占AlexNet总参数量的很小一部分,这就是卷积层的作用,可以通过较小的参数量有效的提取特征。

为什么使用多层全连接:

  • 全连接层在CNN中起到分类器的作用,前面的卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间,全连接层是将学到的特征映射映射到样本标记空间,就是矩阵乘法,再加上激活函数的非线性映射,多层全连接层理论上可以模拟任何非线性变换。但缺点也很明显: 无法保持空间结构。
  • 由于全连接网络的冗余(占整个我拿过来参数的80%),近期一些好的网络模型使用全局平均池化(GAP)取代FC来融合学到的深度特征,最后使用softmax等损失函数作为网络目标函数来指导学习过程,用GAP替代FC的网络通常有较好的预测性能。
  • 全连接的一个作用是维度变换,尤其是可以把高维变到低维,同时把有用的信息保留下来。全连接另一个作用是隐含语义的表达(embedding),把原始特征映射到各个隐语义节点(hidden node)。对于最后一层全连接而言,就是分类的显示表达。不同channel同一位置上的全连接等价与1x1的卷积。N个节点的全连接可近似为N个模板卷积后的均值池化(GAP)。

 假如最后一层的数据是10个66的特征图,global average pooling是将每个特征图计算所有像素点的均值,输出一个数据值,10个特征图就会输出10个值,组成一个110的特征向量。

  • 用特征图直接表示属于某类的置信率,比如有10个输出,就在最后输出10个特征图,每个特征图的值加起来求均值,然后将均值作为其属于某类的置信值,再输入softmax中,效果较好。
  • 因为FC的参数众多,这么做就减少了参数的数量(在最近比较火的模型压缩中,这个优势可以很好的压缩模型的大小)。
  • 因为减少了参数的数量,可以很好的减轻过拟合的发生。

标签: lrn系列热继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台