转载:http://www.cnblogs.com/jzhlin/archive/2012/07/28/bp.html

BP 神经网络中的 BP 为 Back  Propagation 的简写,最早它是由Rumelhart、McCelland等科学家于 1986 年提出来的,Rumelhart 并在Nature 上发表了一篇非常著名的文章 《Learning representations by back-propagating errors》 。随着时代的迁移,BP神经网络理论不断的得到改进、更新,现在无疑已成为了应用最为广泛的神经网络模型之一。让我们一起来探索下 BP神经网络最初的 基本模型和概念!

从神经网络的生物模型说起

我们知道人大脑信息的传递、对外界刺激产生反应都由神经元控制的,人脑就是由上百亿个的这样神经元构成。这些神经元之间并不孤立而且联系很密切,每个神经元平均与几千个神经元相连接,因此构成了人脑的神经网络。刺激在神经网络中的传播是遵循一定的规则的,一个神经元并非每次接到其他神经传递过来的刺激都产生反应。它首先会将与其相邻的神经元传来的刺激进行积累,到一定的时候产生自己的刺激将其传递给一些与它相邻的神经元。这样工作的百亿个的神经元构成了人脑对外界进行的反应。而人脑对外界刺激的学习的机制就是通过调节这些神经元之间联系以及其强度。当然,实际上以上说的是对人脑真正神经工作的一种简化的生物模型,利用这种简化的生物模型可以将它推广至机器学习中来,并把它描述成人工神经网络。BP神经网络就是其中的一种,来看看具体对神经元的分析。

图1  神经网络中神经元示意图

神经元的积累的刺激是由其他神经元传递过来的刺激量和对应的权重之和,用 X表示这种积累,Yi 表示某个神经元传递过来的刺激量,Wi 表示链接某个神经元刺激的权重,得到公式:

Xj = (y1 * W1)+(y2 * W2)+...+(yi * Wi)+...+ (yn * Wn)

