BP(BackPropagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。
BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。
BP神经网络模型拓扑结构包括输入层(input)、隐层(hiddenlayer)和输出层(outputlayer)。附件就是利用神经网络工具箱构建BP神经网络进行预测的实例。
如果要用可视化工具,可以在命令窗口输入nntool.。
谷歌人工智能写作项目:小发猫
网络的训练过程与使用过程了两码事AI爱发猫。
比如BP应用在分类,网络的训练是指的给你一些样本,同时告诉你这些样本属于哪一类,然后代入网络训练,使得这个网络具备一定的分类能力,训练完成以后再拿一个未知类别的数据通过网络进行分类。
这里的训练过程就是先伪随机生成权值,然后把样本输入进去算出每一层的输出,并最终算出来预测输出(输出层的输出),这是正向学习过程;最后通过某种训练算法(最基本的是感知器算法)使得代价(预测输出与实际输出的某范数)函数关于权重最小,这个就是反向传播过程。
您所说的那种不需要预先知道样本类别的网络属于无监督类型的网络,比如自组织竞争神经网络。
一、BP模型概述误差逆传播(ErrorBack-Propagation)神经网络模型简称为BP(Back-Propagation)网络模型。
PallWerbas博士于1974年在他的博士论文中提出了误差逆传播学习算法。完整提出并被广泛接受误差逆传播学习算法的是以Rumelhart和McCelland为首的科学家小组。
他们在1986年出版“ParallelDistributedProcessing,ExplorationsintheMicrostructureofCognition”(《并行分布信息处理》)一书中,对误差逆传播学习算法进行了详尽的分析与介绍,并对这一算法的潜在能力进行了深入探讨。
BP网络是一种具有3层或3层以上的阶层型神经网络。上、下层之间各神经元实现全连接,即下层的每一个神经元与上层的每一个神经元都实现权连接,而每一层各神经元之间无连接。
网络按有教师示教的方式进行学习,当一对学习模式提供给网络后,神经元的激活值从输入层经各隐含层向输出层传播,在输出层的各神经元获得网络的输入响应。
在这之后,按减小期望输出与实际输出的误差的方向,从输入层经各隐含层逐层修正各连接权,最后回到输入层,故得名“误差逆传播学习算法”。
随着这种误差逆传播修正的不断进行,网络对输入模式响应的正确率也不断提高。
BP网络主要应用于以下几个方面:1)函数逼近:用输入模式与相应的期望输出模式学习一个网络逼近一个函数;2)模式识别:用一个特定的期望输出模式将它与输入模式联系起来;3)分类:把输入模式以所定义的合适方式进行分类;4)数据压缩:减少输出矢量的维数以便于传输或存储。
在人工神经网络的实际应用中,80%~90%的人工神经网络模型采用BP网络或它的变化形式,它也是前向网络的核心部分,体现了人工神经网络最精华的部分。
二、BP模型原理下面以三层BP网络为例,说明学习和应用的原理。
1.数据定义P对学习模式(xp,dp),p=1,2,…,P;输入模式矩阵X[N][P]=(x1,x2,…,xP);目标模式矩阵d[M][P]=(d1,d2,…,dP)。
三层BP网络结构输入层神经元节点数S0=N,i=1,2,…,S0;隐含层神经元节点数S1,j=1,2,…,S1;神经元激活函数f1[S1];权值矩阵W1[S1][S0];偏差向量b1[S1]。
输出层神经元节点数S2=M,k=1,2,…,S2;神经元激活函数f2[S2];权值矩阵W2[S2][S1];偏差向量b2[S2]。
学习参数目标误差ϵ;初始权更新值Δ0;最大权更新值Δmax;权更新值增大倍数η+;权更新值减小倍数η-。
2.误差函数定义对第p个输入模式的误差的计算公式为中国矿产资源评价新技术与评价新模型y2kp为BP网的计算输出。
3.BP网络学习公式推导BP网络学习公式推导的指导思想是,对网络的权值W、偏差b修正,使误差函数沿负梯度方向下降,直到网络输出误差精度达到目标精度要求,学习结束。
各层输出计算公式输入层y0i=xi,i=1,2,…,S0;隐含层中国矿产资源评价新技术与评价新模型y1j=f1(z1j),j=1,2,…,S1;输出层中国矿产资源评价新技术与评价新模型y2k=f2(z2k),k=1,2,…,S2。
输出节点的误差公式中国矿产资源评价新技术与评价新模型对输出层节点的梯度公式推导中国矿产资源评价新技术与评价新模型E是多个y2m的函数,但只有一个y2k与wkj有关,各y2m间相互独立。
其中中国矿产资源评价新技术与评价新模型则中国矿产资源评价新技术与评价新模型设输出层节点误差为δ2k=(dk-y2k)·f2′(z2k),则中国矿产资源评价新技术与评价新模型同理可得中国矿产资源评价新技术与评价新模型对隐含层节点的梯度公式推导中国矿产资源评价新技术与评价新模型E是多个y2k的函数,针对某一个w1ji,对应一个y1j,它与所有的y2k有关。
因此,上式只存在对k的求和,其中中国矿产资源评价新技术与评价新模型则中国矿产资源评价新技术与评价新模型设隐含层节点误差为中国矿产资源评价新技术与评价新模型则中国矿产资源评价新技术与评价新模型同理可得中国矿产资源评价新技术与评价新模型4.采用弹性BP算法(RPROP)计算权值W、偏差b的修正值ΔW,Δb1993年德国MartinRiedmiller和HeinrichBraun在他们的论文“ADirectAdaptiveMethodforFasterBackpropagationLearning:TheRPROPAlgorithm”中,提出ResilientBackpropagation算法——弹性BP算法(RPROP)。
这种方法试图消除梯度的大小对权步的有害影响,因此,只有梯度的符号被认为表示权更新的方向。
权改变的大小仅仅由权专门的“更新值”确定中国矿产资源评价新技术与评价新模型其中表示在模式集的所有模式(批学习)上求和的梯度信息,(t)表示t时刻或第t次学习。
权更新遵循规则:如果导数是正(增加误差),这个权由它的更新值减少。如果导数是负,更新值增加。中国矿产资源评价新技术与评价新模型RPROP算法是根据局部梯度信息实现权步的直接修改。
对于每个权,我们引入它的各自的更新值,它独自确定权更新值的大小。
这是基于符号相关的自适应过程,它基于在误差函数E上的局部梯度信息,按照以下的学习规则更新中国矿产资源评价新技术与评价新模型其中0<η-<1<η+。
在每个时刻,如果目标函数的梯度改变它的符号,它表示最后的更新太大,更新值应由权更新值减小倍数因子η-得到减少;如果目标函数的梯度保持它的符号,更新值应由权更新值增大倍数因子η+得到增大。
为了减少自由地可调参数的数目,增大倍数因子η+和减小倍数因子η–被设置到固定值η+=1.2,η-=0.5,这两个值在大量的实践中得到了很好的效果。
RPROP算法采用了两个参数:初始权更新值Δ0和最大权更新值Δmax当学习开始时,所有的更新值被设置为初始值Δ0,因为它直接确定了前面权步的大小,它应该按照权自身的初值进行选择,例如,Δ0=0.1(默认设置)。
为了使权不至于变得太大,设置最大权更新值限制Δmax,默认上界设置为Δmax=50.0。在很多实验中,发现通过设置最大权更新值Δmax到相当小的值,例如Δmax=1.0。
我们可能达到误差减小的平滑性能。5.计算修正权值W、偏差b第t次学习,权值W、偏差b的的修正公式W(t)=W(t-1)+ΔW(t),b(t)=b(t-1)+Δb(t),其中,t为学习次数。
6.BP网络学习成功结束条件每次学习累积误差平方和中国矿产资源评价新技术与评价新模型每次学习平均误差中国矿产资源评价新技术与评价新模型当平均误差MSE<ε,BP网络学习成功结束。
7.BP网络应用预测在应用BP网络时,提供网络输入给输入层,应用给定的BP网络及BP网络学习得到的权值W、偏差b,网络输入经过从输入层经各隐含层向输出层的“顺传播”过程,计算出BP网的预测输出。
8.神经元激活函数f线性函数f(x)=x,f′(x)=1,f(x)的输入范围(-∞,+∞),输出范围(-∞,+∞)。一般用于输出层,可使网络输出任何值。
S型函数S(x)中国矿产资源评价新技术与评价新模型f(x)的输入范围(-∞,+∞),输出范围(0,1)。f′(x)=f(x)[1-f(x)],f′(x)的输入范围(-∞,+∞),输出范围(0,]。
一般用于隐含层,可使范围(-∞,+∞)的输入,变成(0,1)的网络输出,对较大的输入,放大系数较小;而对较小的输入,放大系数较大,所以可用来处理和逼近非线性的输入/输出关系。
在用于模式识别时,可用于输出层,产生逼近于0或1的二值输出。双曲正切S型函数中国矿产资源评价新技术与评价新模型f(x)的输入范围(-∞,+∞),输出范围(-1,1)。
f′(x)=1-f(x)·f(x),f′(x)的输入范围(-∞,+∞),输出范围(0,1]。
一般用于隐含层,可使范围(-∞,+∞)的输入,变成(-1,1)的网络输出,对较大的输入,放大系数较小;而对较小的输入,放大系数较大,所以可用来处理和逼近非线性的输入/输出关系。
阶梯函数类型1中国矿产资源评价新技术与评价新模型f(x)的输入范围(-∞,+∞),输出范围{0,1}。f′(x)=0。
类型2中国矿产资源评价新技术与评价新模型f(x)的输入范围(-∞,+∞),输出范围{-1,1}。f′(x)=0。
斜坡函数类型1中国矿产资源评价新技术与评价新模型f(x)的输入范围(-∞,+∞),输出范围[0,1]。中国矿产资源评价新技术与评价新模型f′(x)的输入范围(-∞,+∞),输出范围{0,1}。
类型2中国矿产资源评价新技术与评价新模型f(x)的输入范围(-∞,+∞),输出范围[-1,1]。中国矿产资源评价新技术与评价新模型f′(x)的输入范围(-∞,+∞),输出范围{0,1}。
三、总体算法1.三层BP网络(含输入层,隐含层,输出层)权值W、偏差b初始化总体算法(1)输入参数X[N][P],S0,S1,f1[S1],S2,f2[S2];(2)计算输入模式X[N][P]各个变量的最大值,最小值矩阵Xmax[N],Xmin[N];(3)隐含层的权值W1,偏差b1初始化。
情形1:隐含层激活函数f()都是双曲正切S型函数1)计算输入模式X[N][P]的每个变量的范围向量Xrng[N];2)计算输入模式X的每个变量的范围均值向量Xmid[N];3)计算W,b的幅度因子Wmag;4)产生[-1,1]之间均匀分布的S0×1维随机数矩阵Rand[S1];5)产生均值为0,方差为1的正态分布的S1×S0维随机数矩阵Randnr[S1][S0],随机数范围大致在[-1,1];6)计算W[S1][S0],b[S1];7)计算隐含层的初始化权值W1[S1][S0];8)计算隐含层的初始化偏差b1[S1];9))输出W1[S1][S0],b1[S1]。
情形2:隐含层激活函数f()都是S型函数1)计算输入模式X[N][P]的每个变量的范围向量Xrng[N];2)计算输入模式X的每个变量的范围均值向量Xmid[N];3)计算W,b的幅度因子Wmag;4)产生[-1,1]之间均匀分布的S0×1维随机数矩阵Rand[S1];5)产生均值为0,方差为1的正态分布的S1×S0维随机数矩阵Randnr[S1][S0],随机数范围大致在[-1,1];6)计算W[S1][S0],b[S1];7)计算隐含层的初始化权值W1[S1][S0];8)计算隐含层的初始化偏差b1[S1];9)输出W1[S1][S0],b1[S1]。
情形3:隐含层激活函数f()为其他函数的情形1)计算输入模式X[N][P]的每个变量的范围向量Xrng[N];2)计算输入模式X的每个变量的范围均值向量Xmid[N];3)计算W,b的幅度因子Wmag;4)产生[-1,1]之间均匀分布的S0×1维随机数矩阵Rand[S1];5)产生均值为0,方差为1的正态分布的S1×S0维随机数矩阵Randnr[S1][S0],随机数范围大致在[-1,1];6)计算W[S1][S0],b[S1];7)计算隐含层的初始化权值W1[S1][S0];8)计算隐含层的初始化偏差b1[S1];9)输出W1[S1][S0],b1[S1]。
(4)输出层的权值W2,偏差b2初始化1)产生[-1,1]之间均匀分布的S2×S1维随机数矩阵W2[S2][S1];2)产生[-1,1]之间均匀分布的S2×1维随机数矩阵b2[S2];3)输出W2[S2][S1],b2[S2]。
2.应用弹性BP算法(RPROP)学习三层BP网络(含输入层,隐含层,输出层)权值W、偏差b总体算法函数:Train3BP_RPROP(S0,X,P,S1,W1,b1,f1,S2,W2,b2,f2,d,TP)(1)输入参数P对模式(xp,dp),p=1,2,…,P;三层BP网络结构;学习参数。
(2)学习初始化1);2)各层W,b的梯度值,初始化为零矩阵。
(3)由输入模式X求第一次学习各层输出y0,y1,y2及第一次学习平均误差MSE(4)进入学习循环epoch=1(5)判断每次学习误差是否达到目标误差要求如果MSE<ϵ,则,跳出epoch循环,转到(12)。
(6)保存第epoch-1次学习产生的各层W,b的梯度值,(7)求第epoch次学习各层W,b的梯度值,1)求各层误差反向传播值δ;2)求第p次各层W,b的梯度值,;3)求p=1,2,…,P次模式产生的W,b的梯度值,的累加。
(8)如果epoch=1,则将第epoch-1次学习的各层W,b的梯度值,设为第epoch次学习产生的各层W,b的梯度值,。
(9)求各层W,b的更新1)求权更新值Δij更新;2)求W,b的权更新值,;3)求第epoch次学习修正后的各层W,b。
(10)用修正后各层W、b,由X求第epoch次学习各层输出y0,y1,y2及第epoch次学习误差MSE(11)epoch=epoch+1,如果epoch≤MAX_EPOCH,转到(5);否则,转到(12)。
(12)输出处理1)如果MSE<ε,则学习达到目标误差要求,输出W1,b1,W2,b2。2)如果MSE≥ε,则学习没有达到目标误差要求,再次学习。
(13)结束3.三层BP网络(含输入层,隐含层,输出层)预测总体算法首先应用Train3lBP_RPROP()学习三层BP网络(含输入层,隐含层,输出层)权值W、偏差b,然后应用三层BP网络(含输入层,隐含层,输出层)预测。
函数:Simu3lBP()。1)输入参数:P个需预测的输入数据向量xp,p=1,2,…,P;三层BP网络结构;学习得到的各层权值W、偏差b。
2)计算P个需预测的输入数据向量xp(p=1,2,…,P)的网络输出y2[S2][P],输出预测结果y2[S2][P]。四、总体算法流程图BP网络总体算法流程图见附图2。
五、数据流图BP网数据流图见附图1。
六、实例实例一全国铜矿化探异常数据BP模型分类1.全国铜矿化探异常数据准备在全国铜矿化探数据上用稳健统计学方法选取铜异常下限值33.1,生成全国铜矿化探异常数据。
2.模型数据准备根据全国铜矿化探异常数据,选取7类33个矿点的化探数据作为模型数据。
这7类分别是岩浆岩型铜矿、斑岩型铜矿、矽卡岩型、海相火山型铜矿、陆相火山型铜矿、受变质型铜矿、海相沉积型铜矿,另添加了一类没有铜异常的模型(表8-1)。3.测试数据准备全国化探数据作为测试数据集。
4.BP网络结构隐层数2,输入层到输出层向量维数分别为14,9、5、1。学习率设置为0.9,系统误差1e-5。没有动量项。表8-1模型数据表续表5.计算结果图如图8-2、图8-3。
图8-2图8-3全国铜矿矿床类型BP模型分类示意图实例二全国金矿矿石量品位数据BP模型分类1.模型数据准备根据全国金矿储量品位数据,选取4类34个矿床数据作为模型数据,这4类分别是绿岩型金矿、与中酸性浸入岩有关的热液型金矿、微细浸染型型金矿、火山热液型金矿(表8-2)。
2.测试数据准备模型样本点和部分金矿点金属量、矿石量、品位数据作为测试数据集。3.BP网络结构输入层为三维,隐层1层,隐层为三维,输出层为四维,学习率设置为0.8,系统误差1e-4,迭代次数5000。
表8-2模型数据4.计算结果结果见表8-3、8-4。表8-3训练学习结果表8-4预测结果(部分)续表。
。
人工神经网络,是一种旨在模仿人脑结构及其功能的信息处理系统,就是使用人工神经网络方法实现模式识别.可处理一些环境信息十分复杂,背景知识不清楚,推理规则不明确的问题,神经网络方法允许样品有较大的缺损和畸变.神经网络的类型很多,建立神经网络模型时,根据研究对象的特点,可以考虑不同的神经网络模型.前馈型BP网络,即误差逆传播神经网络是最常用,最流行的神经网络.BP网络的输入和输出关系可以看成是一种映射关系,即每一组输入对应一组输出.BP算法是最著名的多层前向网络训练算法,尽管存在收敛速度慢,局部极值等缺点,但可通过各种改进措施来提高它的收敛速度,克服局部极值现象,而且具有简单,易行,计算量小,并行性强等特点,目前仍是多层前向网络的首选算法.多层前向BP网络的优点:网络实质上实现了一个从输入到输出的映射功能,而数学理论已证明它具有实现任何复杂非线性映射的功能。
这使得它特别适合于求解内部机制复杂的问题;网络能通过学习带正确答案的实例集自动提取“合理的”求解规则,即具有自学习能力;网络具有一定的推广、概括能力。
多层前向BP网络的问题:从数学角度看,BP算法为一种局部搜索的优化方法,但它要解决的问题为求解复杂非线性函数的全局极值,因此,算法很有可能陷入局部极值,使训练失败;网络的逼近、推广能力同学习样本的典型性密切相关,而从问题中选取典型样本实例组成训练集是一个很困难的问题。
难以解决应用问题的实例规模和网络规模间的矛盾。这涉及到网络容量的可能性与可行性的关系问题,即学习复杂性问题;网络结构的选择尚无一种统一而完整的理论指导,一般只能由经验选定。
为此,有人称神经网络的结构选择为一种艺术。而网络的结构直接影响网络的逼近能力及推广性质。
因此,应用中如何选择合适的网络结构是一个重要的问题;新加入的样本要影响已学习成功的网络,而且刻画每个输入样本的特征的数目也必须相同;网络的预测能力(也称泛化能力、推广能力)与训练能力(也称逼近能力、学习能力)的矛盾。
一般情况下,训练能力差时,预测能力也差,并且一定程度上,随训练能力地提高,预测能力也提高。但这种趋势有一个极限,当达到此极限时,随训练能力的提高,预测能力反而下降,即出现所谓“过拟合”现象。
此时,网络学习了过多的样本细节,而不能反映样本内含的规律由于BP算法本质上为梯度下降法,而它所要优化的目标函数又非常复杂,因此,必然会出现“锯齿形现象”,这使得BP算法低效;存在麻痹现象,由于优化的目标函数很复杂,它必然会在神经元输出接近0或1的情况下,出现一些平坦区,在这些区域内,权值误差改变很小,使训练过程几乎停顿;为了使网络执行BP算法,不能用传统的一维搜索法求每次迭代的步长,而必须把步长的更新规则预先赋予网络,这种方法将引起算法低效。
由于目前研究的各种数学模型或多或少存在使用条件的局限性,或使用方法的复杂性等问题,预测效果均不十分理想,距离实际应用仍有较大差距。
NNT是Matlab中较为重要的一个工具箱,在实际应用中,BP网络用的最广泛。
神经网络具有综合能力强,对数据的要求不高,适时学习等突出优点,其操作简便,节省时间,网络初学者即使不了解其算法的本质,也可以直接应用功能丰富的函数来实现自己的目的。
因此,易于被基层单位预防工作者掌握和应用。
以下几个问题是建立理想的因素与疾病之间的神经网络模型的关键:(1)资料选取应尽可能地选取所研究地区系统连续的因素与疾病资料,最好包括有疾病高发年和疾病低发年的数据。
在收集影响因素时,要抓住主要影响伤寒、副伤寒的发病因素。
(2)疾病发病率分级神经网络预测法是按发病率高低来进行预测,在定义发病率等级时,要结合专业知识及当地情况而定,并根据网络学习训练效果而适时调整,以使网络学习训练达到最佳效果。
(3)资料处理问题在实践中发现,资料的特征往往很大程度地影响网络学习和训练的稳定性,因此,数据的应用、纳入、排出问题有待于进一步研究。
6.3.1人工神经网络的基本原理人工神经网络(ANN)是近年来发展起来的十分热门的交叉学科,它涉及生物、电子、计算机、数学和物理等学科,有着广泛的应用领域。
人工神经网络是一种自适应的高度非线性动力系统,在网络计算的基础上,经过多次重复组合,能够完成多维空间的映射任务。
神经网络通过内部连接的自组织结构,具有对数据的高度自适应能力,由计算机直接从实例中学习获取知识,探求解决问题的方法,自动建立起复杂系统的控制规律及其认知模型。
人工神经网络就其结构而言,一般包括输入层、隐含层和输出层,不同的神经网络可以有不同的隐含层数,但他们都只有一层输入和一层输出。
神经网络的各层又由不同数目的神经元组成,各层神经元数目随解决问题的不同而有不同的神经元个数。
6.3.2BP神经网络模型BP网络是在1985年由PDP小组提出的反向传播算法的基础上发展起来的,是一种多层次反馈型网络(图6.17),它在输入和输出之间采用多层映射方式,网络按层排列,只有相邻层的节点直接相互连接,传递之间信息。
在正向传播中,输入信息从输入层经隐含层逐层处理,并传向输出层,每层神经元的状态只影响下一层神经元的状态。
如果输出层不能得到期望的输出结果,则转入反向传播,将误差信号沿原来的连同通路返回,通过修改各层神经元的权值,使误差信号最小。
BP网络的学习算法步骤如下(图6.18):图6.17BP神经网络示意图图6.18BP算法流程图第一步:设置初始参数ω和θ,(ω为初始权重,θ为临界值,均随机设为较小的数)。
第二步:将已知的样本加到网络上,利用下式可算出他们的输出值yi,其值为岩溶地区地下水与环境的特殊性研究式中:xi为该节点的输入;ωij为从I到j的联接权;θj为临界值;yj为实际算出的输出数据。
第三步:将已知输出数据与上面算出的输出数据之差(dj-yj)调整权系数ω,调整量为ΔWij=ηδjxj式中:η为比例系数;xj为在隐节点为网络输入,在输出点则为下层(隐)节点的输出(j=1,2…,n);dj为已知的输出数据(学习样本训练数据);δj为一个与输出偏差相关的值,对于输出节点来说有δj=ηj(1-yj)(dj-yj)对于隐节点来说,由于它的输出无法进行比较,所以经过反向逐层计算有岩溶地区地下水与环境的特殊性研究其中k指要把上层(输出层)节点取遍。
误差δj是从输出层反向逐层计算的。各神经元的权值调整后为ωij(t)=ωij(t-1)+Vωij式中:t为学习次数。
这个算法是一个迭代过程,每一轮将各W值调整一遍,这样一直迭代下去,知道输出误差小于某一允许值为止,这样一个好的网络就训练成功了,BP算法从本质上讲是把一组样本的输入输出问题变为一个非线性优化问题,它使用了优化技术中最普遍的一种梯度下降算法,用迭代运算求解权值相当于学习记忆问题。
6.3.3BP神经网络模型在伤寒、副伤寒流行与传播预测中的应用伤寒、副伤寒的传播与流行同环境之间有着一定的联系。
根据桂林市1990年以来乡镇为单位的伤寒、副伤寒疫情资料,伤寒、副伤寒疫源地资料,结合现有资源与环境背景资料(桂林市行政区划、土壤、气候等)和社会经济资料(经济、人口、生活习惯等统计资料)建立人工神经网络数学模型,来逼近这种规律。
6.3.3.1模型建立(1)神经网络的BP算法BP网络是一种前馈型网络,由1个输入层、若干隐含层和1个输出层构成。
如果输入层、隐含层和输出层的单元个数分别为n,q1,q2,m,则该三层网络网络可表示为BP(n,q1,q2,m),利用该网络可实现n维输入向量Xn=(X1,X2,…,Xn)T到m维输出向量Ym=(Y1,Y2,…,Ym)T的非线性映射。
输入层和输出层的单元数n,m根据具体问题确定。
(2)样本的选取将模型的输入变量设计为平均温度、平均降雨量、岩石性质、岩溶发育、地下水类型、饮用水类型、正规自来水供应比例、集中供水比例8个输入因子(表6.29),输出单元为伤寒副伤寒的发病率等级,共一个输出单元。
其中q1,q2的值根据训练结果进行选择。表6.29桂林市伤寒副伤寒影响因素量化表通过分析,选取在伤寒副伤寒有代表性的县镇在1994~2001年的环境参评因子作为样本进行训练。
利用聚类分析法对疫情进行聚类分级(Ⅰ、Ⅱ、Ⅲ、Ⅳ),伤寒副伤寒发病最高级为Ⅳ(BP网络中输出定为4),次之的为Ⅲ(BP网络中输出定为3),以此类推,最低为Ⅰ(BP网络中输出定为1)(3)数据的归一化处理为使网络在训练过程中易于收敛,我们对输入数据进行了归一化处理,并将输入的原始数据都化为0~1之间的数。
如将平均降雨量的数据乘以0.0001;将平均气温的数据乘以0.01;其他输入数据也按类似的方法进行归一化处理。
(4)模型的算法过程假设共有P个训练样本,输入的第p个(p=1,2,…,P)训练样本信息首先向前传播到隐含单元上。
经过激活函数f(u)的作用得到隐含层1的输出信息:岩溶地区地下水与环境的特殊性研究经过激活函数f(u)的作用得到隐含层2的输出信息:岩溶地区地下水与环境的特殊性研究激活函数f(u)我们这里采用Sigmoid型,即f(u)=1/[1+exp(-u)](6.5)隐含层的输出信息传到输出层,可得到最终输出结果为岩溶地区地下水与环境的特殊性研究以上过程为网络学习的信息正向传播过程。
另一个过程为误差反向传播过程。
如果网络输出与期望输出间存在误差,则将误差反向传播,利用下式来调节网络权重和阈值:岩溶地区地下水与环境的特殊性研究式中:Δω(t)为t次训练时权重和阈值的修正;η称为学习速率,0<η<1;E为误差平方和。
岩溶地区地下水与环境的特殊性研究反复运用以上两个过程,直至网络输出与期望输出间的误差满足一定的要求。该模型算法的缺点:1)需要较长的训练时间。
由于一些复杂的问题,BP算法可能要进行几小时甚至更长的时间的训练,这主要是由于学习速率太小造成的,可采用变化的学习速率或自适应的学习速率加以改进。2)完全不能训练。
主要表现在网络出现的麻痹现象上,在网络的训练过程中,当其权值调的过大,可能使得所有的或大部分神经元的加权总和n偏大,这使得激活函数的输入工作在S型转移函数的饱和区,从而导致其导数f′(n)非常小,从而使得对网络权值的调节过程几乎停顿下来。
3)局部极小值。BP算法可以使网络权值收敛到一个解,但它并不能保证所求为误差超平面的全局最小解,很可能是一个局部极小解。
这是因为BP算法采用的是梯度下降法,训练从某一起点沿误差函数的斜面逐渐达到误差的最小值。
考虑到以上算法的缺点,对模型进行了两方面的改进:(1)附加动量法为了避免陷入局部极小值,对模型进行了改进,应用了附加动量法。
附加动量法在使网络修正及其权值时,不仅考虑误差在梯度上的作用,而且考虑在误差曲面上变化趋势的影响,其作用如同一个低通滤波器,它允许网络忽略网络上的微小变化特性。
在没有附加动量的作用下,网络可能陷入浅的局部极小值,利用附加动量的作用则有可能滑过这些极小值。
该方法是在反向传播法的基础上在每一个权值的变化上加上一项正比于前次权值变化量的值,并根据反向传播法来产生心的权值变化。
促使权值的调节向着误差曲面底部的平均方向变化,从而防止了如Δω(t)=0的出现,有助于使网络从误差曲面的局部极小值中跳出。
这种方法主要是把式(6.7)改进为岩溶地区地下水与环境的特殊性研究式中:A为训练次数;a为动量因子,一般取0.95左右。
训练中对采用动量法的判断条件为岩溶地区地下水与环境的特殊性研究(2)自适应学习速率对于一个特定的问题,要选择适当的学习速率不是一件容易的事情。
通常是凭经验或实验获取,但即使这样,对训练开始初期功效较好的学习速率,不见得对后来的训练合适。
所以,为了尽量缩短网络所需的训练时间,采用了学习速率随着训练变化的方法来找到相对于每一时刻来说较差的学习速率。
下式给出了一种自适应学习速率的调整公式:岩溶地区地下水与环境的特殊性研究通过以上两个方面的改进,训练了一个比较理想的网络,将动量法和自适应学习速率结合起来,效果要比单独使用要好得多。
6.3.3.2模型的求解与预测采用包含了2个隐含层的神经网络BP(4,q1,q2,1),隐含层单元数q1,q2与所研究的具体问题有关,目前尚无统一的确定方法,通常根据网络训练情况采用试错法确定。
在满足一定的精度要求下一般认小的数值,以改善网络的概括推论能力。
在训练中网络的收敛采用输出值Ykp与实测值tp的误差平方和进行控制:岩溶地区地下水与环境的特殊性研究1)将附加动量法和自适应学习速率结合应用,分析桂林市36个乡镇地质条件各因素对伤寒副伤寒发病等级的影响。
因此训练样本为36个,第一个隐含层有19个神经元,第二个隐含层有11个神经元,学习速率为0.001。A.程序(略)。B.网络训练。
在命令窗口执行运行命令,网络开始学习和训练,其学习和训练过程如下(图6.19)。图6.19神经网络训练过程图C.模型预测。
a.输入未参与训练的乡镇(洞井乡、两水乡、延东乡、四塘乡、严关镇、灵田乡)地质条件数据。b.预测。程序运行后网络输出预测值a3,与已知的实际值进行比较,其预测结果整理后见(表6.30)。
经计算,对6个乡镇伤寒副伤寒发病等级的预测符合率为83.3%。表6.30神经网络模型预测结果与实际结果比较c.地质条件改进方案。
在影响疾病发生的地质条件中,大部分地质条件是不会变化的,而改变发病地区的饮用水类型是可以人为地通过改良措施加以实施的一个因素。
因此,以灵田乡为例对发病率较高的乡镇进行分析,改变其饮用水类型,来看发病等级的变化情况。
表6.31显示,在其他地质条件因素不变的情况下,改变当地的地下水类型(从原来的岩溶水类型改变成基岩裂隙水)则将发病等级从原来的最高级4级,下降为较低的2级,效果是十分明显的。
因此,今后在进行伤寒副伤寒疾病防治的时候,可以通过改变高发区饮用水类型来客观上减少疫情的发生。
表6.31灵田乡改变饮用水类型前后的预测结果2)选取桂林地区1994~2000年月平均降雨量、月平均温度作为输入数据矩阵,进行样本训练,设定不同的隐含层单元数,对各月份的数据进行BP网络训练。
在隐含层单元数q1=13,q2=9,经过46383次数的训练,误差达到精度要求,学习速率0.02。A.附加动量法程序(略)。B.网络训练。
在命令窗口执行运行命令,网络开始学习和训练,其学习和训练过程如下(图6.20)。C.模型预测。a.输入桂林市2001年1~12月桂林市各月份的平均气温和平均降雨量。预测程度(略)。b.预测。
程序运行后网络输出预测值a2,与已知的实际值进行比较,其预测结果整理后见(表6.32)。经计算,对2001年1~12月伤寒副伤寒发病等级进行预测,12个预测结果中,有9个符合,符合率为75%。
图6.20神经网络训练过程图表6.32神经网络模型预测结果与实际值比较6.3.3.3模型的评价本研究采用BP神经网络对伤寒、副伤寒发病率等级进行定量预测,一方面引用数量化理论对不确定因素进行量化处理;另一方面利用神经网络优点,充分考虑各影响因素与发病率之间的非线性映射。
实际应用表明,神经网络定量预测伤寒、副伤寒发病率是理想的。其主要优点有:1)避免了模糊或不确定因素的分析工作和具体数学模型的建立工作。2)完成了输入和输出之间复杂的非线性映射关系。
3)采用自适应的信息处理方式,有效减少人为的主观臆断性。虽然如此,但仍存在以下缺点:1)学习算法的收敛速度慢,通常需要上千次或更多,训练时间长。2)从数学上看,BP算法有可能存在局部极小问题。
本模型具有广泛的应用范围,可以应用在很多领域。从上面的结果可以看出,实际和网络学习数据总体较为接近,演化趋势也基本一致。
说明选定的气象因子、地质条件因素为神经单元获得的伤寒、副伤寒发病等级与实际等级比较接近,从而证明伤寒、副伤寒流行与地理因素的确存在较密切的相关性。
Matlab神经网络工具箱提供了一系列用于建立和训练bp神经网络模型的函数命令,很难一时讲全。下面仅以一个例子列举部分函数的部分用法。
更多的函数和用法请仔细查阅NeuralNetworkToolbox的帮助文档。例子:利用bp神经网络模型建立z=sin(x+y)的模型并检验效果%第1步。
随机生成200个采样点用于训练x=unifrnd(-5,5,1,200);y=unifrnd(-5,5,1,200);z=sin(x+y);%第2步。建立神经网络模型。
其中参数一是输入数据的范围,参数二是各层神经元数量,参数三是各层传递函数类型。
N=newff([-55;-55],[5,5,1],{'tansig','tansig','purelin'});%第3步。训练。这里用批训练函数train。也可用adapt函数进行增长训练。
N=train(N,[x;y],z);%第4步。检验训练成果。
[X,Y]=meshgrid(linspace(-5,5));Z=sim(N,[X(:),Y(:)]');figuremesh(X,Y,reshape(Z,100,100));holdon;plot3(x,y,z,'.')。
先用newff函数建立网络,再用train函数训练即可。
1)正向传播:输入样本->输入层->各隐层(处理)->输出层注1:若输出层实际输出与期望输出(教师信号)不符,则转入2)(误差反向传播过程)2)误差反向传播:输出误差(某种形式)->隐层(逐层)->输入层其主要目的是通过将输出误差反传,将误差分摊给各层所有单元,从而获得各层单元的误差信号,进而修正各单元的权值(其过程,是一个权值调整的过程)。
BP算法实现步骤(软件):1)初始化2)输入训练样本对,计算各层输出3)计算网络输出误差4)计算各层误差信号5)调整各层权值6)检查网络总误差是否达到精度要求满足,则训练结束;不满足,则返回步骤2)注:改进算法—增加动量项、自适应调整学习速率(这个似乎不错)及引入陡度因子。
%人脸识别模型,脸部模型自己找吧。
functionmytest()clc;images=[];M_train=3;%表示人脸N_train=5;%表示方向sample=[];pixel_value=[];sample_number=0;forj=1:N_trainfori=1:M_trainstr=strcat('Images\',num2str(i),'_',num2str(j),'.bmp');%读取图像,连接字符串形成图像的文件名。
img=imread(str);[rowscols]=size(img);%获得图像的行和列值。
img_edge=edge(img,'Sobel');%由于在分割图片中我们可以看到这个人脸的眼睛部分也就是位于分割后的第二行中,位置变化比较大,而且眼睛边缘检测效果很好sub_rows=floor(rows/6);%最接近的最小整数,分成6行sub_cols=floor(cols/8);%最接近的最小整数,分成8列sample_num=M_train*N_train;%前5个是第一幅人脸的5个角度sample_number=sample_number+1;forsubblock_i=1:8%因为这还在i,j的循环中,所以不可以用iblock_num=subblock_i;pixel_value(sample_number,block_num)=0;forii=sub_rows:(2*sub_rows)forjj=(subblock_i-1)*sub_cols+1:subblock_i*sub_colspixel_value(sample_number,block_num)=pixel_value(sample_number,block_num)+img_edge(ii,jj);endendendendend%将特征值转换为小于1的值max_pixel_value=max(pixel_value);max_pixel_value_1=max(max_pixel_value);fori=1:3mid_value=10^i;if(((max_pixel_value_1/mid_value)>1)&&((max_pixel_value_1/mid_value)。
。
使用神经网络工具箱可以非常简便地实现网络建立和训练,实例代码如下:%% BP算法function Out=bpnet(p,t,p_test)%p,t为样本需要提前组织好global S1net=newff(minmax(p),[S1,8],{'tansig','purelin'},'trainlm'); %trainlm训练函数最有效%net=newff(P,T,31,{'tansig','purelin'},'trainlm');%新版用法net.trainParam.epochs=1000;=0.00001;=0.01;net.trainParam.showWindow = false; %阻止训练窗口的弹出net.trainParam.showCommandLine = false; %阻止训练窗口的弹出net=train(net,p,t);Out=sim(net,p_test);end上面的代码不完整,完整的带训练样本数据的程序见附件。