目录

背景知识

人工神经元模型

激活函数

网络结构

工作状态

学习方式

BP算法原理

算法实现(MATLAB)


背景知识

在我们人体内的神经元的基本结构,相信大家并不陌生,看完下面这张图,相信大家都能懂

什么是人工神经网络?

人工神经网络是具有适应性的简单神经元组成的广泛并互连的网络,它的组织能够模拟生物神经系统对真实世界物体作出的交互式反应。人工神经网络具有自学习、自组织、较好的容错性和优良的非线性逼近能力。

人工神经网络能干什么?

1、拟合数据——>预测

2、分类——>聚类分析

那么我们学习人工神经网络需要知道哪些呢?

1、神经元模型

2、激活函数

3、网络结构

4、工作状态

5、学习方式

人工神经元模型

作为神经网络的基本元素,神经元的模型如下:

是从其他神经元上传来的信号,表示从神经元 到神经元的连接权值,表示一个阈值,或者称为偏置。

神经元输入与输出的关系为:

激活函数

激活函数是对净激活量与输出进行映射的函数。一些常用的激活函数,由于输入数据与期望之间可能并不是量级一样,所以需要激活,激活函数:

一些常用的激活函数有:

线性函数:                                                S型函数:

                                      

阈值函数:                                                双极S型函数:

                       

 网络结构

根据网络中神经元的互连方式,可以分为3种神经网络

1、前馈神经网络:在训练的过程中会有反馈信号,而在分类的过程中只能向前传递数据,直到到达输出层,层间没有向后反馈信号

2、反馈神经网络:从输入到输出具有反馈连接的神经元

3、自组织网络:通过自动寻找样本中的内在规律和本质属性,自组织、自适应地改变网络参数与结构

工作状态

1、学习:利用学习算法来调整神经元之间的连接权值,使得网络输出更符合实际

2、工作:神经元的连接权值不变,可作为分类器或者预测数据时使用

学习方式

1、有导师学习:将一组训练集送入网络,根据网络的实际输出与期望输出间的差别来调整连接权,如BP算法(本文的代码实现也为BP神经网络的算法实现)

2、无导师学习:抽取样本集合中蕴含的统计特性,并以神经元之间的连接权的形式存在于网络中,如(Hebb学习率)

BP算法原理

假设输入层有n个神经元,隐含层有p个神经元,输出层有q个神经元

符号定义:

输入向量
隐含层输入向量
隐含层输出向量
输出层输入向量
输出层输出向量
期望输出向量
误差函数

第一步:计算各层神经元的输入和输出:

第二步:利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数。

第三步:利用隐含层到输出层的连接权值、输出层的和隐含层的输出计算误差函数对隐含层各神经元的偏导数 

第四步:利用输出层各神经元的 和隐含层各神经元的输出来修正连接权值

是设置的学习率

 第五步:利用隐含层各神经元的和输入层各神经元的输入修正连接权

 第六步:计算全局误差

第七步:判断网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回进入下一轮学习。 

算法实现(MATLAB)

注意:由于MATLAB有内置函数可以调用,所以没有从公式原理上从头搭建代码

%BP神经网络
clear all
clc
X=-1:0.1:1;
D=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609...0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 -.0988...0.3072 0.3960 0.3449 0.1816 -0.312 -0.2189 -0.3201];
net = newff(minmax(X),[5 1],{'tansig','tansig'}, 'trainlm');%隐含层5个神经元,输出层1个神经元
net.trainParam.epochs = 10000; %训练的最大次数
net.trainParam.goal = 1e-5; %全局最小误差
net = train(net,X,D);
O = sim(net,X); %仿真模拟
figure;
plot(X,D,X,O,'r'); %绘制训练后得到的结果和误差曲线
legend('原始数据','仿真数据')
V = net.iw{1,1}%输入层到中间层权值
theta1 = net.b{1}%中间层各神经元阈值
W = net.lw{2,1}%中间层到输出层权值
theta2 = net.b{2}%输出层各神经元阈值%%以下是计算结果
V =63.2827-21.7727-19.39264.29531.7695theta1 =-44.70437.68902.15891.45752.2024W =-0.3473   -0.2570   -0.2184   -1.3224    6.1471theta2 =-5.2381

 仿真的结果:

从以上结构可以看出,这个神经网络训练的还是比较好的,仿真的结果误差很小 。

以上就是BP神经网络的全部推理及实现过程,希望能你有所帮助,谢谢观看!

