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

时间: 2024-11-02 23:25:37

BP算法的相关文章

今天开始学Pattern Recognition and Machine Learning (PRML),章节5.2-5.3,Neural Networks神经网络训练(BP算法)

转载请注明出处:Bin的专栏,http://blog.csdn.net/xbinworld 这一篇是整个第五章的精华了,会重点介绍一下Neural Networks的训练方法--反向传播算法(backpropagation,BP),这个算法提出到现在近30年时间都没什么变化,可谓极其经典.也是deep learning的基石之一.还是老样子,下文基本是阅读笔记(句子翻译+自己理解),把书里的内容梳理一遍,也不为什么目的,记下来以后自己可以翻阅用. 5.2 Network Training 我们可

误差逆传播(error BackPropagation, BP)算法推导及向量化表示

1.前言 看完讲卷积神经网络基础讲得非常好的cs231后总感觉不过瘾,主要原因在于虽然知道了卷积神经网络的计算过程和基本结构,但还是无法透彻理解卷积神经网络的学习过程.于是找来了进阶的教材Notes on Convolutional Neural Networks,结果刚看到第2章教材对BP算法的回顾就犯难了,不同于之前我学习的对每一个权值分别进行更新的公式推导,通过向量化表示它只用了5个式子就完成了对连接权值更新公式的描述,因此我第一眼看过去对每个向量的内部结构根本不清楚.原因还估计是自己当初

BP算法与公式推导

BP(backpropgationalgorithm ):后向传导算法,顾名思义就是从神经网络的输出(顶层)到输入(底层)进行求解.那么求解什么呢,求解的就是神经网络中的参数的导数,即参数梯度方向,从而就可以使用梯度下降等求解无约束问题(cost function的最值)的方法求得最终的参数.神经网络前向传播的过程比较简单,这里不做讲解(如果不了解,可以参看文献). 1.问题分析 1.1 Cost function 假设我们有一个固定样本集,它包含 m 个样例.我们可以用批量梯度下降法来求解神经

BP算法基本原理推导----《机器学习》笔记

前言 多层网络的训练需要一种强大的学习算法,其中BP(errorBackPropagation)算法就是成功的代表,它是迄今最成功的神经网络学习算法. 今天就来探讨下BP算法的原理以及公式推导吧. 神经网络 先来简单介绍一下神经网络,引入基本的计算公式,方便后面推导使用 图1 神经网络神经元模型 图1就是一个标准的M-P神经元模型.

stanford coursera 机器学习编程作业 exercise4--使用BP算法训练神经网络以识别阿拉伯数字(0-9)

在这篇文章中,会实现一个BP(backpropagation)算法,并将之应用到手写的阿拉伯数字(0-9)的自动识别上. 训练数据集(training set)如下:一共有5000个训练实例(training instance),每个训练实例是一个400维特征的列向量(20*20 pixel image).用 X 矩阵表示整个训练集,则 X 是一个 5000*400 (5000行 400列)的矩阵 另外,还有一个5000*1的列向量 y ,用来标记训练数据集的结果.比如,第一个训练实例对应的输出

深度学习BP算法的推导(附加RNN,LSTM的推导说明)

注:1)这篇文章主要参考Alex Graves的博士论文<Supervised Sequence Labelling with Recurrent Neural Networks> 详细介绍其关于BP算法的推导过程. 2)论文没有提到过偏差的处理,不过如果能耐心推导出论文给出的公式,那么这将十分简单. 3)由于是结合语音训练的,最后是softmax出来是获得有限结果的概率值,然后做交叉熵作为目标函数,所以可能与其他的网络不一致,但是反馈的推导应该是一样的,除了输出层和最后一个隐层之间的个推导.

(转)神经网络和深度学习简史(第一部分):从感知机到BP算法

深度|神经网络和深度学习简史(第一部分):从感知机到BP算法 2016-01-23 机器之心 来自Andrey Kurenkov 作者:Andrey Kurenkov 机器之心编译出品 参与:chenxiaoqing.范娜Fiona.杨超.微胖.汪汪.赵巍 导读:这是<神经网络和深度学习简史>第一部分.这一部分,我们会介绍1958年感知机神经网络的诞生,70年代人工智能寒冬以及1986年BP算法让神经网络再度流行起来. 深度学习掀起海啸 如今,深度学习浪潮拍打计算机语言的海岸已有好几年,但是,

关于BP算法在DNN中本质问题的几点随笔 [原创 by 白明] 微信号matthew-bai

随着deep learning的火爆,神经网络(NN)被大家广泛研究使用.但是大部分RD对BP在NN中本质不甚清楚,对于为什这么使用以及国外大牛们是什么原因会想到用dropout/sigmoid/ReLU/change learnRate/momentum/ASGD/vanishment等问题等呢.要想了解国外大牛的思考过程,需要学习到BP在NN中的本质问题,其中涉及到NN训练对于判决边界如何形成?ASGD为什么尤其在NN中效果比二阶信息效果好?如何选择激活函数合适?为何语音识别中误差函数选择互

BP算法公式推导

首先来了解基本的定义, 如, 其中,N表示训练样本的数量,向量x(n)表示第n个样本在输入层输入数据,向量d(n)表示在输出层对应的期望的输出. 设神经元j位于网络的输出层,那么由该神经元输出产生的误差定义为: 其中,表示期望的输出,表示实际的输出,表示神经元j输出产生的误差. 由神经元j产生的瞬时误差能量定义为: 那么整个网络所产生的总瞬时误差能量为: 其中C表示网络输出层的神经元的集合. 在神经元j的激活函数处的诱导函数(诱导局部域)为: 其中m是神经元j的输入数量,表示从神经元i到神经元j