BP神经网络简单应用实例,bp神经网络应用举例

发布于:2023-01-22 ⋅ 阅读:(12) ⋅ 点赞:(0) ⋅ 评论:(0)

神经网络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神经网络遥感影像分类

爱发猫 www.aifamao.com

罗小波1刘明培1,2(1.重庆邮电大学计算机学院中韩GIS研究所,重庆,400065;2.西南大学资源环境学院,重庆,400065)摘要:在网络结构给定的情况下,利用遗传算法的全局寻优能力得到一组权值和阈值作为BP神经网络的初始权值和阈值,来避免BP神经网络易陷入局部极小的缺陷,同时也可以提高网络的收敛速度。

然后再利用BP神经网络的局部寻优能力,对权值和阈值进行进一步的精细调整。实验结果表明,把这种基于遗传算法的BP神经网络应用于遥感影像监督分类,具有较高的分类精度。

关键词:BP神经网络;遗传算法;遥感影像分类1引言随着遥感技术的快速发展,遥感技术已经广泛应用于各个领域。其中,遥感影像分类是其重要组成部分。

近年来,随着人工神经网络理论的快速发展,神经网络技术日益成为遥感影像分类中的有效手段,特别是对高光谱等影像数据,更是具有许多独特的优势。

一般我们把采用BP(Back-propogation)算法的多层感知器叫做BP神经网络,它是目前研究得最完善、应用最广泛的神经网络之一。

与经典的最大似然法相比,BP神经网络最大的优势就是不要求训练样本正态分布。但是,它具有结构难以确定、容易陷入局部极小、不易收敛等缺陷。在本文中,网络的结构由用户根据问题的复杂度确定。

在进行网络训练之前,利用遗传算法的全局寻优能力确定网络的初始权值和阈值;然后利用BP学习算法的局部寻优能力对网络进行进一步的精细调整。最后利用训练后的网络进行遥感影像监督分类。

结果表明,基于遗传算法的BP神经网络进行遥感影像监督分类,具有较高的分类精度。2BP神经网络2.1网络结构BP神经网络的结构一般包括输入层、中间隐层、输出层。

在模式识别中,输入层的神经元个数等于输入的特征个数,输出层的神经元个数等于需要分类的类别数。隐层可以为一层或多层,但一般的实际应用中一层隐层就可以满足要求。

而各隐层的神经元个数需要根据实际问题的复杂度而定。以单隐层为例,其结构示意图如图1。

为了实现一种通用的遥感影像分类手段,除了提供默认的网络结构外,还为使用者提供了根据实际问题的复杂度自行确定网络隐层数与各隐层神经元数的功能。

这为一些高级用户提供了灵活性,但这种灵活性在一定程度上增加了使用的难度,有时也需要一个实验的过程,才能取得满意的效果。

图1BP神经网络结构2.2BP学习算法算法的基本步骤如下:(1)将全部权值与节点的阈值预置为一个小的随机数。(2)加载输入与输出。在n个输入节点上加载一n维向量X,并指定每一输出节点的期望值。

每次训练可以选取新的同类或者异类样本,直到权值对各类样本达到稳定。(3)计算实际输出y1,y2,…,yn。(4)修正权值。

权值修正采用了最小均方(LMS)算法的思想,其过程是从输出节点开始,反向地向第一隐层传播由总误差诱发的权值修正。

下一时刻的互连权值Wij(t+1)由下式给出:土地信息技术的创新与土地科学技术发展:2006年中国土地学会学术年会论文集式中,j为本节点的输出;i则是隐层或者输入层节点的序号;或者是节点i的输出,或者是外部输入;η为学习率;α为动量率;δj为误差项,其取值有两种情况:A.若j为输出节点,则:δj=yj(1-yj)(tj-yj)其中,tj为输出节点j的期望值,yj为该节点的实际输出值;B.若j为内部隐含节点,则:土地信息技术的创新与土地科学技术发展:2006年中国土地学会学术年会论文集其中k为j节点所在层之上各层的全部节点。

(5)在达到预定的误差精度或者循环次数后退出,否则,转(2)。2.3基于遗传算法的网络学习算法遗传算法具有全局寻优、不易陷入局部极小的优点,但局部寻优的能力较差。而BP学习算法却具有局部寻优的优势。

