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神经网络是一种单向传播的多层前向网络,具有三层或多层以上的神经网络结构,其中包含输入层.隐含层和输出层的三层网络应用最为普遍. 网络中的上下层之间实现全连接,而每层神经元之 ...
随机推荐
- Java工具创建密钥库,用于Unity 3D打包、签名、发布
Java工具创建密钥库 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创新! ...
- 蓝桥杯 BASIC-9:特殊回文数
基础练习 特殊回文数 时间限制:1.0s 内存限制:512.0MB 问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这 ...
- day10 python学习 函数的嵌套命名空间作用域 三元运算 位置参数 默认参数 动态参数
1.三元运算 #1.三元运算 利用已下方法就可以实现一步运算返回a b中大的值 def my_max(a,b): c=0 a=int(input('请输入')) b=int(input('请输入')) ...
- Oracle:Decode在时间范围中的使用
做查询的时候需要下一个sql,需要select test_time出来,如果test_Time的HH24:Mi:SS在7:00:00和19:00:00返回白班,否则返回夜班 select case w ...
- 破解UltraEdit(Ver20.00.0.1040),无限试用
因为是第一次破解较大型的商业软件,所以有必要记录一下,另外UE的价格也实在太贵了... 第零步:准备 准备好破解常用软件.我常用的工具有IDA(用于静态分析).Ollydbg(动态调试).PEiD(用 ...
- 【转】RS232、RS485、TTL电平、CMOS电平
原文网址:http://blog.sina.com.cn/s/blog_63a0638101018grc.html RS232.RS485.TTL电平.CMOS电平 什么是TTL电平.CMOS电平.R ...
- Connection: keep-alive,Content-Length,Transfer-Encoding: chunked,Content-Encoding: gzip等
Transfer-Encoding,是一个 HTTP 头部字段,字面意思是「传输编码」. 用来改变报文格式,它不但不会减少实体内容传输大小,甚至还会使传输变大,那它的作用是什么呢?下面进行介绍. HT ...
- Spring 集成开发工具(STS)安装及配置
安装 spring 集成开发工具,下载地址:https://spring.io/tools 下载后,解压,双击 STS ,运行. 如果提示: 去oracle的网站上下载了1.8版本的jdk,下载地址如 ...
- base64编码的原理及实现
base64编码的原理及实现 我们的图片大部分都是可以转换成base64编码的data:image. 这个在将canvas保存为img的时候尤其有用.虽然除ie外,大部分现代浏览器都已经支持原生的基于 ...
- bzoj 3611(洛谷 4103) [Heoi2014]大工程——虚树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3611 https://www.luogu.org/problemnew/show/P4103 ...