您的当前位置:首页正文

(完整word版)《人工智能导论》课程研究报告总结讲解

2023-06-08 来源:伴沃教育
《人工智能导论》课程研究报告

题目:BP神经网络的非线性函数拟合

班级:自动化1303班

姓名:汪洋、房亮、彭正昌、蔡博、刘航、范金祥

学号:

2016年1月1日

目 录

第一章 人工智能相关介绍

1.1人工神经网络与matlab .......................................... 3 1.2人工神经网络的研究背景和意义................................... 3 1.3神经网络的发展与研究现状....................................... 4 1.4神经网络的应用................................................. 5

第二章 神经网络结构及BP神经网络 ............................ 5

2.1神经元与网络结构............................................... 5 2.2 BP神经网络及其原理............................................ 9 2.3 BP神经网络的主要功能......................................... 11

第三章 基于matlab的BP神经网络的非线性函数拟合

3.1运用背景....................................................... 5 3.2模型建立....................................................... 9 3.3 MatLab实现 ................................................... 11

参考文献……………………………………………………………. -15- 附录……………………………………………………………….. -17-

人工智能相关介绍 1.1人工神经网络与matlab

人工神经网络(Artificial Neural Networks,NN)是由大量的、简单的处理单元(称为神经元)广泛地互相连接而形成的复杂网络系统,它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学系统。神经网络具有大规模并行、分布式存储和处理、自组织、自适应和自学习能力,特别适合处理需要同时考虑许多因素和条件的、不精确和模糊的信息处理问题。神经网络的发展与神经科学、数理科学、认知科学、计算机科学、人工智能、信息科学、控制论、机器人学、微电子学、心理学、微电子学、心理学、光计算、分子生物学等有关,是一门新兴的边缘交叉学科。

神经网络具有非线性自适应的信息处理能力,克服了传统人工智能方法对于直觉的缺陷,因而在神经专家系统、模式识别、智能控制、组合优化、预测等领域得到成功应用。神经网络与其他传统方法相组合,将推动人工智能和信息处理技术不断发展。近年来,神经网络在模拟人类认知的道路上更加深入发展,并与模糊系统、遗传算法、进化机制等组合,形成计算智能,成为人工智能的一个重要方向。

MATLAB是一种科学与工程计算的高级语言,广泛地运用于包括信号与图像处理,控制系统设计,系统仿真等诸多领域。为了解决神经网络问题中的研究工作量和编程计算工作量问题,目前工程领域中较为流行的软件MATLAB,提供了现成的神经网络工具箱(Neural Network Toolbox,简称NNbox),为解决这个矛盾提供了便利条件。神经网络工具箱提供了很多经典的学习算法,使用它能够快速实现对实际问题的建模求解。在解决实际问题中,应用MATLAB 语言构造典型神经网络的激活传递函数,编写各种网络设计与训练的子程序,网络的设计者可以根据需要调用工具箱中有关神经网络的设计训练程序,使自己能够从烦琐的编程中解脱出来,减轻工程人员的负担,从而提高工作效率。

1.2 人工神经网络的研究背景和意义

人工神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。

人工神经网络就是模拟人思维的一种方式,是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。

近年来通过对人工神经网络的研究,可以看出神经网络的研究目的和意义有以下三点:(1)通过揭示物理平面与认知平面之间的映射,了解它们相互联系和相互作用的机理,从而揭示思维的本质,探索智能的本源。(2)争取构造出尽可能与人脑具有相似功能的计算机,即神经网络计算机。(3)研究仿照脑神

经系统的人工神经网络,将在模式识别、组合优化和决策判断等方面取得传统计算机所难以达到的效果。

人工神经网络特有的非线性适应性信息处理能力,克服了传统人工智能方法对于直觉,如模式、语音识别、非结构化信息处理方面的缺陷,使之在神经专家系统、模式识别、智能控制、组合优化、预测等领域得到成功应用。人工神经网络与其它传统方法相结合,将推动人工智能和信息处理技术不断发展。近年来,人工神经网络正向模拟人类认知的道路上更加深入发展,与模糊系统、遗传算法、进化机制等结合,形成计算智能,成为人工智能的一个重要方向,将在实际应用中得到发展。将信息几何应用于人工神经网络的研究,为人工神经网络的理论研究开辟了新的途径。神经计算机的研究发展很快,已有产品进入市场。光电结合的神经计算机为人工神经网络的发展提供了良好条件。