因此,如果将两种算法结合起来构成混合训练算法,则可以相互取长补短获得较好的分类效果。

主要思路如下:(1)利用遗传算法确定最优个体A.把全部权值、阈值作为基因进行实数编码,形成具有M个基因的遗传个体结构,其中M等于所有权值、阈值的个数。

B.设定种群规模N,随机初始化这N个具有M个基因的结构。C.适应度的计算:分别用训练样本集对N组权值、阈值进行训练,得出各自网络期望输出与网络实际输出的总误差e,适应度f=1.0-e。

D.进行遗传算子操作,包括选择算子、交叉算子和变异算子,形成新的群体:其中,选择算子采用了轮盘赌的方法,交叉算子采用了两点交叉。E.反复进行C、D两步,直到满足停止条件为止。

停止条件为:超出最大代数、最优个体精度达到了规定的精度。(2)把经过GA优化后的最优个体进行解码操作,形成BP神经网络的初始权值和阈值。(3)采用BP学习算法对网络进行训练,直到满足停止条件。

停止条件为:①达到最大迭代次数;②总体误差小于规定的最小误差。网络训练结束后,把待分数据输入训练好的神经网络,进行分类,就可以得到分类结果影像图。

3应用实例实现环境为VC++6.0,并基于Mapgis的二次开发平台,因为二次平台提供了一些遥感影像的基本处理函数,如底层的一些读取文件的基本操作。

实验中使用的遥感影像大小为500×500,如图1所示。该影像是一美国城市1985年的遥感影像图。

根据同地区的SPOT影像及相关资料,把该区地物类别分为8类,各类所对应的代码为:C1为水体、C2为草地、C3为绿化林、C4为裸地、C5为大型建筑物、C6为军事基地、C7为居民地、C8为其他生活设施(包括街道、道路、码头等)。

其中,居民地、军事设施、其他生活设施的光谱特征比较接近。

图1TM原始影像(5,4,3合成)在网络训练之前,经过目视解译,并结合一些相关资料,从原始图像上选取了3589个类别已知的样本组成原始样本集。

要求原始样本具有典型性、代表性,并能反映实际地物的分布情况。把原始样本集进行预处理,共得到2979个纯净样本。这些预处理后的样本就组成训练样本集。

网络训练时的波段选择为TM1、TM2、TM3、TM4、TM5、TM7共6个波段。

另外,由于所要分类的类别数为8,因此,网络结构为:输入层节点数为6,输出层节点数为8,隐层数为1,隐层的节点数为10,然后用训练样本集对网络进行训练。

在训练网络的时候,其训练参数分别为:学习率为0.05,动量率为0.5,最小均方误差为0.1,迭代次数为1000。把训练好的网络对整幅遥感影像进行分类,其分类结果如下面图2所示。

图2分类结果为了测试网络的分类精度,在分类完成后,需要进行网络的测试。

测试样本的选取仍然采用与选取训练样本集一样的方法在原始影像上进行选取,即结合其他资料,进行目视判读,在原始图像上随机选取类别已知的样本作为测试样本。

利用精度评价模块,把测试样本集与已分类图像进行比较,得到分类误差矩阵以及各种分类精度评价标准,如表1所示:表1分类误差矩阵总体精度:0.91,Kappa系数:0.90。

从表1可以看出,采用测试样本集进行测试,大部分地物的分类精度都达到了0.9以上,只有居民地和其他生活设施的精度没有达到,但也分别达到了0.89和0.77,总的分类精度为0.91。

Kappa系数在遥感影像分类精度评价中应用极为广泛,在本次测试中其值为0.90。从上面的分析可以看出,利用基于遗传算法的BP神经网络进行遥感影像分类,其分类精度较高,取得了令人满意的效果。

4结论与传统的基于统计理论的分类方法相比,BP神经网络分类不要求训练样本正态分布,并且具有复杂的非线性映射能力,更适合于日益激增的海量高光谱遥感数据的处理。

但BP神经网络也有易陷于局部极小、不易收敛等缺陷。初始权值和阈值设置不当,是引起网络易陷于局部极小、不易收敛的重要原因。

