基于BP神经网络工具箱实现函数逼近

基于BP神经网络工具箱实现函数逼近
基于BP神经网络工具箱实现函数逼近

第38卷第9期

湖南农机

HUNAN AGRICULTURAL MACHINERY

第38卷第9期·学术

V ol.38No.92011年9月

Se p.2011

图13层BP 神经网络模型结构图

基于BP 神经网络工具箱实现函数逼近

王丽萍

(长安大学,陕西

西安

710054)

摘要:运用计算机高级语言编程对神经网络BP 模型进行仿真和辅助设计是件十分麻烦的事情,为了解决这个矛盾,Matlab 神经网络工具箱中专门编制了大量有关设计BP 网络模型的工具函数。文章分析了Matlab 软件包中人工神经网络工具箱的有关BP 网络的工具函数,结合一个实际的例子详细阐述了基于BP 神经网络的函数逼近过程及其MATLAB 实现方法。

关键词:Matlab ;BP 神经网络;工具箱中图分类号:TP393.02文献标识码:A 文章编号:1007-8320(2011)09-0029-03

Realization based on BP neural network toolbox function approximation

WANG Li-ping

(Chang'an University,Xi'an Shanxi 710054,China)

Abstract :The high-level computer language programming on the BP neural network simulation and model-aided design is a very troublesome thing,in order to resolve this conflict,Matlab neural network toolbox specifically designed for the preparation of a large number of BP neural network model of utility functions.This paper analyzes the Matlab package of artificial neural network toolbox of the BP network utility functions,combined with a detailed practical exam -ple based on BP neural network function approximation process and MATLAB implementation.

Keywords :Matlab;BP neural network;toolbox

收稿日期:2011-07-16作者简介:王丽萍(1985-),山东潍坊人,硕士,主要研究方向:基

于浮动车的路段行程时间预测方法。

1BP 神经网络的结构

BP 神经网络,通常由输入层、输出层和隐含层构成,相

邻层节点之间通过权连接,同层神经元之间没有联系,每一层神经元的状态只影响下一层的神经元的输入和输出。

根据Kolmogorov 定理,在隐层使用S 形传输函数,在输出层中使用线形传输函数的三层神经网络,几乎可以以任意精度逼近任何连续函数,只要隐层中有足够的单元可用。隐含层节点数的选取至今没有确切的方法和理论,一般情况下根据学习样本和测试样本误差的学习和修改来选取的。通常情况下隐含层神经元个数太少,网络所能获取的用来解决问题的信息太少;隐含层神经元个数太多,使得训练时间增大,不能够在人们接受的时间内完成训练,更重要是隐含层神经元过多,可能引起所谓的“过拟合”现象,即把网络训练集里一些无关紧要、非本质的东西也学会。一个典型的3层BP 神经网络模型结构如图1所示。

2BP 神经网络的学习算法

BP 算法的基本思想是,学习过程由信号的正向传播与

误差的反向传播两个过程组成。正向传播时,输入样本从输入层传入,经隐含层处理后,传向输出层。若输出层的实际输出与期望的输出不符,则转入误差的反向传播阶段。误差反传是将输出误差以某种形式通过隐层向输入层逐层反传

将误差信号沿原来的神经元连接通路返回,返回过程中逐一修改各层神经元连接的权值。

学习步骤如下:

设BP 网络的输入层、隐含层和输出层分别有I 、J 和K 个神经元,

输入层第i 个神经元的输入和输入层第i 个神经元的输出分别为:x i 和o i ;

隐含层第j 个神经元的输入:

net j =I

i =1

Σw ij o i -θj =I

i =1

Σw ij x i -θj

(j=1,2,···J )

式中,w ij 为输入层中第i 个神经元到隐含层第j 个神经元的权值,θj 为隐含层第j 个神经元的阈值;

隐含层第j 个神经元的输出:

o j =g (net j )=

1

1+e -(netj-θ

j )

(j=1,2,···J )

湖南农机2011年9月其中g()为正切S型传递函数;

输出层第k个神经元的输入:net k=

K

k=1

Σw kj-θk

式中,w kj为隐含层中第j个神经元到输出层第k个神经元的权值,θk为输出层第k个神经元的阈值;输出层第k个神经元的输出:o k=g(net k)=net k(k=1,2,···k),其中g()为线性传输函数;

BP网络的学习过程按使误差函数减小最快的方向调整加权系数,目标是使网络输出与训练样本的均方误差最小。

设训练样本为P个,输入向量为x1,x2,···x p,实际输出向量为o1,o2,···o p,期望的输出向量为t1,t2,···t p。

第P个样本的均方误差为:J P=1

L

k=1

Σ(t p k-o k p)2

t p k,o k p分别为第k个输出神经元第P个样本的期望输出和实际输出;

输出层神经元系数的修正公式:

△w kj=ηδp k o p j=ηo p j(t p k-o k p)(1-o k p)o k p

隐含层权系数的调整:

△w ij=ηδp i o p j=ηo p j(1-o i p)(

K

k=1

Σδp k w kj)o j p

其中:δp k=-藜Jp

藜w kp =-藜Jp

藜o k p

·藜o k p

藜net k p

=(t p k-o k p)·g(net k p)=(t p k-

o k p)o k p(1-o k p)

η为学习率。

3MATLAB神经网络工具箱

MATLAB神经网络工具箱以人工神经网络为基础,根据自己的需要调用相关函数,就可以完成网络设计、权值初始化、网络训练等,MATLAB神经网络工具箱包括的网络有感知器、线性网络、BP神经网络、径向基网络、自组织网络和回归网络,BP神经网络工具箱主要包括newff,sim和train三个神经网络函数。

(1)newff:BP神经网络参数设置函数

函数功能:构建一个BP神经网络。

函数形式:net=newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF, DDF)

P:输入数据矩阵

T:输出数据矩阵

S:隐含层节点数

TF:节点传递函数,包括硬限幅传递函数hardlim,对称硬限幅传递函数hardlims,线性传递函数purelin,正切S型传递函数tansig,对数S型传递函数logsig