1.3 神经网络的发展与研究现状

神经网络的发展

神经网络起源于20世纪40年代,至今发展已半个多世纪,大致分为三个阶段。

1)20世纪50年代-20世纪60年代:第一次研究高潮

自1943年M-P模型开始,至20世纪60年代为止,这一段时间可以称为神经网络系统理论发展的初期阶段。这个时期的主要特点是多种网络的模型的产生与学习算法的确定。

2)20世纪60年代-20世纪70年代:低潮时期

到了20世纪60年代,人们发现感知器存在一些缺陷,例如,它不能解决异或问题,因而研究工作趋向低潮。不过仍有不少学者继续对神经网络进行研究。

Grossberg 提出了自适应共振理论;Kohenen 提出了自组织映射;Fukushima 提出了神经认知网络理论;Anderson提出了BSB模型;Webos 提出了BP理论等。这些都是在20世纪70年代和20世纪80年代初进行的工作。

3)20世纪80年代-90年代:第二次研究高潮 进入20世纪80年代,神经网络研究进入高潮。这个时期最具有标志性的人物是美国加州工学院的物理学家John Hopfield。他于1982年和1984年在美国科学院院刊上发表了两篇文章,提出了模拟人脑的神经网络模型,即最著名的Hopfield模型。Hopfield网络是一个互连的非线性动力学网络,它解决问题的方法是一种反复运算的动态过程,这是符号逻辑处理方式做不具备的性质。20世纪80年代后期到90年代初,神经网络系统理论形成了发展的热点,多种模型、算法和应用被提出,研究经费重新变得充足,使得研究者们完成了很多有意义的工作。

神经网络的现状

进入20世纪90年代以来,神经网络由于应用面还不够宽,结果不够精确,存在可信度问题,从而进入了认识与应用研究期。

1)开发现有模型的应用,并在应用中根据实际运行情况对模型、算法加以改造,以提高网络的训练速度和运行的准确度。

2)充分发挥两种技术各自的优势是一个有效方法。

3)希望在理论上寻找新的突破,建立新的专用/通用模型和算法。 4)进一步对生物神经系统进行研究,不断地丰富对人脑的认识。

1.4 神经网络的应用

神经网络理论的应用取得了令人瞩目的发展,特别是在人工智能、自动控制、计算机科学、信息处理、机器人、模式识别、CAD/CAM等方面都有重大的应用实例。下面列出一些主要应用领域:

(1)模式识别和图像处理。印刷体和手写字符识别、语音识别、签字识别、指纹识别、人体病理分析、目标检测与识别、图像压缩和图像复制等。

(2)控制和优化。化工过程控制、机器人运动控制、家电控制、半导体生产中掺杂控制、石油精炼优化控制和超大规模集成电路布线设计等。

(3)预报和智能信息管理。股票市场预测、地震预报、有价证券管理、借贷风险分析、IC卡管理和交通管理。

(4)通信。自适应均衡、回波抵消、路由选择和ATM网络中的呼叫接纳识别和控制。

(5)空间科学。空间交汇对接控制、导航信息智能管理、飞行器制导和飞行程序优化管理等。

2神经网络结构及BP神经网络 2.1 神经元与网络结构

人工神经网络(artificial neural network,ANN)是模仿生物神经网络功能的一种经验模型。生物神经元受到传入的刺激,其反应又从输出端传到相联的其它神经元,输入和输出之间的变换关系一般是非线性的。神经网络是由若干简单(通常是自适应的)元件及其层次组织,以大规模并行连接方式构造而成的网络,按照生物神经网络类似的方式处理输入的信息。模仿生物神经网络而建立的人工神经网络,对输入信号有功能强大的反应和处理能力。

