BP神经网络中s函数的作用,bp神经网络的目标函数

BP神经网络的传递函数选择有什么特定要求?我使用高斯函数作为其传递函数(激活函数)可行麽

谷歌人工智能写作项目:神经网络伪原创

BP神经网络matlab工具箱中的激励函数(传递函数),训练函数,学习函数

激励函数用于神经元由输入计算输出的,而训练函数和学习函数是基于误差,来修改权值和阈值的,再就完成了一次训练,然后继续迭代,知道达到迭代次数或满足精度好文案

然而,学习函数和训练函数的功能貌似很相近,至于具体区别,正在纠结着我呢。

MTALAB中BP神经网络newff函数

cols=100;%样本数量p=zeros(2,cols);%这个不要也可以,但效率会低一点t=zeros(2,cols);for i=1:colstheta1=rand()*pi/2;theta2=rand()*pi/2;x=L1*cos(theta1)+L2*cos(theta1+theta2);%L1、L2需要预定义y=L1*sin(theta1)+L2*sin(theta1+theta2);p(1,i)=theta1;p(2,i)=theta2;t(1,i)=x;t(2,i)=y;end%接下来用newff、train、sim函数代码如上。

newff函数的格式为:net=newff(PR,[S1 S2 ],{TF1 },BTF,BLF,PF),函数newff建立一个可训练的前馈网络。

输入参数说明:PR:Rx2的矩阵以定义R个输入向量的最小值和最大值;Si:第i层神经元个数;TFi:第i层的传递函数,默认函数为tansig函数;BTF:训练函数,默认函数为trainlm函数;BLF:权值/阀值学习函数,默认函数为learngdm函数;PF:性能函数,默认函数为mse函数。

BP神经网络原理

人工神经网络有很多模型,但是日前应用最广、基本思想最直观、最容易被理解的是多层前馈神经网络及误差逆传播学习算法(Error Back-Prooaeation),简称为BP网络。

在1986年以Rumelhart和McCelland为首的科学家出版的《Parallel Distributed Processing》一书中,完整地提出了误差逆传播学习算法,并被广泛接受。

多层感知网络是一种具有三层或三层以上的阶层型神经网络。

典型的多层感知网络是三层、前馈的阶层网络(图4.1),即:输入层、隐含层(也称中间层)、输出层,具体如下:图4.1 三层BP网络结构(1)输入层输入层是网络与外部交互的接口。

一般输入层只是输入矢量的存储层,它并不对输入矢量作任何加工和处理。输入层的神经元数目可以根据需要求解的问题和数据表示的方式来确定。

一般而言,如果输入矢量为图像,则输入层的神经元数目可以为图像的像素数,也可以是经过处理后的图像特征数。

(2)隐含层1989年,Robert Hecht Nielsno证明了对于任何在闭区间内的一个连续函数都可以用一个隐层的BP网络来逼近,因而一个三层的BP网络可以完成任意的n维到m维的映射。

增加隐含层数虽然可以更进一步的降低误差、提高精度,但是也使网络复杂化,从而增加了网络权值的训练时间。

误差精度的提高也可以通过增加隐含层中的神经元数目来实现,其训练效果也比增加隐含层数更容易观察和调整,所以一般情况应优先考虑增加隐含层的神经元个数,再根据具体情况选择合适的隐含层数。

(3)输出层输出层输出网络训练的结果矢量,输出矢量的维数应根据具体的应用要求来设计,在设计时,应尽可能减少系统的规模,使系统的复杂性减少。

如果网络用作识别器,则识别的类别神经元接近1,而其它神经元输出接近0。

以上三层网络的相邻层之间的各神经元实现全连接,即下一层的每一个神经元与上一层的每个神经元都实现全连接,而且每层各神经元之间无连接,连接强度构成网络的权值矩阵W。

BP网络是以一种有教师示教的方式进行学习的。首先由教师对每一种输入模式设定一个期望输出值。然后对网络输入实际的学习记忆模式,并由输入层经中间层向输出层传播(称为“模式顺传播”)。

实际输出与期望输出的差即是误差。按照误差平方最小这一规则,由输出层往中间层逐层修正连接权值,此过程称为“误差逆传播”(陈正昌,2005)。

所以误差逆传播神经网络也简称BP(Back Propagation)网。随着“模式顺传播”和“误差逆传播”过程的交替反复进行。

网络的实际输出逐渐向各自所对应的期望输出逼近,网络对输入模式的响应的正确率也不断上升。通过此学习过程,确定下各层间的连接权值后。

典型三层BP神经网络学习及程序运行过程如下(标志渊,2006):(1)首先,对各符号的形式及意义进行说明:网络输入向量Pk=(a1,a2,...,an);网络目标向量Tk=(y1,y2,...,yn);中间层单元输入向量Sk=(s1,s2,...,sp),输出向量Bk=(b1,b2,...,bp);输出层单元输入向量Lk=(l1,l2,...,lq),输出向量Ck=(c1,c2,...,cq);输入层至中间层的连接权wij,i=1,2,...,n,j=1,2,...p;中间层至输出层的连接权vjt,j=1,2,...,p,t=1,2,...,p;中间层各单元的输出阈值θj,j=1,2,...,p;输出层各单元的输出阈值γj,j=1,2,...,p;参数k=1,2,...,m。

(2)初始化。给每个连接权值wij、vjt、阈值θj与γj赋予区间(-1,1)内的随机值。(3)随机选取一组输入和目标样本 提供给网络。

(4)用输入样本 、连接权wij和阈值θj计算中间层各单元的输入sj,然后用sj通过传递函数计算中间层各单元的输出bj。

