ann2
所属分类:人工智能/神经网络/深度学习
开发工具:Visual C++
文件大小:75KB
下载次数:10
上传日期:2005-08-17 09:21:21
上 传 者:
sunny_jun
说明: 这个程序是个神经网络提供学习能力的实例,是前一个simpleann的功能加强版。
(this procedure is a neural network learning ability example is the former simpleann an enhanced version of the function.)
文件列表:
brain2.exe (86742, 2001-07-13)
CAL2.EXE (34441, 2001-07-13)
EGAVGA.BGI (5363, 1988-08-29)
TEST1.BN (500, 2001-07-13)
TEST1.CS (175, 2001-07-13)
TEST2.BN (500, 2001-07-13)
TEST2.CS (175, 2001-07-13)
<<人工神经网络实验系统1.0贝吉塔版>>
BP前向网络&BP误差反向传播算法
说明书
==================================================================
零.[说在前面的话]
这是我研制的第二个人工神经网络模型。 此网络由9个神经元构
成,四个为输入神经元,二个为输出神经元。即此系统能处理所有四
元至二元的映射函数关系。
此实验系统中的人工神经网络是BP前向网络,使用了最常用且有
效的BP误差反向传播算法。此网络模型属有导师型,可根据给出样本
X->Y的映射关系,自学习并推导出其函数关系式。
此模型也是当前人工神经网络在实际应用中使用面最广的模型之
一。包括国家自然科学基金的资助项目(39770675)<<基于人工神经网
络的肺癌诊断研究>>,福建省财政厅资助的重大项目(96 闽财农
预字 015)<<基于人工神经网络的森林资源管理模型研究>>等重要项
目中,此模型是解决此类问题的核心技术。
使用本实验系统,能***地设定BP网络里的重要参数,包括误差
率(Error rate),阈值(Threshold),网络收敛速度(Converage Speed).
命令系统的使用,使得输入与维护样本的工作大大简化,为实验提供了
有效的工具。推导出的神经网络保存成磁盘文件*.bn,并注有实验者自
己的版权信息,系统提供的Cal2工具,能成快速地将*.bn化成有效的
函数工具供使用者使用。
希望本软件能对人工神经网络的研究与应用起到积极的推动作用!
沈琦 2001.7
------------------------------------------------------------------
####重要说明#####
本系统作为一科学工具,为了产权关系明晰,保护您个人的得益。科学工作者
在使用前,请认真阅读以下条款:
1.本软件虽为免费软件。但本软件版权所有,本软件的一切权利,软件作者
全部保留。
2.因本软件属于重要的科学实验工具,在本软件上实验得出来的重要结论的
知识产权归软件使用者所有,不为本软件作者所有,但在您的研究成果报告
或论文中必须注有使用本软件的信息,包括本软件的全称和软件开发者姓名
等
3.本软件生成的*.bn文件(成形的人工神经网络)和*.cs文件(人工神经网络训练
样本)都为重要实验参数,请实验者慎重保管。
4.本软件生成的*.bn文件(成形的人工神经网络)的知识产权属使用者所有,
但*.bn文件的文件格式作为本软件知识产权的一部分,属本软件作者所有。
使用者如希望将*.bn的内容完全解码出来,请联系本软件作者帮助解码。
为了保护您的利益,一切都会按法律程序行使。(联系方式见<<后记>>)
====================================================================
一.一些基本入门知识
本系统,你只要给同相应的自变量值,分别为 Data1,Data2,Data3,
Data4,再给出相应的导师信号 Supervised Data1,Supervised Data2。
经过大量的样本训练,此神经网络能推出"自变量值"与"导师信号"间的关系。
等神经网络学习完成后,以后,只要你给出"自变量值",神经网络就能
输出相应的结果了。在实际生活与应用中,有些x->y的函数关系是很容易推
的,例如: <路程>=<时间>*<速度>。而在很多实例中,其函数关系很难确定,
所以应用本系统,就能确定一些模糊而复杂的系统的相似函数关系。如
前面提到的病理的诊断,还有例如预测股票的变化,弹导导弹的轨迹等等。
对"神经网络"的"刺激",本系统将它编成2条指令,第1条为"学习"指令,
第2条为"处理"指令。"学习"指令,你能为"学习"设成"最大学习次数",也就
是系统要反馈多少次才能收敛于正确结果。系统默认为10万次。"处理"指令,
即当"神经网络"通过样本的"学习"后,就能根据你给的x(四元)推导出相应的
y(二元).
--------------------------------------------------------------------
二.指令系统概况
使用Help指令,可列出所有指令.
cls 清除屏幕
clearbn 神经网络初始化
clearcs 清空指令系统
list 显示所有内存中的指令
add 添加指令("学习"与"处理"指令")
delete 删除指令
edit 修改指令
run 运行所有指令(用"学习"或"处理"指令刺激神经网络)
at 运行一条指令
show 显示神经网络的图样!
可看到每个神经元的刺激状态和神经连接状态,非常有趣!
savecs 将指令系统存入文件*.cs
loadcs 从文件中读取指令系统*.cs
dircs 显示当前目录下所有指令系统文件*.cs
savebn 将一训练好的"神经网络"存入文件*.bn
loadbn 读取一个"神经网络"文件到实验系统*.bn
dirbn 显示当前目录上所有"神经网络"文件*.bn
set 显示当前神经网络实验参数
setn 设置神经网络参数 n=1,2,3,4
about 关于本系统的一些信息
exit 退出本系统
本实验系统中的所有指令均无参数,如需键入指令加回车即可
======================================================================
三.常用指令详解
1.clearbn和clearcs指令
clearbn指令是给神经网络初始化,各个神经元间的连接都会处于随机的
微弱作用状态。如果你要开始新的实验,就要使用本指令。
clearcs用于清空指令系统。
2.list指令
显示所有指令系统中的所有指令
list执行后如下图,分别为
指令号 功能 自变量1 自变量2 自变量3 自变量4 导师1 导师数据2
Num Status Data 1 Data 2 Data 3 Data 4 SData 1 SData 2
==========================================================================
1 Learn 0.200 0.200 0.000 0.000 0.200 0.000
2 Learn 0.200 0.800 0.000 0.000 0.800 0.000
3 Process 0.800 0.200 0.000 0.000 None None
功能分两类,Learn为学习指令,process为处理指令
3.add添加指令
执行add向指令系统添加指令,执行后:
Command No.1
Mode 0.Learning 1.Process
Choose:0 先选择0或1,0为学习指令,1为处理指令
学习指令过会儿会要求你输入导师信号的
Data 1:
Data 2: 输入4个自变量X
Data 3:
Data 4:
Supervise Data1: 输入你希望得到的Y值,即导师信号
Supervise Data2:
说明,如果你只希望要两个自变量,一个结果值。那么data3和data4可
输入0,Supervise Data2也输入0
4.run运行所有指令,at执行其中一条指令
执行run后会一般得到类似以下的输出
标号 刺激次数 误差率 输出数据1 输出数据2
L: Time:100001 Error:1.35% Out1:0.200622 Out2:0.01***35
L: Time:93 Error:0.***% Out1:0.786017 Out2:0.001060
L: Time:83 Error:0.99% Out1:0.785***1 Out2:0.001174
L: Time:759 Error:0.97% Out1:0.813945 Out2:0.000252
P: Out1: 0.394947 Out2: 0.003146
P: Out1: 0.142191 Out2: 0.019714
P: Out1: 0.813723 Out2: 0.000252
处理指令输出1 处理指令输出2
说明:标号'L'或'P',分别表示执行了"Learn"或"process"指令
最大刺激次数可用set1指令来设定,
5.show显示神经网络图
这是一个很有趣的功能,要以看到每个神经元的状态,神经元
会随受刺激程序的大小而变化.
6.savecs,loadcs指令与savebn,loadbn指令
savecs与loadcs用于将指令系统存入文件和从文件中读取指令系统
而savebn,loadbn指令用于将一训练好的"神经网络"存入文件或读取
一个"神经网络"文件到实验系统
7.set与set1,set2,set3,set4指令
set可显示当前神经网络实验参数,共四项。
set1,set2,set3,set4就是用来设置这四项的。
set1: 设置"最大刺激次数"(Training Time),系统默认为100000(十万)
用户可自己调节,根据自己的计算机性能而定
set2: 设置"误差范围"(Error range),系统默认为0.0001
set3: 设置"收敛率"(Convergence rate),范围为0.3--3
用户可自己试着设置"收敛率",好的"收敛率"会加快神经网络的
学习收敛速度。系统默认为0.3
set4: 设置"阈值"(Threshold value)
各个神经元间的连接的神经会通过自学习而适应收敛的需要,
用户可设置"阈值"改变神经间的自学习能力。
8.dircs和dirbn
显示当前目录下所有指令系统文件*.cs]
显示当前目录上所有"神经网络"文件*.bn,就此不多做介绍
=============================================================================
四.实例学习
实例:教会"神经网络"学会计算机中的“或”运算。
(注:此例指令存在 test1.cs中,你可以用loadcs指令调入)
什么是"或运算"?
"或运算"要求有两个逻辑输入值(真或假),只要两上输入值中的一个或一个以上为真,
即为真,否则为假。输出值只有一个,即"真"或"假"
如下表:
输入1 输入2 输出
=======================================
假 假 假
真 假 真
假 真 真
真 真 真
好,我们先假设0.2为假,0.8为真,让这个“人工大脑”来学习。
(注,此模型有所有输入,输出值均只能在0-1之间,如果是其它数据
请用正态分布函数等数学工具化为0-1之间)
Let's go:
add(回车)
Command No.1
Mode 0.Learning 1.Process
Choose:0 "学习"选0
Data 1:0.2 输入"假"
Data 2:0.2 输入"假"
Data 3:0 不需要,输入0
Data 4:0 不需要,输入0
Supervise Data1:0.2 输入导师信号"假"
Supervise Data2:0 不需要,输入0
O.K.
.........
不断地输入样本,共种情况四个,最后打
list(回车)
Num Status Data 1 Data 2 Data 3 Data 4 SData 1 SData 2
==========================================================================
1 Learn 0.200 0.200 0.000 0.000 0.200 0.000 假,假得假
2 Learn 0.200 0.800 0.000 0.000 0.800 0.000 假,真得真
3 Learn 0.800 0.200 0.000 0.000 0.800 0.000 真,假得真
4 Learn 0.800 0.800 0.000 0.000 0.800 0.000 真,真得真
run(回车) 让神经网络学习吧!
L: Time:100001 Error:1.45% Out1:0.200680 Out2:0.017024
L: Time:127 Error:1.0% Out1:0.785945 Out2:0.001250
L: Time:0 Error:0.01% Out1:0.801008 Out2:0.001196
L: Time:717 Error:0.97% Out1:0.813945 Out2:0.000335
看看结果,哇,误差率(Error rate)好大,学习次数(time)也好多再,继续学习吧...
run(回车)
L: Time:34879 Error:1.0% Out1:0.200518 Out2:0.014133
L: Time:117 Error:0.***% Out1:0.786038 Out2:0.000680
L: Time:42 Error:0.***% Out1:0.786013 Out2:0.000736
L: Time:***8 Error:1.0% Out1:0.814138 Out2:0.000140
嗯,第一条命令的学习time从100001降到了34879,误差也为1%了,当然还不行......
要所有的time都为只有几百(当然越小越好),误差率都小于等于1%才行.....
run (不断地执行学习指令,每次都有进步)
......
run
......
run (好!执行了8,9次后,结果出来了)
L: Time:796 Error:1.0% Out1:0.209552 Out2:0.010427
L: Time:172 Error:1.0% Out1:0.785902 Out2:0.000505
L: Time:173 Error:1.0% Out1:0.785903 Out2:0.000896
L: Time:244 Error:0.99% Out1:0.814060 Out2:0.000477
不错!
下面,添加一条"处理"指令还考考"神经网络",看它学得怎么样?
add(回车)
Command No.5
Mode 0.Learning 1.Process
Choose:1 选1,处理指令
Data 1:0.2 输入假0.2
Data 2:0.8 输入真0.8
Data 3:0
Data 4:0
O.K.
list(回车) 看一看吧
Num Status Data 1 Data 2 Data 3 Data 4 SData 1 SData 2
==========================================================================
1 Learn 0.200 0.200 0.000 0.000 0.200 0.000
2 Learn 0.200 0.800 0.000 0.000 0.800 0.000
3 Learn 0.800 0.200 0.000 0.000 0.800 0.000
4 Learn 0.800 0.800 0.000 0.000 0.800 0.000
5 Process 0.200 0.800 0.000 0.000 None None
(看,第5条是新加的处理指令,用at指令来执行它吧)
at(回车)
Input Command Num:5 (输入指令号5)
P: Out1: 0.777334 Out2: 0.000506
看!结果出来了,为out1: 0.777334 近似0.8为真!(out2的值没有用,近似为0,即无)
好了!至此,"神经网络"已经学会"与运算"了!怎么样?神奇吧!
你可以充分地发挥你自己的想像力,只要给出自变量X(最多四元),和一些正确的导师
信号Y(最多二元),此实验系统能自动推出其近似关系的!
已经有科学工作者用人工神经网络来进行股票的预测了!你有兴趣也来试试!本系统
会祝你一臂之力的!
-----------------
如何存放学习结果?
-----------------
学习完后,打savebn指令:
Input Brain filename:***.bn 输入要存放的"人工神经网络"的文件名
此例中存为***.bn
CopyRight Information:Made By Tom 2001 输入你自己的信息
Brain saved!
O.K.
好了,这样就ok了!学会了吗?
===============================================================================
五.实用程序cal2的使用
cal2是一个计算工具,你给出已经完成的"神经网络"文件,它就能快速计算了,十分方便。
其在操作系统下的运行格式为:
cal2.exe [bp文件名]
例:就以上述的"与运算"存的"人工神经网络",***.bn为例吧
C>cal2 ***.bn (dos下键入 cal2.exe [bp文件名])
===============================================
Neural Network Test System Version 1.0
Calculate Tools
=============== Shen Qi, USST , *** 2001 ==
[Well Trained Brain Copyright Information]
Made By Tom 2001 (显示此人工神经网络的相关信息)
Data 1:0.2 (输入假 0.2)
Data 2:0.2 (输入假 0.2)
Data 3:0
Data 4:0
P: Out1: 0.228821 Out2: 0.009963
(输出为假 近似0.2)
C>(回到dos)
怎么样?会了吗?
---------------------------------------------------------------------------------
六.后 记
这是我做的第二个"人工神经网络"实验系统模型,可以说,这第二个系统比第一个系统
要成熟得多。当然,它们的功能是各异的。第一个阿尔法版,可用于进行智能分类识别。而
本系统贝吉塔塔可用来自动推导x->y的近似函数。
有朋友来信问我,如何才能开始学习"人工智能"?我想,这是一个很普遍的问题。在此,
我想说的是,人工智能的学习必需有许多前修的基础课程作基础。主要都是涉及计算机科学
与数学的课程,例如:《高等数学》,《线性代数》,《离散数学》,《数据结构》,
《图论》,学包括《线性规划》《动态规划》等。这些都是很基础的,且不得不学的内容。
当我在写此稿的时候,此"人工神经网络实验系统"系列的第3款已经在研制中了,它将
会把"遗传算法"溶入到BP算法中,给工程项目中的最优化系数求解等广泛领域提供强有利的
科学推断的实验手段。敬请期待。
最后,我想说,由于我个人学识水平的限制(我刚完成大学一年级的学习)。尽管我已做
出了较大的努力,但还有些错误或不足的地方,请这此领域从事研究的专家前辈给于指点。
不胜感激!
沈琦
2001.7.13
作者联系方式:
E-mail: shenqi@shenqisoft.com
我开的<人工智能>的网站:
http://www.shenqisoft.com/ai/
===================================================================================
~~~~~~~我思故我在~~~~~~~我思故我在~~~~~~~我思故我在~~~~~~~我思故我在~~~~~~~我思
故我在~~~~~~~我思故我在~~~~~~~我思故我在~~~~~~~我思故我在~~~~~~~我思故我在~~~~~
近期下载者:
相关文件:
收藏者: