文档库 最新最全的文档下载
当前位置:文档库 › 一种改进BP神经网络算法的编程及应用

一种改进BP神经网络算法的编程及应用

一种改进BP神经网络算法的编程及应用
一种改进BP神经网络算法的编程及应用

BP算法的改进

BP算法的改进 附加动量法 附加动量法使网络在修正其权值时,不仅考虑误差在梯度上的作用,而且考虑在误差曲面上变化趋势的影响。在没有附加动量的作用下,网络可能陷入浅的局部极小值,利用附加动量的作用有可能滑过这些极小值。 该方法是在反向传播法的基础上在每一个权值(或阈值)的变化上加上一项正比于前次权值(或阈值)变化量的值,并根据反向传播法来产生新的权值(或阈值)变化。 带有附加动量因子的权值和阈值调节公式为: 其中k为训练次数,mc为动量因子,一般取0.95左右。 附加动量法的实质是将最后一次权值(或阈值)变化的影响,通过一个动量因子来传递。当动量因子取值为零时,权值(或阈值)的变化仅是根据梯度下降法产生;当动量因子取值为1时,新的权值(或阈值)变化则是设置为最后一次权值(或阈值)的变化,而依梯度法产生的变化部分则被忽略掉了。以此方式,当增加了动量项后,促使权值的调节向着误差曲面 i将变得很小,于是,从而防止了的出现,有助于使网络从误差曲面的局部极小值中跳出。 根据附加动量法的设计原则,当修正的权值在误差中导致太大的增长结果时,新的权值应被取消而不被采用,并使动量作用停止下来,以使网络不进入较大误差曲面;当新的误差变化率对其旧值超过一个事先设定的最大误差变化率时,也得取消所计算的权值变化。其最大误差变化率可以是任何大于或等于1的值。典型的取值取1.04。所以,在进行附加动量法的训练程序设计时,必须加进条件判断以正确使用其权值修正公式。 训练程序设计中采用动量法的判断条件为: E(k)为第k步误差平方和。 V = net.iw{1,1}%输入层到中间层权值 theta1 = net.b{1}%中间层各神经元阈值 W = net.lw{2,1}%中间层到输出层权值 theta2 = net.b{2}%输出层各神经元阈值

BP算法及BP改进算法

智能算法应用平台设计说明书

目录 1神经网络BP算法 (3) 2 神经网络BP改进算法 (4)

1神经网络BP算法{ TC "12 神经网络BP算法" \f C \l "1" } 神经元网络专家系统由开发环境和运行环境两部分组成(见图12-1)。开发环境由3部分组成:①确定系统框架;②学习样本;③神经元学习,通过样本学习得到知识库。运行环境实质上是一个专家系统,它由5部分组成:①实际问题参数;②输入模式的转换;③推理机;④知识库;⑤输出模式的转换。 输入输出模式转换是指神经元的输入与输出要求以(-∞,+∞)区间的数值形式表示。推理机是基于神经元的信息处理过程,包括神经元的输入和输出。知识库是由BP网络通过对样本的学习而得到的各神经元之间的连接权值,其学习过程如图12-2所示。 确定系统框架包括完成对神经元网络的拓扑结构设计、神经元作用函数和阈值选择。本文的神经元作用函数采用Sigmoid函数,阈值取为0.5。 图12-1 神经元网络专家系统结构图

图12-2 BP 网络学习框图 最好的分类图为PLS ,在此空间研究优化信息。使用PLS-BPN 用训练样本建模,输入元为PLS 计算出来的训练样本的得分, 输出元为熔剂量, 用留N 法交叉检验,确定网络结构为输入元5个、隐节点15个和输出节点1个。 2 神经网络BP 改进算法{ TC "1 3 神经网络BP 改进算法" \f C \l "1" } 本文所建模型采用含输入层、隐含层和输出层的三层网络。其结构如图13-1所示。 设有n 个样本、m 个变量、t 个目标量、r 个隐含层单元数,ij x 、ij x ?、il h 、ik y ? 、ik y (i =1, 2, …, n ;j =1, 2,…, m ; l =1, 2,…, r ; k =1, 2,…, t )为样本的输入变量、输入层输出值、隐含层的输出值、输出层输出值及目标量(或称期望值),pq w (pq =jl 或lk )、e ?(e =j , l ,或k )为网络连接权值。对样本采用进行批处理的方法进行网络训练,训练算法如下: 1)给权值随机赋一较小值;阈值j ?=0,l ?=ml w ,k ?=rk w ; 2)在已知n 个学习样本中,顺序取样本进行预处理后用于训练网络; 3)激励函数取Sigmod 函数,分别计算输入层输出值、隐含层和输出层的输出ij x ?、il h 、ik y ; 4)定义i mn λ(mn =lk 或者jl ,)分别为隐层误差和输出层误差,对已知样本的教师可得: )?1(?)?(ik ik ik ik i lk y y y y -??-=λ (13-1) ∑=-???= t k ij il lk i lk i jl x h w 0 )?1(λλ (13-2)

BP网络算法及其改进

BP网络算法及其改进 BP网络算法及其改进 书上的一个例子,是要识别英文字符C、I、T。 则 XC=(1,1,1,1,0,0,1,1,1),XI=(0,1,0,0,1,0,0,1,0),XT=(1,1,1,0,1,0,0, 1,0)。 1.标准BP算法 网络图我就不画了。 输入层X=(x0,x1,x2,...xi,...,xn) 隐藏层Y=(y0,y1,y2,...,yj,...,ym) x0=y0=-1 输出层O=(o1,o2,...,ok,...,ol) 期望输出D=(d1,d2,...,dk,...,dl) 输入层到隐藏层的权重Vij 隐藏层到输出层的权重Wjk 对于输出层: 净输入 输出

对于隐藏层: 净输入 输出 变换函数f(x)采用单极形Sigmoid函数: 函数具有性质: 采用批训练法,误差是所有样本的均方误差和: 显然误差E是网络权值W和V的函数,E分别对W和V求偏导得到E的梯度,要减小误差E,则权值W和V调整的方向就应该是误差梯度的反方向。结合(1)式(2)式可得权值调整公式: 上代码: 首先从复旦语料库全体训练集中随机挑取360个训练样本(每类40个)作为神经网络的输入

#/usr/bin/perlsrand(); my $outf="/home/orisun/master/fudan_corpus/tc_ann.txt"; open OUT,">$outf" or die "Can't open file:$!"; my $dir_prefix="/home/orisun/master/fudan_corpus/train_vec/"; my @cat=qw/C3-Art_ws C7-History_ws C11-Space_ws C19-Computer_ws C31-Enviornment_ws C32-Agriculture_ws C34-Economy_ws C38-Politics_ws C39-Sports_ws/; foreach(0..$#cat){ $dir=$dir_prefix.$cat[$_]; opendir(DIR,"$dir") or die "Can't open directory:$!"; @files=grep {/^[^\.]/} readdir(DIR); #文件不能以.开头 foreach(1..40){ $index=rand($#files); print OUT $dir."/".$files[$index]."\n"; } } close OUT;

相关文档