TensorFlow中不同神经网络模型对MNIST数据集影响研究

2018-12-31 00:00:00范铭豪
现代信息科技 2018年11期

摘 要:在TensorFlow中,神经网络模型对训练数据的效果有很大的影响。在与图像数据相关的模型中有几种训练数据模型:深度神经网络模型、非线性神经网络模型、多层神经网络模型,它们对不同类型的数据集有不同的影响。MNSIT集是神经网络模型性能检验的常用数据集,不同的神经网络模型在数据集上有不同的结果。

关键词:MNIST集;神经网络模型

中图分类号:TP183;TP391.41 文献标识码:A 文章编号:2096-4706(2018)11-0075-03

Research on Influence of Different Neural Network Models on

MNIST Data Set in TensorFlow

FAN Minghao

(Zhejiang Sci-Tech University,Hangzhou 310018,China)

Abstract:In TensorFlow,neural network model has great influence on the result of training data. In the training related to image data,there are several training data models:deep neural network model,nonlinear neural network model,multi-layer neural network model,they have different influence on different types of data sets. The MNSIT sets is the common data set for neural network model performance checking,and different neural network models have different results on the data set.

Keywords:MNIST sets;neural network model

1 MNIST数据集

在机器学习中,神经网络为了实现某项功能,就必须在已经建立的神经网络中输入大量的数据,使用者的目的不同,输入数据也不尽相同。在关于神经网络的学习中,MNSIT数据集是基本的入门数据集,它是由70000张手写数字的图片封装而来。在MNSIT数据集中它又被分为60000张训练数据集,以及10000张测试数据集。

在神经网络模型验证和测试中,MNIST数据集具有一定的代表性,通过使用MNSIT数据集可以很好地看出不同的神经网络模型的性能。

2 深层神经网络

深层神经网络是基于浅层神经网络而言的,他们的不同之处就在于深层神经网络具有两个重要的特性——多层和非线性。

2.1 浅层神经网络的缺点

在浅层神经网络中仅有输入层、输出层和一层未加激活函数的隐藏层。根据计算公式:y=Σwixi+b,可以看出,浅层神经网络是简单的线性函数,对于复杂的非线性情况无法很好地进行处理。而且在线性模型中,无论增加多少隐藏层,通过公式:y=x·W1·W2…Wn=x·W’,可以看出其最终都会化简成为一个新的单层神经网络,这样就无法发挥多层神经网络的优势。

如图1、2所示,在处理线性二分问题上,线性神经网络可以处理得很好,但是在复杂的非线性问题上其就无法发挥处理作用。

2.2 非线性神经网络

相较于线性神经网络而言,非线性神经网络仅仅是添加了一个激活函数(Activation)。在浅层神经网络中我们知道,当神经元如果仅仅是输入的加权和时,就会导致神经网络的线性化。如果在每一个神经元的输出加上一个非线性函数,就会使得整个神经网络成为非线性。这个非线性函数就是激活函数。

A1=[a11,a12,a13]=f(x·W(1)+b)=f([x1,x2] +[b1,b2,b3])=f(w1,1·x1+w2,1·x2+b1,w1,2·x1+w2,2·x2+b2,w1,3·x1+w2,3·x2+b3)=[f(w1,1·x1+ w2,1·x2+b1),f(w1,2·x1+w2,2·x2+b2),f(w1,3·x1+w2,3·x2+b3)]

其中函数F可分成多种激活函数:ReLu函数、sigmoid函数、tanh函数等等。这些函数各有其特点,通过运用这些函数使得神经网络其处理非线性的问题。

2.3 多层网络和正则化处理

2.3.1 多层网络

如图3所示,是一个简单的神经网络结构,输入层首先将数据进行加权和,然后通过激活函数,最后得到输出,这个结构没有隐藏层的函数,这就导致数据无法处理异或的情况,但是加入隐藏层之后(如图4所示)神经网络就可以进行很好的区分。