而当 X完成积累后,完成积累的神经元本身对周围的一些神经元传播刺激,将其表示为  yj  得到如下所示:

  yj = f(Xj

神经元根据积累后 X的结果进行处理后,对外传递刺激 yj 。用 f 函数映射来表示这种处理,将它称之为 激活函数

BP神经网络的构成

分析完单个的神经元后,再来看看它们组成网络后的情形,用图形来说明是最直观的方法,如图2所示:

图2  BP神经网络示意图

第一区域的来说,它们相当于外界的刺激,是刺激的来源并且将刺激传递给神经元,因此把第一区域命名为输入层。第二区域,表示神经元相互之间传递刺激相当于人脑里面,因此把第二区命名为隐藏层。第三区域,表示神经元经过多层次相互传递后对外界的反应,因此把第三区域命名为输出层

简单的描述就是,输入层将刺激传递给隐藏层,隐藏层通过神经元之间联系的强度(权重)和传递规则(激活函数)将刺激传到输出层,输出层整理隐藏层处理的后的刺激产生最终结果。若有正确的结果,那么将正确的结果和产生的结果进行比较,得到误差,再逆推对神经网中的链接权重进行反馈修正,从而来完成学习的过程。这就是BP神经网的反馈机制,也正是BP(Back  Propagation)名字的来源:运用向后反馈的学习机制,来修正神经网中的权重,最终达到输出正确结果的目的!

 

BP神经网络的数学推导

从数学上对BP神经网络模型进行分析,本文第一部分神经网的生物模型中可以得到关于BP神经网络的第一个公式(1)

对于神经元本身的输出的激活函数,一般来说选取 Sigmoid 函数,那么可以得到第二个公式(2)

通过以上两个公式,可以分析出来BP神经网络中输出结果的计算过程。每个神经元收到刺激 yi  然后加权积累(权重 Wji  )完成后产生 x,再通过激活函数产生刺激 yj ,向下一层与它相连的神经元传递,依次类推最终输出结果。

我们再来分析如何利用向后反馈机制来修正神经元权重 Wji,这一部分数学推导需要运用到多元微分的数学内容。要修正 Wji  就需要得到误差量。具体来看,首先用dj  来表示真实的正确结果,并且设误差为 E ,那么( y- d对应的就是 E 对于 yj 的微分增量,即 yj  减去( y- d后就能得到正确值,得到公式(3)

然后,明确目标,需要知道的是对于权重 Wji 的误差量是多少也就是     的值。而由公式(1)中知道 Wji  x相关, 那么可以推导出公式(4)

需要求得 Wji 的误差量,转换为需要求    的值了。它的推导如下:

其中    的值,可以通过公式(2)求导得出来:

所以最终得到的的误差量的值为:

以上公式需要注意下标:最后一个是 y,前面的都是 y。推到这里可以算是完成了运用神经网络的输出值 yj 和正确值 d 对最后一层隐藏层 Wji 的修正,那么对其他隐藏层呢? 接着往下看。

上面的推导过程由公式(3)开始,如果我们知道   (注意是 y公式(3)中是 y),就可以 同理 推导求出其对应其他隐藏层需要修正的权重值误差量了。推导如下:

这样所有的误差量的都可以 同理 推导完成!

最后一步修正 Wji ,就是加上下面变量了,设置一个 l (0 到 1 之间)学习率。

至此,BP神经网络反馈部分的数学推导算完成了,可以在自己的草稿纸上画画~

BP神经网络-- 基本模型的更多相关文章

  1. 神经网络中的BP神经网络和贝叶斯

    1 贝叶斯网络在地学中的应用 1 1.1基本原理及发展过程 1 1.2 具体的研究与应用 4 2 BP神经网络在地学中的应用 6 2.1BP神经网络简介 6 2.2基本原理 7 2.3 在地学中的具体 ...

  2. BP神经网络原理及python实现

    [废话外传]:终于要讲神经网络了,这个让我踏进机器学习大门,让我读研,改变我人生命运的四个字!话说那么一天,我在乱点百度,看到了这样的内容: 看到这么高大上,这么牛逼的定义,怎么能不让我这个技术宅男心 ...

  3. BP神经网络

    秋招刚结束,这俩月没事就学习下斯坦福大学公开课,想学习一下深度学习(这年头不会DL,都不敢说自己懂机器学习),目前学到了神经网络部分,学习起来有点吃力,把之前学的BP(back-progagation ...

  4. 数据挖掘系列(9)——BP神经网络算法与实践

    神经网络曾经很火,有过一段低迷期,现在因为深度学习的原因继续火起来了.神经网络有很多种:前向传输网络.反向传输网络.递归神经网络.卷积神经网络等.本文介绍基本的反向传输神经网络(Backpropaga ...

  5. 基于Storm 分布式BP神经网络,将神经网络做成实时分布式架构

    将神经网络做成实时分布式架构: Storm 分布式BP神经网络:    http://bbs.csdn.net/topics/390717623 流式大数据处理的三种框架:Storm,Spark和Sa ...

  6. 【机器学习】BP神经网络实现手写数字识别

    最近用python写了一个实现手写数字识别的BP神经网络,BP的推导到处都是,但是一动手才知道,会理论推导跟实现它是两回事.关于BP神经网络的实现网上有一些代码,可惜或多或少都有各种问题,在下手写了一 ...

  7. 【转】漫谈ANN(2):BP神经网络

    上一次我们讲了M-P模型,它实际上就是对单个神经元的一种建模,还不足以模拟人脑神经系统的功能.由这些人工神经元构建出来的网络,才能够具有学习.联想.记忆和模式识别的能力.BP网络就是一种简单的人工神经 ...

  8. BP神经网络基本原理

    2.1 BP神经网络基本原理 BP网络模型处理信息的基本原理是:输入信号Xi通过中间节点(隐层点)作用于输出节点,经过非线形变换,产生输出信号Yk,网络训练的每一个样本包含输入向量X和期望输出量t,网 ...

  9. bp神经网络及matlab实现

    本文主要内容包含: (1) 介绍神经网络基本原理,(2) AForge.NET实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法 . 第0节.引例  本文以Fisher的Iris数据集 ...

随机推荐

  1. 一日一句 SQL [持续更新] MySQL + Oracle

    1 . group by 和 having字句: group by是根据列值对数据进行分组, having子句用于对分组的数据进行过滤. [ having 针对的对象是分好的组] eg: employ ...

  2. WPF数据视图学习

    当你绑定集合到ItemsControl,数据视图被安静地在幕后创造.视图位于数据源和绑定控件之间.数据视图是通往数据源的一个窗口.它跟踪当前项目,它支持诸如排序,过滤,和分组特征.这些特征独立于数据对 ...

  3. 2011 Multi-University Training Contest 8 - Host by HUST

    Rank:56/147. 开场看B,是个线段树区间合并,花了2hour敲完代码...再花了30min查错..发现push_down有问题.改了就AC了. 然后发现A过了很多人.推了个公式,发现是个分段 ...

  4. 原生JS表单序列化

    // 表单序列化,IE9+ HTMLFormElement.prototype.serialize = function() { var form = this; // 表单数据 var arrFor ...

  5. Codeforces Gym 101142 C. CodeCoder vs TopForces(思维+图论)

    题意: 每个人有两个积分CC和TF 第i个人能战胜第j个人的条件满足下面两个条件中的一个即可 1.CCi > CCj 或 TFi > TFj 2.i能战胜k,k能战胜j. 题解: 先按CC ...

  6. Dom-直接 /间接选择器

    Dom:Document Object Model的缩写, 把html转换成了文本对象. 1. 直接选择器 1.直接查找 document.getElementById 根据ID获取一个标签 docu ...

  7. 【题解】51nod1967 路径定向

    第一次写欧拉回路,实际上只要dfs下去就可以了,反正每条边都是要遍历一遍的…… 关键有两个性质:1.一个无向图存在欧拉回路,当且仅当该图所有顶点度数都为偶数,且该图是连通图.2.一个有向图存在欧拉回路 ...

  8. 项目管理---git----快速使用git笔记(一)------git的简单介绍

    最近svn代码管理服务器崩溃了,切换到git来运作. 经过几天的使用,感觉很不错. 尤其是代码合并到正式版本之前 可以对代码进行 code review. 这样能很好的保证团队的代码质量和一些重复代码 ...

  9. [辅助软件] 微信小程序开发资源汇总 接入指南

    https://github.com/justjavac/awesome-wechat-weapp https://github.com/justjavac/awesome-wechat-weapp ...

  10. 注册google账号时出现手机号的问题

    注册谷歌账号时出现此电话号码无法用于进行验证 这主要是86和手机号之间有一个空格造成的,把这个空格删除就可以了