前面4篇文章说的是模糊系统,它不同于传统的值逻辑,理论基础是模糊数学,所以有些朋友看着有点迷糊,如果有兴趣建议参考相关书籍,我推荐《模糊数学教程》,国防工业出版社,讲的很全,而且很便宜(我买成7元钱)。

人工神经网络的简介

人工神经网络是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。它是一种运算模型,由大量神经元和相互的连接组成,每个神经元代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重(weight),用于模拟记忆。整个网络的输出则依网络的连接方式、权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。

人工神经网络的优势很明显,主要体现在以下三个方面:

1.具有自学习功能

2.具有联想存储功能

3.具有高速寻找优化解的能力

更多知识请参阅相关资料

AForge.Net单层网络实现AND运算

AForge.Net中有关神经网络的实现主要在AForge.Neuro中,用install-package AForge.Neuro获取。

我们按照一般步骤来:

1.构建模型

AND运算的话不用多讲,整理一下输入输出:

[0,0]  ===>  [0]

[1,0]  ===>  [0]

[0,1]  ===>  [0]

[1,1]  ===>  [1]

可以很容易看出,输入是2个,输出是1个节点,层数单层足矣。

代码:

//整理输入输出数据 double[][] input = new double[4][]; double[][] output = new double[4][]; input[0] = new double[] { 0, 0 }; output[0] = new double[] { 0 }; input[1] = new double[] { 0, 1 }; output[1] = new double[] { 0 }; input[2] = new double[] { 1, 0 }; output[2] = new double[] { 0 }; input[3] = new double[] { 1, 1 }; output[3] = new double[] { 1 }; 

2.选择激励函数和学习规则

AForge.Net中的激励函数需实现IActivationFunction 接口,AForge.Net中实现了3种:

BipolarSigmoidFunction

SigmoidFunction

ThresholdFunction(阈函数)

我们的激励函数(activation function)就选用阈函数了。

接下来考虑学习函数了。

AForge.Net中学习函数要实现ISupervisedLearning或者IUnsupervisedLearning接口,程序库实现了5种:

其中Perceptron Learning(感知学习)可以说是第一个神经网络的学习算法,它出现于1957年,常用于可线性分割的数据的分类。

代码:

//建立网络,层数1,输入2,输出1,激励函数阈函数 ActivationNetwork network = new ActivationNetwork(new ThresholdFunction(), 2, 1); 

//学习方法为感知器学习算法 PerceptronLearning teacher = new PerceptronLearning(network); 

3.训练网络

teacher.RunEpoch(input, output);

4.获取输出进行处理

因为本来就模拟算法,所以没有什么处理,我们模拟一下看效果就行了。

//模拟 for (int i = 0; i < 4; i++) {     Console.WriteLine("input{0}:  ===>  {1},{2}  sim{0}:  ===>  {3}", i, input[i][0], input[i][1], network.Compute(input[i])[0]); }

完整代码:

//整理输入输出数据 double[][] input = new double[4][]; double[][] output = new double[4][]; input[0] = new double[] { 0, 0 }; output[0] = new double[] { 0 }; input[1] = new double[] { 0, 1 }; output[1] = new double[] { 0 }; input[2] = new double[] { 1, 0 }; output[2] = new double[] { 0 }; input[3] = new double[] { 1, 1 }; output[3] = new double[] { 1 };

for (int i = 0; i < 4; i++) {     Console.WriteLine("input{0}:  ===>  {1},{2}  output{0}:  ===>  {3}",i,input[i][0],input[i][1],output[i][0]); }

//建立网络,层数1,输入2,输出1,激励函数阈函数 ActivationNetwork network = new ActivationNetwork(new ThresholdFunction(), 2, 1);

//学习方法为感知器学习算法 PerceptronLearning teacher = new PerceptronLearning(network);

//定义绝对误差 double error = 1.0; Console.WriteLine(); Console.WriteLine("learning error  ===>  {0}", error);

//输出学习速率 Console.WriteLine(); Console.WriteLine("learning rate ===>  {0}",teacher.LearningRate);

//迭代次数 int iterations = 0; Console.WriteLine(); while (error > 0.001) {     error = teacher.RunEpoch(input, output);     Console.WriteLine("learning error  ===>  {0}", error);     iterations++; } Console.WriteLine("iterations  ===>  {0}", iterations); Console.WriteLine(); Console.WriteLine("sim:");

//模拟 for (int i = 0; i < 4; i++) {     Console.WriteLine("input{0}:  ===>  {1},{2}  sim{0}:  ===>  {3}", i, input[i][0], input[i][1], network.Compute(input[i])[0]); }

效果:

人工神经网络和模糊系统结合前景

我解释一下为什么说完模糊逻辑以后要说人工神经网络。虽然模糊逻辑和神经网络是两个截然不同的领域,它们的基础理论相差较远,一个是新模型,一个是新集合理论。但从客观实践和理论的溶合上讲是完全可以令它们结合的。把模糊逻辑和神经网络相结合就产生了—种新的技术领域:这就是模糊神经网络。

常见的形式有:

1.逻辑模糊神经网络

2.算术模糊神经网络

3.混合逻辑神经网络

我个人感觉二者的结合其实就是一个学习和优化权系数的问题。