神经网络是由大量的处理单元(神经元)互相连接而成的网络。为了模拟大脑的基本特性,在神经科学研究的基础上,提出了神经网络的模型。但是,实际上神经网络并没有完全反映大脑的功能,只是对生物神经网络进行了某种抽象、简化和模拟。神经网络的信息处理通过神经元的互相作用来实现,知识与信息的存储表现为网络元件互相分布式的物理联系。神经网络的学习和识别取决于各种神经元连接权系数的动态演化过程。

若干神经元连接成网络,其中的一个神经元可以接受多个输入信号,按照一定的规则转换为输出信号。由于神经网络中神经元间复杂的连接关系和各神经元传递信号的非线性方式,输入和输出信号间可以构建出各种各样的关系,因此可以用来作为黑箱模型,表达那些用机理模型还无法精确描述、但输入和输出之间确实有客观的、确定性的或模糊性的规律。因此,人工神经网络作为经验模型的一种,在化工生产、研究和开发中得到了越来越多的用途。

2.1.1 生物神经元

人脑大约由1012个神经元组成,神经元互相连接成神经网络。神经元是大脑处理信息的基本单元,以细胞体为主体,由许多向周围延伸的不规则树枝状纤维构成的神经细胞,其形状很像一棵枯树的枝干。它主要由细胞体、树突、轴突和突触(Synapse,又称神经键)组成。 如图1所示。

图1生物神经元

从神经元各组成部分的功能来看,信息的处理与传递主要发生在突触附近。当神经元细胞体通过轴突传到突触前膜的脉冲幅度达到一定强度,即超过其阈值电位后,突触前膜将向突触间隙释放神经传递的化学物质。

2.1.2 人工神经元

归纳一下生物神经元传递信息的过程:生物神经元是一个多输入、单输出单元。常用的人工神经元模型可用图2模拟。

图2 人工神经元(感知器)示意图

当神经元j有多个输入xi(i=1,2,…,m)和单个输出yj时,输入和输出的关系可表示为: msjwijxij i1 yjf(sj) 其中j为阈值,wij为从神经元i到神经元j的连接权重因子,f( )为传递函数,或称激励函数。

2.1.3人工神经网络的构成

神经元的模型确定之后,一个神经网络的特性及能力主要取决于网络的拓扑结构及学习方法。

神经网络连接的几种基本形式: 1)前向网络

前向网络结构如图3所示,网络中的神经元是分层排列的,每个神经元只与前一层的神经元相连接。神经元分层排列,分别组成输入层、中间层(也称为隐含层,可以由若干层组成)和输出层。每一层的神经元只接受来自前一层神经元的输入,后面的层对前面的层没有信号反馈。输入模式经过各层次的顺序传播,最后在输出层上得到输出。感知器网络和BP网络均属于前向网络。

图3 前向网络结构

2)从输出到输入有反馈的前向网络

其结构如图4所示,输出层对输入层有信息反馈,这种网络可用于存储某种模式序列,如神经认知机和回归BP网络都属于这种类型。

图4有反馈的前向网络结构

3) 层内互连前向网络 其结构如图5所示,通过层内神经元的相互结合,可以实现同一层神经元之间的横向抑制或兴奋机制。这样可以限制每层内可以同时动作的神经元素,或者把每层内的神经元分为若干组,让每一组作为一个整体进行运作。例如,可利用横向抑制机理把某层内的具有最大输出的神经元挑选出来,从而抑制其他神经元,使之处于无输出状态。

图5有相互结合的前向网络结构

4) 相互结合型网络

相互结合型网络结构如图6所示,这种网络在任意两个神经元之间都可能有连接。Hopfield 网络和Boltzmann 机均属于这种类型。在无反馈的前向网络中,信号一旦通过某神经元,该神经元的处理就结束了。而在相互结合网络中,信号要在神经元之间反复传递,网络处于一种不断变化状态的动态之中。信号从某初始状态开始,经过若干次变化,才会达到某种平衡状态。根据网络的结构和神经元的特性,网络的运行还有可能进入周期振荡或其他如混沌平衡状态。

图6结合型网络结构

