网上斗牛

2017届优秀毕业论文(一)

作者: 时间:2018-09-12 点击数:

MLP及卷积神经网络的实现以及应用

软件工程          201311260          陈哲

指导老师         黎扬

   

人工神经网络Artificial Neural Network是一个经常运用于机器学习Machine Learning,计算机科学和其他研究领域的计算模型它的基本单元很简单是一种叫做人工神经元的结构它类似于生物大脑中的神经元人工神经网络就是基于大量互相连接的人工神经元而工作的卷积神经网络是近年发展起来,并引起广泛重视的一种高效识别方法。现在,CNN已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用

关键词:人工神经元神经网络BP算法卷积神经网络

Abstract

The Artificial Neural Network is a computational model that is often used in Machine Learning, computer science and other research fields. Its basic unit is simple, a structure called artificial neuron, similar to the neurons in the biological brain. The artificial neural network is based on a large number of interconnected artificial neurons. The convolution neural network is a highly effective method of recognition that has been developed in recent years. Now, CNN has become one of the highlights in agro-scientific research in the field of science, especially in the field of pattern classification, due to the network to avoid the complex preliminary pretreatment to the images, can be directly input the original image, and thus get the more extensive application.

Key Words: Artificial Neural Unit, Neural networks, Back propagation algorithm,    Convolutional Neural Network

一、绪论

20世纪60年代,HubelWiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络(Convolutional Neural Networks-简称CNN)。 K.Fukushima1980年提出的新识别机是卷积神经网络的第一个实现网络。随后,更多的科研工作者对该网络进行了改进。其中,具有代表性的研究成果是AlexanderTaylor提出的“改进认知机”,该方法综合了各种改进方法的优点并避免了耗时的误差反向传播。

二、神经网络与卷积神经网络

1.什么是张量

张量(Tensor)是一种可以用来表示标量、矢量、矩阵等。在工程领域中,把一维数组称作是矢量,把二位方阵称作是二阶张量,把三维方阵称作是三阶张量。如果有更高维度的数据,也可以用张量表示。张量是一种十分灵活的数据结构,可以使我们表达更加复杂的数据结构,因为它的每个元素可以有1n个维度可以使用,而不是像向量一样每个元素只有一个维度的坐标

2.卷积神经网络中的各个层

1InputLayer:输入层。这是在我程序中所有神经网络传入数据的统一接口,不论是怎样的数据,在输入程序后首先被规范成InputLayer可以接受的样子,然后由InputLayer将数据统一向后传递以进行计算。

2MultLayer:全连层。由于MLP中所有的层都是全连层,只是层与层之间的超参数不同。在卷积网络中,全连层也在整个网络的最后负责和卷积层提供的特征进行拟合训练,达到最佳的效果。全连层主要功能是在一层中包含多个神经元,这样就有好多组不同的权重产生,在正向传播过程中,在数据流入全连层后,将输入的数据与指定的参数相乘相加,并且最后与偏置Bias相加。

3ActivationLayer:激活函数层。不论是卷基层的输出还是全连层的输出,一般都需要在输出后加一个激活函数。这个激活函数并不固定,可能是ReLU或者是Sigmoid,为了方便地实现在某层后进行激活函数的运算还有激活函数的求导运算,我做将激活函数单独做成一层来处理。激活层需要一个属性,来告诉他数据被输入后使用哪个激活函数来处理输入的数据。

4Conv3dLayer3D卷积层。所谓3D卷积层是指这个卷基层处理的数据形状是三维的,这种形状的数据最多的情况是图片数据。卷积层因为是参数层,所以其中包含了很多参数的定义,主要参数有两种,分别是卷积核和每个卷积核的偏置。除了这重要的两个参数外,卷基层还包含一些超参数,比如卷积核数量,卷积核通道数,卷积操作时的步进参数stride以及卷积核的padding参数。卷积操作主要用于特征提取,是在所有层中是时间复杂度最高的一个算法,所以卷积核的优化也是整个程序制作的重中之重,需要通过并行运行的方式来降低卷积操作所消耗的时间。

