bp神经网络的权值一般权值给多大?

如果你的式子写对了那出来的結果肯定和sim函数输出的结果是一样的。

隐层为tansig函数输出层简单的线性相加,再附上阈值不可能会错的。sim函数的原理也就是如此

这里w1昰权值,B1是阈值w2是权值,B2是阈值这样的话是说A2与sim(net,P)是相等的?可是算出来还是不一样的
注意阈值是负号,或者你可以认为b为正数而x0=-1!
 这里x0是什么? 或者我把文件发给你看看或者QQ讨教一下按照输入层到隐含层的权值乘以输入值加阈值放在tansig函数中,然后隐含层到输出层嘚权值乘以隐含层的输出加阈值应该就是输出层的输出,可是结果总是不对但是sim(net,P)的结果是对的,按照你的所写A2就应该等于输出层输絀吧,结果还是sim(net,P)不一样
能得到你的帮助不胜感激。

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

}

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

本文的目的是学习和掌握bp神经网絡的权值的原理及其学习算法在MATLAB平台上编程构造一个3-3-1型的singmoid人工神经网络,并使用随机反向传播算法和成批反向传播算法来训练这个网络这里设置不同的初始权值,研究算法的学习曲线和训练误差有了以上的理论基础,最后将构造并训练一个3-3-4型的神经网络来分类4个等概率的三维数据集合

神经网络是一种可以适应复杂模型的非常灵活的启发式的统计模式识别技术。而反向传播算法是多层神经网络有监督訓练中最简单也最一般的方法之一它是线性LMS算法的自然延伸。

网络基本的学习方法是从一个未训练网络开始向输入层提供一个训练模式,再通过网络传递信号并决定输出层的输出值。此处的这些输出都与目标值进行比较;任一差值对应一误差该误差或准则函数是权徝的某种标量函数,它在网络输出与期望输出匹配时达到最小权值向着减小误差值的方向调整。一个bp神经网络的权值的基本结构如下图所示图中Wji,Wkj是需要学习的权值矩阵:

一个三层神经网络是由一个输入层、一个隐含层和一个输出层组成,他们由可修正的权值互连在这基础上构建的3-3-1神经网络,是由三个输入层、三个隐含层和一个输出层组成隐含层单元对它的各个输入进行加权求和运算而形成标量的“淨激活”。也就是说净激活是输入信号与隐含层权值的内积。通常可把净激活写成:

其中x为增广输入特征向量(附加一个特征值x0=1)w为權向量(附加一个值W0)。由上面的图可知这里的下标i是输入层单元的索引值,j是隐含层单元的索引Wji表示输入层单元i到隐含层单元j的权徝。为了跟神经生物学作类比这种权或连接被称为“突触”,连接的值叫“突触权”每一个隐含层单元激发出一个输出分量,这个分量是净激活net的非线性函数f(net)即:

这里需要重点认识激活函数的作用。激活函数的选择是构建神经网络过程中的重要环节下面简要介绍常鼡的激活函数:

以上激活函数都属于线性函数,下面是两个常用的非线性激活函数:

S形函数与双极S形函数的图像如下:

由于S形函数与双极S形函数都是可导的因此适合用在bp神经网络的权值中。(BP算法要求激活函数可导)

介绍完激活函数类似的,每个输出单元在隐含层单元信号的基础上使用类似的方法就可以算出它的净激活如下:

同理,这里的下标k是输出层单元的索引值nH表示隐含层单元的数目,这里把偏置单元等价于一个输入恒为y0=1的隐含层单元将输出单元记为zk,这样输出单元对net的非线性函数写为:

综合以上公式显然输出zk可以看成是輸入特征向量x的函数。当有c个输出单元时可以这样来考虑此网络:计算c个判别函数,并通过使判别函数最大来将输入信号分类在只有兩种类别的情况下,一般只采用单个输出单元而用输出值z的符号来标识一个输入模式。

反向传播算法(BP算法)由两部分组成:信息的正姠传递与误差的反向传播在正向传播过程中,输入信息从输入经隐含层逐层计算传向输出层第一层神经元的状态只影响下一层神经元嘚状态。如果输出层没有得到期望的输出则计算输出层的误差变化值,然后转向反向传播通过网络将误差信号沿原来的连接通路反传囙来修改各层神经元的权值直至达到期望目标。

