基于TensorFlow的手写数字识别毕业论文
2020-04-10 16:14:00
摘 要
随着社会的发展,手写数字识别变得越来越重要,这体现在在手写数字识别作为一项信息处理技术在很多领域被大量需求。手写数字识别实质上是系统对于手写体数字图像模式正确匹配的过程。本文重点介绍了手写数字识别、机器学习的流程和基本原理,科学性地选择MINST数据集作为本次手写体数字识别的样本数据集,深入分析了LSTM结构的循环神经网络(RNN),设计了手写数字识别模型。完成本次课题设计所使用的理论基础是LSTM结构的循环神经网络。普通循环神经网络的特点是,上一时刻的输出值会作为下一时刻的输入值。但是因为自身总梯度是连成积形式,存在无法解决长距离依赖问题的弊端。LSTM结构的循环神经网络最大特点就是它隐藏层中具有保留长期记忆的单元状态(cell state),单元状态可以保留长时期的节点记忆,保证每一个时刻的节点的状态对于总梯度有贡献,这一点确保了本次课题设计的成功。TensorFlow是谷歌公司倾尽全力开发的开源的python外部结构包,主要应用于人工智能和机器学习领域。本次课题设计使用PyCharm软件在TensorFlow平台上使用长短时记忆网络实现了手写数字识别,实验表明,本次课题设计结果符合开题报告要求,TensorFlow应用广泛,在图像识别、语音处理、图像和语音领域具有较高的准确性与可靠性。
关键字:机器学习;图像识别;MINST数据集;TensorFlow;RNN
Abstract
With the development of society, the recognition of handwritten digits becomes more and more important. This is reflected in the large number of handwritten digits recognition requirements as an information processing technology in many fields. This paper focuses on the flow and basic principles of hand-written digital recognition and machine learning, in-depth analysis of the LSTM structure of the recurrent neural network (RNN), and design a hand-written digital recognition model. The theoretical basis used to complete the design of this topic is the recurrent neural network of the LSTM structure. The characteristic of the ordinary recurrent neural network is that the output value at the previous moment will be used as the input value at the next moment. However, there are drawbacks that cannot solve long-distance dependence problems. The most important feature of the LSTM structure is its cell state, which retains long-term memory in the hidden layer. The cell state can retain long-term node memory. This ensures the success of the design of this topic. TensorFlow is an open source Python external structure package developed by Google, as long as it is applied in the field of artificial intelligence and machine learning. The hand-held digital recognition is implemented using the Long and short time memory network on the TensorFlow platform. Experiments have shown that the design results of this project meet the requirements of the open report, and TensorFlow is widely used in image recognition, speech processing, image and speech High accuracy and reliability.
Key words: machine learning; image recognition; MINST data set; TensorFlow; RNN
学位论文原创性声明
本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包括任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。
作者签名:
年 月 日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士论文评选机构将本学位论文的全部或部分内容编入有关数据进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
本学位论文属于1、保密囗,在 年解密后适用本授权书
2、不保密囗 。
(请在以上相应方框内打“√”)
(宋体小四号)
作者签名: 年 月 日
导师签名: 年 月 日
目 录
第一章 绪论 1
1.1 手写体数字识别的难点 1
1.2手写数字识别的发展以及研究现状 1
1.3 TensorFlow在手写数字识别技术中的应用 2
1.4论文结构简介 3
第二章 循环神经网络 4
2.1.人工神经网络工作原理 4
2.2.人工神经网络的学习以及训练 5
2.3.循环神经网络概述 6
2.3.1 RNN工作原理 7
2.3.2 RNN网络的训练算法 8
2.4 LSTM结构循环神经网络网络概述 9
2.4.1 LSTM结构循环神经网络产生背景 9
2.4.2 LSTM结构循环神经网络工作原理 10
2.4.3 LSTM循环神经网络训练算法 11
2.5.小结 13
第三章 手写数字识别系统开发环境 15
3.1.系统开发语言简介 15
3.2.系统开发软件简介 15
3.2.1 PyCharm简介 15
3.2.2 PyCharm语言配置 16
3.3.系统开发平台概述 16
3.3.1 TensorFlow的工作原理 16
第四章 手写数字识别系统的实现与评估 18
4.1.课题设计思路 18
4.2 MINST数据集概述 18
4.2.1 MINST数据集的预处理和特征提取 19
4.3.Python语言程序设计 20
4.4.测试结果和模型评估 21
第五章 总结 23
参考文献 24
致 谢 25
第一章 绪论
- 手写体数字识别的难点
随着科学技术的进步,计算机被广泛利用到社会各行各业中。作为计算机技术之一,手写体数字识别着很大的实用价值,它广泛应用于大规模数据统计、财务、税务、金融和邮件分拣领域中。手写体数字研究已经经过了几十年了,国内外也对手写体数字识别进行了深入的研究,研究了许多具有优秀识别率的算法,将手写数字识别投入使用的软件也层出不穷[1]。但实际上,所有的算法的识别率和误识率仍然与实用存在相当距离。手写体数字虽然分类起来只有0-9十个大类,但是仍然对于图像识别有两大难点:一是根据生活环境,教育背景等因素导致不同的人写出的同一个数字都存在天壤之别,即使是同一个人在不同的情况下也可能写同一个数字写出不一样的样子,所以这大大增加了匹配的难度。二是普通人在写数字的时候,为了书写的流畅感,大部分选择连笔来缩短书写的时间,而正是连笔使得手写数字结构更加复杂,很多连笔的手写数字会被计算机归纳到无法识别的领域或者识别错误。总之,连笔对于任何一种人工神经网络都是一项严峻的挑战。如图1.1所示,手写体数字千变万化。
图1-1 千变万化的手写体数字
1.2手写数字识别的发展以及研究现状
图像识别技术是模式识别技术的一种,也就是指对图像类模式的识别,而手写体数字研究则是图像识别技术中最近最为活跃的一部分。
手写体数字识别研究都基于一个简单的道理,将识别图片与真实答案手写数字库对比,相比较之后会得出一个与正确答案最像的数字。本次课题设计我们使用的分类器是基于TensorFlow平台所搭建的神经网络。
至于研究现状,国内在二十一世纪初开始研究手写数字识别,并且只是集中于对特定的情景进行研究。中科院自动化所研发的有限状态自动机识别手写数字,到达了95.2%的正确率;清华大学的手写数字识别研究使用了支持向量机的方式,达到 92% 的正确率;与此同时,上海交通大学选用人工神经网络作为分类器达到97.58%的正确率。
国外研究起步比较早,主要集中在理论研究上。1974 年,Paul Werbos 提出反向传播算法,神经网络研究进入热潮[2]。到了90年代,由于神经网络计算开销非常大,人工神经网络的研究陷入低谷,但是随着计算机计算能力不断发展和数据量的积累,最近几年在图像分类领域最突出的工作都是利用人工神经网络实现的。
1.3 TensorFlow在手写数字识别技术中的应用
TensorFlow是美国谷歌公司开发的一款Python外部结构包, 也是一个采用数据流图来进行数值计算的开源软件库TensorFlow这个开源平台最初为了机器学习和深度神经网络方面的研究,但是TensorFlow的强大适应性使其也可广泛用于其他计算领域。它最大的优势是构建有向图来描述所要执行的操作,可以灵活的使用设备中的CPU或者GPU展开计算。TensorFlow平台本身可以使用数据流图完成数值计算的特点决定它可以从事深度神经网络(隐藏层大于等于2)的训练。该python框架也是广大深度学习爱好者在学习机器学习的不二选择[3]。
手写体数字识别研究一直吸引大家的目光,随着如今神经网络的研究深入,人们对于这个课题的研究又采用了不同的手段和方法,这一个课题一直不缺创新点。人工神经网络在上个世纪九十年代出于井喷式发展。现在对于神经网络的定义是神经网络是一种数学模型,是对于人脑神经系统的电脑化。神经网络内的神经元之间是互相连接并完成计算的。当神经网络接收到外部信息的输入后,改变内部的结构,对输入输出之间构建相应的模型。人工神经网络因为具有自学习能力,联想存储功能与高速寻找优化解等优点和优越性,如今手写体数字识别领域主要是由神经网络完成。已经涌现出不同的人工神经网络及其相应的学习算法,其中RNN(循环神经网络)算法得到了广泛的关注以及研究,在数字识别方面也取得了具有重大意义的应用成果,所以本课题中采用TensorFlow平台上运行循环神经网络算法实现手写体数字识别是个十分正确的决定。
1.4论文结构简介
本毕业设计主要解决利用TensorFlow平台完成手写体数字识别的问题。整体会分为以下几部分,第一部分为对于循环神经网络有个简单的介绍。第二部分为提出RNN的弊端,针对这个弊端提出了解决方案---长短时记忆网络,对于LSTM结构进行深入的探讨。第三部分则是讲述如何在TensorFlow上实现模型。第四部分也是最为关键的一部分为评估模型。
本文主要对手写数字识别、TensorFlow、MINST手写数字数据集和相应的人工神经网络进行了一些介绍和研究。其中决定该课题设计能否正确实现的关键仍然是其中神经网络模型的核心算法,本次采用的是LSTM结构的循环神经网络算法。实验表明该算法所构建的手写数字识别方法具有较好的识别率,符合了开题报告的目标。
第二章 循环神经网络
2.1.人工神经网络工作原理
如图2-1所示,人体之中,完成各种各样的任务或者是处理各种复杂的问题是依靠9百亿神经细胞所组成的神经网络。当外界环境存在一种影响时,会从我们身上的一个感受器传入生物信号,神经元产生联结,我们自觉产生一定程度上的肢体反应。尽管新连接如何变成一个新记忆现在仍然是一个未解之谜,但是我们清楚的是:这种生物信号会刺激之前形成的神经联结,从而使我们所作出的肢体反应有意义。下面将介绍人工神经网络如何模仿人体这一构造。
图2-1 人类神经网络
神经网络实际上就是众多神经元之间构造一种网络结构连接,是存在于计算机的神经系统,由大量的神经元相连接并进行计算,外界信息会对神经网络产生影响,改变神经网络内部的结构,常来对输入和输出间复杂的关系建模。
正如前文所说,人体大脑在学习的时候神经元之间的连接状态会随着外部信息的变化而变化,所以,观察每一个神经元的状态就可以明白大脑对于外部信息的处理结果是什么。
正如图2-2展示了一个全连接的神经网络,观察下图我们可以发现一些规则。1.系统由许多层组成。从左往右依次是输入层,隐藏层和输出层。输入层接收到的信息就是外部信息,输出层输出的信息是整个系统对于输入层接收到的信息的判断。隐藏层,顾名思义,外部来是看不见隐藏层的,隐藏层的工作是对于输入层接收到对信息进行加工处理。2.处在同一层的神经元之间没有连接。3.第N层的每个神经元和第N-1层的所有神经元之间一定是相互连接的,这也是为啥称之为全连接,第N-1层神经元的输出就是第N层神经元的输入。4.每个连接都具有一个所对应的权值。这些规则定义了一般全连接神经网络的结构。事实上还存在许多其它结构的神经网络,不同的神经网络具有不同的连接规则,本次课题使用长短时记忆网络就有自己特有的连接规则。
图2-2 神经网络系统
人工神经网络工作的原理用一个例子来说明让神经网络对于手写的“a”和“b”两个个字母的识别进行识别为生动具体例子来说明,在具体说明之前我们规定当“a”输入网络的时候应该输出“1”;反之当“b”输入网络的时候,输出为“0”。假设输入为“b”,如果输出结果为“1”则综合神经元连接权值减少,反之输出结果为“0”,连接的权值增加。当输入层接收到一定数量的两个字母信息量之后,网络也一定同时进行了很多次的学习训练,相应的网络对于两个手写字母的识别准确率也在逐步提高。当正确率到达一定值得时候,说明这个识别体系已经成型,网络模型已经记忆住了两个字母对应的输入,模型可以准确识别两个字母[4]。
2.2.人工神经网络的学习以及训练
人脑中的神经元具有许多树突的精细结构,一个神经元在收到了兴奋输入的时候,而兴奋输入比神经元抑制输入大到一定程度的时候,神经元就能够把对应的脉冲向下传送到他的轴突当中,在改变轴突有效性的同时使得一个神经元对于另一个神经元的影响发生了变化,这个过程就是学习行为。这个行为搬到人工神经网络来说,机器学习的真实情况也就是人类大脑中细胞特殊的突触结构所具有的可塑性连接,不同的机器学习算法主要的区别也就在于如何调整神经元之间连接的权重。
神经网络为了完成自身的学习与训练,需要根据外部环境信息量的多少来决定采用何种学习模式,具体情况分为以下几种:
1.监督学习
对神经网络进行训练,才能保证其在实际应用中解决各种问题,机器学习有一类学习方法叫做监督学习,意思就是从应用的环境之中提取出一些样本数据;在训练过程中需要有教师的示教,提供训练所需要的数据(样本数据),所以这种需要教师的学习又称之为监督式学习,这些样本数据包括输入特征,也包括相对应的输出(标记)。
监督学习的方法虽然比较简单,一旦系统变得复杂,环境产生变化之后,就会变得困难。为了适应环境的变化,加权值就需要重新被调整,这样的模式有一个缺点就是当你学习新的知识的时候,会容易忘记之前学过的旧知识,这就是监督学习的弊端。
2.非监督学习
非监督学习,正如前文所说,它只存在输入特征却没有标记,模型可以总结出一些输入特征的基本规律,却没有办法知道输入特征所对应的正确答案。训练神经网络的过程中,网络自动地将各输入数据的特征提取出来,分成若干类。训练好的网络能够识别训练数据集之外新的输入类别,相应获得不同的输出。现实之中,大部分为非监督学习。而且在无监督学习情况下,数据会呈现出聚群结构,也就是相似的数据会聚在一起,当我们将他们按照一个类别一个类别分类,就变成一个又一个聚类。无监督学习可以使得网络具有自组织和自学习的能力。
3.强化学习
强化学习学习的过程中伴随着样例的获得,在获得样例之后更新自己的模型,利用当前的模型来知道下一步的行动,下一步的行动在获得回报之后会更新自己的模型,从而改善自身的性能。
普通人工神经网络的训练算法是反向传播算法,该算法的精髓是计算每个节点的误差项的时候,需要事先计算与其相连的下一层节点的误差项,这一点决定了这个算法起点是输出层,前进方向是从输出层到隐藏层到与输入层相连的隐藏层的误差项。这就是为何这个算法称为反向传播算法[5]。
2.3.循环神经网络概述
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示:
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。