2022年神经网络建模及Matlab中重要的BP网络函数 .pdf
神经网络建模及Matlab 中重要的 BP 网络函数一、神经组织的基本特征1细胞体是一个基本的初等信号处理器,轴突是信号的输出通路,树突是信号的输入通路。信号从一个神经细胞经过突触传递到另一个细胞。2不同的神经元之间有不同的作用强度,称为联接强度。当某细胞收到信号时,它的电位发生变化,如果电位超过某一阈值时,该细胞处于激发态,否则处于抑制状态。3两神经元之间的联接强度随其激发与抑制行为相关性的时间平均值正比变化,也就是说神经元之间的联接强度不是一成不变的。这就是生物学上的Hebb 律。二、 人工神经元的 M-P模型(McCulloch 、 Pitts,1943)1 构造一个模拟生物神经组织的人工神经网络的三要素:(1) 对单个神经元给出定义;(2) 定义网络结构:决定神经元数量及连接方式;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - tjijtSw)((3) 给出一种方法,决定神经元之间的联接强度。2M-P 模型其中, t 表示时间Si(t)表示第 i 个神经元在t 时刻的状态, Si(t)=1 表示处于激发态, Si(t)=0 表示处于抑制态wij表示第 j 个神经元到第i 个神经元的联接强度,称之为权,可正可负表示第 i 个神经元在t 时刻所接收到的所有信号的线性迭加。i表示神经元i 的阈值 , 可以在模型中增加一个 Sk(t)=1 神经元 k,并且 wik=-i,则阈值可归并到和号中去。注:1M-P 神经元虽然简单,但可以完成任何计算。2神经元的状态可以取0,1中的连续值,如用以下函数代替 (x): 00011xxxtSwtSijjiji)()()(名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - jjijhtSwhehg)()(0112三、多层前传网络1.特点:相邻层全互连同层没有连接输出与输入没有直接联系2各层神经元个数的确定输入层、 输出层的神经元个数由研究对象的输入、输出信息来确定。隐含层:101llnnnIOH,3符号说明:表示一个确定的已知样品的标号;i, j, k:分别对应于输出层、隐含层、输入层的下标;:iO将第个样品的原始数据输入网络时,相应输出单元状态;:jH将第个样品的原始数据输入网络时,相应隐含单元状态;:kI将第个样品的原始数据输入网络时,相应输入单元数据;wij:从隐含层第 j 个神经元到输出层第i 个神经元的联接强度;i Wi1 Wi2 Wi3 I2H2H3I3O1H1I4I1O2输出层 Oi输入层 Ik隐含层 Hj权 Wjk权 Wij名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - wjk:从输入层第 k 个神经元到隐含层第j 个神经元的联接强度;4网络数据流程对应于输入层的输入:InIII,21隐单元 j 的输入是:kkjkjIwh对应的输出是:)()(kkjkjjIwghgH输出单元 i 收到的迭加信号是:jkkjkijjjijiIwgwHwo)(输出单元 i 的输出是:) )()()(jkkjkijjjijiiIwgwgHwgogO显然输出是所有权w=wij,wjk 的函数四、向后传播算法 (Back-Propagation)设样品 在输出单元i 上的理想输出为iT,则函数:,)()(ikkjkjijiiiiIwgwgTOTwE221221表示了在一定的权下,理想输出与实际输出的差异。因此,确定权 w 的问题化为求E(w) 的极小值问题。可以采用最速下降算法。最速下降算法步骤:1)任取初始点w0,计算出 w0的负梯度方向:-E(w0) 2)取新点 w1=w0+w=w0-E(w0),使 E(w1)E(w0) 3)判断其中 w 的计算如下:对于隐单元到输出单元的权的修正量为名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 14 页 - - - - - - - - - jijiiiwEijHHhgOTwij)(其中)(iiiiOThg对于输入单元到隐单元的权的修正量为kjkjijiikjijiiiiwHHEwEjkIIhgwIhgwhgOTwjkjjjk)()()(,其中iijijjwhg)(五、Matlab 中 BP 神经网络的实现1BP神经网络的初始化各层神经元个数, 各层神经元之间的连接强度, 各层神经元的传递函数1). 人工初始化如下例例 1.有一个三输入两层神经网络,隐层有两个对数 S形神经元 ,输出层有一个正切S 形神经元 , 用于预测两个一元目标矢量 . p=0 0.5 -0.2;1 0.2 0.3;%输入t=0.5,-0.5;%理想输出r=3;s1=2;s2=1;%输入层、隐层、输出层的神经元个数w1=rands(s1,r);输入层到隐层的连接强度b1=rands(s1,1); 隐层的阈值w2=rands(s2,s1); 隐层到输出层的连接强度b2=rands(s2,1);输出层的阈值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - lr=1; 学习速率for epoch=1:40 训练网络 40 次 a1=logsig(w1*p,b1); 隐层的输出 a2=tansig(w2*a1,b2); 输出层的输出 e=t-a2; 与理想输出的误差 d2=deltatan(a2,e); 输出层的值 d1=deltalog(a1,d2,w2); 隐层的值 dw1,db1=learnbp(p,d1,lr); 进行学习,获取隐层连接强度、阈值的调整值 w1=w1+dw1; 调整隐层的连接强度 b1=b1+db1; 调整隐层的阈值 dw2,db2=learnbp(a1,d2,lr); 进行学习,获取输出层连接强度、阈值的调整值 w2=w2+dw2; 调整输出层的连接强度 b2=b2+db2; 调整输出层阈值end; a1=logsig(w1*p,b1); 学习后,对网络进行验证a2=tansig(w2*a1,b2) 2)调用系统提供的函数格式:w1,b1,w2,b2=initff(p,s1,f1,s2,f2) w1,b1,w2,b2=initff(p,s1,f1,t,f2) 功能:至多三层的 BP网络初始化, 得到每层的权值和阈值。说明:1)P为输入向量, P 中每一行必须包含网络期望输入的最大值和最小值,这样才能合理地初始化连接强度与阈值。2)T为理想输出向量名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - - - - - - - - 3)S1为隐层的神经元数, S2为输出层的神经元数,可用理想输出向量T 代替 S2,此时 S2T 向量的行数4)F1为隐层传递函数名, F2 为输出层传递函数名例2例 2应用两层 BP网络进行函数逼近,其中隐层神经元个数设为5 个clf reset; figure(gcf) colordef(gcf,none) setfsize(500,200); echo on clc %INITFF - Initializes a feed-forware network. %TRAINBP - Trains a feed-forward network with backpropagation.% SIMUFF - Simulates a feed-forward network. % FUNCTION APPROXIMATION WITH TANSIG/PURELIN NETWORK: %Using the above functions two-layer network is trained %to respond to specific inputs with target outputs. % DEFINING A VECTOR ASSOCATION PROBLEM % = %P defines twenty-one 1-element input vectors (column vectors):P = -1:.1:1; % T defines the associated 1-element targets (column vectors): T=-.9602 -.5770 -.0729 .3771 .6405 .6600 .4609 . .1336 -.2013 -.4344 -.5000 -.3930 -.1647 .0988 . .3072 .3960 .3449 .1816 -.0312 -.2189 -.3201; % PLOTTING THE DATA POINTS % = % Here the data points are plotted: plot(P,T,+); title(Training Vectors); xlabel(Input Vector P); ylabel(Target Vector T); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - - - % The function the neural network learns must pass through % these data points. pause % Strike any key to design the network.clc % DESIGN THE NETWORK % = % A two-layer TANSIG/PURELIN network will be trained. %The number of hidden TANSIG neurons should reflect the % complexity of the problem. S1 = 5; %INITFF is used to initialize the weights and biases for %the TANSIG/PURELIN network. w1,b1,w2,b2 = initff(P,S1,tansig,T,purelin); echo off % TRAINING THE NETWORK % = %TRAINBP uses backpropagation to train feed-forward networks. df = 10; % Frequency of progress displays (in epochs). me = 8000; % Maximum number of epochs to train. eg = 0.02; % Sum-squared error goal. lr = 0.01; % Learning rate. tp = df me eg lr; %Training begins.please wait (this takes a while!). w1,b1,w2,b2,ep,tr=trainbp(w1,b1,tansig,w2,b2,purelin,P,T,tp); % .and finally finishes. %TRAINBP has returned new weight and bias values, the number % of epochs trained EP, and a record of training errors TR. pause % Strike any key to see a plot of errors. clc % PLOTTING THE ERROR CURVE % = %Here the errors are plotted with respect to training epochs: ploterr(tr,eg); pause % Strike any key to use the function approximator. clc 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 14 页 - - - - - - - - - % USING THE PATTERN ASSOCIATOR % = % We can now test the associator with one of the origonal % inputs, 0.5, and see if it returns the target, 0.3960. p = 0.5; a = simuff(p,w1,b1,tansig,w2,b2,purelin) % The result is fairly close. Training to a lower error % goal would result in a closer approximation. echo off disp(End of DEMOBP2) 2、传递函数PURELIN 纯线性形 函数格式: PURELIN (Z,B)成批处理向量 Z,并提供阈值 B 对数 S形 LOGSIG 函数格式: LOGSIG (Z,B)双曲正切 S形 TANSIG 函数格式: TANSIG (Z,B)3反向传播误差导数函数1)1)DELTALIN (A,E)计算线性输出层的误差导数阵,A、E 分别为这一层的输出向量与误差名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 14 页 - - - - - - - - - 2)2)DELTALIN (A,D ,W )3)2)计算线性隐层的误差导数阵,D 为下一层的向量, W为与下一层的连接强度4)3)DELTALOG(A,E)5)4)DELTALOG(A,D ,W )6)5)DELTATAN(A,E)7)6)DELTATAN(A,D ,W )4、BP 网络的学习规则1)反向传播学习规则格式: LEARNBP (P,D ,LR )DW ,DBLEARNBP(P,D ,LR )其中 P为本层的输入向量, D为向量(可以通过反向传播误差导数函数计算) ,LR为学习速率可同时得到连接强度的修正矩阵DW 与阈值修正向量 DB 。利用本函数之前, 首先要计算出网络输出层的误差向量的导数 2 向量,然后通过网络反向传播,直到计算出每个隐层的误差导数(1 向量) ,可利用函数 DELTALIN 、DELTALOG、DELTATAN 来计算。2)利用动量规则的改进BP算法格式: LEARNBPM(P,D,LR,MC,DW) DW,DB= LEARNBPM(P,D,LR,MC,DW,DB) 其中 MC 为动量常数, 0MC 1。说明:标准 BP算法在修正权值时, 只是按照当时的负梯度方向进行修改,而没有考虑到以前的梯度方向,从而常常使学习过程发生振荡,收敛缓慢。而动量法则是考虑先前的梯度方向。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 14 页 - - - - - - - - - 5、BP 神经网络的训练1). 利用 BP算法训练前向网络格式:W,B,TE,TRTRAINBP (W ,B,F ,P,T,TP)W1,B1,W2,B2,TE,TR=TRAINBP(W1,B1,F1,W2,B2,F2,P,T,TP) W1,B1,W2,B2,W3,B3,TE,TR= TRAINBP(W1,B1,F1,W2,B2,F2,W2,B3,F3,P,T,TP) 说明:(1)W为连接强度, B为阈值, F为传递函数名(2)T 为理想输出向量, P为输入(3)TP为可选训练参数TP(1) 指定两次更新显示间的训练次数,其缺省值为 25 TP(2) 指定训练的最大次数,其缺省值为100 TP(3) 指定误差平方和的指标,其缺省值为0.02 TP(4) 指定学习速率,其缺省值为0.01 (4)w,b,te,tr为训练结果TE为网络的实际训练次数TR为网络训练误差平方和向量2)利用快速 BP算法训练前向网络格式:W,B,TE,TRTRAINBPX (W ,B,F ,P,T,TP)W1,B1,W2,B2,TE,TR=TRAINBPX(W1,B1,F1,W2,B2,F2,P,T,TP) W1,B1,W2,B2,W3,B3,TE,TR= TRAINBPX(W1,B1,F1,W2,B2,F2,W2,B3,F3,P,T,TP) 说明:(1)TRAINBPX采用了动量法和学习率自适用调整策略,从而提高了学习速度及增加了算法的可靠性(2)TP为可选训练参数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 14 页 - - - - - - - - - TP(1) 指定两次更新显示间的训练次数,其缺省值为 25 TP(2) 指定训练的最大次数,其缺省值为100 TP(3) 指定误差平方和的指标,其缺省值为0.02 TP(4) 指定学习速率,其缺省值为0.01 TP(5) 指定学习速率增加的比率,其缺省值为1.05 TP(6) 指定学习速率减少的比率,其缺省值为0.7 TP(7) 指定动量常数,其缺省值为0.9 TP(8) 指定最大误差比率,其缺省值为0.4 3)利用 Levenberg-Marquardt算法训练前向网络格式:W,B,TE,TRTRAINLM (W ,B,F ,P,T,TP)W1,B1,W2,B2,TE,TR=TRAINLM(W1,B1,F1,W2,B2,F2,P,T,TP) W1,B1,W2,B2,W3,B3,TE,TR= TRAINLM(W1,B1,F1,W2,B2,F2,W2,B3,F3,P,T,TP) 说明:(1)TRAINBPX采用了动量法和学习率自适用调整策略,从而提高了学习速度及增加了算法的可靠性(2)TP为可选训练参数TP(1) 指定两次更新显示间的训练次数,其缺省值为 25 TP(2) 指定训练的最大次数,其缺省值为100 TP(3) 指定误差平方和的指标,其缺省值为0.02 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 14 页 - - - - - - - - - 6、BP 网络仿真函数格式:SIMUFF (P,W1 ,B1,F1)SIMUFF (P,W1 ,B1,F1,W2 ,B2,F2)SIMUFF (P,W1 ,B1,F1,W2 ,B2,F2,W3 ,B3,F3)其中 P为输入向量。六、Matlab 中 LVQ神经网络的实现学习向量量化( LVQ )是在监督状态下对竞争层进行训练的一种学习算法。 竞争层将自动学习对输入向量进行分类,分类结果仅仅依赖于输入向量之间的距离。一般 LVQ神经网络含竞争层和目标分类层。1、LVQ网络的初始化格式: W1,W2=INITLVQ(P,S1,T) 说明:目标向量T 必须只有一个一个元素为1,其余元素为0。2、LVQ网络的学习格式: LEARNLVQ(W ,P,A,T,LR)3、LVQ网络的训练格式: W1,W2 ,TE=TRAINLVQ (W1 ,W2 ,P,T,TP )4、LVQ网络的模拟格式: SIMULVQ (P,W ,B)七、Matlab 中 自组织神经网络的实现1、自组织网络的初始化格式一: W1,W2=INITC(P,S) 格式二: W=INITSM (P,S)2、自组织网络的训练格式一: W1,W2 ,TE=TRAINC (W ,P,TP)格式二: W=TRAINSM(W,M,P,TP) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 14 页 - - - - - - - - - 其中 W是权矩阵, M是邻域矩阵3、自组织网络的模拟格式一: SIMUSM (P,W ,M ,N)其中 N为邻域的大小,缺省为1;输出:对于最大网络输入的神经元i ,对应的输出为1;与之距离在 1 之内的神经元输出为0.5 ,其余神经元的输出为0。十、举例1蠓虫分类问题2DNA序列分类问题(大连理工大学论文)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 14 页 - - - - - - - - -