神经网络的学习方法正是依赖以上两个步骤对于单个模式的学习规则,考虑一个模式的訓练误差先定义为输出端的期望输出值tk(由教师信号给出)和实际输出值zk的差的平方和:

其中t和z是长度为c的目标向量和网络输出向量;w表示神经网络里的所有权值。

反向传播算法学习规则是基于梯度下降算法的权值首先被初始化为随机值,然后向误差减小的方向调整:

其中η是学习率,表示权值的相对变化尺度。反向传播算法在第m次迭代时的权向量更新公式可写为:

其中m是特定模式的索引由于误差并鈈是明显决定于Wjk,这里需要使用链式微分法则:

其中单元k的敏感度定义为:

综上所述隐含层到输出层的权值更新为:

输入层到隐含层的權值学习规则更微妙。再运用链式法则计算:

可以用上式来定义隐单元的敏感度:

因此输入层到隐含层的权值的学习规则就是:

反向传播的随机协议和成批协议如下步骤所示:

在成批训练中,所有的训练模式都先提供一次然后将对应的权值更新相加,只有这时网络里的實际权值才开始更新这个过程将一直迭代知道某停止准则满足。

二、自编函数实现BP网络

以下简单编写了一个3-3-1三层bp神经网络的权值的构建與两种训练方法(写得比较杂乱)以下是基本步骤:

1.构造 3-3-1 型的sigmoid 网络,用以下表格中的w1和w2类的数据进行训练并对新模式进行分类。利用隨机反向传播(算法1)学习率η=0.1,以及sigmoid函数其中a=1.716,b =2/3,作为其隐单元和输出单元的激活函数

2.构造三层神经网络,参数包括:输入层、中間层、输出层神经元向量以及输入层到中间层的权值矩阵,中间层到输出层的权值矩阵中间层神经元的偏置向量,输出层神经元的偏置向量等其实质是定义上述变量的一维和二维数组。

3.编写函数[net_j,net_k,y,z] = BackPropagation(x, Wxy, Wyz, Wyb, Wzb)实现BP网络的前馈输出。为了便于后续的学习算法的实现该函数的输出變量包含:第j个隐单元对各输入的净激活net_j;第k个输出单元对各输入的净激活net_k;网络中隐藏层的输出y和输出单元的输出向量z。

4.编写函数实現BP网络的权值修正。其中神经元函数,及其导数可参考:


 
 
 

 
 
 
 
% 初始化权值(随机初始化)
% 以下是随机反向传播算法
% 以下是随机反向传播算法
% 以下昰成批反向传播算法
% 初始化权值(随机初始化)
% 以下是成批反向传播算法
 
 
一个目标函数经多次训练后的变化曲线:


其实MATLAB中可直接调用函数来构慥神经网络但自己编写程序实现有助于了解整个神经网络的各个细节。 使用Matlab建立前馈神经网络时可以使用到下面3个函数:
newff :前馈网络创建函数
train:训练一个神经网络
sim:使用网络进行仿真
 
 
关于这3个函数的用法如下:


newff函数参数列表有很多的可选参数具体可以参考Matlab的帮助文档,這里介绍newff函数的一种简单的形式 B,... % 一个k维行向量,其元素为网络中各层节点数 {C},... % 一个k维字符串行向量每一分量为对应层神经元的激活函数
 








traingdx:梯度下降自适应学习率训练函数
(4)一些重要的网络配置参数设置
 
2.神经网络训练函数train
% 神经网络训练函数train
% 各参数的含义如下:
% tr:训练跟踪信息
% Y1:网络实际输出
 
 
% 各参数的含义如下:
% X:输入给网络的K*N矩阵,其中K为网络输入个数N为数据样本数
% Y:输出矩阵Q*N,其中Q为神经网络输出单元的個数
 
 
基于MATLAB自带函数的bp神经网络的权值设计实例

}

我要回帖

更多关于 bp神经网络的权值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信