在实验中,利用遗传算法的全局寻优能力来确定BP网络的初始权值和阈值,使得所获取的初始权值和阈值是一组全局近似最优解。然后,利用BP学习算法的局部寻优能力对网络权值和阈值进行精细调整。

这样,训练后的稳定网络,不但具有较强的非线性映射能力,而且总可以得到一组均方误差最小的全局最优解。

实验表明,利用上述的基于遗传算法的BP神经网络进行遥感影像分类,只要所选取的训练样本具有代表性,能反映实际地物的分布情况,就能够得到较高的分类精度,具有较强的实际应用价值。

参考文献H.Yangetal,ABack-propagationneuralnetworkmformineralogicalmappingfromAVIRISdata,Int.J.Remotesensing,20(1):97~110ArdutiAlessandro,etal.Speeduplearningandnetworkoptimizationwithextendedbackpropogation.NeuralNetworks,1993,6:365~383PatrickP.Minimizationmethodsfortrainingfeedforwardneuralnetworks.NeuralNetworks,1994,7:1~12GoldbergDE.GeneticalgorithmsinSearchOptimizationandMachine:Addison-Wesley,1989RudolphGunter.ConvergenceanalysisofcanonicalgeneticTransactionsonNeuralNetworks,1994,5(1);102~119FangJ,XiY.Towarddesignbasedonevolutionary.,1997,11(2):155~161ParkYR,etal.PredictionsunspotsusinglayeredperceptionneuralNeuralNetorks,1996,7(2):501~505杨行峻、郑君里.人工神经网络与盲信号处理[M].北京:清华出版社,2003,23~40周成虎、骆剑成等.遥感影像地学理解与分析[M].北京:科学出版社,2001,228~238王耀男.卫星遥感图像的神经网络自动识别[J].湖南大学学报,1998,61~66江东,王建华.人工神经网络在遥感中的应用与发展.国土与资源遥感,1999,13~18。

直接用神经网络工具箱构建bp神经网络,希望能给个例子说明,有注解最好,本人matlab新手,谢谢 10

