人工智能神经网络bp算法及其数学演算过程
BP 算法
预备知识
在开始之前,首先需要补充一点预备知识。
1. 激活函数sigmoid函数:
sigmoid 函数是人工智能神经网络中最常使用的一类激活函数,其数学表达式为:
sigmoid函数有一个重要的性质:f’(x) = f(x)[1-f(x)],这个性质在我们求导的过程中起了很大的作用。
2. 梯度下降策略
其中,学习率一塔我们设定为0.5
接下来我们进入正题,BP算法总共分为两个部分,第一个部分是FP(前馈计算计算误差)过程,我们用来计算误差;第二个部分是BP(反馈计算更新权重),我们用来更新权重W;
一、 FP过程
想必大家都已经了解到神经网络的结构,这里我就不做过多的解释了,其中l1, l2是这个神经网络的输入层,h1,h2,h3是这里的隐藏层,O1,O2是我这个神经网络的输出层,其中w表示权重,b表示偏置项(b可以理解为一次函数中的y = kx + b 中的常数项,在这里我们取b1 = 0.35, b2 = 0.65,其实 b1, b2 我们可以取任意值,在此不影响结论)。
为了方便更直观的解释,我们来设定一下权重值和偏置项的值:
下面我们就来进行前馈计算:
首先我们以h1为例:
在此,我要补充一个知识:
一个神经元节点,它分为两个部分,如图所示:
左边一部分是我们的输入值,我们称之为net(h1),net(h1)经过sigmoid函数激活之后,我们可以得到Out(h1)这就是我们隐藏层的一个输出结果。
下面我们来进行计算h1的误差:
net(h1) = w1 * l1 + w2 * l2 + b1=2.35
(你可以发现, h1是由w1和w2 连接而成的)
然后,经过sigmoid函数激活之后我们可以得到,
Out(h1) = sigmoid(net(h1))=0.912934
同理,可得:
Out(h2) = 0.979164
Out(h3) = 0.995275
有了这三个数值,我们可以算出输出层O1,O2的误差:
net(O1)= W7 * Outh1 + W9 * Outh1 + W11 * Outh3 + b2 = 2.1019206
经过sigmoid函数激活之后,我们可以得到:
Outh1 = sigmoid(neth1) = 0.891090
同理,可得:
Out h2 = 0.904330
然后,我们可以得到总误差,这里我们记作Etotal(这里我们将Out h1, Out h2 简称为 O1, O2):
这里的1/2是为了后面反馈计算方便而添加的。
到此为止,我们已经完成了前馈计算,并且算出了总误差值。
二、 BP过程
(1).更新(hidden layer ----- Output layer)
这里的BP过程,我们是用来更新W的值,使预测结果更加精确。在此,我们以W7为例。
这里我们需要用到高等数学里的链式法则,W7与下列因素相关:
根据链式法则,我们可得:
其中,等式右边第一项等于:
第二项等于:
第三项等于:
所以,我们可以得到总式:
最后,我们求得w7的更新结果:
同理,我们可得:
(w1-w6 求解方法见下)
(2).更新(Input layer ----hidden layer)
这里我们以w1 为例:
这里还是应用高等数学里的链式法则,w1与下列因素有关:
所以,我们得到求导公式:
这里以Eo1对Outh1的求导为例:
同理可得Eo2对h1的求导公式:
所以我们求得更新后的w1的值:
同理可得(w1 - w6):
至此,w的权重值已完成一次迭代周期。事实上,要想预估的更准确,我们需要上百次甚至上千次的迭代,直至我们权重最终的更新值图像对于实际值收敛。
代码实现:
总结:
bp算法在我们现实中有很多应用,比如,根据某一商店的去年的销量,我们可以来预测今年的销量······我这里只做了简单的算法的数学推算,有许多不足之处,希望大家指正。
人工智能神经网络bp算法及其数学演算过程相关推荐
- 数据挖掘之人工神经网络BP算法
/*人工神经网络BP算法思想: 神经网络一般分为3层(也可以多层),包括输入层,隐含层和输出层.通过有监督的学习拟合非线性函数.假如输入层有3个神经元,隐含层有5个神经元,输出层有1个神经元.有监督的 ...
- 神经网络算法和人工智能,神经网络的算法有哪些
神经网络算法的三大类分别是? 神经网络算法的三大类分别是:1.前馈神经网络:这是实际应用中最常见的神经网络类型.第一层是输入,最后一层是输出.如果有多个隐藏层,我们称之为"深度"神 ...
- 神经网络bp算法应用,bp神经网络动量因子
伤寒.副伤寒流行预测模型(BP神经网络)的建立 由于目前研究的各种数学模型或多或少存在使用条件的局限性,或使用方法的复杂性等问题,预测效果均不十分理想,距离实际应用仍有较大差距. NNT是Matlab ...
- 神经网络——BP算法
一.BP算法的意义 对于初学者来说,了解了一个算法的重要意义,往往会引起他对算法本身的重视.BP(Back Propagation,后向传播)算法,具有非凡的历史意义和重大的现实意义. 1.1.历史意 ...
- 多层神经网络(BP算法)介绍
误差反向传播(Error Back Propagation, BP)算法 1.BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成. 1)正向传播:输入样本->输入层-&g ...
- c 语言实现神经网络算法,神经网络BP算法(C程序实现)[转载]
文件输入输出目录为:F:\BP\ 训练样本文件名:训练样本.txt 值为: 1 1 -1 1 -1 1 0 1 0 1 输出文件名为:阈值.txt 权值.txt =================== ...
- 全链接神经网络——BP算法推导过程
- python对编写神经网络作用_神经网络(BP)算法Python实现及应用
本文实例为大家分享了Python实现神经网络算法及应用的具体代码,供大家参考,具体内容如下 首先用Python实现简单地神经网络算法: import numpy as np # 定义tanh函数 de ...
- 图解人工神经网络 BP算法代码和注释
动图很长 代码 # -*- coding: utf-8 -*-import numpy as np import matplotlib.pyplot as pyp OUTPUT = 'output' ...
最新文章
- 凝思系统分辨率怎么看_机械液压系统的泄漏怎么办,液压系统基本知识,看完你就懂了...
- 为什么租号玩显示服务器忙,租号玩上号器怎么用,租号玩上号器使用教程
- Android Service使用方法--简单音乐播放实例
- Linux疑难杂症解决方案100篇(十)-uptime命令查看linux系统负载
- 数据结构和算法练习网站_视频和练习介绍了10种常见数据结构
- java中的线程和进程,Java | 线程和进程,创建线程
- 第19课 - 路径搜索的综合示例
- 排列组合(HDU-1521)
- 《数字摄影与摄像》学习笔记——摄影课理论基础
- 微信小程序电商实战-购物车(上)
- 使用CrossApp实现版本更新管理(iOS端给AppStore链接,android端下载apk并替换)
- NPN与PNP的区别
- 金融数据分析(十二)房贷综合问题
- Telegram普通账号定时发布信息、签到
- MySQL 5.7--------多实例部署最佳实战
- 我们经常看到的”缺省“是什么意思
- ulong在C语言中的头文件,ULONG没有定义的 有关问题
- 【最小费用最大流】知识点讲解
- C语言中的float(单精度浮点数)
- 物联网与大数据技术-1
热门文章
- Excel筛选之后的复制粘贴小技巧
- 十一:数组和指针的关系?
- 已知前序中序,求后序
- Springboot毕设项目Yu见奶茶屋3rwhm(java+VUE+Mybatis+Maven+Mysql)
- pe修改2008服务器的快捷键,PE, *PEDIT(多段线编辑)怎样修改快捷键
- CPU和GPU的区别是什么?为什么训练人工智能用GPU而不是CPU?
- Python在真实世界的16种应用场景
- 【机器智能】机器到底怎样才能赶得上人类的思考能力?
- H7-TOOL发布V2.20带来原创RTOS Trace,截图,Scope功能,脱机烧录增加PSoC6, 中颖, 笙泉, 韦斯佰瑞, nRF9160, 杰发科技新系列等
- linux Ubuntu 访问共享文件夹