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/ =================================================================================== ~~~~~~~我思故我在~~~~~~~我思故我在~~~~~~~我思故我在~~~~~~~我思故我在~~~~~~~我思 故我在~~~~~~~我思故我在~~~~~~~我思故我在~~~~~~~我思故我在~~~~~~~我思故我在~~~~~

近期下载者

相关文件


收藏者