BP神经网络-- 基本模型

转载: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神经网络反馈部分的数学推导算完成了,可以在自己的草稿纸上画画~

时间: 2024-12-16 10:11:41

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

BP神经网络

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

基于BP神经网络的简单字符识别算法自小结(C语言版)

本文均属自己阅读源码的点滴总结,转账请注明出处谢谢. 欢迎和大家交流.qq:1037701636 email:[email protected] 写在前面的闲话: 自我感觉自己应该不是一个很擅长学习算法的人,过去的一个月时间里因为需要去接触了BP神经网络.在此之前一直都认为算法界的神经网络.蚁群算法.鲁棒控制什么的都是特别高大上的东西,自己也就听听好了,未曾去触碰与了解过.这次和BP神经网络的邂逅,让我初步掌握到,理解透彻算法的基本原理与公式,转为计算机所能识别的代码流,这应该就是所谓的数学和计

BP神经网络基本原理

2.1 BP神经网络基本原理 BP网络模型处理信息的基本原理是:输入信号Xi通过中间节点(隐层点)作用于输出节点,经过非线形变换,产生输出信号Yk,网络训练的每一个样本包含输入向量X和期望输出量t,网络输出值Y与期望输出值t之间的偏差,通过调整输入节点与隐层节点的联接强度取值Wij和隐层节点与输出节点之间的联接强度Tjk以及阈值,使误差沿梯度方向下降,经过重复学习训练,确定与最小误差相相应的网络參数(权值和阈值),训练即告停止.此时经过训练的神经网络即能对相似样本的输入信息,自行处理输出误差最小

BP神经网络及matlab实现

本文主要内容包括: (1) 介绍神经网络基本原理,(2) AForge.NET实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法 . 第0节.引例  本文以Fisher的Iris数据集作为神经网络程序的测试数据集.Iris数据集可以在http://en.wikipedia.org/wiki/Iris_flower_data_set  找到.这里简要介绍一下Iris数据集: 有一批Iris花,已知这批Iris花可分为3个品种,现需要对其进行分类.不同品种的Iris花的花萼长度.花萼

RBF神经网络和BP神经网络的关系

作者:李瞬生链接:https://www.zhihu.com/question/44328472/answer/128973724来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. BP Neural Network - 使用 Automatic Differentiation (Backpropagation) 进行导数计算的层级图模型 (layer-by-layer graphical model) 只要模型是一层一层的,并使用AD/BP算法,就能称作 BP Ne

字符识别OCR研究一(模板匹配&amp;amp;BP神经网络训练)

摘 要 在MATLAB环境下利用USB摄像头採集字符图像.读取一帧保存为图像.然后对读取保存的字符图像,灰度化.二值化,在此基础上做倾斜矫正.对矫正的图像进行滤波平滑处理,然后对字符区域进行提取切割出单个字符.识别方法一是採用模板匹配的方法逐个对字符与预先制作好的字符模板比較,假设结果小于某一阈值则结果就是模板上的字符:二是採用BP神经网络训练.通过训练好的net对待识别字符进行识别.最然后将识别结果通过MATLAB下的串口工具输出51单片机上用液晶显示出来. keyword: 倾斜矫正.字符切

模式识别:三层BP神经网络的设计与实现

本文的目的是学习和掌握BP神经网络的原理及其学习算法.在MATLAB平台上编程构造一个3-3-1型的singmoid人工神经网络,并使用随机反向传播算法和成批反向传播算法来训练这个网络,这里设置不同的初始权值,研究算法的学习曲线和训练误差.有了以上的理论基础,最后将构造并训练一个3-3-4型的神经网络来分类4个等概率的三维数据集合. 一.技术论述 1.神经网络简述 神经网络是一种可以适应复杂模型的非常灵活的启发式的统计模式识别技术.而反向传播算法是多层神经网络有监督训练中最简单也最一般的方法之一

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

神经网络曾经很火,有过一段低迷期,现在因为深度学习的原因继续火起来了.神经网络有很多种:前向传输网络.反向传输网络.递归神经网络.卷积神经网络等.本文介绍基本的反向传输神经网络(Backpropagation 简称BP),主要讲述算法的基本流程和自己在训练BP神经网络的一些经验. BP神经网络的结构 神经网络就是模拟人的大脑的神经单元的工作方式,但进行了很大的简化,神经网络由很多神经网络层构成,而每一层又由许多单元组成,第一层叫输入层,最后一层叫输出层,中间的各层叫隐藏层,在BP神经网络中,只有

BP神经网络—java实现

神经网络的结构 神经网络的网络结构由输入层,隐含层,输出层组成.隐含层的个数+输出层的个数=神经网络的层数,也就是说神经网络的层数不包括输入层.下面是一个三层的神经网络,包含了两层隐含层,一个输出层.其中第一层隐含层的节点数为3,第二层的节点数为2,输出层的节点数为1:输入层为样本的两个特征X1,X2. 图1 三层神经网络 在神经网络中每一个节点的都与上一层的所有节点相连,称为全连接.神经网络的上一层输出的数据是下一层的输入数据.在图中的神经网络中,原始的输入数据,通过第一层隐含层的计算得出的输