深度学习算法实验平台的研究与实现毕业论文.docx
《深度学习算法实验平台的研究与实现毕业论文.docx》由会员分享,可在线阅读,更多相关《深度学习算法实验平台的研究与实现毕业论文.docx(43页珍藏版)》请在冰豆网上搜索。
![深度学习算法实验平台的研究与实现毕业论文.docx](https://file1.bdocx.com/fileroot1/2023-2/22/2a944f06-1832-4275-90a4-4b8121d5a0ec/2a944f06-1832-4275-90a4-4b8121d5a0ec1.gif)
深度学习算法实验平台的研究与实现毕业论文
武汉理工大学毕业设计(论文)
深度学习算法实验平台的研究与实现
学院(系):
自动化学院
专业班级:
自动化专业1104班
姓名:
指导教师:
摘要
深度学习是基于人工神经网络的机器学习,机器学习方法也有监督学习与无监督学习之分。
不同的学习框架下建立的学习模型很不同.例如,卷积神经网络就是一种监督学习下的机器学习模型,而深度置信网就是一种无监督学习下的机器学习模型。
MATLAB作为一款功能强大的科学计算软件,广泛应用于机器学习、图像绘制等许多方面。
MATLAB常常作为研究神经网络的入门平台,利用其方便快捷的MATLAB编程语言,能够更好的实现神经网络的构建。
作为另一款常用的深度学习平台,python则以其免费的特性受到亲睐,众多开源的科学计算库都提供了Python的调用接口。
用户可以在任何计算机上免费安装Python及其绝大多数扩展库。
以MATLAB和Python作为研究平台,实现深度学习算法。
比较它们的优缺点,在此基础上完成毕业论文的撰写和完善。
关键词:
深度学习;MATLAB;Python;机器学习
Abstract
Depthlearningisbasedonartificialneuralnetworkmachinestudy,machinelearningmethodshavesupervisedlearningandunsupervisedlearningpoints.Learningmodelsatdifferentlearningframeworkestablishedverydifferent.Forexample,convolutionneuralnetworkisasupervisedlearningmachinelearningmodelsunder,andthedepthofbeliefnetworkisanon-supervisedmachinelearningmodelsunderstudy.
MATLABasapowerfulscientificcomputingsoftware,widelyusedinmachinelearning,imagerendering,andmanyotheraspects.MATLABneuralnetworkisoftenusedasentryplatform,usingitsconvenientMATLABprogramminglanguage,canbetterachievebuildneuralnetworks.Anothercommonlyusedasadeeplearningplatform,pythonisitsfeaturesforfreebypro-gaze,manyopensourcescientificcomputinglibrariesprovidePythoncallinterface.UsersarefreetoinstallPythonandthevastmajorityofextensionsonanycomputer.
WithMATLABandPythonasaresearchplatform,deeplearningalgorithms.Comparetheiradvantagesanddisadvantages,onthebasisofcompleteandperfectthesiswriting.
KeyWord:
Deeplearning;MATLAB;Python;unsupervisedlearning
目录
第1章绪论1
1.1课题研究意义1
1.2深度学习的基本思想1
1.3国内外研究现状2
第2章深度学习模型3
2.1自动编码神经网络3
2.2限制波尔兹曼机(RBM)6
2.3卷积神经网络7
2.4SparseCoding稀疏编码8
2.5深信度网络9
第3章BP神经网络及实现平台11
3.1BP神经网络11
3.2matlab平台实现BP算法13
3.2.1数据预处理13
3.2.2使用Matlab实现神经网络14
3.3python平台实现BP算法18
3.3.1举例19
3.3.2验证结果图20
3.4平台比较分析21
3.4.1平台本身优缺点比较21
3.2.2两种编程语言之间的差异21
第4章总结与展望23
4.1课题总结23
4.2课题展望23
参考文献25
附录Python实现程序27
致谢34
第1章绪论
1.1课题研究意义
深度学习作为机器学习研究中的一个新的领域,其目的在于建立模拟人脑进行分析学习的神经网络,进而模仿人脑的机制来解释数据。
深度学习的概念源于人工神经网络的研究。
含多隐层的多层感知器就是一种深度学习结构。
深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
把学习结构看做一个网络,其核心思路如下:
①无监督学习用于每一层网络;
②每次用无监督学习只训练一层,将其训练结果作为其高一层的输入;
③用监督学习去调整所有层。
当前绝多数分类、回归等学习方法均为浅层结构算法,其局限性在于有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定制约。
深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,表征输入数据分布式表示,并展现了强大的从少数样本集中学习数据集本质特征的能力。
多层的好处是能够用相当少的参数就能表示复杂的函数
。
1.2深度学习的基本思想
深度学习的实质是通过构建具有很多隐层的机器学习模型和海量的训练数据来学习更有用的特征,从而最终提升分类或预测的准确性。
因此,“深度模型”是手段,“特征学习”是目的。
有别于传统的浅层学习,深度学习的不同在于:
1)强调了模型结构的深度,通常有5层、6层,甚至10多层的隐层节点;2)明确突出了特征学习的重要性,也就是说,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易。
与人工规则构造特征的方法相比,利用大数据来学习特征,更能够刻画数据的丰富内在信息。
对于深度学习来说,其核心思想就是堆叠多个层,将上一层的输出作为下一层的输入。
通过这种方式,实现对输入信息的分级表达。
另外,前面是假设输出严格地等于输入,这个限制太严格,我们可以略微地放松这个限制,例如我们只要使得输入与输出的差别尽可能地小即可,这个放松会导致另外一类不同的深度学习方法
。
这些就是深度学习的基本思想。
1.3国内外研究现状
早在1950年图灵就提出过隔墙对话的概念,用电脑模拟人脑和人进行对话,人们不清楚到底是和人还是电脑在交谈。
这种设想将计算机完全智能化,期望值太高,在以后的几十年里,人工智能的发展远远没有达到人们所预想的效果。
绝大多数科学家开始怀疑人工智能的可达到性,相关的研究领域也被指为是伪科学。
20世纪80年代,人工神经网络反向传播算法诞生,这种方法无需人工制
定规则,而是让机器在大量训练样本中寻找统计规律,相比以前的方法,神经
网络在很多方面优势明显。
神经网络实际上只含有一个隐含层,是一种浅层学
习模型。
90年代后期,最大熵方法、支持向量机
等一些模型在理论和实践方面的优越性,使得人工神经网络领域的研究变得缓慢。
到了2006年,深度学习领域宗师级人物Hinton阐述了两个重要思想:
第一,增加隐含层的层数能够让网络学习能力增强,迭代出来的特征更贴近物体本身;第二,由于多层神经网络系统训练时间长、训练难度大,但是如果让每一层单独训练,训练的难度和时间都能够得以改善。
Hinton的这些思想如今被广泛的应用到学术界和工业界,欧美相继成立了研究院,2010年美国国防部联合斯坦福大学、纽约大学深入研究深度学习,2011年,微软将深度学习应用到语音识别中,识别率达到了70-80%,2012年深度学习研究和应用大爆发:
世界著名生物制药公司默克公司用深度学习算法预测各类分子中哪些分子能够成为药物,这一方法在实践中远优于其他方法,在生物制药领域掀起轩然大波。
当然,当前深度学习的发展还是受到了人脑机制复杂程度的制约,更进一步研究认识人脑神经元传递信息和神经中枢处理信息的原理,将有助于设计者设计出更加完善的算法。
深度学习在科技领域引发了一场革命,它的影响不仅仅局限在计算机领域;在最直接的图像、语音处理方面精确度会有很大程度的提升,与此同时以互联网为核心的信息服务产业也将产生根本性的变化,深度学习带来的数据智能化,在搜索引擎将占据至关重要的地位
。
第2章深度学习模型
2.1自动编码神经网络
自编码神经网络尝试通过学习一个
的函数,来试着接近一个恒等函数,这样就能够让输出的 x接近于输入 x。
恒等函数即使不被看好有良好的学习能力,但是当给这样一个网络加入某些限制时,例如对网络中的隐藏神经元的数量进行限制,输入数据中我们就能发现一些有趣的结构。
假设有这样一个自编码神经网络,它的输入 是一张 10*10 图像的像素灰度值,这样n=100,其隐藏层
中有50个隐藏神经元。
注意,输出也是100维的
。
因为网络中只含有50个隐藏神经元,这就不等不迫使自编码神经网络去学习输入数据的压缩表示,这样的意义在于,它必须从50维的隐藏神经元激活度向量
中重构出100维的像素灰度值输入 x。
假设网络完全随机的输入了一组数据,例如每一个输入
都是一个跟其它特征完全无关的独立同分布高斯随机变量,那这样的压缩将很难被我们学习到。
但是如果输入一些特定的结构的数据,那这个算法就能够发现输入特征的相关性。
具体过程简单的说明如下:
1)给定无标签数据,用非监督学习学习特征:
图2.1有标签与无标签
对于我们先前接触的神经网络,如图2-1中的第一幅图,我们输入了一个有标签的样本,即(input,target),这样我们根据当前输出和target之间的差去改变前面各层的参数,直到收敛。
但是在右边的图中,我们输入了一个无标签的数据。
那么这个误差怎么得到呢?
图2.2加入编码器和解码器
如图2-2,我们将input输入一个encoder编码器,就能够获得一个code,这个code也就是输入的一个表示。
当加一入个decoder解码器之后,decoder就会输出一个信息,那么如果输出的这个信息和一开始的输入信号input是相似的,我们就能够相信这个code是正确的。
这样的话,我们就通过调整encoder和decoder的参数,使得重构误差得以最小,这时候我们就得到了输入input信号的第一个表示,也就是编码code。
图2.3第一步流程图
2)通过编码器产生特征,之后训练下一层。
逐层训练下去:
在之前我们得到了第一层的code,这样我们的重构误差最小让我们相信这个code既是原输入信号的最好表达了,更进一步的说,它和原信号是完全相同的。
这样的话第二层和第一层的训练方式就没有任何差异,第一层输出的code此时就会变成第二层的输入信号,再进行最小化重构误差,就会得到第二层的参数,并且得到第二层输入的code,其他层也就可以用相同的方法进行。
图2.4逐层流程图
3)有监督微调:
经过上面的方法,我们将构建一个很多层的网络。
至于需要多少层能够得到我们所希望的,则需要慢慢验证。
每一层都会得到原始输入的不同的表达。
这些表达,越是抽象则越好,如同人的视觉系统一样。
然而到这里,AutoEncoder依然还不能够用来分类数据,因为它还没有学习如何去连结一个输入和一个类。
仅仅是能够去重构或者复现它的输入而已。
换句话说,它仅仅是获得了一个可以良好代表输入的特征,这个特征可以最大程度上代表原输入信号。
这样,为了实现分类,我们必须在AutoEncoder的最顶的编码层添加一个分类器,然后通过标准的多层神经网络的监督训练方法去训练。
图2.5调整分类器流程图
另一种:
通过有标签样本,微调整个系统:
图2.6微调系统流程图
监督训练一旦完成,构建的网络就能够用来分类了。
神经网络的最顶层被当做一个线性分类器,我们也可以用更好的分类器来替代。
在研究中可以发现,如果在原有的特征中加入这些自动学习得到的特征可以大大提高精确度,甚至在分类问题中比目前最好的分类算法效果还要好
!
2.2限制波尔兹曼机(RBM)
假设有这样一个二部图,它的每一层的节点之间没有链接,一层是可视层,即输入数据层(v),一层是隐藏层(h),并且所有的节点都是随机二值变量节点(只能取0或者1值),同时假设全概率分布p(v,h)满足Boltzmann分布,这就是所谓的限制波尔茨曼机
图2.7波尔茨曼机模型
那么它为什么能够被当做是DeepLearning方法呢?
首先,这个模型因为是二部图,所以在已知v的情况下,所有的隐藏节点之间是条件独立的(因为节点之间不存在连接),即p(h|v)=p(
|v)…p(
|v)。
在已知隐藏层h的情况下,通过调整参数,我们就能够使得从隐藏层得到的可视层v1与原来的可视层v一样,那么得到的隐藏层就是可视层另外一种表达,因此隐藏层可以作为可视层输入数据的特征,所以它就是一种DeepLearning方法。
限制玻尔兹曼机的参数包含三部分,第一部分是可视层和隐含层之间的权
重矩阵
,第二部分是可视层节点的偏移量(bias)b=(
),第三部分则是隐含层节点的偏移量(bias)c=(
)。
这些参数决定了限制玻尔兹曼机将一个m维的输入数据编码为怎样的n维的输出数据。
限制玻尔兹曼机的训练过程是这样的。
首先假设可视层和隐含层的每个节点取值在{0,1}之中,即
。
输入数据为x=(
),通过RBM网络可以得到编码后的输出数据y=(
)。
这个n维的输出数据是按以下的规则生成的:
对于给定的输入x=(
),隐含层第i个节点取值为1的概率为
(2.2.1)
(2.2.2)
(2.2.3)
2.3卷积神经网络
卷积神经网络作为人工神经网络的一种,是当今世界语音分析和图像识别领域的研究热点,它的权值共享网络结构使类似于生物神经网络。
该优点在网络的输入是大型图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。
卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者其他形式的变形具有高度不变性。
CNNs是受早期的延时神经网络
(TDNN)的影响。
延时神经网络通过在时间维度上共享权值降低学习复杂度,适用于语音和时间序列信号的处理。
CNNs是第一个真正成功训练多层网络结构的学习算法。
它利用空间关系减少需要学习的参数数目以提高一般前向BP算法的训练性能。
CNNs作为一个深度学习架构被提出是为了最小化数据的预处理要求。
在CNN中,图像的一小部分(局部感受区域)作为层级结构的最低层的输入,信息再依次传输到不同的层,每层通过一个数字滤波器去获得观测数据的最显著的特征。
这个方法能够获取对平移、缩放和旋转不变的观测数据的显著特征,因为图像的局部感受区域允许神经元或者处理单元可以访问到最基础的特征,例如定向边缘或者角点。
图2.8卷积神经网络
如图2-8,输入图像通过和三个可训练的滤波器和可加偏置进行卷积,,一,卷积后在C1层产生三个特征映射图,然后特征映射图中每组的四个像素再进行求和,加权值,加偏置,通过一个Sigmoid函数得到三个S2层的特征映射图。
这些映射图再进过滤波得到C3层。
这个层级结构再和S2一样产生S4。
最终,这些像素值被光栅化,并被连接成一个向量输入到传统的神经网络,得到输出。
2.4SparseCoding稀疏编码
稀疏编码算法是一种无监督学习方法,它用来寻找一组“超完备”基向量来更高效地表示样本数据。
虽然形如PCA能使我们方便地找到一组“完备”基向量,但是这里我们想要做的是找到一组“超完备”基向量来表示输入向量(也就是说,基向量的个数比输入向量的维数要大)。
超完备基的好处是它们能更有效地找出隐含在输入数据内部的结构与模式。
然而,对于超完备基来说,系数ai不再由输入向量唯一确定。
因此,在稀疏编码算法中,我们另加了一个评判标准“稀疏性”来解决因超完备而导致的退化(degeneracy)问题。
图2.9系数编码图像识别
稀疏性可以被简单地解释如下。
如果当神经元的输出接近于1的时候我们认为它被激活,而输出接近于0的时候认为它被抑制,那么使得神经元大部分的时间都是被抑制的限制则被称作稀疏性限制。
这里我们假设的神经元的激活函数是sigmoid函数。
如果你使用tanh作为激活函数的话,当神经元输出为-1的时候,我们认为神经元是被抑制的。
注意到
表示隐藏神经元 j的激活度,但是这一表示方法中并未明确指出哪一个输入x带来了这一激活度。
所以我们将使用
来表示在给定输入为 x情况下,自编码神经网络隐藏神经元 j的激活度。
进一步,让
(2.4.1)
表示隐藏神经元
的平均活跃度(在训练集上取平均)。
我们可以近似的加入一条限制
(2.4.2)
是稀疏性参数,通常是一个接近于0的较小的值(比如
=0.05)。
换句话说,我们想要让隐藏神经元j的平均活跃度接近0.05。
为了满足这一条件,隐藏神经元的活跃度必须接近于0。
稀疏编码是k-means算法的变体,其训练过程也差不多(EM算法的思想:
如果要优化的目标函数包含两个变量,如L(W,B),那么我们可以先固定W,调整B使得L最小,然后再固定B,调整W使L最小,这样迭代交替,不断将L推向最小值。
2.5深信度网络
DBNs(深信度网络)
是一个概率生成模型。
与传统的判别模型的神经网络相比,生成模型是建立一个观察数据和标签之间的联合分布,对P(Observation|Label)和P(Label|Observation)都做了评估,而判别模型仅仅评估了后者,也就是P(Label|Observation)。
对深度神经网络应用传统的BP算法的时候,DBNs遇到了以下问题:
(1)需要为训练提供一个有标签的样本集;
(2)学习过程较慢;
(3)不适当的参数选择会导致学习收敛于局部最优解
多个限制玻尔兹曼机层组成一个DBNs,一个典型的神经网络类型如图2-10所示。
这个些网络被限制为一个可视层和一个隐层,层与层之间有连接,但是每个层内部之间却没有连接。
隐层单元被训练去捕捉在可视层表现出来的高阶数据的相关性。
图2.10深信度神经网络
DBNs采用的训练方式也和传统神经网络有很大差别:
BP算法对3层网络
而言,它的优点在于训练效率很高,但是相较于一个多隐含层的网络,首先是它的训练时间过长;其次因为它的权重调整过程是从输出层到输入层的反向传播,
当残差传播到第一层时,就会出现了很大的误差,因此权重调整也不够精确,算法效率不高,训练方法不理想。
正是因为传统神经网络训练模型存在诸多缺点,深度学习使用全新的训练方法,即在非监督数据上建立多层神经网络,训练时分两步走,第一步是分层次训练网络,每次训练一个层次;第二步是参数调优,即有监督微调的过程。
DBNs的训练过程采用逐层训练的方法,每次只训练一层RBM,这个过程和RBM的训练是完全一样的,参数也是单独调整;训练完一层后,将该层的训练结果作为下一层RBM的输入;如此直至每一层RBM都训练完成,这个过程也称之为预训练。
RBM训练完成后,再根据样本的标签值,采用BP算法向后微调。
具体可以分为预训练以及微调。
DBNs算法无论是在时间还是算法效率上都有很好的效果,尤其是在大数据方面;它可以看作是深度学习的里程碑,目前被广泛应用于包括图像,语音,文档等诸多方面,越来越多的人开始了对其理论和模型的研究。
第3章BP神经网络及实现平台
3.1BP神经网络
BP(BackPropagation)网络是1986年由Rinehart和McClelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,到目前为止是世界上使用最为广泛的神经网络。
自编码神经网络也是它的一种形式,它以输入-输出模式映射的关系进行学习和存储,并不需事前给出描述这种映射关系的数学方程式。
梯度下降法是它进行运算所需要的数学方法,它通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。
BP神经网络模型拓扑结构包括输入层(input)、隐层(hidelayer)和输出层(outputlayer)。
BP算法的数学计算由正向传播的前向计算和误差信号的反向传播两个过程构成。
正向传播时,传播方向为输入层至隐层再到输出层,上一层神经元的状态只会对下一层神经元产生影响。
当输出层得不到所期望的输出时,就会出现误差信号的反向传播流程。
通过这两个过程的交替进行,在权向量空间执行误差函数梯度下降策略,动态迭代搜索一组权向量,使网络误差函数达到最小值,从而完成信息提取和记忆过程。
假定用
表示第k个神经元对应的
参数,那么BP神经网络前向编码过程就是按照从前向后的顺序执行每一层编码步骤:
(3.1.1)
(3.1.2)
(3.1.3)
(3.1.4)
其中,
是最深层隐藏单元的激活值,它包含了我们所需要了解的信息,
也是对输入值更高阶的表示。
图4.1BP神经网络
通过观察图4-1可知,BP神经网络是一个三层网络结构:
输入层(inputlayer):
顾名思义,输入层各神经元负责接收来自外界的各种输入信息,并将或得到的有用信息传递给中间层各神经元;
隐藏层(HiddenLayer):
中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程;
输出层(OutputLayer):
输出层向外界输出信息处理结果;
当实际输出与期望输出不符时,此时整个网络就会进入误差的反向传播阶段。
误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。
周而复始的进行正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止
。
BP神经网络向量形式的反向传播算法分为下面几个步骤:
(1)以前向传播的方式,从第二层开始直至输出层,采用以下关系式迭代计算各层神经元的激活值
(3.1.5)
(3.1.6)
(2)对于输出层(第
层),计算
=
(3.1.7)
(3)对于第L层,
,反向计算残差
(3.1.8)
(4)计算偏导