BP(BackPropagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。

BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。

BP神经网络模型拓扑结构包括输入层(input)、隐层(hiddenlayer)和输出层(outputlayer)。附件就是利用神经网络工具箱构建BP神经网络进行预测的实例。

如果要用可视化工具,可以在命令窗口输入nntool.。

在看了案例二中的BP神经网络训练及预测代码后,我开始不明白BP神经网络究竟能做什么了。。。 程序最后得到

网络的训练过程与使用过程了两码事。

比如BP应用在分类,网络的训练是指的给你一些样本,同时告诉你这些样本属于哪一类,然后代入网络训练,使得这个网络具备一定的分类能力,训练完成以后再拿一个未知类别的数据通过网络进行分类。

这里的训练过程就是先伪随机生成权值,然后把样本输入进去算出每一层的输出,并最终算出来预测输出(输出层的输出),这是正向学习过程;最后通过某种训练算法(最基本的是感知器算法)使得代价(预测输出与实际输出的某范数)函数关于权重最小,这个就是反向传播过程。

您所说的那种不需要预先知道样本类别的网络属于无监督类型的网络,比如自组织竞争神经网络。

bp神经网络只有一类样本怎么分类

神经网络一列为一个样本,所以对于matlab而言,要求输入和输出的列数必须一样的经常有人问起的问题:Errorusing==>network/trainTargetsareincorrectlysizedfornetwork.Matrixmusthave1rows.解决:要求PT的列数一样,如果不一样P=p’t=t’转置一下2.归一澄清一个对归一的错误理解1样本矩阵为9行4列。

9组样本,4个变量。

现在归一化:x=[68.766.6561019.2;89.990.8450011.8;120.8120.6680020.6;16940.4616040.6;180.869.8733033.4;190.3130.2732031.6;109.8151.1575486.1;33.261.4825522.6;111.7126.6704013.6;]写法一:fori=1:9x1(i,:)=(x(i,:)-min(x(i,:)))/(max(x(i,:))-min(x(i,:)))end结果:0.00890.00851.000000.01740.01761.000000.01480.01481.000000.021001.00000.00000.02020.00501.000000.02180.01351.000000.00420.01151.000000.00130.00471.000000.01400.01611.00000写法二:x=x'fori=1:4x1(i,:)=(x(i,:)-min(x(i,:)))/(max(x(i,:))-min(x(i,:)))end结果:Columns1through80.22600.36090.55760.86440.93951.00000.487600.23670.45530.724500.26560.81121.00000.18970.295600.61250.44210.75370.75100.33401.00000.099600.11840.38760.29070.26651.00000.1454Column90.49970.77870.67640.0242注意:写法 2为正确的归一化对归一的错误理解2将数据集分为训练集和测试集,对训练集和测试集分别做归一处理所以就会有人问如果我的测试集只有一个数据如何归一呀最大最小值从那里找呀正确的理解是:训练集和测试集的归一标准是一样的建议:如果训练集和测试集是一起归一的可以自己编程实现归一如果是训练集和测试集是分开的,最好是使用matlab自带的premnmx、postmnmx、tramnmx函数如果是自己编程的话,请注意训练集和测试集的归一标准需要一样premnmx、postmnmx、tramnmx函数的使用例子如下:ExampleHereisthecodetonormalizeagivendatasetsothattheinputsandtargetswillfallintherange[-1,1],usingPREMNMX,andthecodetotrainanetworkwiththenormalizeddata.p=[-10-7.5-5-2.502.557.510];t=[07.07-10-7.0707.07107.070];[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);net=newff(minmax(pn),[51],{'tansig''purelin'},'trainlm');net=train(net,pn,tn);Ifwethenreceivenewinputstoapplytothetrainednetwork,wewilluseTRAMNMXtotransformthemfirst.Thenthetransformedinputscanbeusedtosimulatethepreviouslytrainednetwork.ThenetworkoutputmustalsobeunnormalizedusingPOSTMNMX.p2=[4-7];[p2n]=tramnmx(p2,minp,maxp);an=sim(net,pn);[a]=postmnmx(an,mint,maxt);这个是归一到-1和1之间那我要归一到01之间怎么办有人说可以使用加绝对值就归一到01之间了我觉得加绝对值可能会有些问题比较好的方式是变换P在-11之间Pp=(p+1)/2就可以归一到01之间至于要归一到0.1-0.9之间选取合适的变换就可以做到了二、神经网络(BP)系列(2)(初学者系列)每次结果不一样解析这个系列主要针对使用matlab神经网络工具箱,对一些初学者容易理解错误的地方进行解析。

神经网络每次结果不同解析神经网络每次结果不同是因为初始化的权值和阈值是随机的因为每次的结果不一样,才有可能找到比较理想的结果啊找到比较好的结果后,用命令savefilenamenet;保存网络,可使预测的结果不会变化,调用时用命令loadfilenamenet;取p_test=[];t_test=[];t=sim(net,p_test);err=t_test-t;plot(p_test,err);选择误差小的保存网络savefilenamenet以后调用时loadfilenamenetp_test=[];t_test=[];t=sim(net,p_test);err=t_test-t;plot(p_test,err):因为每次初始化网络时都是随机的,而且训练终止时的误差也不完全相同,结果训练后的权植和阀也不完全相同(大致是一样的),所以每次训练后的结果也略有不同举个例子,这样初始化就能使网络的输出结果是一样的,另外也可以给网络特定的权值,一种方法是把预测结果后的效果比较好的权值做为初值p=[0.87260.94410;000.7093;0.73780.70930.3795;0.64160.37950.7031;10.70310.4241;0.77740.42410.9559;0.95590.50120.7052;...0.82090.70520.4983;0.60110.49831;]';t=[00.73780.641610.77740.50120.82090.60110.9350];rand('state',0);net=newff(minmax(p),[6,1],{'tansig','logsig'},'trainlm');net.trainParam.epochs=2000;=0.001;net=train(net,p,t);y=sim(net,p);error=y-t;res=norm(error);p_test=[0.935010.6236;]';t_test=[0.8027]a=sim(net,p_test)rand('state',0);这个的作用是每次初始化一样0是种子数,如果换成其他数,就可以产生不同的随机值注:rand('state',0);的使用有点为结果相同而相同,至于这样的结果网络性能是否达到好的要求则没有考虑,建议还是不要用这种方法使每次结果相同用保存网络的方法吧消除初值影响可以考虑的另一个方法是简单集成神经网络原理由于选择不同的权值所得结果不同,使最终神经网络泛化能力体现出一定的随机性。

利用这个特性也可以改善神经网络的泛化能力,神经网络集成便是利用这种思路的体现,即先训练一组只有初始权值不同的子网,然后通过各子网“表决(Voting)”的形式(如加权和)得到学习系统的输出。

当神经网络集成用于分类器时,集成的输出通常由个体网络的输出投票产生。通常利用绝对多数投票法(某分类成为最终结果当且仅当输出结果为该分类的神经网络的数目最多)。理论分析和大量实验表明,后者优于前者。

因此,在对分类器进行集成时,目前大多采用相对多数投票法。当神经网络集成用于回归估计时,集成的输出通常由各网络的输出通过简单平均或加权平均产生。

Perrone等人认为,采用加权平均可以得到比简单平均更好的泛化能力。

三、神经网络(BP)系列(3)(初学者请看)分类实例分类实例输入输出设计:对某一问题分析,影响网络性能的输入主要有5个指标,输出则分为8类。8类的话可以用三位二进制表示。

000001010011100101110111神经网络的输入为5维的向量,输出为三维的向量。

输入的数据具有不同的单位和量级,所以在输入在输入神经网络之前应该首先进行归一化处理,将样本数据归一到01之间。

样本总共有328组数据将样本集分为训练集和测试集随机抽取70取做为测试测试集其余的作为训练集网络设计采用tansig(x)和logsig(x)函数作为传输函数,tansig(x)如下式:tansig=2/(1+exp(-2x))-1logsig(x)如下式:logsig(x)=1/(1+exp(-n))对于有限个输入到输出的映射,并不需要无限个隐层节点,这就涉及到如何选择隐层节点数的问题,而这一问题的复杂性,使得至今为止尚未找到一个很好的解析式,隐层节点数往往根据前人设计所得的经验和自己进行试验来确定。

设计网络时我采用的方法是通过神经网络训练来确定隐含层的个数,首先确定隐含层中节点数目的范围,设计一个隐含层神经元数目可变的BP网络,通过误差对比,确定最佳的隐含层神经元的个数。

最后确定的隐含层的个数为12。所以网络结构为5-12-3的三层结构。

load('');p=CC1(:,[1,3:6])';T=[000;111;110;101;100;011;010;001];t=repmat(T,41,1)';pp=p;%%%%%%归一到01之间fori=1:5p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));endAllSamNum=328;%总样本数TrainSamNum=258;%训练样本数TestSamNum=AllSamNum-TrainSamNum;%测试样本数PerPos=randperm(AllSamNum);TrainDataIn=p(:,1:TrainSamNum)TrainDataOut=t(:,1:TrainSamNum)TestDataIn=p(:,PerPos(:,TrainSamNum+1:TrainSamNum+TestSamNum))TestDataOut=t(:,PerPos(:,TrainSamNum+1:TrainSamNum+TestSamNum))MaxMin=[01;01;01;01;01];net=newff(MaxMin,[12,3],{'tansig','logsig'},'trainlm');%训练参数设置net.trainParam.epochs=1000;%训练次数=0.0001;%训练结束的目标=0.1;%学习率=20;net=train(net,TrainDataIn,TrainDataOut);out=sim(net,TestDataIn)训练结果:TRAINLM,Epoch0/1000,MSE0.296308/0.0001,Gradient83.9307/1e-010TRAINLM,Epoch20/1000,MSE0.0224641/0.0001,Gradient6.7605/1e-010TRAINLM,Epoch40/1000,MSE0.00563627/0.0001,Gradient3.27027/1e-010TRAINLM,Epoch60/1000,MSE0.00348587/0.0001,Gradient1.49868/1e-010TRAINLM,Epoch80/1000,MSE0.00247714/0.0001,Gradient0.459233/1e-010TRAINLM,Epoch100/1000,MSE0.0018843/0.0001,Gradient0.289155/1e-010TRAINLM,Epoch120/1000,MSE0.00148204/0.0001,Gradient0.392871/1e-010TRAINLM,Epoch140/1000,MSE0.00119585/0.0001,Gradient0.340864/1e-010TRAINLM,Epoch160/1000,MSE0.000980448/0.0001,Gradient0.391987/1e-010TRAINLM,Epoch180/1000,MSE0.000779059/0.0001,Gradient0.389835/1e-010TRAINLM,Epoch200/1000,MSE0.000606974/0.0001,Gradient0.310202/1e-010TRAINLM,Epoch220/1000,MSE0.000388926/0.0001,Gradient0.331632/1e-010TRAINLM,Epoch240/1000,MSE0.000143563/0.0001,Gradient0.0403953/1e-010TRAINLM,Epoch248/1000,MSE9.87756e-005/0.0001,Gradient0.174263/1e-010TRAINLM,Performancegoalmet.训练好的权值、阈值的输出方法是:输入到隐层权值:{1,1}隐层阈值:theta1=net.b{1}隐层到输出层权值:{2,1};输出层阈值:theta2=net.b{2}>>{1,1}w1=1.7663-2.8022-0.7142-2.1099-2.40113.6614-2.5297-4.42955.05088.18994.40077.6775-6.02826.15671.87754.5009-9.99155.97375.02343.39310.2703-2.88500.4482-2.91531.36482.37693.31510.87453.19001.2608-2.2815-6.68471.87382.4093-2.9033-5.33326.1506-8.4386-6.79793.1428-0.0135-10.8942-9.63337.231112.06932.31305.22110.01552.94310.3135-6.4017-0.89870.19763.25270.1444-3.6517-1.63393.55052.48131.7880>>theta1=net.b{1}theta1=0.5955-5.4876-9.8986-4.47313.6523-4.03715.61875.74260.9147-8.5523-2.3632-5.6106>>{2,1}w2=Columns1through8-0.2751-3.5658-2.3689-6.4192-1.12091.5711-1.76157.6202-1.2874-9.1588-14.45337.50643.70740.90198.7033-5.00313.3536-0.88447.88870.93360.8410-2.49051.0627-9.3513Columns9through12-2.5894-1.9950-3.0132-4.700913.3490-9.8521-4.6680-4.2037-5.92512.9388-1.6797-2.1077>>theta2=net.b{2}theta2=-2.47620.56920.6694输出:out=Columns1through81.00001.00000.00200.00001.00001.00000.00000.00001.00000.00000.00411.00001.00001.00001.00001.00000.99910.00000.00360.00150.99920.99850.00550.0036Columns9through161.00000.00000.00191.00000.00000.00000.00000.99961.00001.00000.99011.00001.00001.00001.00000.00000.99770.99990.99960.99940.00460.00230.00141.0000Columns17through240.00200.99250.00200.00000.00201.00000.00021.00000.00410.02840.00410.02840.00411.00000.99831.00000.00360.99550.00361.00000.00360.99890.99990.9990Columns25through321.00000.99381.00000.00001.00000.99990.00001.00001.00000.01770.00000.00211.00000.00061.00001.00000.00000.99710.00001.00000.00000.00040.99990.0000Columns33through400.99541.00000.00000.00000.99510.00200.00000.99970.00651.00001.00000.00250.01780.00411.00000.00000.99860.99900.99991.00000.01010.00360.00131.0000Columns41through480.00001.00000.99830.00000.00201.00000.00000.98730.00201.00000.00000.00370.00411.00000.03280.06371.00000.00000.99991.00000.00360.99821.00000.9884Columns49through560.00000.00011.00001.00001.00000.00000.00041.00000.01640.99920.99821.00001.00001.00000.99650.99981.00000.99990.99480.99910.99890.00240.99980.9968Columns57through641.00001.00000.00000.00200.00200.00010.00010.00000.97631.00000.01340.00410.00410.99900.03950.00170.02020.99881.00000.00360.00360.99990.99991.0000Columns65through700.99930.00000.00000.99781.00001.00000.00000.00180.01100.00011.00000.99981.00001.00001.00000.99990.99870.0007每次结果因为初始化不同会不一样,可以选取一个性能比较好的网络保持起来savemyBpNetnetsaveTestDataInTestDataOut测试数据也保存起来(TestDataInTestDataOut为测试数据的输入向量和目标向量)以后调用时loadloadmyBpNetnetout=sim(net,TestDataIn)基本框架程序:(前面的样本数据自己根据实际情况设计)load('');p=CC1(:,[1,3:6])';T=[000;111;110;101;100;011;010;001];t=repmat(T,41,1)';pp=p;%%%%%%归一到01之间fori=1:5p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));endAllSamNum=328;%总样本数TrainSamNum=258;%训练样本数TestSamNum=AllSamNum-TrainSamNum;%测试样本数PerPos=randperm(AllSamNum);TrainDataIn=p(:,1:TrainSamNum)TrainDataOut=t(:,1:TrainSamNum)TestDataIn=p(:,PerPos(:,TrainSamNum+1:TrainSamNum+TestSamNum))TestDataOut=t(:,PerPos(:,TrainSamNum+1:TrainSamNum+TestSamNum))MaxMin=[01;01;01;01;01];net=newff(MaxMin,[12,3],{'tansig','logsig'},'trainlm');net.trainParam.epochs=1000;%训练次数=0.0001;%训练结束的目标=0.1;%学习率=20;net=train(net,TrainDataIn,TrainDataOut);out=sim(net,TestDataIn)。

