BP神经网络的公式推导

如果感觉自己看不懂,那就看看我博客的梯度下降法,博文最后的感知机也算最简单的BP神经网络吧,用的也是反馈(w,b):典型梯度下降法

BP网络的结构

BP网络的结构如下图所示,分为输入层(Input),隐含层(Hidden),输出层(Output)。 
输入层的结点个数取决于输入的特征个数。 
输出层的结点个数由分类的种类决定。 
在输入层和输出层之间通常还有若干个隐含层,至于隐含层的个数以及每个隐含层的结点个数由训练工程师的经验来人为设定。 
链接A曾提到由万能逼近定理,一般一个隐含层就足够了。且这个隐含层一般结点个数为: 
 。 
其中:I为输入层结点个数,O为输出层结点个数,a为1~10范围内的调节常数。

就车牌识别中识别数字0~9的BP网络来说:输入层的每个结点就是的待训练的图像每种特征,常见的车牌数字识别有从上到下的每个结点缩放成规定大小的0~9数字图像的每个像素点值。那么输出的结点就只有0~9十个结点。

输入层与隐含层的权重矩阵记为:WIK,其中隐含层的每个结点与输入层的每个结点都相连,输入层的每个结点与隐含层之间都有一个权重,这样WIK就是一个I*H的矩阵,同理WHO就是一个H*O的矩阵。

为了便于后续公式的推导以及明确各个参数的意义,这里特地说明,如下图: 
输入层的结点个数为I, 
隐含层的结点个数为H, 
输出层的结点个数为O;

设输入层有任一结点i, 
设隐含层有任一结点k, 
设输出层有任一结点j;

其中结点i与结点k之间的权重为Wik开始训练前由人为设定初始值; 
其中结点k与结点j之间的权重为Wkj开始训练前由人为设定初始值;

对于输出层 
设结点j的教师信号为Sj注:教师信号就是实际值(训练值) 
j的当前偏置为Bj开始训练前由人为设定初始值, 
设结点j的初始输出的结果为yj, 
设结点j的最终输出结果为Yj,
注意:Yj是yj经过激励函数作用后的值->     Yj = f(yj)

对于隐含层: 
隐含层没有教师信号, 
设k的当前偏置为Bk开始训练前由人为设定初始值; 
设结点k的初始输出的结果为yk
设结点k的最终输出结果为Yk
注意:Yk是yk经过激励函数作用后的值->   Yk=f(yk)

对于输入层: 
输入层结点没有教师信号,没计算值,没有阈值,只有一个结点值 
结点i的值为Xi,

BP算法思想

激励函数

下面解释为什么每个结点要由一开始的输出结果经过激励函数处理下: 
因为yi其实是由Yi与Bj以及Wij以线性函数的形式得到,而根据整个BP算法设计思想要根据每次结点的输出来偏微分来调整每个结点的权重来实现训练目的(这也就是所谓的梯度下降法),这就需要输出是基于输入的可微分函数,同时为方便归一化的比较输出层每个结点每次输出的结果,就采用下述两种激励函数。

在一般情形下: 

下面对他进行求导,后面解释原理时要用: 

的导数为::

      .................... (X1)   

前向传播

在BP神经网络中,每个节点的输出值是根据上层所有节点的输出值、当前节点与上一层所有节点的权值 和 当前节点的阀值 还有 激活函数来实现的。以上图为例结点k输出值的计算方法: 
 .............................(X2)

        ................ ....................... (X3)

以上图为例结点j输出值的计算方法: 
    ............................(X4)

   .............................................(X5)

其中f为激活函数,就是上面求导的那个函数。

其实,正向传播很简单,就是结点依次执行这两个公式,从输入层到隐含层,从隐含层到输出层。

返向传播

在BP神经网络的输出层,经过网络处理的输入数据的输出结果与标准结果(教师信号)的误差可以用如下的公式来衡量::

    .............................(X6)

网络的返向传播过程就是误差信号的返向传播过程,主要目的就是通过反复修正权值和阀值,使得误差函数值达到最小。而这其中修正权值与阈值的是通过梯度下降法来实现。根据梯度下降法的原理,权值的修正值与误差函数成正比: 

...............................(X7)

对上述公式进行展开与推导: 
 
令:

则:

同样对于Bj有: 

对上述公式进行展开与推导: 
 
同样令:

则: 

由上述公式可以得到输出层结点j到隐含层的返向传播的权重W与偏置B的更新策略如下: 

下面推导隐含层到输入层的权重与偏置的梯度: 

令:

由上述公式可以得到隐含层结点k到输入层的返向传播的权重W与偏置B的更新策略如下: 

在实际的训练中BP就是不停的迭代实现前向传播与返向传播来修正权重与偏置,得到最终的网络。 
在实际的BP网络测试中,对于一个测试目标提取输入层需要的特征作为输入层结点的值,用上面训练好的网络来进行前向传播,最终输出结点处的值最大的结点,就是这个测试目标的分类。

转载自:http://blog.csdn.net/lanxuecc/article/details/51754838#t0

http://blog.csdn.net/acdreamers/article/details/44657439

时间: 2024-10-12 22:10:23

BP神经网络的公式推导的相关文章

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

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

BP神经网络公式推导及实现(MNIST)

BP神经网络的基础介绍见:http://blog.csdn.net/fengbingchun/article/details/50274471,这里主要以公式推导为主. BP神经网络又称为误差反向传播网络,其结构如下图.这种网络实质是一种前向无反馈网络,具有结构清晰.易实现.计算功能强大等特点. BP神经网络有一个输入层,一个输出层,一个或多个隐含层.每一层上包含了若干个节点,每个节点代表一个神经元,同一层上各节点之间无任何耦合连接关系,层间各神经元之间实现全连接,即后一层(如输入层)的每一个神

学习日记(2.19 BP神经网络完整代码解读)

BP网络实现手写数字识别代码解读 1.添加偏置 #添加偏置 temp=np.ones([X.shape[0],X.shape[1]+1]) temp[:,0:-1]=X X=temp np.ones()函数 numpy.ones()函数的功能是返回一个全都是1的N维数组,其中shape(用来指定返回数组的大小).dtype(数组元素的类型).order(是否以内存中的C或Fortran连续(行或列)顺序存储多维数据).后两个参数都是可选的,一般只需设定第一个参数. shape[]的功能是: 0查

BP神经网络

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

【转载】BP神经网络

原文地址:http://blog.csdn.net/acdreamers/article/details/44657439 今天来讲BP神经网络,神经网络在机器学习中应用比较广泛,比如函数逼近,模式识别,分类,数据压缩,数据 挖掘等领域.接下来介绍BP神经网络的原理及实现. Contents   1. BP神经网络的认识   2. 隐含层的选取   3. 正向传递子过程   4. 反向传递子过程   5. BP神经网络的注意点   6. BP神经网络的C++实现 1. BP神经网络的认识    

遗传算法优化BP神经网络——非线性函数拟合

遗传算法基本的操作分为: 1.选择操作 2.交叉操作 3.变异操作 遗传算法的基本要素包括染色体编码方法.适应度函数.遗传操作和运行参数. 遗传算法优化BP神经网络算法流程如图3-4所示:

C#实现的bp神经网络并应用于综合评价

由于课程设计选的题目是基于神经网络的综合评价,利用暑假时间用C#实现的bp神经网络.其中用到的_Matrix类是C#实现的矩阵类http://blog.csdn.net/lanqiuchaoren/article/details/37738665.此bp神经网络包含1个隐藏层,其中输入层,隐藏层,输出层个数都可以根据需要更改. 具体bp神经网络代码如下 BP类: using Matrix_Mul; using Excel = Microsoft.Office.Interop.Excel; usi

题外:分类篇(音乐风格分类)基于BP神经网络

语音特征参数MFCC的提取及识别 (2012-09-07 20:24:03) 转载▼ 耳蜗实质上相当于一个滤波器组,耳蜗的滤波作用是在对数频率尺度上进行的,在1000HZ下,人耳的感知能力与频率成线性关系:而在1000HZ以上,人耳的感知能力与频率不构成线性关系,而更偏向于对数关系,这就使得人耳对低频信号比高频信号更敏感.Mel频率的提出是为了方便人耳对不同频率语音的感知特性的研究.频率与Mel频率的转换公式为: MFCC在一定程度上模拟了人耳对语音的处理特点,应用了人耳听觉感知方面的研究成果,

再看BP神经网络

权值 BP网络中 w(1,1)  表示第 1 个输入矢量在输入层和隐含层中的权值.                w(1,2)  表示第 2 个输入矢量在输入层和隐含层中的权值.             ...w(1, j )  表示第 j 个输入矢量在输入层和隐含层中的权值. w(2,1) :第 1 个输入矢量在隐含层和输出层中的权值....   若w( i , j ) 中i > 2,则有多个隐含层. 1. net.IW 属性定义了从网络输入向量到网络层的权值向量(即输入层的权值向量)结构.