综上,可知神经网络有分层网络、层内连接的分层网络、反馈连接的分层网络、互连网络等四种结构,其神经网络模型有感知器网络,线性神经网络,BP神经网络,径向基函数网络,反馈神经网络等,本文主要学习研究了BP神经网络,以及BP神经网络在函数逼近和样本含量估计两个实例中的应用分析。

2.2 BP神经网络及其原理

2.2.1 BP神经网络定义

BP (Back Propagation)神经网络是一种神经网络学习算法。其由输入层、中间层、输出层组成的阶层型神经网络,中间层可扩展为多层。相邻层之间各神经元进行全连接,而每层各神经元之间无连接,网络按有教师示教的方式进行学习,当一对学习模式提供给网络后,各神经元获得网络的输入响应产生连接权值(Weight)。然后按减小希望输出与实际输出误差的方向,从输出层经各中间层逐层修正各连接权,回到输入层。此过程反复交替进行,直至网络的全局误差趋向给定的极小值,即完成学习的过程。

2.2.2 BP神经网络模型及其基本原理

BP网络是一种多层前馈神经网络,由输入层、隐层和输出层组成。图7为一个典型的三层BP网络的拓扑结构,层与层之间采用全互连方式,同一层之间不存在相互连接,隐层可以有一层或多层。层与层之间有两种信号在流通:一种是工作信号(用实线表示),它是施加输入信号后向前传播直到在输出端产生实际输出的信号,是输入和权值的函数。另一种是误差信号(用虚线表示),网络实际输出与期望输出间的差值即为误差,它由输出端开始逐层向后传播。BP网络的学习过程程由前向计算过程和误差反向传播过程组成。在前向计算过程中,输入量从输入层经隐层逐层计算,并传向输出层,每层神经元的状态只影响下一层神经元的状态。如输出层不能得到期望的输出,则转入误差反向传播过程,误差信号沿原来的连接通路返回,逐次调整网络各层的权值和阈值,直至到达输入层,再重复向计算。这两个过程一次反复进行,不断调整各层的权值和阈值,使得网络误差最小或达到人们所期望的要求时,学习过程结束。

图7 典型Bp网络模型

生物神经元信号的传递是通过突触进行的一个复杂的电化学等过程, 在人工神经网络中是将其简化模拟成一组数字信号通过一定的学习规则而不断变动更新的过程,这组数字储存在神经元之间的连接权重。网络的输入层模拟的是神经系统中的感觉神经元,它接收输入样本信号。输入信号经输入层输入, 通过隐含层的复杂计算由输出层输出,输出信号与期望输出相比较,若有误差,再将误差信号反向由输出层通过隐含层处理后向输入层传播。在这个过程中,误差通过梯度下降算法,分摊给各层的所有单元,从而获得各单元的误差信号,以此误差信号为依据修正各单元权值,网络权值因此被重新分布。此过程完成后, 输入信号再次由输入层输入网络,重复上述过程。这种信号正向传播与误差反向传播的各层权值调整过程周而复始地进行着,直到网络输出的误差减少到可以接受的程度,或进行到预先设定的学习次数为止。权值不断调整的过程就是网络的学习训练过程。

BP 神经网络的信息处理方式具有如下特点:

1)信息分布存储。人脑存储信息的特点是利用突触效能的变化来调整存储内容, 即信息存储在神经元之间的连接强度的分布上, BP神经网络模拟人脑的这一特点,使信息以连接权值的形式分布于整个网络。

2) 信息并行处理。人脑神经元之间传递脉冲信号的速度远低于冯·诺依曼计算机的工作速度,但是在很多问题上却可以做出快速的判断、决策和处理,这是由于人脑是一个大规模并行与串行组合的处理系统。BP神经网络的基本结构模仿人脑,具有并行处理的特征,大大提高了网络功能。

3)具有容错性。生物神经系统部分不严重损伤并不影响整体功能,BP神经网络也具有这种特性,网络的高度连接意味着少量的误差可能不会产生严重的后果,部分神经元的损伤不破坏整体,它可以自动修正误差。这与现代计算机的脆弱性形成鲜明对比。