BTF:训练函数,包括梯度下降BP算法训练函数traingd,动量反传的梯度下降BP算法训练函数traingdm,动态自适应学习率的梯度下降BP算法训练函数traingda,动量反传和动态自适应学习率的梯度下降BP算法训练函数traingdx,Lev-enberg_Marquardt的BP算法训练函数trainlm

BLF:网络学习函数,包括BP学习规则learngd,带动量项的BP学习规则learngdm

PF:性能分析函数,包括均值绝对误差性能分析函数mae,均方差性能分析函数mse

IPF:输入处理函数

OPF:输出处理函数

DDF:验证数据划分函数

一般在使用过程中设置前六个参数,后四个参数采用系统默认参数。

(2)train:BP神经网络训练函数

函数功能:用训练数据训练BP神经网络。

函数形式:[net,tr]=train(NET,X,T,Pi,Ai)

NET:待训练网络

X:输入数据矩阵

T:输出数据矩阵

Pi:初始化输入层条件

Ai:初始化输出层条件

net:训练好的网络

tr:训练过程记录

一般在使用过程中设置前三个参数,后两个参数采用系统默认参数。

(3)sim:BP神经网络预测函数

函数功能:用训练好的BP神经网络预测函数输出

函数形式:y=sim(net,x)

net:训练好的网络

x:输入数据

y:网络预测数据

4用MATLAB神经网络工具箱进行函数逼近

设要逼近的非线性函数为:

y=8+2*exp(1-x.^2).*cos(2*pi*x),-0.4

(1)网络建立:使用net=newff(x,y,20,{'tansig','purelin'}, 'trainlm','learngdm');语句建立一个前馈BP神经网络。该BP 神经网络只含有一个隐含层,神经元的个数为20,隐层传递函数tansig,输出层传递函数purelin,训练函数为Leven-berg_Marquardt的BP算法训练函数trainlm,网络学习函数是带动量项的BP学习规则learngdm。

(2)网络训练:使用net=train(net,x,y);语句训练建立喊的BP神经网络。在训练网络之前设置好训练参数。

用“net.trainParam.epochs=50;net.trainParam.goal=0.01;net.train-Param.lr=0.01;

net.trainParam.show=10;”语句实现。其他参数默认。

(3)网络仿真:使用“y1=sim(net,x);y2=sim(net,x);”语句仿真训练前后的BP神经网络。

程序1:MATLAB程序源代码

x=[-0.4:0.04:3.6];

y=8+2*exp(1-x.^2).*cos(2*pi*x);

net=newff(x,y,20,{'tansig','purelin'},'trainlm','learngdm');

y1=sim(net,x);%未训练前进行仿真

net.trainParam.epochs=50;

net.trainParam.goal=0.01;

net.trainParam.lr=0.01;

net.trainParam.show=10;

net=train(net,x,y);%训练函数

y2=sim(net,x);

30

第38卷第9期王丽萍:基于BP 神经网络工具箱实现函数逼近figure(1)

>>plot(x,y,'-',x,y1,'--',x,y2,'+')

title('原函数与网络训练前后的仿真结果比较')>>xlabel('x');ylabel('y')>>text(2,33,'-原函数y')

>>text(2,30,'--未训练网络的仿真结果y1')>>text(2,27,'+训练网络的仿真结果y2')

图2

原函数与网络训练前后的仿真结果比较

图3训练误差

由程序知直接调用MATLAB 软件包中的神经网络工具箱函数。图2为原函数与网络训练前后的仿真结果比较图。由图可知,用工具箱函数建立网络时,对权值和阈值的初始化是随机的,所以未训练网络的仿真效果很差,并且每次运行结果也不同。训练后网络的仿真输出曲线和原函数的曲线非常接近,这说明训练后的网络对非线性函数的逼近效果很好。网络训练过程中误差随训练时间的变化迅速减少,在经过4

个单位时间以后,网络的误差就达到了逼近要求(图3)。5结论Matlab 软件包中的BP 工具箱函数在数学计算、图形计算、计算机仿真等方面为研究和设计神经网络提供了便利的工具,BP 神经网络最强大的应用之一就是函数逼近。BP 工

具箱函数克服了计算机高级语言编程的复杂性问题,语言简

单,调试方便,程序运行效率极高,具有重要的推广应用前景.

[1]王伟.人工神经网络原理入门及应用[M].北京:北京航空航天大学出

社,

1995.[2]李国勇.神经网络控制及其Matlab 实现[M].北京:电子工业出版社,

2005.

[3]周开利,康耀红.神经网路模型及其Matlab 仿真程序设计[M].北京:清华大学出版社,2005.

[4]飞思科技产品研发中心.神经网络理论与Matlab7实现[M].北京:电子工业出版社,2005.

[5]丛爽.面向MATLAB 工具箱的神经网络理论与应用[M].合肥:中国

科学技术大学出版社,1998.[6]闻新,周露,等.Matlab 神经网络应用设计[M].北京:科学出版社,2001.

[7]闵惜琳,刘国华.用MATLAB 神经网络工具箱开发BP 网络应用[J].计算机应用,2001,21(8):163-164.

ééééééééééééééééé

原函数与网络训练前后的仿真结果比较31

(采用BP神经网络完成非线性函数的逼近)神经网络

控制系统仿真与模型处理设计报告 (采用BP神经网络完成非线性函数的逼近)

1、题目要求: (1)确定一种神经网络、网络结构参数和学习算法。 (2)选择适当的训练样本和检验样本,给出选取方法。 (3)训练网络使学习目标误差函数达到0.01,写出学习结束后的网络各参数,并绘制学习之前、第100次学习和学习结束后各期望输出曲线、实际输出曲线。绘制网络训练过程的目标误差函数曲线。 (4)验证网络的泛化能力,给出网络的泛化误差。绘制网络检验样本的期望输出曲线和网络输出曲线。 (5)分别改变神经网络的中间节点个数、改变网络的层数、改变学习算法进行比较实验,讨论系统的逼近情况,给出你自己的结论和看法。 2、设计方案: 在MATLAB中建立M文件下输入如下命令: x=[0:0.01:1]; y=2.2*power(x-0.25,2)+sin(5*pi*x); plot(x,y) xlabel('x'); ylabel('y'); title('非线性函数'); 得到如下图形,即所给的非线性函数曲线图:

构造一个1-7-1的BP神经网络,第一层为输入层,节点个数为1;第二层为隐层,节点个数为7;变换函数选正切s型函数(tansig);第三层为输出层,节点个数为1,输出层神经元传递函数为purelin函数。并且选Levenberg-Marquardt算法(trainlm)为BP网络的学习算法。对于该初始网络,我们选用sim()函数观察网络输出。继续在M函数中如下输入。 net=newff(minmax(x),[1,7,1],{'tansig','tansig','purelin'},'trainlm'); y1=sim(net,x); figure; plot(x,y,'b',x,y1,'r') title('期望输出与实际输出比较'); xlabel('t'); 则得到以下所示训练的BP网络期望输出与实际输出曲线比较: 应用函数train()对网络进行训练之前,需要预先设置训练参数。将最大训练次数为100次,训练精度设置为0.01,学习速度为0.01。 net.trainParam.epochs=100; net.trainParam.goal=0.001; net.trainParam.lr=0.01; net=train(net,x,y); y2=sim(net,x);

BP神经网络逼近非线性函数

BP神经网络逼近非线性函数3、试用BP神经网络逼近非线性函数 f(u) = )5.0 u(9.1 e+ - sin(10u) 其中,u∈[-0.5,0.5] 解题步骤: ①网络建立:使用“net=newff(minmax(x), [20, 1], {'tansig’,’ purelin' });,语句建立个前馈BP神经网络。该BP神经网络只含个隐含层,且神经元的个数为20。隐含层和输出层神经元的传递函数分别为tansig和pure-lin。其他参数默认。 ②网络训练:使用“net=train (net, x , y) ;”语句训练建立好的BP神经网络。当然在网络训练之前必须设置好训练参数。如设定训练时间为50个单位时间,训练目标的误差小于0.01,用“net.trainParam.epochs=50; net.train-Param.goal=0.01;”,语句实现。其他参数默认。 ③网络仿真:使用“y1=sim(net, x); y2=sim(net, x};”语句仿真训练前后的BP神经网络。 (2)程序如下: clear all; x=[-0.5:0.01:0.5]; y=exp(-1.9*(0.5+x)).*sin(10*x); net=newff(minmax(x),[20,1],{'tansig' 'purelin'}); y1=sim(net,x); %未训练网络的仿真结果net.trainParam.epochs=50; net.trainParam.goal=0.01; net=train(net,x,y); y2=sim(net,x); %训练后网络的仿真结果figure;

BP神经网络在Matlab函数逼近中的应用

燕山大学 模式识别与智能系统导论 题目:BP网络在函数逼近中的应用 专业:控制工程 姓名: X X X 学号:

一BP神经网络及其原理............................................................ - 1 - 1.1 BP神经网络定义............................................................. - 1 - 1.2 BP神经网络模型及其基本原理..................................... - 1 - 1.3 BP神经网络的主要功能................................................. - 3 - 1.4 BP网络的优点以及局限性............................................. - 3 - 二基于MATLAB的BP神经网络工具箱函数 ........................ - 6 - 2.1 BP网络创建函数............................................................. - 7 - 2.2 神经元上的传递函数...................................................... - 7 - 2.3 BP网络学习函数............................................................. - 8 - 2.4 BP网络训练函数............................................................. - 9 - 三BP网络在函数逼近中的应用.............................................. - 10 - 3.1 问题的提出.................................................................... - 10 - 3.2 基于BP神经网络逼近函数......................................... - 10 - 3.3 不同频率下的逼近效果................................................ - 14 - 3.4 讨论................................................................................ - 17 -

神经网络作业(函数逼近)

智能控制理论及应用作业 1资料查询 BP 神经网络的主要应用: 人脸识别、风电功率预测、短时交通流混沌预测、高炉熔渣粘度预测、汇率预测、价格预测、函数逼近等 Rbf神经网络的主要应用: 函数逼近、短时交通流预测、模式识别、降水预测、民航客运量预测、遥感影像分析、声纹识别、语言识别、人脸识别、车牌识别、汇率预测 Hopfield网络应用: 车牌识别、图像识别、遥感影像分类、字母识别、交通标志识别、优化计算中的应用、联想记忆存储器的实现、 2 BP编程算法: 2.1 利用样本训练一个BP网络 注:此程序自李国勇书中学习而来 程序部分: function [ output_args ] = bp( input_args ) %UNTITLED Summary of this function goes here % Detailed explanation goes here %此设计为两层BP神经网络,3输入,3隐含层节点,两个输出 %初始化部分: lr=0.05; %%需要给定学习速率 error_goal=0.001; %期望的误差 max_epoch=100000; %训练的最大步长 a=0.9; %惯性系数 Oi=0; Ok=0; %给两组输入,以及目标输出: X=[1 1 1;-1 -1 1;1 -1 1;]; %随便给一组输入输入,训练BP网络

T=[1 1 1 ;1 1 1]; %X=-1:0.1:1; %输入范围 %T=sin(pi*X); %X=[] q=3; %隐含层的节点数自己定义,在此给3个 %初始化 [M,N]=size(X); %输入节点个数为M,N为样本数 [L,N]=size(T); %输出节点个数为L wij=rand(q,M); %先给定加权系数一组随机值 wki=rand(L,q); wij0=zeros(size(wij)); %加权系数矩阵的初始值 wki0=zeros(size(wki)); for epoch=1:max_epoch %计算开始 NETi=wij*X; %各个隐含层的净输入 for j=1:N for i=1:q Oi(i,j)=2/(1+exp(-NETi(i,j)))-1; %再输入作用下,隐含层的输出 end end NETk=wki*Oi; %各个输出层的净输入 for i=1:N for k=1:L Ok(k,i)=2/(1+exp(-NETk(k,i)))-1; %在输入作用下,输出层的输出end end E=((T-Ok)'*(T-Ok))/2; %性能指标函数,就是误差 if(E

bp神经网络及matlab实现讲解学习

b p神经网络及m a t l a b实现

图1. 人工神经元模型 图中x1~xn是从其他神经元传来的输入信号,wij表示表示从神经元j到神经元i的连接权值,θ表示一个阈值 ( threshold ),或称为偏置( bias )。则神经元i的输出与输入的关系表示为: 图中 yi表示神经元i的输出,函数f称为激活函数 ( Activation Function )或转移函数 ( Transfer Function ) ,net称为净激活(net activation)。若将阈值看成是神经元i的一个输入x0的权重wi0,则上面的式子可以简化为: 若用X表示输入向量,用W表示权重向量,即: X = [ x0 , x1 , x2 , ....... , xn ]

则神经元的输出可以表示为向量相乘的形式: 若神经元的净激活net为正,称该神经元处于激活状态或兴奋状态(fire),若净激活net为负,则称神经元处于抑制状态。 图1中的这种“阈值加权和”的神经元模型称为M-P模型 ( McCulloch-Pitts Model ),也称为神经网络的一个处理单元( PE, Processing Element )。 2. 常用激活函数 激活函数的选择是构建神经网络过程中的重要环节,下面简要介绍常用的激活函数。 (1) 线性函数 ( Liner Function ) (2) 斜面函数 ( Ramp Function ) (3) 阈值函数 ( Threshold Function ) 以上3个激活函数都属于线性函数,下面介绍两个常用的非线性激活函数。 (4) S形函数 ( Sigmoid Function ) 该函数的导函数:

BP神经网络实现函数逼近python实现

机器学习作业一BP神经网络实现函数逼近 一.算法描述 BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用梯度下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。 二.数据描述 逼近函数y = sin(x) 三.算法参数 输入学习率,迭代次数,逼近函数,神经网络规模 输出逼近的函数 四.实验流程 反向传播算法(Back Propagation)分二步进行,即正向传播和反向传播。 这两个过程简述如下: 1.正向传播 输入的样本从输入层经过隐单元一层一层进行处理,传向输出层;在逐层处理的过程中。在输出层把当前输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。 2.反向传播 反向传播时,把误差信号按原来正向传播的通路反向传回,逐层修改连接权值,以望代价函数趋向最小。 输入层输入向量(n维):X=(x1,x2,…,xi,…,xn)T 隐层输出向量(隐层有m个结点):Y=(y1,y2,…,yj,…,ym)T 输出层输出向量(l维):O=(o1,o2,…,ok,…,ol)T 期望输出向量:d=(d1, d2,…,dk,…,dl)T 输入层到隐层之间的权值矩阵:V=(V1,V2,…,Vj,…,Vm) 隐层到输出层之间的权值矩阵用:W=(W1,W2,…,Wk,…,Wl) 对输出层第k个结点和隐含层的第j个结点有如下关系:

神经网络作业(函数逼近)

神经网络作业(函数逼近)

智能控制理论及应用作业 1资料查询 BP 神经网络的主要应用: 人脸识别、风电功率预测、短时交通流混沌预测、高炉熔渣粘度预测、汇率预测、价格预测、函数逼近等 Rbf神经网络的主要应用: 函数逼近、短时交通流预测、模式识别、降水预测、民航客运量预测、遥感影像分析、声纹识别、语言识别、人脸识别、车牌识别、汇率预测 Hopfield网络应用: 车牌识别、图像识别、遥感影像分类、字母识别、交通标志识别、优化计算中的应用、联想记忆存储器的实现、 2 BP编程算法:

T=[1 1 1 ;1 1 1]; %X=-1:0.1:1; %输入范围 %T=sin(pi*X); %X=[] q=3; %隐含层的节点数自己定义,在此给3个 %初始化 [M,N]=size(X); %输入节点个数为M,N为样本数 [L,N]=size(T); %输出节点个数为L wij=rand(q,M); %先给定加权系数一组随机值 wki=rand(L,q); wij0=zeros(size(wij)); %加权系数矩阵的初始值 wki0=zeros(size(wki)); for epoch=1:max_epoch %计算开始 NETi=wij*X; %各个隐含层的净输入

for j=1:N for i=1:q Oi(i,j)=2/(1+exp(-NETi(i,j)))-1; %再输入作用下,隐含层的输出 end end NETk=wki*Oi; %各个输出层的净输入 for i=1:N for k=1:L Ok(k,i)=2/(1+exp(-NETk(k,i)))-1; %在输入作用下,输出层的输出 end end E=((T-Ok)'*(T-Ok))/2; %性能指标函数,就是误差 if(E

BP神经网络逼近非线性函数

应用BP神经网络逼近非线性函

一、实验要求 1、逼近的非线性函数选取为y=sin(x1)+cos(x2),其中有两个自变量即x1,x2,一个因变量即y。 2、逼近误差<5%,即:应用测试数据对网络进行测试时,神经网络的输出与期望值的最大误差的绝对值小于期望值的5%。 3、学习方法为经典的BP算法或改进形式的BP算法,鼓励采用改进形式的BP算法。 4、不允许采用matlab中现有的关于神经网络建立、学习、仿真的任何函数及命令。 二、实验基本原理 2.1 神经网络概述 BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传播,误差反向传播。在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层。每一层的神经元状态只影响下一层神经元状态。如果输出层得不到期望输出,则转入反向传播,根据预判误差调整网络权值和阈值,从而使BP神经网络预测输出不断逼近期望输出。BP神经网络的拓扑结构如图所示。 2.2 BP神经网络训练步骤 BP神经网络预测前首先要训练网络,通过训练使网络具有联想记忆和预测能力。BP神经网络的训练过程包括以下几个步骤。 步骤1:网络初始化。根据系统输入输出序列(X,Y)确定网络输入层节点数n、隐含层节点数l、输出层节点数m,初始化输入层、隐含层和输出层神经元之间的连接权值ωij,ωjk,初始化隐含层阈值a,输出层阈值b,给定学习速率和神经元激励函数。 步骤2:隐含层输出计算。根据输入变量X,输入层和隐含层间连接权值ωij 以及隐含层阈值a,计算隐含层输出H。

j 1 (a )n j ij i i H f x ω==-∑ j=1,2,…,l 式中,l 为隐含层节点数,f 为隐含层激励函数,该函数有多种形式,一般选取为1 (x)1x f e -=+ 步骤3:输出层输出计算。根据隐含层输出H ,连接权值ωjk 和阈值b ,计算BP 神经 网络预测输出O 。 1 l k j jk k j O H b ω==-∑ k=1,2,…,m 步骤4:误差计算。根据网络预测输出O 和期望输出Y ,计算网络预测误差e 。 k k k e Y O =- k=1,2,…,m 步骤5:权值更新。根据网络预测误差e 更新网络连接权值ωij ,ωjk 1 (1)x(i)m ij ij j j jk k k H H e ωωηω==+-∑ i=1,2,…,n j=1,2,…,l jk jk j k H e ωωη=+ j=1,2,…,l k=1,2,…,m 步骤6:阈值更新。根据网络预测误差e 更新网络节点阈值a ,b 。 1 (1)m j j j j jk k k a a H H e ηω==+-∑ j=1,2,…,l k k k b b e =+ k=1,2,…,m 步骤7:判断算法迭代是否结束,若没有结束,返回步骤2。 2.3 附加动量法 经典BP 神经网络采用梯度修正法作为权值和阈值的学习算法,从网络预测误差的负梯 度方向修正权值和阈值,没有考虑以前经验的积累,学习过程收敛缓慢。对于这个问题,可以采用附加动量法来解决,带附加动量的算法学习公式为 [](k)(k 1)(k)a (k 1)(k 2)ωωωωω=-+?+--- 式中,ω(k),ω(k-1),ω(k-2)分别为k ,k-1,k-2时刻的权值;a 为动量学习率,一般取值为0.95。

神经网络算法详解

神经网络算法详解 第0节、引例 本文以Fisher的Iris数据集作为神经网络程序的测试数据集。Iris数据集可以在https://www.360docs.net/doc/503232044.html,/wiki/Iris_flower_data_set 找到。这里简要介绍一下Iris数据集: 有一批Iris花,已知这批Iris花可分为3个品种,现需要对其进行分类。不同品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度会有差异。我们现有一批已知品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度的数据。 一种解决方法是用已有的数据训练一个神经网络用作分类器。 如果你只想用C#或Matlab快速实现神经网络来解决你手头上的问题,或者已经了解神经网络基本原理,请直接跳到第二节——神经网络实现。 第一节、神经网络基本原理 1. 人工神经元( Artificial Neuron )模型 人工神经元是神经网络的基本元素,其原理可以用下图表示: 图1. 人工神经元模型 图中x1~xn是从其他神经元传来的输入信号,wij表示表示从神经元j到神经元i的连接权值,θ表示一个阈值( threshold ),或称为偏置( bias )。则神经元i的输出与输入的关系表示为:

图中yi表示神经元i的输出,函数f称为激活函数 ( Activation Function )或转移函数( Transfer Function ) ,net称为净激活(net activation)。若将阈值看成是神经元i的一个输入x0的权重wi0,则上面的式子可以简化为: 若用X表示输入向量,用W表示权重向量,即: X = [ x0 , x1 , x2 , ....... , xn ] 则神经元的输出可以表示为向量相乘的形式: 若神经元的净激活net为正,称该神经元处于激活状态或兴奋状态(fire),若净激活net 为负,则称神经元处于抑制状态。 图1中的这种“阈值加权和”的神经元模型称为M-P模型 ( McCulloch-Pitts Model ),也称为神经网络的一个处理单元( PE, Processing Element )。 2. 常用激活函数 激活函数的选择是构建神经网络过程中的重要环节,下面简要介绍常用的激活函数。 (1) 线性函数 ( Liner Function ) (2) 斜面函数 ( Ramp Function ) (3) 阈值函数 ( Threshold Function )

神经网络逼近函数

神经网络近似函数 题目: 采用神经网络逼近下列函数: 双极值型算例 9655 .0,537.0] 3,0[2/)3)(89.22.3()(max max 2==∈-+--=f x x x x x x x f 最优值 解: )(x f 的实际图如下: 神经网络训练前: 应用newff()函数建立BP 网络结构。隐层神经元数目n 可以改变,暂设为n=5,输出层有一个神经元。选择隐层和输出层神经元传递函数分别为tansig 函数和purelin 函数,网络训练的算

法采用Levenberg – Marquardt算法trainlm。 因为使用newff( )函数建立函数网络时,权值和阈值的初始化是随机的,所以网络输出结构很差,根本达不到函数逼近的目的,每次运行的结果也不同。 神经网络训练后 应用train()函数对网络进行训练之前,需要预先设置网络训练参数。将训练时间设置为500,训练精度设置为0.001,其余参数使用缺省值。训练后得到的误差变化过程如下所示。 由上图可知,逼近结果未达到目标,为此我们增加神经元数目n=20; 仿真结果如下:

至此,神经网络逼近结果符合要求。 下图是训练时间图: 从以上结果可以看出,网络训练速度很快,很快就达到了要求的精度0.001。 结论: 1.n 取不同的值对函数逼近的效果有很大的影响。改变BP 网络隐层神经元的数目,可以改变BP 神经网络对于函数的逼近效果。隐层神经元数目越多,则BP 网络逼近非线性函数的能力越强。(左边n=3,右边n=20)

2.不同的精度要求,对函数的逼近效果也不同。精度要求越高,逼近效果越好。 (左边精度为0.01,右边为0.001) 程序文本: clear all; x=[0:0.001:3]; y=-x.*(x.*x-3.2*x+2.89).*(x-3)/2.0; net=newff(minmax(x),[5,1],{'tansig''purelin'},'trainlm'); y1=sim(net,x); %神经网络训练前 net.trainParam.epochs=500; net.trainParam.goal=0.001; net=train(net,x,y);

数学建模bp神经网络讲解学习

数学建模B P神经网 络论文

BP 神经网络 算法原理: 输入信号i x 通过中间节点(隐层点)作用于输出节点,经过非线形变换,产生输出信号k y ,网络训练的每个样本包括输入向量x 和期望输出量d ,网络输出值y 与期望输出值d 之间的偏差,通过调整输入节点与隐层节点的联接强度取值ij w 和隐层节点与输出节点之间的联接强度jk T 以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数(权值和阈值),训练即告停止。此时经过训练的神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线形转换的信息。 变量定义: 设输入层有n 个神经元,隐含层有p 个神经元,输出层有q 个神经元 输入向量:()12,, ,n x x x x = 隐含层输入向量:()12,,,p hi hi hi hi = 隐含层输出向量:()12,,,p ho ho ho ho = 输出层输入向量:()12,,,q yi yi yi yi = 输出层输出向量:()12,,,q yo yo yo yo = 期望输出向量: ()12,, ,q do d d d = 输入层与中间层的连接权值: ih w 隐含层与输出层的连接权值: ho w 隐含层各神经元的阈值:h b 输出层各神经元的阈值: o b 样本数据个数: 1,2, k m =

激活函数: ()f ? 误差函数:21 1(()())2q o o o e d k yo k ==-∑ 算法步骤: Step1.网络初始化 。给各连接权值分别赋一个区间(-1,1)内的随机数,设定误差函数e ,给定计算精度值ε和最大学习次数M 。 Step2.随机选取第k 个输入样本()12()(),(), ,()n x k x k x k x k =及对应期望输出 ()12()(),(),,()q d k d k d k d k =o Step3.计算隐含层各神经元的输入()1 ()()1,2, ,n h ih i h i hi k w x k b h p ==-=∑和输出 ()()(())1,2, ,h h ho k f hi k h p ==及输出层各神经元的输入 ()1 ()()1,2, p o ho h o h yi k w ho k b o q ==-=∑和输出()()(())1,2, ,o o yo k f yi k o p == Step4.利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数()o k δ。 o ho o ho yi e e w yi w ???=??? (()) () ()p ho h o o h h ho ho w ho k b yi k ho k w w ?-?==??∑ 2 1 1((()()))2(()())()(()())f (()) () q o o o o o o o o o o o o d k yo k e d k yo k yo k yi yi d k yo k yi k k δ=?-?'==--??'=---∑ Step5.利用隐含层到输出层的连接权值、输出层的()o k δ和隐含层的输出计算误差函数对隐含层各神经元的偏导数()h k δ。

BP神经网络逼近非线性函数

应用BP 神经网络逼近非线性函 一、实验要求 1、逼近的非线性函数选取为y=sin(x 1)+cos(x 2) ,其中有两个自变量即x1,x2,一个因变量即y。 2、逼近误差<5% ,即:应用测试数据对网络进行测试时,神经网络的输出与期望值的最大误差的绝对值小于期望值的5% 。 3、学习方法为经典的BP 算法或改进形式的BP 算法,鼓励采用改进形式的BP 算法。 4、不允许采用matlab 中现有的关于神经网络建立、学习、仿真的任何函数及命令。 二、实验基本原理 2.1神经网络概述 BP 神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传播,误差反向传播。在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层。 每一层的神经元 状态只影响下一层神经元状态。如果输出层得不到期望输出,则转入反向传播,根据预判误差调整网络权值和阈值,从而使BP 神经网络预测输出不断逼近期望输出。BP 神经网络的拓扑结构如图所示。

2.2BP 神经网络训练步骤 BP 神经网络预测前首先要训练网络,通过训练使网络具有联想记忆和预测能力。BP 神经网络的训练过程包括以下几个步骤。 步骤 1 :网络初始化。根据系统输入输出序列(X,Y) 确定网络输入层节点数 n 、隐含层节点数l、输出层节点数m ,初始化输入层、隐含层和输出层神经元之间的连接权值ωij, ωjk , 初始化隐含层阈值a,输出层阈值 b ,给定学习速率和神经元激励函数。 步骤 2 :隐含层输出计算。根据输入变量X,输入层和隐含层间连接权值ω ij 以及隐含层阈值a,计算隐含层输出H 。

2.3 附加动量法 经典 BP 神经网络采用梯度修正法作为权值和阈值的学习算法, 从网络预测误差的负梯 度方向修正权值和阈值, 没有考虑以前经验的积累,学习过程收敛缓慢。对于这个问题,可 以采用附加动量法来解决,带附加动量的算法学习公式为 (k) (k 1) (k) a (k 1) (k 2) 式中,ω (k),ω(k-1) ,ω(k-2)分别为 k ,k-1,k-2 时刻的权值; a 为动量学习率,一般取值 为 0.95 。 H j n f( i1 ij x i a j ) j=1,2 ,?, l 式中,l 为隐含层节点数, f 为隐含层激励函数, 该函数有多种形式, 一般选取为 f(x) 1 x 1e 步骤 3 : 输出层输出计算。根据隐含层输出 H ,连接权值ω jk 和阈值 b ,计算 BP 神经 网络预测输出 O 。 l O k H j j1 jk b k k=1,2 ,?, m 步骤 4: 误差计算。 根据网络预测输出 和期望输出 Y ,计算网络预测误差 e 。 e k Y k O k k=1,2 ,?, m 步骤 5: 权值更新。 根据网络预测误差 e 更新网络连接权值ω ij ,ω jk ij ij H j (1 H j )x(i) jk e k i=1,2, ?,n j=1,2, ?,l jk jk H j e k j=1,2, ?,l k=1,2, ?,m 步骤 6: 阈值更新。 根据网络预测误差 e 更新网络节点阈值 a ,b 。 步骤 7: a j a j H j (1 m H j ) jk e k k1 j=1,2, ?,l b k b k e k k=1,2, ?,m 判断算法迭代是否结束,若没有结束,返回步骤 2。

BP神经网络详细讲解

PS:这篇介绍神经网络是很详细的,有一步一步的推导公式!神经网络是DL(深度学习)的基础。 如果对神经网络已经有所了解,可以直接跳到“三、BP算法的执行步骤“ 部分,算法框架清晰明了。 另外,如果对NN 很感兴趣,也可以参阅最后两篇参考博文,也很不错! 学习是神经网络一种最重要也最令人注目的特点。在神经网络的发展进程中,学习算法的研究有着十分重要的地位。目前,人们所提出的神经网络模型都是和学习算法相应的。所以,有时人们并不去祈求对模型和算法进行严格的定义或区分。有的模型可以有多种算法.而有的算法可能可用于多种模型。不过,有时人们也称算法为模型。 自从40年代Hebb提出的学习规则以来,人们相继提出了各种各样的学习算法。其中以在1986年Rumelhart等提出的误差反向传播法,即BP(error BackPropagation)法影响最为广泛。直到今天,BP算法仍然是自动控制上最重要、应用最多的有效算法。 1.2.1 神经网络的学习机理和机构 在神经网络中,对外部环境提供的模式样本进行学习训练,并能存储这种模式,则称为感知器;对外部环境有适应能力,能自动提取外部环境变化特征,则称为认知器。 神经网络在学习中,一般分为有教师和无教师学习两种。感知器采用有教师信号进行学习,而认知器则采用无教师信号学习的。在主要神经网络如BP网络,Hopfield网络,ART网络和Kohonen 网络中;BP网络和Hopfield网络是需要教师信号才能进行学习的;而ART网络和Kohonen网络则无需教师信号就可以学习。所谓教师信号,就是在神经网络学习中由外部提供的模式样本信号。 一、感知器的学习结构 感知器的学习是神经网络最典型的学习。 目前,在控制上应用的是多层前馈网络,这是一种感知器模型,学习算法是BP法,故是有教师学习算法。 一个有教师的学习系统可以用图1—7表示。这种学习系统分成三个部分:输入部,训练部和输出部。

基于BP神经网络的函数拟合

基于BP神经网络的函数拟合 摘要:随着科学技术的飞速发展,人工神经网络也迅速发展,它更是智能领域中的重要组成部分,现在它已经被广泛的应用到了数据处理、模式识别、机器控制、专家系统等多个领域之中,并且在预测领域得到了更深入的发展。BP神经网络是人工智能网络中的一个典型算法,而且它本身具有很强的非线性映射能力,解决一些非线性问题更是它最突出的一环。BP神经网络不止这-个优点,它的网络拓扑结构简单,而且具有较高的误差精度,并且它易于用编权实现,而它还具有很强的可操作性,等等。因此,BP神经网络的应用更加广泛,成为智能领域中的最重要的算法之一。 本文就BP神经网络的基本原理进行论述,并且利用BP神经网络进行二元函数拟合,对相关数据误差进行分析,并讨论如何在拟合过程中选择合适的激励函数,以使得拟合函数逼近真实函数,最后,对函数拟合的相关知识进行总结。 关键词:模式识别;BP神经网络;函数拟合;激励函数

第一章绪论 1.1 人工神经网络研究意义 人工神经网络[1]是为了进行信息处理而建立的一种数学模型,它之所以被称为神经网络是因为这一数学模型所应用的结构是一种类似大脑神经突触的联接结构。在很多领域,例如工程界、学术界等,通常称其为类神经网络,在更多的时候他们也简称其为“神经网络”。神经网络这一数学模型是由数据庞大的“神经”节点进行互联形成的一个结构,它也是一种运算模型。在这个模型中的每一个神经元节点都代表了一种特定的输出函数我们把这个特定的函数称作激励函数(activation function)[2],有时也称之为转换函数。每两个人工神经元节点之间的连接都会对通过的信息进行加权处理,对于这种加权处现,我们称它们为连接权系数或直接称它为权重(weight),这一操作间接的模拟了神经网络的记忆功能。网络的输出并不是固定不变的,它会根据网络的连接权系数、连接方式以及激励函数的不同而发生变化。 它的理念是受到了一定的启发而形成的,生物的动作、思想是在生物(人或其他动物)神经网络的运作下产生的,这也为人工神经网络的产生提供了支持。一般来讲,人工神经网络是对学习方法(Leaning Method)进行优化的算法,在网络中应用的学习方法一般均是基于数学统计学建立起来的,也就是说,它的优化有很大-部分来自于数学统计学,因此我们可以把人工神经网络看作是数学统计学的一个实际应用。一方面我们可以通过统计学的一些标准的数学方法来得到大量的局部结构空间,这些空间均能用函数来表达;在另一个方面,特别是在人工感知领域,它是人工智能学的一个分支,我们可以为其做一系列的决策方面的问题,它是通过数学统计学的方法来完成这一任务的。综上所述,人工神经网络在应用了数学统计学方面的一些方法后,它便有了一定的判断能力和决定能力,这一现象与人的思维很是相似,它的优势明显强于正式的逻辑学推理演算。 人工神经网络具有很多分支,比如BP (Back Propagation)神经网络[3]、遗传算法等,其中最为典型的神经网络是BP神经网络,BP神经网络的优点非常多其中最为重要的优点是它具有自学习和自适应的特性,而且BP网络还具有鲁棒

基于BP神经网络算法的正余弦函数逼近

实验二 基于BP 神经网络算法的正余弦函数逼近 班级: 学号: 姓名: 1. 实验目的 (1) 掌握MATLAB 子函数编写与调用。 (2) 理解BP 神经元网络算法的原理,并利用程序实现通过BP 算法逼近任意非线性函数。 2. 实验内容与实验要求 (1) 掌握BP 神经网络算法的原理。 (2) 掌握MATLAB 子函数的编写方法及调用方法。 (3) 根据BP 神经网络算法的原理,编写MA TLAB 程序,逼近非线性函数。 3. 实验原理 一个2×3×1的神经网络即输入层有两个节点,隐层含三个节点,输出层有一个节点, 图1 神经网络结构图 图中ij w )5,4,3;2,1(==j i 为输入层与隐层的权值,jk w )6;5,4,3(==k j 为隐层与输出层的权值,1x 、2x 是神经网络的输入值,y 是网络的输出值,p y 为教师信号,e 为神经网络的实际输出与期望输出的误差。在这个神经网络中,节点1,2是输入层, 节点3,4,5是隐层,节点6是输出层;输入层和隐层之间的权值依次 252423151413,,,,,w w w w w w ,隐层和输出层间的权值为564636,,w w w ,下角标为节点的编号;隐层和输出层节点的阈值依次为3θ,4θ,5θ,6θ。

①前馈计算 设隐层的第j 个节点的输入和输出分别为: ∑=?=N i i ij j O w I 1 )(j j I f O = 其中)(j I f 为激励函数 j I j e I f -+=11 )( 由于隐层的输出就是输出层的输入,则输出层第k 个节点的总输入和输出分别为: ∑=?=H j j jk k O w I 1 )(k k k I f O y == 若网络输出与实际输出存在误差,则将误差信号反向传播,并不断地修正权值,直至误差达到要求为止。 ②权值调整 设误差函数定义为: ∑=-=M k k k p y d E 1 2)(21 为了简便,以下计算都是针对每个节点而言,误差函数p E 记作E 。 输出层权值的调整 权值修正公式为: jk jk w E w ??-=?η jk k k w I I E ????-=η 定义反传误差信号k δ为:k k k k k I O O E I E ????-=??- =δ 式中 )(k k k O d O E --=?? )()(k k k k k I f I I f I O '=??=?? )1()](1)[()(k k k k k O O I f I f I f -=-='

基于BP神经网络的非线性函数拟合

基于BP 神经网络的非线性函数拟合 摘要:本文建立BP 神经网络对一个多输入多输出系统的二元非线性函数进行拟合,仿真实验表明:在样本数据充足且不含噪声的情况下,训练的精度越高,逼近的效果越好;数据不充足且 不含噪声时,训练精度的高低在一定范围内对于网络性能没有决定性的影响,网络性能主要取决于初始化;不管训练数据是否充足,若含有噪声,训练精度过高会使网络泛化能力降低。 0引言 作为当前应用最为广泛的一种人工神经网络,BP网络在函数逼近、模式识别、数据压缩、智能控制等领域有着非常广泛的应用。BP网络由大量简单处理单元广泛互联 而成,是一种对非线性函数进行权值训练的多层映射网络,结构简单,工作状态稳定,具有优良 的非线性映射能力,理论上它能够以任意精度逼近任意非线性函数。BP神经 网络通过学习能够存储大量输入输出样本中蕴含的映射关系,只需提供足够的样本模式对BP网 络进行训练,而无需事先了解数学方程。本文采用BP神经网络解决下列函数拟合问题。 函数逼近:设计一个神经网络拟合下列多输入多输出函数: y1=2+ x1 RP1.5-1.5sin(3 x2); y 2 = x 2 sin( x 1 )+ x 1 cos( x 2 ); 1< x1, x2<5 产生200 个数据,其中100 个用来训练网络,另外100 个用于网络模型的测试。 1 BP 神经网络结构和算法 一个典型的3层BP神经网络结构如图1所示,包括输入层、隐含层和输出层。各层神经元 之间无反馈连接,各层内神经元之间无任何连接。其中隐含层的状态影响输入输出之间的关系,

及通过改变隐含层的权系数,就可以改变整个多层神经网络的性能。 BP神经网络的学习过程由正向传播和反向传播组成。在正向传播中,输入的样本从输入层经过隐含层之后,传向输出层,在逐层处理的过程中,每一层神经元的状态只对下一层神经元的状态产生影响。在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。反向传播过程中,误差信号从输出层向输入层传播,并对每个隐含层的各个神经元的权系数进行修改,使误差不断减少,直至达到精 度要求。BP算法的实质是求取误差函数最小值问题,通过多个样本的反复训练,一般采用非线性规划中的最速下降方法,按误差函数的负梯度方向修改权系数。 隐含节点 图1典型3层BP神经网络结构图 2用于函数拟合的BP神经网络模型的建立 为建立函数拟合的BP神经网络模型,一般要考虑以下几步: (1) 样本数据的产生 为简单起见,在X1,X2均属于[1,5]区间内选择均匀分布的200个数据点分别作为训练和测试样本。如图2所示。 训练和测试数据 5 ------ ?1 D r―-- —1—t~~r--H 训练数据 测试数据 4.5 + +■*4-*+■★*-+ 弓T 4

BP神经网络详细讲解

PS:这篇介绍神经网络就是很详细得,有一步一步得推导公式!神经网络就是DL(深度学习)得基础。 如果对神经网络已经有所了解,可以直接跳到“三、BP算法得执行步骤“ 部分,算法框架清晰明了。 另外,如果对NN 很感兴趣,也可以参阅最后两篇参考博文,也很不错! 学习就是神经网络一种最重要也最令人注目得特点。在神经网络得发展进程中,学习算法得研究有着十分重要得地位。目前,人们所提出得神经网络模型都就是与学习算法相应得。所以,有时人们并不去祈求对模型与算法进行严格得定义或区分。有得模型可以有多种算法.而有得算法可能可用于多种模型。不过,有时人们也称算法为模型。 自从40年代Hebb提出得学习规则以来,人们相继提出了各种各样得学习算法。其中以在1986年Rumelhart等提出得误差反向传播法,即BP(error BackPropagation)法影响最为广泛。直到今天,BP算法仍然就是自动控制上最重要、应用最多得有效算法。 1.2.1 神经网络得学习机理与机构 在神经网络中,对外部环境提供得模式样本进行学习训练,并能存储这种模式,则称为感知器;对外部环境有适应能力,能自动提取外部环境变化特征,则称为认知器。 神经网络在学习中,一般分为有教师与无教师学习两种。感知器采用有教师信号进行学习,而认知器则采用无教师信号学习得。在主要神经网络如BP网络,Hopfield网络,ART网络与Kohonen 网络中;BP网络与Hopfield网络就是需要教师信号才能进行学习得;而ART网络与Kohonen网络则无需教师信号就可以学习。所谓教师信号,就就是在神经网络学习中由外部提供得模式样本信号。 一、感知器得学习结构 感知器得学习就是神经网络最典型得学习。 目前,在控制上应用得就是多层前馈网络,这就是一种感知器模型,学习算法就是BP法,故就是有教师学习算法。 一个有教师得学习系统可以用图1—7表示。这种学习系统分成三个部分:输入部,训练部与输出部。

相关文档
最新文档