—————————————————————————————————————————————
学习小结:
1)深度学习综述;(2)对卷积神经网络(CNN)的认识;(3)minist数据集训练及测试;
—————————————————————————————————————————————
前言
深度学习是机器学习领域一个新兴的研究方向,它通过模仿人脑结构,实现对复杂输入数据的高效处理,智能地学习不同的知识,而且能够有效地解决多类复杂的智能问题。实践表明,深度学习是一种高效的特征提取方法,它能够提取数据中更加抽象的特征,实现对数据更本质的刻画,同时深层模型具有更强的建模和推广能力。其代表了以使用深层神经网络实现数据拟合的一类机器学习方法,典型的深度学习模型有卷积神经网络(convolutional neural network)、DBN 和堆栈自编码网络(stacked auto-encoder network)模型等。下节主要将介绍卷积神经网络。其学习方法主要可以分为监督学习和无监督学习。监督与非监督是通过查看输入数据是否有标签,有标签则为监督学习,或者为无监督学习。
目前就深度学习的实际应用主要是在语音,图像,信息检索。现今的语音识别通过综合深度学习模型强大的判别训练和连续建模能力,对应的识别效果已经是非常理想;对于图像上的应用主要是在手写体字符识别,人脸识别,及图像识别和检索上,现今在深度学习的框架下这些方面均取得了较好的结果;对于信息检索也有大量的研究应用,通过深度学习的方法对文档建立索引,再从中检索信息。相信未来深度学习在更多的方向有着良好的应用,其将突破了传统机器学习方法的瓶颈,推动了人工智能领域的发展。
卷积神经网络(CNN)
卷积神经网络是近年发展起来,并引起广泛重视的一种高效识别方法。现在,CNN已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用。
一般地,CNN的基本结构包括两层,其一为特征提取层,每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征。一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来;其二是特征映射层,网络的每个计算层由多个特征映射组成,每个特征映射是一个平面,平面上所有神经元的权值相等。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数。卷积神经网络中的每一个卷积层都紧跟着一个用来求局部平均与二次提取的计算层,这种特有的两次特征提取结构减小了特征分辨率。
图1 卷积神经网络概念示范图
图1为CNN的概念示范图,可知CNN结构可分为四个大层次:输入图像,多个卷积-下采样层,光栅化以及多层感知机。对输入图像进行归一化,按激活函数的不同,将输入图像归一化到不同区间,其后将其与下一层权重w做卷积得到各个卷积层,然后下采样得到各个下采样层,这些层的输出为Feature Map。接下来进行光栅化,将所有Feature Map每个像素依次展开,形成一个向量,最后的多层感知机为一个全连接网络,网络最后的分类器一般用激活函数Softmax。
CNN的训练过程包括训练前对权值的初始化,其中权值应用不同的小随机数来保证整个训练过程的成功,其后的两个阶段为向前传播阶段和向后传播阶段,前者通过输入计算出网络中最终的输出,后者通过对比实际输出与理想输出的差,再用反向传播算法更新各个量值,直到实际输出与理想输出的差满足我们期望了一个值。
Minist数据集训练及测试
这里在Minist数据集下进行LeNet模型的训练和测试,其中主要有两部分,首先对LeNet进行介绍,其次为在电脑上实现结果。
(1)LeNet模型介绍。
图2为原始的LeNet模型图,其是早期卷积神经网络中最有代表性的实验系统之一。LeNet除输入外还有有7层。首先设置输入图像大小32*32。各层介绍如下。
C1层是一个卷积层,由6个特征图(Feature Map)构成,每个Feature Map是通过一种卷积滤波器提取输入的一种特征,然后每个Feature Map有多个神经元。特征图中每个神经元与输入中5×5的邻域相连。特征图的大小为28×28。
**S2层是一个下采样层,**利用图像局部相关性的原理,对图像进行子抽样,可以减少数据处理量同时保留有用信息),有6个14×14的特征图。
C3层也是一个卷积层,它同样通过5×5的卷积核去卷积层S2,然后得到的特征图就只有10×10个神经元,但是它有16种不同的卷积核,所以就存在16个Feature Map了。
S4层是一个下采样层,由16个5×5大小的特征图构成。特征图中的每个单元与C3中相应特征图的2×2邻域相连接,跟C1和S2之间的连接一样。
C5层是一个卷积层,有120个特征图。每个单元与S4层的全部16个单元的5×5邻域相连。由于S4层特征图的大小也为5×5(同滤波器一样),故C5特征图的大小为1×1:这构成了S4和C5之间的全连接。之所以仍将C5标示为卷积层而非全连接层,是因为如果LeNet-5的输入变大,而其他的保持不变,那么此时特征图的维数就会比1×1大。
F6层是一个全连接层,有84个单元(之所以选这个数字的原因来自于输出层的设计),与C5层全相连。如同经典神经网络,F6层计算输入向量和权重向量之间的点积,再加上一个偏置。然后将其传递给sigmoid函数产生单元i的一个状态。
输出层由欧氏径向基函数(Euclidean Radial Basis Function)单元组成,应用有限。在多分类任务中,CNN的输出层一般都是Softmax回归模型,该模型输出图片属于某类别的概率。
图2 原始的LeNet模型图
(2)首先生成mnist-train-lmdb/ 和 mnist-test-lmdb/,把数据转化成lmdb格式,终端结果如图3所示。
图3 数据转化
然后训练网络,图4为训练网络的部分终端显示结果。
图4 训练网络部分结果
最后测试,在数据都训练好后,进行测试,结果如图5所示
图5 测试结果
总结
通过此次专题加深了对深度学习的认识,对于深度学习的发展有比较详细了解,尤其是知道了其中的CNN整个过程是如何进行。通过查找资料对各个过程中的名词也有了一定的理解认识,同时认识到两个阶段中参量是如何变化。对Minist的实现,加深了整个CNN过程在程序上是如何实现的了解。接下来将对Minist数据库测试与训练的各个步骤进行学习,尤其是弄懂其训练过程及学习过程是如何进行的。对整个CNN过程从理论上进行学习了解,并通过阅读相关文献了解深度学习具体到应用中是如何实现的。