BP神经网络函数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BP神经网络函数

基于MATLAB的神经网络编程

(1)编程理论

作为比较成熟的算法,软件Matlab中有神经网络工具箱,所以可以借助Matlab神经网络工具箱的强大功能,在此基础上进行二次开发,从繁琐的编程工作中解脱出来,大大提高工作效率。

Matlab的神经网络工具箱是在Matlab环境下所开发出来的许多工具箱之一,它以人工神经网络理论为基础,用Matlab语言构造出典型神经网络的激活函数(如S型、线性等激活函数),使使用者对所选定网络的输出计算编程对激活函数的调用;另外,根据各种修改网络权值的规律,加上网络的训练过程,用Matlab编写出各种网络训练的子程序。这样,使用者可以根据自己的应用要求,直接调用(或加进自己编写的)神经网络子函数,而不必要从事繁琐的编程。

基于Matlab的BP神经网络编程过程如下:

(1)对样本集进行归一化

确定输入样本和输出样本,并对它们进行归一化,将输入和输出样本变换到(0.1,0.9)区间,由于Matlab的归一化函数premnmx把数据变换到(-1,1)之间,所以使用自编premnmx2归一化函数。

(2)创建BP神经网络

在样本集确定之后,即可进行网络的结构设计,在Matlab中一般使用newff创建函数,它不但创建了网络对象,还自动初始化网络的权重和阈值。如果需要重新初始化网络权重和阈值,可以使用Init函数。

关键语句如下:

net=newff(输入样本的取值范围,[网络各层的神经元数目],{网络各层神经元的激活函数},‘训练函数',‘学习函数’,‘性能函数’)

一般选用三层BP网络,输入层、输出层的神经元个数根据具体情况确定,而隐层神经元个数目前多采用经验的方法确定。

(3)设置网络的训练参数

net.trainParam.epochs―最大收敛次数;

net.trainParam.goal―收敛误差;

net.trainParam.show―显示间隔;

以上在一般的神经网络训练中都有使用,本文使用Levenberg-Marquart优化算法进行训练,还需设置的参数有:

net.trainParam.mu―Levenberg-Marquart优化算法中的

net.trainParam.mu_dec―的缩减因子;

net.trainParam.mu_inc―的增大因子;

net.trainParam.mu_max―的最大值;

net.trainParam.min_grad―性能函数的最小梯度;

(4)训练BP网络

关键语句为:net=train(net,p,t)

(6)训练成功,相关结果输出。

编程过程

下面是一个以LM优化算法为训练函数的BP神经网络:

[S0,Q]=size(P); % 按照楼主的意思,P的行数必须为6

S1=7; % 7个隐含层神经元个数

S2=2; % 2个输出经元个数

% BP神经网络训练参数设置

net=newff(minmax(P),[S1,S2],{'logsig','logsig'},'trainlm');

net.trainParam.epochs=200000;

net.trainParam.goal=1e-30;

net.trainParam.min_grad=1e-15;

net.trainParam.mu=10;

net.trainParam.mu_dec=0.2;

net.trainParam.mu_inc=1.2;

net.trainParam.mu_max=1e15;

net.trainParam.show=100;

% 训练神经网络

[net,tr]=train(net,P,T);

在人工神经网络发展历史中,很长一段时间里没有找到隐层的连接权值调整问题的有效算法。直到误差反向传播算法(BP算法)的提出,成功地解决了求解非线性连续函数的多层前馈神经网络权重调整问题。

BP (Back Propagation)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。

BP神经网络模型BP网络模型包括其输入输出模型、作用函数模型、误差计算模型和自学习模型。

(1)节点输出模型

隐节点输出模型:Oj=f(∑Wij×Xi-qj) (1)

输出节点输出模型:Yk=f(∑Tjk×Oj-qk) (2)

f-非线形作用函数;q -神经单元阈值。

(2)作用函数模型

作用函数是反映下层输入对上层节点刺激脉冲强度的函数又称刺激函数,一般取为(0,1)内连续取值Sigmoid函数:f(x)=1/(1+e) (3)

(3)误差计算模型

误差计算模型是反映神经网络期望输出与计算输出之间误差大小的函数:

(4)

tpi- i节点的期望输出值;Opi-i节点计算输出值。

(4)自学习模型

神经网络的学习过程,即连接下层节点和上层节点之间的权重矩阵Wij的设定和误差修正过程。BP网络有师学习方式-需要设定期望值和无师学习方式-只需输入模式之分。自学习模型为

△Wij(n+1)= h ×Фi×Oj+a×△Wij(n) (5)

h -学习因子;Фi-输出节点i的计算误差;Oj-输出节点j的计算输出;a-动量因子。

/link?url=XnG4PxRYpZbgzZGCVdi45hXn6hDuY_KGmnjKvljkMgEy9yHhclSll-j c1prQFNrfGg29-djCqyqSG8pdXveLe_

相关文档
最新文档