在隐藏层中,我们看到四个神经元节点都有一部分区域是深色的,而输出则是这四个节点的组合,从这个例子中我们可以了解到,在隐藏层中深层神经网络对数据的特征进行了一次提取,每个节点提取出一部分,之后再将数据进行对比并将对比的结果输出在最后的结果中,进而组合成为最后的输出。

2.3.2 正则化

正如多层网络中提到的,深层神经网络可以对数据的特征进行提取。但是当神经网络隐藏层的参数比训练数据还要多的时候,就会使得神经网络记住每一个数据的特征值。如此一来就会导致训练出来的模型只能识别训练数据,一旦输入测试数据就会使得神经网络无法做出判断。这种现象就叫作过拟合。

为了解决过拟合的问题,可以使用正则化处理。正则化是指在损失函数中引入刻画神经网络参数复杂度的表示:R(w)。表示模型的复杂度有两种表达式:L1正则化和L2正则化。无论是哪种正则表达式,其根本目的都在于限制权重的大小,使得神经网络不会拟合每一个数据特征,而是专注于提取公共特征值。

3 卷积神经网络

3.1 卷积神经网络的优势(cnn)

在之前的深度神经网络中,输入层和隐藏层之间、隐藏层与隐藏层之间以及隐藏层与输出层之间都是通过全连接而成的。比如在MNIST的一张28×28×1图片。假设隐藏层有一层,而每层的节点数为500个,那么在全连接的神经网络中隐藏层中的权重参数将会达到28×28×500+500= 392500(个)。

这很容易导致模型过拟合,但是如果使用卷积神经网络过滤器为3×3×5规格大小,它的卷积层的参数将会只有3×3×5+5=50(个)。虽然之后还要经过池化层和一个全连接层,但是相比较一开始的经过全连接层就需要上万个参数,使用卷积可以大幅减少参数个数,进而避免出现过拟合问题。

3.2 特点

在卷积神经网络中,我们使用卷积和池化两种特别的方式来处理输入的数据。

3.2.1 卷积处理

在卷积层主要是通过过滤器来实现对数据的转化。通过过滤器我们可以将输入数据的一个子节点矩阵转化成下一层的单位矩阵。同样在将数据进行权重求和之后也要进行非线性处理(添加激活函数)。

3.2.2 池化处理

通过池化层,我们可以大幅减少数据的规格尺寸,从而减少最后的全连接层的参数。

4 各种模型在MNIST上的运行结果

如图5所示,在MNIST数据集使用不同的神经网络模型或优化之后的模型,训练之后的结果大不相同。对于不使用隐藏层的简单模型只有92.6%的正确率,使用了所有优化的多层神经网络比使用一部分的优化的模型,正确率有了显著提高。最后是卷积神经网络模型,它在MNIST数据集上的训练结果达到最高,为99.5%。从中我们就可以发现不同的神经网络模型确实有不同的作用。

5 结 论

将不同的神经网络模型输入MNIST数据集,经过最后的输出处理得出最后的正确率结果。如图5所示,可以看到,在MNIST数据集上使用卷积神经网络模型的结果正确率是最高的,而不使用激活函数的神经网络模型的正确率是最低的。

由此我们可以得出,在神经网络中选取的网络模型不同,最后得出的结果也不相同。因此,对于不同的问题要具体分析,选取正确的神经网络模型才能保证结果的正确率。

参考文献:

[1] 才云科技Caicloud,郑泽宇,顾思宇.Tensorflow:实战Google深度学习框架 [M].北京:电子工业出版社,2017.

[2] [美] Ian Goodfellow,[加] Yoshua Bengio,[加] Aaron Courville.深度学习(Deep Learning) [M].北京:人民邮电出版社,2017.

[3] 周志华.机器学习[M].北京:清华大学出版社,2016.

[4] [美] Peter Harrington 著.机器学习实战 [M].李锐,李鹏,曲亚东,等译.北京:人民邮电出版社,2013.

作者简介:范铭豪(1996.10-),男,汉族,安徽池州人,本科。研究方向:计算机科学与技术。