4)具有自学习、自组织、自适应的能力。BP神经网络具有初步的自适应与自组织能力,在学习或训练中改变突触权值以适应环境,可以在使用过程中不断学习完善自己的功能,并且同一网络因学习方式的不同可以具有不同的功能,它甚至具有创新能力,可以发展知识,以至超过设计者原有的知识水平。

2.3 BP神经网络的主要功能

目前,在人工神经网络的实际应用中。绝大部分的神经网络模型都采用BP神经网络及其变化形式。它也是前向网络的核心部分,体现了人工神经网络的精华。

BP网络主要用于以下四方面。

(1)函数逼近:用输入向量和相应的输出向量训练一个网络以逼近一个函数。

(2)模式识别:用一个待定的输出向量将它与输入向量联系起来。 (3)分类:把输入向量所定义的合适方式进行分类。 (4)数据压缩:减少输出向量维数以便传输或存储。

3.基于matlab的BP神经网络的非线性函数拟合

3.1运用背景

系统状态方程复杂的非线性系统,难以用数学方法精确建模。在这种情况下,可以建立BP神经网络表达这些非线性系统。该方法把未知系统看成是一个黑箱,首先用系统输入输出数据训练BP神经网络,使网络能够表达该未知函数,然后就可以用训练好的BP神经网络预测系统输出。

先取出若干组系统的输入输出数据对BP网络进行有效学习,然后就可以用BP网络来表达这个系统,在知道系统输入参数的情况下,可以网络来预测系统的输出值。本案例就是用BP网络来拟合一个标准测试函数,来说明BP网络的拟合能力,并探讨了BP网络在使用中注意的几个问题。

本案例拟合的非线性函数为

y=x1^2+x2^2

3.2模型建立

基于BP神经网络的非线性函数拟合算法流程可以分为BP神经网络构建、BP神经网络训练和BP神经网络预测三步。

BP神经网络模块构建中确定神经网路的结构以及学习方式,根据拟合函数的形式,采用神经网络的格式为:输入层有两个节点,输出层有一个节点,隐含层有五个节点,隐含层传递函数是‘tansig’函数,输出层传递函数是‘purlin’函数。

BP神经网络构建根据拟合非线性函数特点确定BP神经网络结构,由于该非线性函数有两个输入参数,一个输出参数,所以BP神经网络结构即输入层有2个结点,中间层有5个结点,输出层有1个结点。

BP神经网络训练用非线性函数输入输出数据训练神经网络,使训练后的网络能够预测非线性函数输出。从非线性函数中随机得到2000组输入输出数据,从中随机选择1900组作为训练数据,用于网络训练,100组作为测试数据,用于测试网络的拟合性能。神经网络预测用训练好的网络预测函数输出,并对预测结果进行分析。

BP网络来拟合一个函数,说明BP网络在函数拟合中的作用。

训练好的数据对网络性能进行预测,从而判断网络拟合函数效果。

3.3 MatLab实现

1.BP神经网络工具箱函数

Matlab软件中包含Matlab神经网络工具箱。它是以人工神经网络理论为基础,用Matlab语言构造出了该理论所涉及的公式运算、矩阵操作和方程求解等大部分子程序以用于神经网络的设计和训练。用户只需根据自己的需要调用相关的子程序,即可以完成包括网络结构设计、权值初始化、网络训练及结果输出等在内的一系列工作,免除编写复杂庞大程序的困扰。目前,Matlab神经网络工具包包括的网络有感知器、线性网络、BP神经网络、径向基网络、自组织网络和回归网络等。BP神经网络主要用到newff、sim和train3个神经网络函数,各函数解释如下。

1、newff:BP神经网络参数设置函数

函数功能:构建一个BP神经网络。

函数形式:net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)

P:输入数据矩阵。 T:输出数据矩阵。 S:隐含层结点数。

TF:结点传递函数,包括硬限幅传递函数hardlim,对称硬限幅传递函数hardlims,线性传递函数pureline,正切S型传递函数tansig,对数S型传递函数logsig。