对于逻辑模糊神经网络采用基于误差的学习算法,对于算术模糊神经系统一般用模糊BP算法,遗传算法。这两块的相关技术都比较成熟了。而对于混合逻辑神经网络,一般没有特定算法,而且多用于计算而非学习。

可能有朋友觉得前两种也是比较新的,我起初也是这样想的,但我检索了近十年的相关论文(从万方下的),大部分思想和方法都可以从诸如Cybernetics等杂志的早期数据中(1980年上下)找到。

最后附上3篇有关Perceptron Learning的资料:http://www.ctdisk.com/file/4525564

转载于:https://www.cnblogs.com/htynkn/archive/2012/02/07/AForge_5.html

人工神经网络简介和单层网络实现AND运算--AForge.NET框架的使用(五)相关推荐

  1. 《神经网络和深度学习 学习笔记》(二)人工神经网络简介

    文章目录 第10章 人工神经网络简介   1 从生物神经元到人工神经元      1.1 生物神经元      1.2 具有神经元的逻辑计算      1.3 感知器      1.4 多层感知器和反 ...

  2. 神经网络简介ppt英文,人工神经网络简介

    神经网络是什么 神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型.这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的. 生物神经网络 ...

  3. 机器学习实战10-Artificial Neural Networks人工神经网络简介(mnist数据集)

    目录 一.感知器 1.1.单层感知器 1.2.多层感知器MLP与反向传播 二.用 TensorFlow 高级 API 训练 MLP DNNClassifier(深度神经网络分类器) 2.1.初始化: ...

  4. 神经网络简介--激活函数、网络架构、生物模型解释

    目录 目录 概述 神经元模型 与生物学的联系 单神经元作为线性分类器 常用的激活函数 神经网络架构 分层组织 前馈计算示例 神经网络的表示能力 设置图层数量及其大小 概要 引用 概述 无需类比大脑的机 ...

  5. 长短期记忆人工神经网络(LSTM)网络学习资料

    一.人工神经网络模型的分类: 1.27种神经网络的图解 地址:https://baijiahao.baidu.com/s?id=1590362274035183205&wfr=spider&a ...

  6. 人工神经网络算法简介

                        人工神经网络简介(算法课程论文)         西安电子科技大学软件学院130513班 黎建文 13051234     摘要  "人工神经网络&q ...

  7. 人工神经网络的工作原理,人工神经网络基本原理

    神经网络算法原理 一共有四种算法及原理,如下所示:1.自适应谐振理论(ART)网络自适应谐振理论(ART)网络具有不同的方案.一个ART-1网络含有两层一个输入层和一个输出层. 这两层完全互连,该连接 ...

  8. 人工神经网络技术及应用,人工智能神经网络算法

    什么是神经网络,举例说明神经网络的应用 我想这可能是你想要的神经网络吧! 什么是神经网络:人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs) ...

  9. 人工神经网络——笔记摘抄1

    一.人工神经网络简介 人工神经网络(Artificial Neural Networks,ANN)基本组成成分是:输入(感知)器.加权求和(信息汇聚).传递(信息传输)器.输出(响应)器组成. 决定神 ...

最新文章

  1. ipad无法与itunes同步,提示因为这台电脑不再被授权使用在此ipad上购买的项目解决方案...
  2. 线程的简单生产消费模式
  3. Web 页面请求过程
  4. Java开发中消息中间件的优势有哪些?
  5. 如何从服务器导出文件,如何从云服务器导出文件
  6. java比赛_javamq
  7. Ruoyi框架Maven编译不通过的问题---SpringCloud Alibaba_若依微服务框架改造---工作笔记006
  8. win32开发(调试)
  9. 虚拟机安装---vm12+ubuntukylin16.04
  10. cubemx配置时调试SYS显示警报
  11. matlab仿真没有synchr,Synchro交通仿真系统分析及应用
  12. python绘制3d机械图_python matlibplot绘制3D图形
  13. Quadratic probing
  14. MatplotlibDeprecationWarning: Calling gca() with keyword arguments was deprecated in Matplotlib 3.4.
  15. Java基础 DAY05
  16. anaconda 安装 TensorFlow 过程记录
  17. 2022年自考专业考试(英语)英语翻译练习题
  18. 人类活动识别---数据集UCI-HAR简介
  19. [WinError 206] 文件名或扩展名太长(组策略值修改 解除windows文件名 字符长度限制)
  20. HTG评论The Wink Hub:在不破坏资金的情况下为您的智能家居提供大脑

热门文章

  1. 全国各地 DNS 服务器 IP 总汇
  2. 大工17春计算机文化基础在线测试3,大工17春《计算机文化基础》在线测试3满分答案...
  3. GDAL升级到3.0之后遇到的坑
  4. 关于GDAL计算图像坐标的几个问题
  5. AppStore编年史 iOS游戏开发者的变迁路
  6. 六年不惑:开发人员的“僵难Style”
  7. javaweb编辑器ckeditor配置_ckeditor编辑器在java项目中配置
  8. eclipse 达梦 连接_JDBC连接达梦7数据库
  9. androidstudio打包apk 文件_Android 缩小apk体积过程记录
  10. html5 矩阵转换,功能HTML5矩阵变换