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的更新策略如下:
注:此处少了一个σkj 隐藏层到输出层的学习因子
在实际的训练中BP就是不停的迭代实现前向传播与返向传播来修正权重与偏置,得到最终的网络。
在实际的BP网络测试中,对于一个测试目标提取输入层需要的特征作为输入层结点的值,用上面训练好的网络来进行前向传播,最终输出结点处的值最大的结点,就是这个测试目标的分类。
转载自:http://blog.csdn.net/lanxuecc/article/details/51754838#t0
http://blog.csdn.net/acdreamers/article/details/44657439
BP神经网络的公式推导的更多相关文章
- 基于BP神经网络的简单字符识别算法自小结(C语言版)
本文均属自己阅读源代码的点滴总结.转账请注明出处谢谢. 欢迎和大家交流.qq:1037701636 email:gzzaigcn2009@163.com 写在前面的闲话: 自我感觉自己应该不是一个非常 ...
- BP神经网络公式推导及实现(MNIST)
BP神经网络的基础介绍见:http://blog.csdn.net/fengbingchun/article/details/50274471,这里主要以公式推导为主. BP神经网络又称为误差反向传播 ...
- BP神经网络原理及python实现
[废话外传]:终于要讲神经网络了,这个让我踏进机器学习大门,让我读研,改变我人生命运的四个字!话说那么一天,我在乱点百度,看到了这样的内容: 看到这么高大上,这么牛逼的定义,怎么能不让我这个技术宅男心 ...
- 神经网络中的BP神经网络和贝叶斯
1 贝叶斯网络在地学中的应用 1 1.1基本原理及发展过程 1 1.2 具体的研究与应用 4 2 BP神经网络在地学中的应用 6 2.1BP神经网络简介 6 2.2基本原理 7 2.3 在地学中的具体 ...
- BP神经网络
秋招刚结束,这俩月没事就学习下斯坦福大学公开课,想学习一下深度学习(这年头不会DL,都不敢说自己懂机器学习),目前学到了神经网络部分,学习起来有点吃力,把之前学的BP(back-progagation ...
- 数据挖掘系列(9)——BP神经网络算法与实践
神经网络曾经很火,有过一段低迷期,现在因为深度学习的原因继续火起来了.神经网络有很多种:前向传输网络.反向传输网络.递归神经网络.卷积神经网络等.本文介绍基本的反向传输神经网络(Backpropaga ...
- BP神经网络推导过程详解
BP算法是一种最有效的多层神经网络学习方法,其主要特点是信号前向传递,而误差后向传播,通过不断调节网络权重值,使得网络的最终输出与期望输出尽可能接近,以达到训练的目的. 一.多层神经网络结构及其描述 ...
- 极简反传(BP)神经网络
一.两层神经网络(感知机) import numpy as np '''极简两层反传(BP)神经网络''' # 样本 X = np.array([[0,0,1],[0,1,1],[1,0,1],[1, ...
- BP神经网络
BP神经网络基本原理 BP神经网络是一种单向传播的多层前向网络,具有三层或多层以上的神经网络结构,其中包含输入层.隐含层和输出层的三层网络应用最为普遍. 网络中的上下层之间实现全连接,而每层神经元之 ...
随机推荐
- TI AM335x Linux MUX hacking
/********************************************************************************************* * TI ...
- 51Nod 1067:Bash游戏 V2(巴什博弈)
1067 Bash游戏 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 有一堆石子共有N个.A B两个人轮流拿,A先拿.每次只能拿1,3,4 ...
- 强连通分量【k 算法、t 算法】
连通分量就是一个各个顶点能互相达到的图 无向图的连通分量选取任意一个顶点使用DFS遍历即可,遍历完所有顶点所需的DFS的次数就是连通分量的数量 有向图的强连通分量由于是有向的[从A点开始DFS能访问到 ...
- test20190320 全连(fc)
题意 全连(fc) [题目背景] 还记得若干年前那段互相比较<克罗地亚狂想曲>的分数的日子吗? [题目描述] E.Space 喜欢打音游. 但是他技术不好,总是拿不到全连(Full Com ...
- All the Apache Streaming Projects: An Exploratory Guide
The speed at which data is generated, consumed, processed, and analyzed is increasing at an unbeliev ...
- ImageCollection
https://documentation.devexpress.com/#WindowsForms/clsDevExpressUtilsImageCollectiontopic The collec ...
- Windows下搭建Subversion 服务器
一.准备工作 1.获取 Subversion 服务器程序 到官方网站(http://subversion.tigris.org/)下载最新的服务器安装程序.目前最新的是1.5版本,具体下载地址在:ht ...
- Apache+modjk布置tomcat集群
一.版本: Apache: 2.2.14: 下载地址:http://archive.apache.org/dist/httpd/binaries/win32/ Mod_jk:tomcat-connec ...
- IdentityHashMap 与 HashMap 的区别
IdentityHashMap 中的 key 允许重复 IdentityHashMap 使用的是 == 比较 key 的值(比较内存地址),而 HashMap 使用的是 equals()(比较存储值) ...
- php curl curl_getinfo()返回参数详解
php curl请求在curl_exec()函数执行之后,可以使用curl_getinfo()函数获取CURL请求输出的相关信息,示例代码如下: curl_exec($ch);$info = curl ...