人工神经网络入门(1) —— 单层人工神经网络应用示例
范例程序下载:http://www.cnblogs.com/Files/gpcuster/ANN1.rar
如果您有疑问,可以先参考 FAQ
如果您未找到满意的答案,可以在下面留言:)
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(0, 0, 0), new TrainSet(0, 1, 0),
new TrainSet(1, 0, 0), new TrainSet(1, 1, 1)};
//构造单层神经网络 2 个输入节点 1个输出节点
NeuralNetwork nn = new NeuralNetwork(2, 1);
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 ”等按钮)。
4 预告
在下一篇文章中,我将进行ANN基本概率的介绍和本示例实现的原理:)
5 总结
在本文中,咱们介绍了1个基于单层神经网络的简单易懂的程序示例,可以让大家先有一个感性的认识。