BP算法
1986年Rumelhart和McCelland在《并行分布式处理》中提出了BP算法,即非线性连续变换函数的多层感知器网络误差反向传播算法。
该算法的思想是:学习过程分为信号的正向传播与误差的反向传播两个过程。
正向传播时,输入样本从输入层传入,经各隐含层逐层处理后传向输出层,若输出层的实际输出与期望输出不符,则转入误差反向传播阶段。
误差反传是将输出误差以某种形式通过隐含层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层的误差信号,此信号即作为修正各单元权值的依据。
上述两个过程周而复始地进行,直到网络输出的误差减少到可接受的程度或达到预先设置的学习次数为止。
下面以三层感知器网络(单隐含层)为例:

输入向量X=(x1,x2,...,xi,...,xn)T,图中x0=-1是为隐含层神经元引入阈值而设置的;隐含层输出向量Y=(y1,y2,...,yj,...,ym)T,图中y0=-1是为输出层神经元引入阈值而设置的;输出层输出向量O=(o1,o2,...,ok...,ol)T;期望输出向量d=(d1,d2,...,dk,...,dl)T。输入层到隐含层之间的权值矩阵V=(v1,v2,...,vj,...,vm)T,其中vj为神经元j的权向量;隐含层到输出层之间的权值矩阵W=(W1,W2,...,Wk,...,Wl)T,其中Wk为神经元k的权向量。则:
对于输出层:
ok=f(netk)=f(∑wjkyj ) 其中k=1,2,...,l;j=0,1,2,...,m
对于隐含层:
yj=f(netj)=f(∑vijxi ) 其中j=1,2,...,m;i=0,1,2,...,n
设上述式子中的变换函数f(x)=sigmoid(x)=1/(1+e-x),可知f(x)连续可导,且f‘(x)=f(x)[1-f(x)],
BP算法的学习规则如下:
网络的输出误差E=(d-o)2/2=∑(dk-ok)2 *1/2,其中k=1,2,...,l,
则将误差展开至隐含层:
E=∑[dk-f(netk)]2 *1/2=∑[dk-f(∑wjkyj)]2 *1/2,其中k=1,2,...,l;j=0,1,2,...,m
将误差展开至输入层:
E=∑[dk-f(∑wjkf(netj))]2 *1/2=∑[dk-f(∑wjkf(∑vijxi))]2 *1/2,其中k=1,2,...,l;j=0,1,2,...,m;i=0,1,2,....,n
由此可见网络误差是各层权值wjk,vij的函数,调整权值即可调整误差,显然权值调整原则是使误差不断减小,可见应使权值的调整量与误差的负梯度成正比,故有:
ΔWjk=-η*∂E/∂Wjk ,j=0,1,2,...,m;k=1,2,...,l
Δvjk=-η*∂E/∂vij ,i=0,1,2,...,n;j=1,2,...,m
负号表示负梯度,η为[0,1]常数,反映了网络的学习速率,可见BP采用的是连续型感知器学习规则δ类。
综上,各层间权值调整公式如下:
输出层与隐含层间权值调整公式:
w(t+1)=w(t)+ΔW=w(t)+η*(d-O)*O*(1-O)*Y
V(t+1)=V(t)+ΔV=V(t)+η*([(d-O)*O*(1-O)]W)*Y*(1-Y)*X
BP算法的更多相关文章
- [DL学习笔记]从人工神经网络到卷积神经网络_1_神经网络和BP算法
前言:这只是我的一个学习笔记,里边肯定有不少错误,还希望有大神能帮帮找找,由于是从小白的视角来看问题的,所以对于初学者或多或少会有点帮助吧. 1:人工全连接神经网络和BP算法 <1>:人工 ...
- Backpropagation反向传播算法(BP算法)
1.Summary: Apply the chain rule to compute the gradient of the loss function with respect to the inp ...
- stanford coursera 机器学习编程作业 exercise4--使用BP算法训练神经网络以识别阿拉伯数字(0-9)
在这篇文章中,会实现一个BP(backpropagation)算法,并将之应用到手写的阿拉伯数字(0-9)的自动识别上. 训练数据集(training set)如下:一共有5000个训练实例(trai ...
- (转)神经网络和深度学习简史(第一部分):从感知机到BP算法
深度|神经网络和深度学习简史(第一部分):从感知机到BP算法 2016-01-23 机器之心 来自Andrey Kurenkov 作者:Andrey Kurenkov 机器之心编译出品 参与:chen ...
- 多层感知机及其BP算法(Multi-Layer Perception)
Deep Learning 近年来在各个领域都取得了 state-of-the-art 的效果,对于原始未加工且单独不可解释的特征尤为有效,传统的方法依赖手工选取特征,而 Neural Network ...
- 关于BP算法在DNN中本质问题的几点随笔 [原创 by 白明] 微信号matthew-bai
随着deep learning的火爆,神经网络(NN)被大家广泛研究使用.但是大部分RD对BP在NN中本质不甚清楚,对于为什这么使用以及国外大牛们是什么原因会想到用dropout/sigmoid ...
- 人工智能起步-反向回馈神经网路算法(BP算法)
人工智能分为强人工,弱人工. 弱人工智能就包括我们常用的语音识别,图像识别等,或者为了某一个固定目标实现的人工算法,如:下围棋,游戏的AI,聊天机器人,阿尔法狗等. 强人工智能目前只是一个幻想,就是自 ...
- 误差逆传播(error BackPropagation, BP)算法推导及向量化表示
1.前言 看完讲卷积神经网络基础讲得非常好的cs231后总感觉不过瘾,主要原因在于虽然知道了卷积神经网络的计算过程和基本结构,但还是无法透彻理解卷积神经网络的学习过程.于是找来了进阶的教材Notes ...
- 神经网络BP算法C和python代码
上面只显示代码. 详BP原理和神经网络的相关知识,请参阅:神经网络和反向传播算法推导 首先是前向传播的计算: 输入: 首先为正整数 n.m.p.t,分别代表特征个数.训练样本个数.隐藏层神经元个数.输 ...
- 多层神经网络BP算法 原理及推导
首先什么是人工神经网络?简单来说就是将单个感知器作为一个神经网络节点,然后用此类节点组成一个层次网络结构,我们称此网络即为人工神经网络(本人自己的理解).当网络的层次大于等于3层(输入层+隐藏层(大于 ...
随机推荐
- jquery 的 each 方法中 return 的坑
jquery 的 each 方法中 return 的坑 Chapter 0 在项目中使用 jquery 的 each 方法时想在 each 的循环中返回一个布尔类型的值于是掉进一个坑中... Chap ...
- QQ无法通过ISA2006&TMG2010代理收发图片问题解决
近期公司有业务需求通过TMG访问QQ,但配置多次均无法通过QQ收发图片,文字输入正常. 目前已解决,供参考: 这个问题是SSL端口默认使用了443,但QQ的离线文件不使用这个端口.所以ISA会把QQ的 ...
- 我的前端故事----我为什么用GraphQL
背景 今年我在做一个有关商户的app,这是一个包含商户从入网到审核.从驳回提交到入网维护的完整的生命周期线下推广人员使用的客户端软件,但故事并没有这么简单... 疑问 随着app的逐渐完善,遇到的问题 ...
- POI单元格添加公式以及读取公式结果的值
POI提供了为单元格添加条件样式的方法,但是我并没有找到获取单元格改变后样式的方法,获取到样式依旧是没有改变之前的. 比如为单元格添加条件样式用于监听单元格值是否被修改,如果单元格值被修改那么字体颜色 ...
- java面向对象(二)之继承
继承 介绍 继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力.继承即常说的is-a关系.子类继承父类的特征和行为,使得子类具有父类的各种属性和方法.或子类从父类继承 ...
- 【小白成长撸】--链栈(C语言版)
// 链栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> #include <st ...
- poj 3522 Kruskal
题意:求图的一个生成树使其最大边权与最小边权的差值最小,求其最小值 思路:利用贪心思想,先对边进行排序,然后从最小边开始枚举,每次进行kruskal向右加入边,若加入边刚好能遍历所有点,记录最后加入的 ...
- Android微信登录、分享、支付
转载需要著名出处: http://blog.csdn.net/lowprofile_coding/article/details/78004224 之前写过微信登录分享支付第一版: http://bl ...
- css浮动Float
核心:浮动元素会脱离文档流并向左/向右移动,直到碰到父元素或者另外一个浮动元素. float :left 向左浮动 right 向右浮动 none (默认) inherit 继承父元素 fl ...
- FormData 上传多种格式的文件
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...