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算法及其数学演算过程相关推荐

  1. 数据挖掘之人工神经网络BP算法

    /*人工神经网络BP算法思想: 神经网络一般分为3层(也可以多层),包括输入层,隐含层和输出层.通过有监督的学习拟合非线性函数.假如输入层有3个神经元,隐含层有5个神经元,输出层有1个神经元.有监督的 ...

  2. 神经网络算法和人工智能,神经网络的算法有哪些

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

  3. 神经网络bp算法应用,bp神经网络动量因子

    伤寒.副伤寒流行预测模型(BP神经网络)的建立 由于目前研究的各种数学模型或多或少存在使用条件的局限性,或使用方法的复杂性等问题,预测效果均不十分理想,距离实际应用仍有较大差距. NNT是Matlab ...

  4. 神经网络——BP算法

    一.BP算法的意义 对于初学者来说,了解了一个算法的重要意义,往往会引起他对算法本身的重视.BP(Back Propagation,后向传播)算法,具有非凡的历史意义和重大的现实意义. 1.1.历史意 ...

  5. 多层神经网络(BP算法)介绍

    误差反向传播(Error Back Propagation, BP)算法 1.BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成. 1)正向传播:输入样本->输入层-&g ...

  6. c 语言实现神经网络算法,神经网络BP算法(C程序实现)[转载]

    文件输入输出目录为:F:\BP\ 训练样本文件名:训练样本.txt 值为: 1 1 -1 1 -1 1 0 1 0 1 输出文件名为:阈值.txt 权值.txt =================== ...

  7. 全链接神经网络——BP算法推导过程

  8. python对编写神经网络作用_神经网络(BP)算法Python实现及应用

    本文实例为大家分享了Python实现神经网络算法及应用的具体代码,供大家参考,具体内容如下 首先用Python实现简单地神经网络算法: import numpy as np # 定义tanh函数 de ...

  9. 图解人工神经网络 BP算法代码和注释

    动图很长 代码 # -*- coding: utf-8 -*-import numpy as np import matplotlib.pyplot as pyp OUTPUT = 'output' ...

最新文章

  1. 凝思系统分辨率怎么看_机械液压系统的泄漏怎么办,液压系统基本知识,看完你就懂了...
  2. 为什么租号玩显示服务器忙,租号玩上号器怎么用,租号玩上号器使用教程
  3. Android Service使用方法--简单音乐播放实例
  4. Linux疑难杂症解决方案100篇(十)-uptime命令查看linux系统负载
  5. 数据结构和算法练习网站_视频和练习介绍了10种常见数据结构
  6. java中的线程和进程,Java | 线程和进程,创建线程
  7. 第19课 - 路径搜索的综合示例
  8. 排列组合(HDU-1521)
  9. 《数字摄影与摄像》学习笔记——摄影课理论基础
  10. 微信小程序电商实战-购物车(上)
  11. 使用CrossApp实现版本更新管理(iOS端给AppStore链接,android端下载apk并替换)
  12. NPN与PNP的区别
  13. 金融数据分析(十二)房贷综合问题
  14. Telegram普通账号定时发布信息、签到
  15. MySQL 5.7--------多实例部署最佳实战
  16. 我们经常看到的”缺省“是什么意思
  17. ulong在C语言中的头文件,ULONG没有定义的 有关问题
  18. 【最小费用最大流】知识点讲解
  19. C语言中的float(单精度浮点数)
  20. 物联网与大数据技术-1

热门文章

  1. Excel筛选之后的复制粘贴小技巧
  2. 十一:数组和指针的关系?
  3. 已知前序中序,求后序
  4. Springboot毕设项目Yu见奶茶屋3rwhm(java+VUE+Mybatis+Maven+Mysql)
  5. pe修改2008服务器的快捷键,PE, *PEDIT(多段线编辑)怎样修改快捷键
  6. CPU和GPU的区别是什么?为什么训练人工智能用GPU而不是CPU?
  7. Python在真实世界的16种应用场景
  8. 【机器智能】机器到底怎样才能赶得上人类的思考能力?
  9. H7-TOOL发布V2.20带来原创RTOS Trace,截图,Scope功能,脱机烧录增加PSoC6, 中颖, 笙泉, 韦斯佰瑞, nRF9160, 杰发科技新系列等
  10. linux Ubuntu 访问共享文件夹