神经网络算法基本原理及其实现相关推荐

  1. BP神经网络算法基本原理,bp神经网络算法的原理

    BP人工神经网络方法 (一)方法原理人工神经网络是由大量的类似人脑神经元的简单处理单元广泛地相互连接而成的复杂的网络系统.理论和实践表明,在信息处理方面,神经网络方法比传统模式识别方法更具有优势. 人 ...

  2. BP神经网络算法基本原理,bp神经网络实例分析

    BP人工神经网络方法 (一)方法原理人工神经网络是由大量的类似人脑神经元的简单处理单元广泛地相互连接而成的复杂的网络系统.理论和实践表明,在信息处理方面,神经网络方法比传统模式识别方法更具有优势. 人 ...

  3. BP神经网络算法基本原理,bp神经网络简单实例

    神经网络BP算法求代码 输入节点数为3x3x5=45,输出节点数为3x3+2=11,隐节点数通过试凑法得出.BP神经网络的Matlab代码见附件,修改节点数.增加归一化和反归一化过程即可. BP算法, ...

  4. BP神经网络算法基本原理,bp网络神经算法代码

    bp神经网络的算法改进一共有多少种啊!麻烦举例一下! . 改进点主要在以下几个方面1激励函数的坡度-------误差曲面的平台和不收敛现象----------------激励函数中引入陡度因子,分段函 ...

  5. BP神经网络算法基本原理,bp神经网络算法的优点

    BP人工神经网络方法 (一)方法原理人工神经网络是由大量的类似人脑神经元的简单处理单元广泛地相互连接而成的复杂的网络系统.理论和实践表明,在信息处理方面,神经网络方法比传统模式识别方法更具有优势. 人 ...

  6. BP神经网络算法基本原理,bp神经网络算法公式

    神经网络BP模型 一.BP模型概述误差逆传播(Error Back-Propagation)神经网络模型简称为BP(Back-Propagation)网络模型. Pall Werbas博士于1974年 ...

  7. 神经网络的基本原理,神经网络算法三大类

    1.神经网络是什么? 生物神经网络主要是指人脑的神经网络,它是人工神经网络的技术原型. 人脑是人类思维的物质基础,思维的功能定位在大脑皮层,后者含有大约10^11个神经元,每个神经元又通过神经突触与大 ...

  8. 神经网络算法的基本原理,神经网络是机器算法吗

    神经网络算法可以解决的问题有哪些 人工神经网络(ArtificialNeuralNetworks,ANN)系统是20世纪40年代后出现的. 它是由众多的神经元可调的连接权值连接而成,具有大规模并行处理 ...

  9. 神经网络算法用什么软件,神经网络算法的基本原理

    神经网络算法的三大类分别是? 神经网络算法的三大类分别是: 1.前馈神经网络: 这是实际应用中最常见的神经网络类型.第一层是输入,最后一层是输出.如果有多个隐藏层,我们称之为"深度" ...

最新文章

  1. 编译出错libicui18n.so.58: undefined reference to `__cxa_throw_bad_array_new_length@CXXABI_1.3.8‘
  2. livewriter写Blog 神秘失踪?
  3. 牛X,这次Windows太给力了!!!
  4. tp3.2php开启事务,Thinkphp 3.2.3 开启调试模式
  5. LiveVideoStack线上分享第三季(十):Flutter浪潮下的音视频研发探索
  6. JLabel标签文字换行
  7. 定义下一代存储,打造全新一代数据基础设施
  8. 一行python代码值多少钱_一行python代码
  9. var obj = eval(result); 解析json
  10. Xshell远程连接Linux服务器
  11. java 复制对象_Java核心知识 基础七 JAVA 复制
  12. HanLP1.5.2 -python使用介绍
  13. 通信系统中语音信号的仿真分析
  14. VALSE 4月12日 下午 第一会场 深度学习模型设计 会议记录
  15. Titan框架入门指南:Titan如何工作
  16. UE4 Geometry Polygon
  17. Linux 安装mysql5.7.29源码安装【亲自测试】
  18. 干饭人的苦恼:科学家发现人的饥饿感和孤独感非常相似
  19. Fiddler-抓取手机app数据包
  20. Redis实现短信登入功能(一)传统的Session登入

热门文章

  1. 硬件电路设计纯纯小白-4-Altium Designer 禁止AD联网的操作(同样适应于其他软件)
  2. 郑州大学“战役杯”第三次比赛题解
  3. 数学使用计算机辅助教学,计算机辅助小学数学教学的初探论文
  4. 在线播放器代码大全!
  5. “金三银四”春招指南之“性能调优”:MySQL+Tomcat+JVM,看完还怕面试官的轰炸?
  6. GolangWeb架构Beego
  7. 中科三方:DNS云解析技术浅析
  8. 《14款经典窗帘SketchUp模型》每个室内人都应该看的经典
  9. DTD与XML的关系
  10. samsung电容命名法则