什么是BP神经网络?

BP算法的基本思想是:学习过程由信号正向传播与误差的反向回传两个部分组成;正向传播时,输入样本从输入层传入,经各隐层依次逐层处理,传向输出层,若输出层输出与期望不符,则将误差作为调整信号逐层反向回传,对神经元之间的连接权矩阵做出处理,使误差减小。

经反复学习,最终使误差减小到可接受的范围。具体步骤如下:1、从训练集中取出某一样本,把信息输入网络中。2、通过各节点间的连接情况正向逐层处理后,得到神经网络的实际输出。

3、计算网络实际输出与期望输出的误差。4、将误差逐层反向回传至之前各层,并按一定原则将误差信号加载到连接权值上,使整个神经网络的连接权值向误差减小的方向转化。

5、対训练集中每一个输入—输出样本对重复以上步骤,直到整个训练样本集的误差减小到符合要求为止。

BP神经网络在土木工程中有哪些应用? 10

【热心相助】您好!BP神经网络在土木工程中的应用很多。

1.BP神经网络在岩土工程中优化2.BP神经网络在桥梁施工控制中的应用3.BP神经网络在现场混凝土强度的预测应用4.BP神经网络在工程项目管理中的应用5.在分岔隧道位移反分析中的应用6.神经网络智能算法在土木工程结构健康监测中的应用7.BP人工神经网络在深层搅拌桩复合地基承载力计算中的应用8.BP神经网络在房地产投资风险分析中的应用9.BP人工神经网络在青藏铁路南段地壳稳定性定量评价中的应用10.基于神经网络的土木工程结构损伤识别。

求运用BP神经网络算法处理分类问题的源程序,例如输入蚊子的翼长和触角长,输出蚊子类型与此类似的源程序 30

这种分类的案例很多,附件里面就有这类案例。主要还是要形成样本,输入输出都做好,进行训练,训练完成后就能满足分类需要。

模式识别是对表征事物或现象的各种形式的信息进行处理和分析,来对事物或现象进行描述、辨认、分类和解释的过程。该技术以贝叶斯概率论和申农的信息论为理论基础,对信息的处理过程更接近人类大脑的逻辑思维过程。

现在有两种基本的模式识别方法,即统计模式识别方法和结构模式识别方法。人工神经网络是模式识别中的常用方法,近年来发展起来的人工神经网络模式的识别方法逐渐取代传统的模式识别方法。

经过多年的研究和发展,模式识别已成为当前比较先进的技术,被广泛应用到文字识别、语音识别、指纹识别、遥感图像识别、人脸识别、手写体字符的识别、工业故障检测、精确制导等方面。

 


网站公告

欢迎关注微信公众号

今日签到

点亮在社区的每一天
签到