BTF:训练函数,包括梯度下降BP算法训练函数traingd,动量反传的梯度下降BP算法训练函数traingdm,动态自适应学习率的梯度下降BP算法训练函数traingda,动量反传和动态自适应学习率的梯度下降BP算法训练函数traingdx,Levenberg_Marquardt的BP算法训练函数trainlm。

BLF:网络学习函数,包括BP学习规格learngd,带动量项的BP学习规则learngdm。

PF:性能分析函数,包括均值绝对误差性能分析函数mae,均方差性能分析函数mse。

IPF:输入处理函数。 OPF:输出处理函数。 DDF:验证数据划分函数。

一般在使用过程中设置前面6个参数,后面4个参数采用系统默认参数。

2、train:BP神经网络训练函数

函数功能:用训练数据训练BP神经网络。

函数形式:[net,tr] = train(NET,X,T,Pi,Ai) NET:待训练网络。 X:输入数据。 T:输出数据。

Pi:初始化输入层条件。 Ai:初始化输出层条件。 net:训练好的网络。 tr:训练过程记录。

一般在使用过程中设置前面3个参数,后面2个参数采用系统默认参数。

3、sim:BP神经网络预测函数、

函数功能:用训练好的BP神经网络预测函数输出。 函数形式:y = sim(net,x)

net:训练好的网络。 x:输入数据。 y:网络预测数据。

2.实验结果:实际输出数据和神经网络的预测输出之间的结果对比图

优势分析:

神经网络预测模块既用训练好的数据对网络性能进行预测,从而判断网络拟合函数效果。

参考文献:

[1] 李晓慧.《基于MATLAB的BP神经网络的应用》[J]. 科技信息, 2010,(26) [2] 郝中华.《B P神经网络的非线性思想》. 洛阳师范学院学报2008.3(4) [3] 张玲,张钹.《人工神经网络理及应用》. 浙江:浙江科技大学出版社,1997.5:20-62

[4] 蒋宗礼.《人工神经网络导论》. 高等教育出版社,2001.5:15-90 [5] 闻新、周露、王丹力、熊晓英.《MATLAB神经网络应用设计.科学出版社》,2001.5:10-50

[6] 葛哲学、孙志强编著 .《神经网络与matlab2007实现》. 北京:电子工业出版社,2007.9:1-5

附录:

程序代码:

%% 清空环境变量 clc clear

%% 训练数据预测数据提取及归一化 %导入输入输出数据

load data input output

%从1到2000间随机排序 k=rand(1,2000); [m,n]=sort(k);

%随机选择1900组训练数据和100组预测数据 input_train=input(n(1:1900),:)'; output_train=output(n(1:1900)); input_test=input(n(1901:2000),:)'; output_test=output(n(1901:2000));

%训练数据归一化

[inputn,inputps]=mapminmax(input_train); [outputn,outputps]=mapminmax(output_train);

%% BP网络训练

%初始化BP网络结构

net=newff(inputn,outputn,5);

%网络参数配置(迭代次数、学习率、目标) net.trainParam.epochs=100; net.trainParam.lr=0.1;

net.trainParam.goal=0.00004;

%网络训练

net=train(net,inputn,outputn);

%% BP网络预测 %预测数据归一化

inputn_test=mapminmax('apply',input_test,inputps);

%网络预测输出

an=sim(net,inputn_test);

%网络输出反归一化

BPoutput=mapminmax('reverse',an,outputps);

%% 结果分析

figure(1)

plot(BPoutput,':og') hold on

plot(output_test,'-*');

legend('预测输出','期望输出')

title('BP网络预测输出','fontsize',12) ylabel('函数输出','fontsize',12) xlabel('样本','fontsize',12) %预测误差

error=BPoutput-output_test;

figure(2)

plot(error,'-*')

title('BP网络预测误差','fontsize',12) ylabel('误差','fontsize',12) xlabel('样本','fontsize',12)

figure(3)

plot((output_test-BPoutput)./BPoutput,'-*'); title('神经网络预测误差百分比')

errorsum=sum(abs(error))

因篇幅问题不能全部显示,请点此查看更多更全内容