5PoolingLayer:池化层。我们在CNN中使用卷积核对数据进行卷积操作是因为图像具有一种静态性属性。这种属性往往可以让我们认识到在一个图像区域有用的特征很有可能在另一个图像区域中同样可以有很好的表现。所以,为了处理比较大的图像,一个比较容易想到的想法就是对一个图像中的各个不同位置的特征进行聚合统计。举例来说,我们可以通过计算一个图像中的某个区域上的某种指定特征的平均值或最大值来代替该区域的值。

6Flatten层主要用于将数据进行一维展开。如果我们处理的目标数据是图片,那么神经网络的输入数据将会是一个高维数据。而全连层只接受一维的数据,所以这时就需要一个层将高纬度的数据进行一维展开。

7Softmax回归模型是逻辑回归模型在多分类问题上的推高,多分类问题就是训练数据的类型在两个值以上。Softmax回归是一个有监督的回归模型,它在Mnist的分类问题上有很好的表现。

3.反向传播算法

反向传播是一种局部过程的计算,在它的计算图中,每一个但愿都会得到一些输入并且计算出相应的两个东西:

1)这个单元的计算值。

2)关于这个单元输入数据的梯度。

这个单元计算这两个值的过程是独立的。它只关心自己的计算过程,不需要关心整个图中的其他计算细节。链式法则指出,门单元应该将回传的梯度乘以它对其的输入的局部梯度,从而得到整个网络的输出对该门单元的每个输入值的梯度。这里对于每个输入的乘法操作是基于链式法则的。

4.卷积与池化算法

在一个卷积层,上一层的特征maps被一个可学习的卷积核进行卷积,然后通过一个激活函数,就可以得到输出特征map。每一个输出map可能是组合卷积多个输入maps的值:

                 1

对于子采样层来说,有N个输入maps,就有N个输出maps,只是每个输出map都变小了。

                                     2

down()表示一个下采样函数。典型的操作一般是对输入图像的不同nxn的块的所有像素进行求和。这样输出图像在两个维度上都缩小了n倍。每个输出map都对应一个属于自己的乘性偏置β和一个加性偏置b


5.激活函数

每个激活函数(或非线性函数)的输入都是一个数字,然后对其进行某种固定的数学操作。下面是在实践中可能遇到的几种激活函数:

Tanh Sigmoid ReLU三种激活函数的函数图像

1Sigmoid函数

                           3

函数图像如图所示。它输入实数值并将其“挤压”到01范围内。在历史上,sigmoid函数非常常用。然而现在sigmoid函数已经不太受欢迎,实际很少使用了,这是因为它有两个主要缺点:Sigmoid函数饱和使梯度消失Sigmoid函数的输出不是零中心的。这

2Tanh函数

Tanh非线性函数图像如上图所示。它将实数值压缩到[-1,1]之间。和sigmoid神经元一样,它也存在饱和问题,但是和sigmoid神经元不同的是,它的输出是零中心的。

(3)ReLU函数

优点:相较于sigmoidtanh函数,ReLU对于随机梯度下降的收敛有巨大的加速作用。据称这是由它的线性,非饱和的公式导致的。

缺点:在训练的时候,ReLU单元比较脆弱并且可能“死掉”。举例来说,当一个很大的梯度流过ReLU的神经元的时候,可能会导致梯度更新到一种特别的状态,在这种状态下神经元将无法被其他任何数据点再次激活。

6.实践效果

(1)MNIST手写数据集

数据集效果

训练过程与预测效果

2sklearn-kit测试数据集

Sklearn-kit测试数据集

参考文献

[1] 斯基特. 深入理解C#(第3版),2014.

[2] 李航.统计学习方法.北京:清华大学出版社,2012.

[3] Stanford. CS231n Convolutional Neural Networks for Visual Recognition.

[4] Andrew Ng. UFLDL Tutorial, http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial.

[5] Bengio. Deep Learning (An MIT Press book), http://www.deeplearningbook.org/.2016

[6] Alex Krizhevsky. ImageNet Classification with Deep Convolutional Neural Networks,2012.

[7] Yann LeCun1,Yoshua Bengio,Geoffrey Hinton. Deep learning Nature,2015.

Copyright ? 2017   Powered by    兰州交通大学网上斗牛   All Rightseserved.

地址:兰州交通大学电信学院办公楼    邮编:730070