一,什么是BP

"BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。"

我们现在来分析下这些话:

  • “是一种按误差逆传播算法训练的多层前馈网络”

BP是后向传播的英文缩写,那么传播对象是什么?传播的目的是什么?传播的方式是后向,可这又是什么意思呢。

传播的对象是误差,传播的目的是得到所有层的估计误差,后向是说由后层误差推导前层误差:

即BP的思想可以总结为

利用输出后的误差来估计输出层的直接前导层的误差,再用这个误差估计更前一层的误差,如此一层一层的反传下去,就获得了所有其他各层的误差估计。 
  • “BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)”

我们来看一个最简单的三层BP:

  • “BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。”

BP利用一种称为激活函数来描述层与层输出之间的关系,从而模拟各层神经元之间的交互反应。

激活函数必须满足处处可导的条件。那么比较常用的是一种称为S型函数的激活函数:

神经网络的学习目的:

希望能够学习到一个模型,能够对输入输出一个我们期望的输出。
 
学习的方式:
在外界输入样本的刺激下不断改变网络的连接权值
 
学习的本质:
对各连接权值的动态调整

学习的核心:

权值调整规则,即在学习过程中网络中各神经元的连接权变化所依据的一定的调整规则。

二,有监督的BP模型训练过程

1. 思想

有监督的BP模型训练表示我们有一个训练集,它包括了: input X 和它被期望拥有的输出 output Y

所以对于当前的一个BP模型,我们能够获得它针对于训练集的误差

所以BP的核心思想就是:将输出误差以某种形式通过隐层向输入层逐层反传,这里的某种形式其实就是:

也就是一种 "信号的正向传播 ----> 误差的反向传播"的过程:

2.具体

三:算法推导

  神经网络通过模拟人的神经元活动,来构造分类器。它的基本组成单元称为”神经元”,离线情况下如果输入大于某值时,设定神经元处于兴奋状态,产生输出,否则不响应。而这个输入来自于所有其它的神经元。而神经元的响应函数有多种(需要满足可微,这种简单的函数可以拟合任何非线性函数),本文选择sigmod函数。关于基础知识在此不在多说,这里主要介绍一下BP神经网络,并推导权值和阈值的更新公式。

  BP网络通过前向反馈误差来改变权值和阈值,当网络的输出与实际期望的输出均方误差低于某个阈值或者学习次数满足一定条件时,训练完成。首先给出输出均方误差的公式:

  其中,m是输出节点个数,p是训练样本个数。我们就是以最小化这个EA为目标更新网络参数。这里以3层网络为例进行推导,即一个输入层、隐含层、输出层。最小化目标函数采用梯度下降的方法。

1、隐含层到输出层的权值更新

  K为隐含层节点数,i为输出节点个数。权值更新公式:

其中wki表示第k个隐含节点到第i个输出节点之间的权重,η为学习率,是一个使得求解快速收敛的学习因子,为EA关于wki的梯度。即:

因为:

,其中,激活函数对x求导后,y'=y(1-y),所以进一步求得:

这就是wki的梯度值。记:

,表示为权值的增量,则权值更新可写成:

其中增量:

所以根据这个式子我们就可以更新权值了。

2.输入层到隐含层的权值更新

  同理,误差关于权值的梯度可通过以下式子求解,与上面有点不同的是:输入层与隐含节点之间的权值将影响所有的隐含节点到输出层之间的值,所以此时的权值梯度信息应该对误差在隐含层与输出层之间产生累加效应。废话不多说,直接上图上公式更明了:

其中,

所以这一层的权值增量也可以写成这样的形式:

以上为从不同的两篇文中复制过来的  第三部分算法推导中跟上面的公式符号有所不同。