基坑降水工程的环境效应与评价方法bj=f(sj) j=1,2,...,p (4.5)(5)利用中间层的输出bj、连接权vjt和阈值γt计算输出层各单元的输出Lt,然后通过传递函数计算输出层各单元的响应Ct。

基坑降水工程的环境效应与评价方法Ct=f(Lt) t=1,2,...,q (4.7)(6)利用网络目标向量 ,网络的实际输出Ct,计算输出层的各单元一般化误差 。

基坑降水工程的环境效应与评价方法(7)利用连接权vjt、输出层的一般化误差dt和中间层的输出bj计算中间层各单元的一般化误差 。

基坑降水工程的环境效应与评价方法(8)利用输出层各单元的一般化误差 与中间层各单元的输出bj来修正连接权vjt和阈值γt。

基坑降水工程的环境效应与评价方法(9)利用中间层各单元的一般化误差 ,输入层各单元的输入Pk=(a1,a2,...,an)来修正连接权wij和阈值θj。

基坑降水工程的环境效应与评价方法(10)随机选取下一个学习样本向量提供给网络,返回到步骤(3),直到m个训练样本训练完毕。

(11)重新从m个学习样本中随机选取一组输入和目标样本,返回步骤(3),直到网路全局误差E小于预先设定的一个极小值,即网络收敛。如果学习次数大于预先设定的值,网络就无法收敛。(12)学习结束。

可以看出,在以上学习步骤中,(8)、(9)步为网络误差的“逆传播过程”,(10)、(11)步则用于完成训练和收敛过程。通常,经过训练的网络还应该进行性能测试。

测试的方法就是选择测试样本向量,将其提供给网络,检验网络对其分类的正确性。测试样本向量中应该包含今后网络应用过程中可能遇到的主要典型模式(宋大奇,2006)。

这些样本可以直接测取得到,也可以通过仿真得到,在样本数据较少或者较难得到时,也可以通过对学习样本加上适当的噪声或按照一定规则插值得到。

为了更好地验证网络的泛化能力,一个良好的测试样本集中不应该包含和学习样本完全相同的模式(董军,2007)。

求助,用matlab中的BP神经网络函数,但没有trainglm

newff()这个函数是建立一个神经网络的函数,其中括号里面的参数含义依次是:输入数据和输出数据的范围,隐含层神经元个数,传递函数设置像BP网编程这块,需要先给出输入和期望输出的数据矩阵,然后newff函数建立网络,然后train函数训练网络,在这个训练中你需要设置一些训练目标和训练次数等参数,然后还有一个sim仿真函数,就是把新的样本数据做为输入,通过这个我们训练好的网络判断这个样本所属分类。

因为我用BP网主要做的是分类的实验,所以就从分类这块给你说明了。

学BP网络,我个人经验是需要把BP的正向输出和反向误差修改权值阈值这个学习过程,自己先手算明白,然后自己编程序实验,最后再用MATLAB的封装函数NEWFF这些,你会发现NEWFF和我们自己理解的训练过程还是有细微的差别的。

神经网络的激活函数和传递函数有什么区别?

理论上讲任何一个连续的非多项式、常数函数都可以做为BP的激活函数,而且这都是已经在数学上证明过的问题。

但sigmoid函数相对其他函数有它自身的优点,比如说光滑性,鲁棒性,以及在求导的时候可以用它自身的某种形式来表示 。这一点在做数值试验的时候很重要,因为权值的反向传播,要求激活函数的导数 。

多层就有多个导数,如果用一般的连续函数,这对计算机的存储和运算都是一个问题,此外还要考虑整个模型的收敛速度,我上面提到连续函数都可以做激活函数 。

但是相应的Sigmoidal型函数的收敛速度还是比较快的,(相同的结构前提下)还有就是BP在做分类问题的时候,Sigmoidal函数能比较好的执行这一条件,关于连续函数可以做激活函数的证明,可以在IEEE trans. on neural networks 和NeuralNetworks以及Neural Computating 和Neural Computation上找到。

请问大神:函数拟合神经网络(fitnet)是BP神经网络吗?在线等待中。

是BP神经网络,是一个只有一个隐含层的的BP神经网络。

nntraintool中的fitnetopen fitnet  命令打开MATLAB中fitnet中的函数:可以看到,里面使用了feedforwardnet()函数,这是建立BP神经网络的新函数,用以替代newff()函数。

在feedforwardnet()函数中,隐藏层和输出层的传递函数分别是'tansig'和‘purelin’tansig和purelin作为传递函数另外需要指出的是,在建立的神经网络中,权重和阈值是归一化后的参数使用的权重和阈值,归一化的过程是在fitnet()函数中进行的。

具体的问题可以使用下面的代码来加深理解。

clearclc[x,t] = simplefit_dataset;net = fitnet(10);net = train(net,x,t);y = net(x);   %x为输入,t为输出%获取模型参数w1= {1,1};b1=net.b{1};w2 = {2,1};b2=net.b{2};%%%查看网络的传递函数ss=net.layers{1}.transferFcn;sw=net.layers{2}.transferFcn;x1=mapminmax(x);         %x1为原始数据归一化后的输入数据        [t1,ps]=mapminmax(t);    %t1为原始数据归一化后的输出数据t11=w2*(tansig(w1*x1+b1))+b2;     %t11为神经网络求取的归一化输出数据t12=mapminmax('reverse',t11,ps);  %t12为使用模型参数并且反归一化后的输出数据。

 

你可能感兴趣的