作者:逖靖寒 来源:博客园   酷勤网收集 2008-06-13

摘要
  本文介绍的单层人工神经网络是属于最简单明了的单层神经网络。介绍一个网络的主要原因就是帮助咱们先有一个感性的认识。让我们知道ANN是什么,如果使用。给出了1个基于单层神经网络的简单易懂的程序示例。

1 介绍

还记得在2年前刚刚接触RoboCup的时候,从学长口中听说了ANN(人工神经网络),这个东西可神奇了,他能通过学会从而对一些问题进行足够好处理。就像咱们人一样,可以通过学习,了解新的知识。

但是2年了,一直想学习ANN,但是一直没有成功。原因很多,其中主要的原因是咱们国内的教程中关于这个技术的介绍过于理论化,以至于我们基础差和自学者望而却步。

现在,我希望通过一个简单的示例,让大家先有一个感性的认识,然后再了解一些相应的理论,从而达到更好的学习效果。

2 范例程序的使用和说明

本程序示例2个简单的运算:
1 AND运算: 就是咱们常用的求和运算,如:1 AND 0 = 1 
2 OR运算: 就是咱们常用的求并运算,如:1 OR 0 = 1 

启动程序后,你将会看到如下的界面:

点击“开始训练AND”按钮后,程序就开始训练 AND 运算,并在训练结束后提示咱们。
同时界面变成如下:

你只需要点击“0 0”按钮,就会在“计算结果”下面显示经过训练以后的ANN计算出来的结果。
如下所示:

“计算结果”显示为“1.74E-10”,说明 0 AND 0 = 0.
这个结果就是我们想要的。训练成功

其他的按钮使用方法类似:)

3 计算过程
咱们可以参考一下AND计算的总体运行过程:

            //初始化训练集合
            TrainSet[] sets = new TrainSet[]{new TrainSet(000), new TrainSet(010), 
                                                                
new TrainSet(100), new TrainSet(111)}
;

            
//构造单层神经网络 2 个输入节点 1个输出节点
            NeuralNetwork nn = new NeuralNetwork(21);
            slnn 
= new SingleLayerNeuralNetworks(nn, sets);

            
//训练
            slnn.Train();

            MessageBox.Show(
"AND运算训练结束");
            
this.button2.Enabled = true;
            
this.button3.Enabled = true;
            
this.button4.Enabled = true;
            
this.button1.Enabled = true;
            
this.Text = "AND运算";


OK,通过上面的代码可以看出,咱们的神经网络有2个输入节点,用于输入AND运算的2个参数。1个输出节点,用于输出AND运算的1个结果。
接下来,咱们的单层神经网络通过一个训练集(有一组输入和相应的希望输出数据)开始训练。训练结束后,咱们就可以用相应的数据对训练结果进行测试了(通过“0 0 ”等按钮)。

总结
在本文中,咱们介绍了1个基于单层神经网络的简单易懂的程序示例,可以让大家先有一个感性的认识。

5 FAQ

这里的 训练 一词怎么解释?
学会?

大家通过使用这个程序可以发现:ANN在通过训练以后,可以计算出正确的结果,如1 AND 1 = 1,等等。
如果您阅读了代码会发现,程序中并没有给出如何计算1 AND 1的结果,而是将1,1这两个参数传递给经过训练后ANN,然后由ANN自己计算出结果。
在整个过程中,完全是ANN自己通过一定数量的训练从而达到咱们计算AND运算的结果。

貌似很深奥,不知道能够最终达到甚么效果,实现甚么功能,机器人??
如果您能够深入地了解ANN,最终会达到非常好的效果,特别是做AI这块。
比如RoboCup的仿真机器人比赛中就有应用,
还有一个非常有名的游戏《Bug Brain》,它就是一款通过给一个小虫子设计神经网络而可以在复杂的环境中生存的游戏。有兴趣的朋友可以去了解一下:)
关于这个游戏的玩法和攻略,可以参考http://hi.baidu.com/szk8888/blog/item/eb1d033b282ac7ea14cecb42.html

楼主,你要介绍哪种神经网络?我没看出来。。囧。。。
计划在这一系列文章中,介绍单层和多层(BP)神经网络。
本文介绍的单层人工神经网络是属于最简单明了的单层神经网络。介绍一个网络的主要原因就是帮助咱们先有一个感性的认识。
让我们知道ANN是什么,如果使用。

神经网络还真的不是很熟悉,楼主能否解释下这里,我看的不是很懂:
“计算结果”显示为“1.74E-10”,说明 0 AND 0 = 0.

在我的程序中,实际输出的结果只是接近于0,这是正常的。
神经网络计算出来的结果只是近似值。所以你可以在实际的应用中对这个近似值根据实际情况来处理。

你这个学习网络 来运算54 AND 0 结果为什么是1?
经过学习的ANN并不一定能计算出所有有效的输入的结果。
造成这样的原因很多,输入节点的个数,隐含层的层数,激活函数,网络类型,训练集合的选取等等。
而且您的54并不是有效输入,所以说结果不会理想。

来自:人工神经网络入门(1) —— 单层人工神经网络应用示例

分类: 人工智能 搜索引擎



关于酷勤 | 联系方式 | 免责声明 | 友情链接