BP神经网络模型及算法推导的更多相关文章

  1. BP神经网络模型与学习算法

    一,什么是BP "BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最 ...

  2. bp神经网络模型推导与c语言实现(转载)

    转载出处:http://www.cnblogs.com/jzhlin/archive/2012/07/28/bp.html BP 神经网络中的 BP 为 Back  Propagation 的简写,最 ...

  3. 机器学习入门-BP神经网络模型及梯度下降法-2017年9月5日14:58:16

    BP(Back Propagation)网络是1985年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一. B ...

  4. BP神经网络模型及梯度下降法

    BP(Back Propagation)网络是1985年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一. B ...

  5. BP神经网络算法推导及代码实现笔记zz

    一. 前言: 作为AI入门小白,参考了一些文章,想记点笔记加深印象,发出来是给有需求的童鞋学习共勉,大神轻拍! [毒鸡汤]:算法这东西,读完之后的状态多半是 --> “我是谁,我在哪?” 没事的 ...

  6. 建模算法(六)——神经网络模型

    (一)神经网络简介 主要是利用计算机的计算能力,对大量的样本进行拟合,最终得到一个我们想要的结果,结果通过0-1编码,这样就OK啦 (二)人工神经网络模型 一.基本单元的三个基本要素 1.一组连接(输 ...

  7. 神经网络和BP算法推导

    注意:绘画太难了,因为他们画,本文中的所有插图来自基本算法饺子机类.请勿转载 1.习模型: 事实上,基本上全部的基本机器学习模型都能够概括为下面的特征:依据某个函数,将输入计算并输出. 图形化表示为下 ...

  8. zz神经网络模型量化方法简介

    神经网络模型量化方法简介 https://chenrudan.github.io/blog/2018/10/02/networkquantization.html 2018-10-02 本文主要梳理了 ...

  9. 神经网络模型及R代码实现

    神经网络基本原理 一.神经元模型 图中x1~xn是从其他神经元传来的输入信号,wij表示表示从神经元j到神经元i的连接权值,θ表示一个阈值 ( threshold ),或称为偏置( bias ).则神 ...

随机推荐

  1. php使用phpmailer发送邮件

    本人新手,由于要做邮件发送验证码,所以找到和搜集到这些,本人亲测完全可以用 这是163邮箱的   因为不是企业邮箱填写的账号是163的账号,但是密码是授权码 授权码的获取方式为:

  2. [转]利用/*+Ordered*/提高查询性能

    [转]利用/*+Ordered*/提高查询性能 2009-02-06 10:46:27|  分类: Oracle |  标签: |字号大中小 订阅  消耗在准备利用Oracle执行计划机制提高查询性能 ...

  3. 一步步学习NHibernate(3)——NHibernate增删改查

    请注明转载地址:http://www.cnblogs.com/arhat 在上一章中,我们配置了以下NHibernate的运行环境, 并介绍了NHibernate的中两个非常中重要的接口"I ...

  4. Java内存管理:深入Java内存区域

    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 概述: 对于从事C和C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的皇帝 ...

  5. iOS8定位问题

    正文:主要解决iOS8以前能定位,但是在iOS8时候无法定位的问题 在iOS8以前,我们的GPS定位是在用户设置的里面显示的是总是使用,但是在iOS8以后,苹果修改了这部分授权,你需要多加入2个pli ...

  6. IIS MIME类型问题(html5 video 本地打开可以,IIS打开不了)

    问题: mediaelement js(html 5 视频插件)网页用ie9本地打开可以,iis,vs2010在ie9上运行不了,chrome可以 (在博客园里有个人跟我遇到相同的问题:http:// ...

  7. DIY RazorEngine 的程序集生成方式

    最近遇到一个项目,要使用RazorEngine做模板引擎,然后完成简易的CMS功能,以减轻重复的CDRU操作,同时复用管理后台.没错,使用的正是GIT HUB上的开源项目:https://github ...

  8. BZOJ 3944 Sum 解题报告

    我们考虑令: \[F_n = \sum_{d|n}\varphi(d)\] 那么,有: \[\sum_{i=1}^{n}F_i = \sum_{i=1}^{n}\sum_{d|i}\varphi(d) ...

  9. 想使用 MongoDB ,你应该了解这8个方面!

    应用性能高低依赖于数据库性能,MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案.MongoDB 是一个介于关系数据库和非关 ...

  10. php smarty 配置四个存放目录

    require("Smarty.class.php"); $smarty = new Smarty(); $smarty -> template_dir = "./ ...