人工神经网络BP算法及其改进在DELPHI下的实现.doc
文本预览下载声明
人工神经网络BP算法及其改进在Delphi下的实现
指导老师:武妍 学号:0520080227 姓名:何斌
摘要 :人工神经元网络的BP学习算法在小规模相似模式的识别中得到了广泛的应用 ,本文给出了一种BP算法在Delphi 7.0环境下的实现方法。
关键词 :人工神经元网络 ;BP算法 ;Delphi 7.0
1 引言
人工神经元网络是由大量简单单元以及这些单元的分层组织大规模并行联结而成的一种网络 ,它力图象生物神经系统一样处理事物 ,实现人脑的某些功能[1] 半个世纪以来 ,它在非线性系统、优化组合、模式识别等领域得到了广泛的应用,特别是 80年代以来 ,人们应用前馈网络的误差反算法BP(BackPropagation)对小规模相似模式的识别进行了大量的研究.
2 BP算法权值及阈值调整公式
误差反传算法 (BP)是Rnmenhort在 1986年提出的一种前馈阶层网络的学习算法 前馈阶层网络包含输入层、隐含层和输出层 ,各层之间实行全连接 ,层内神经元之间无连接 ,网络的拓扑结构如图 1所示: n为输入层神经元的数目 ,p为隐含层层神经元的数目 ,m为输出层神经元的数目 ,对于一个输入样本 ,经过权值、阈值和作用函数运算后 ,得到一个输出 ,然后让它与期望的样本进行比较 ,若有偏差 ,则从输出开始反向传播该偏差 ,进行权值、阈值调整 ,使网络输出逐渐与希望输出一致.设网络输入层共有n个神经元 ,序号为h,h=1,2,…,n,隐含层共有p个神经元,序号为i,i=1,2,…,p,输出层有m个神经元,序号j,j=1,2,…,m 输入层中第h个神经元与隐含层中第i个神经元之间的连接权为vhi,隐含层中第i个神经元的阈值为θi,隐含层中第i个神经元与输出层中第j个神经元之间的连接权为wij,输出层中第j个神经元的阈值为γj,Oi为隐含层中第i个神经元的输出,yj为输出层中第j个神经元的输出。
BP训练算法流程的描述
3 在delphi 7.0环境下实现BP改进算法的关键步骤
3.1 对于各初始变量赋值
各初始变量的声明如下:(以下变量全部声明为全局变量)
feature:array of real; //输入层各单元的输出值
th1:array of real; //隐含层各神经元的阈值
th2:array of real; //输出层各神经元的阈值
w1:array of array of real; //输入层于隐含层之间的权值
w2:array of array of real; //输出层与隐含层之间的权值
Y1,Y2:array of real; //隐含层、输出层各神经元的输出
D1,D2:array of real; //隐含层、输出层各神经元的一般化误差
在对变量赋初始值时,考虑过两种方案:
a. 人工赋值
给出特定输入控件,逐个进行赋值。
部分输入算法如下:
//以下对输入层神经元初始赋值(一维) feature[0]=……feature[1]=……
j := 1;
if edit1.Text then
begin
str := edit8.Text;
str1:=;
for i:=0 to inputnum-1 do
begin
str3 := str;
str1 := copy(str3,length(str1)+1,Pos(,,str3)-1);//获取字符串然后获取长度
if AnsiContainsText(str3,,) then //返回字符串AText是否包含子串ASubText
begin
str2 := copy(str3,1,Pos(,,str3)-1);//获取自己想要的值
j := j + 1;
if jinputnum+1 then Exit; //这里变量的值根据你数组的大小定
end
else
begin
str2 := copy(str3,1,Length(str3));
end;
str3 := copy(str3,Pos(,,str3)+1,length(str3)-len
显示全部