ArtificialNeuralNetwork(ANN)第七章人工神经网络7.1引言一.产生的背景非线性复杂数学问题求解的需求股票预测故障检测气象与灾害(地震/水文/农业生产等)预报预测函数逼近与非线性拟合方案与决策:排课表,生产调度等各类模式识别问题:语音/字符/图像/视频人工智能(如打牌下棋麻将等)二.人脑思维及神经系统的研究进展人脑:140亿神经元三.人工神经网络研究进展计算机科学的发展1943提出神经元模型1949提出学习算法及规则1957提出感知器-人工神经元模型1969感知器发表,串行计算机全胜1982建立人工神经网络模型1986提出BP神经网络算法图中,xi(i=1,2,…,n)为加于输入端(突触)上的输入信号;ωi为相应的突触连接权系数,它是模拟突触传递强度的—个比例系数,∑表示突触后信号的空间累加;θ表示神经元的阈值,σ表示神经元的响应函数。该模型的数学表达式为:niiixs1)(sy7.2人工神经元与感知器一.人工神经元模型与生物神经元的区别:(1)生物神经元传递的信息是脉冲,而上述模型传递的信息是模拟电压。(2)由于在上述模型中用一个等效的模拟电压来模拟生物神经元的脉冲密度,所以在模型中只有空间累加而没有时间累加(可以认为时间累加已隐含在等效的模拟电压之中)。(3)上述模型未考虑时延、不应期和疲劳等。人工神经元的一般模型神经元模型及其简化模型如图所示,输入向量、权值矩阵,与阈值的加权和(内积运算)送入累加器,形成净输入TRppp],,[p21],,,[w,12,11,1R响应函数的基本作用:1、控制输入对输出的激活作用;2、对输入、输出进行函数转换;3、将可能无限域的输入变换成指定的有限范围内的输出。)(sy根据响应函数的不同,人工神经元有以下几种类型:阈值单元响应函数如图a所示,线性单元其响应函数如图b所示非线性单元常用响应函数为S型(Sigmoid)函数,如图c、d所示二.感知器X1X2Y1Y2W11W12W21W22举例:逻辑运算人工神经网络的构成单个神经元的功能是很有限的,人工神经网络只有用许多神经元按一定规则连接构成的神经网络才具有强大的功能。神经元的模型确定之后,一个神经网络的特性及能力主要取决于网络的拓扑结构及学习方法。7.3人工神经网络的数学模型1.前向网络网络的结构如图所示。网络中的神经元是分层排列的,每个神经元只与前一层的神经元相连接。最右一层为输出层,隐含层的层数可以是一层或多层。前向网络在神经网络中应用很广泛,例如,感知器就属于这种类型。一.基本结构2.反馈前向网络网络的本身是前向型的,与前一种不同的是从输出到输入有反馈回路。3.内层互连前馈网络通过层内神经元之间的相互连接,可以实现同一层神经元之间横向抑制或兴奋的机制,从而限制层内能同时动作的神经数,或者把层内神经元分为若干组,让每组作为一个整体来动作。一些自组织竞争型神经网络就属于这种类型。4.互连网络互连网络有局部互连和全互连两种。全互连网络中的每个神经元都与其他神经元相连。局部互连是指互连只是局部的,有些神经元之间没有连接关系。Hopfield网络和Boltzmann机属于互连网络的类型。二.神经网络的学习与训练方式神经网络(学习系统)误差分析P输入实际输出e误差信号t有教师监督学习方式有教师学习(监督学习)(1)均方误差mse(meansquarederror)nateEmsenkkk12)(][误差信号的不同定义:(2)平均绝对误差mae(meanabsoluteerror)natmaenkkk1||(3)误差平方和sse(sumsquarederror)nkkkatsse12)(无教师学习(无监督学习)神经网络(学习系统)P输入a输出无教师监督学习方式三.应用神经网络求解问题的一般过程确定信息表达方式数据样本已知且数据样本之间相互关系不确定输入数据按照模式进行分类数据样本的预处理将数据样本分为训练样本和测试样本确定网络模型选择模型的类型和结构,也可对原网络进行变形和扩充确定输入输出神经元数目选择合理的训练算法,确定合适的训练步数,指定适当的训练目标误差训练模型利用训练样本进行机器训练,确定网络参数网络测试选择合适的测试样本进行实际测试7.4BP神经网络(ErrorBackPropogation)见笔记BP神经网络的训练步骤1设置权系数初始数值(一般是0~1之间的随机数)2提供训练样本3从前向后计算各层各单元输出4计算输出层误差5判断是否满足终止条件:如满足,训练结束,否则继续下一步骤6从后向前计算各隐层误差7计算并保存各权值修正量8修正各权值系数,返回步骤3.7.5人工神经网络MATLAB工具箱一.引言MATLAB神经网络工具箱neuralnetworktoolbox提供了图形用户界面(graphuserinterface,GUI),从而使用户在图形界面上,通过与计算机的交互操作设计和仿真神经网络,使得神经网络的设计和仿真变得简单易学.二.图形用户界面简介函数nntool的详解见help文档。在MATLAB命令窗口(commandwindow)输入nntool,按Enter后即可打network\datamanager(网络/数据管理器窗补如图1所示。)(或点击Start/Toolboxes/NeuralNetwork)图1图形用户界面三.四.五.MATLAB工具箱中的常用函数线性神经网络函数初始化:initlin设计:solvelin仿真:simulin离线训练:trainwh在线自适应训练:adaptwh学习规则:learnwhBP网络函数:initff:初始化不超过3层的前向网络;simuff:仿真不超过3层的前向网络;trainbp,trainbpx,trainlm:训练BPtrainbp:最慢;trainbpx:次之;trainlm:速度最快,但需要更多的存储空间。learnbp:学习规则自组织网络初始化:initsm仿真:simuc训练:trainc:利用竞争规则训练trainsm:利用Kohonen规则训练反馈网络(Hopfield网络)仿真:simuhop设计:solvehopsolvehop设计Hopfield网络solvelin设计线性网络rands产生对称随机数learnbp反向传播学习规则learnhHebb学习规则learnp感知层学习规则learnwhWidrow-Hoff学习规则initlin线性层初始化initp感知层初始化initsm自组织映射初始化plotsm绘制自组织映射图trainbp利用反向传播训练前向网络trainp利用感知规则训练感知层trainwh利用Widrow-Hoff规则训练线性层trainsm利用Kohonen规则训练自组织映射六.神经网络工具箱的使用流程nntool使用过程step.1数据构造与预处理step.2训练数据导入nntoolstep.3建立网络step.4训练网络step.5仿真网络step.6输出与存储模拟结果step.7加载先前仿真过的网络于nntoolstep.1数据构造与预处理step.2训练数据导入nntool根据数据的多少,数据文件的格式等获取样本数据的方法有:1)直接输入数据:通过采用元素列表方式输入。适用于样本数目较少时。New…按钮2)ImportfromMatlabWorkspace:Import…按钮。3)Loadfromdiskfile:适合从M-file文件中读取数据。Import…按钮。ImportfromMatlabWorkspaceLoadfromdiskfilestep.3建立网络Network/DataManager窗口中New…打开CreateNetworkorData,如右图。Name:定义网络名为network1选择Input/TargetData,设置训练函数等参数。View:查看模型step.4训练网络Network/DataManager窗口中选中network1,双击或Open…。打开如下图在Train中,见下页图,可以看出,该窗口为一个多页面对话框,在Train页面有2个子页面:●Training:训练数据(TrainingData)的输入向量(Inputs)选择为p,目标向量(Targets)选择为t;训练结果(TrainingResults)的输出变量(outputs)和误差性能变量(Errors)采用系统自动生成的network1_output,和network1_errors,当然它们也可以由用户重新定义。●TrainingParameters:设置训练的各种参数,这要根据具体训练和学习函数进行确定,相关内容可参看各神经网络模型的训练和学习算法。本例采用其默认值即可。epochs:训练的最大循环次数goal:性能目标max_fail:最大验证数据失败的次数mem_reduc:降低内存需求的系数min_grad:最小性能梯度mu:动量的初始值mu_dec:动量减少系数mu_inc:动量增加系数mu_max:动量最大值show:每格多少训练循环次数会显示训练过程time:最大的训练所须时间,单位为秒以上过程完成后,单击该页面的TrainNetwork按钮,开始训练,其训练过程如图9所示。图9训练误差性能曲线Algorithms:相关参数Progress:终止条件(只要一个满足则停止)Plots:各种图形曲线训练完成后,在Network/DataManager窗口可以看到,在Outputs区域显示出输出变量名network1_outputs,在Errors区域显示出误差性能变量名network1_errors。选中变量名,单击该窗口的Open按钮,则弹出数据(Data)窗口,在该窗口可以查看到该所选中变量的具体数据。step.5仿真Network/DataManager窗口中选中network1,双击或Open…。在Simulate中,见图,将仿真数据选择为testX,仿真结果选择为network1_outputs_sim;Targets选为TestY,误差errors为network1_errors_sim。单击SimulateNetwork按钮,则在Network/DataManager窗口的Outputs和Errors区域分别显示出相应的仿真结果,选中变量名,单击该窗口的Open按钮,弹出数据窗口,在该窗口可以查看仿真结果的具体数据,如图所示。step.6结果Export和SaveNetwork/DataManager窗口中点击Export…选择一个或多个变量,Export(导出至Workspace)或Save(存储为*.mat文件)step.7加载先前仿真过的网络于nntool假设已通过step6将先前的网络等数据保存至mat文件里,那么可以通过Import,将网络和数据导入至nntool,过程同step.2中Loadfromdiskfile注意,MATLAB源文件名及路径名不能是汉字,否则导致读取文件失败。7.6.人工神经网络实际应用举例一.函数曲线拟合二.农业病虫害预测