BP算法公式推导

首先来了解基本的定义,

如,

其中,N表示训练样本的数量,向量x(n)表示第n个样本在输入层输入数据,向量d(n)表示在输出层对应的期望的输出。

设神经元j位于网络的输出层,那么由该神经元输出产生的误差定义为:

其中,表示期望的输出,表示实际的输出,表示神经元j输出产生的误差。

由神经元j产生的瞬时误差能量定义为:

那么整个网络所产生的总瞬时误差能量为:

其中C表示网络输出层的神经元的集合。

在神经元j的激活函数处的诱导函数(诱导局部域)为:

其中m是神经元j的输入数量,表示从神经元i到神经元j之间的突触权值,为神经元j的偏置,对应于表示连接到神经元j的神经元i的函数输出信号。

神经元j的函数信号,即输出为:

其中,表示对应神经元j的激活函数。(简便起见,通常,网络中的所有神经元的激活函数均为同一个函数)。

在BP算法反向传播进行权值调整时引用一个修正值,它正比于偏导数,根据微分的链式规则可写为,

对公式4取微分可得到:

(由于是针对某个神经元j求偏导,所以结果并非这种结果)

对公式2取微分可得到:

对公式6取微分可得到:

对公式5取微分可得到:

将公式8、9、10、11带入公式7得,

对于权值的修正根据delta法则定义为:

其中为学习率参数,是一个常数,可指定;负号表示在权值空间中寻找一个使下降的权值改变的方向(即使网络总体误差能量减小)。

将公式12带入公式13得,

其中为局域梯度,定义为:

可见,神经元j的局域梯度等于该神经元的误差信号与其激活函数对诱导局部域的导数的乘积。

所以得到,

其中可指定,在BP算法前向计算过程中可以得到,激活函数是已知的,通过计算可以得到,重点在于的计算。显然对于神经元j的位置需要进行分类讨论:

1.神经元j位于输出层,这是最简单的情形,此时,该神经元的期望输出和实际输出均为已知(实际输出在算法的前向计算中得出),

从而神经元i到神经j的突触权值便可进行调整。

2.神经元j不位于输出层,而位于隐藏层。此时误差信号不能够再根据公式2得以确定,因为是不可知的。误差信号需要与与其直接相连接的神经元的误差信号来向后地柜决定。设连接到神经元j的位于输出层的神经元为k,便需重新定义

重点放在的计算,

对公式17对求微分得,

(由于是对求偏导,而每一项都是的函数,所有含有)同样,使用链式规则得到,

又因为

所以,

根据之前的解述,可以知道,

其中m为神经元j所在网络层神经元数。对公式22求微分得,

将公式21、23带入公式19可以得到,

将公式24带入公式16得到,

将公式25与公式14可以得到,

这样便可以对神经元i到神经元j的权值进行调整。

综上所述,可以知道,对权值的调整核心即为,

时间: 2024-10-13 02:45:08

BP算法公式推导的相关文章

BP算法与公式推导

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

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

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

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

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

BP神经网络公式推导及实现(MNIST)

BP神经网络的基础介绍见:http://blog.csdn.net/fengbingchun/article/details/50274471,这里主要以公式推导为主. BP神经网络又称为误差反向传播网络,其结构如下图.这种网络实质是一种前向无反馈网络,具有结构清晰.易实现.计算功能强大等特点. 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 我们可

BP算法

1986年Rumelhart和McCelland在<并行分布式处理>中提出了BP算法,即非线性连续变换函数的多层感知器网络误差反向传播算法. 该算法的思想是:学习过程分为信号的正向传播与误差的反向传播两个过程. 正向传播时,输入样本从输入层传入,经各隐含层逐层处理后传向输出层,若输出层的实际输出与期望输出不符,则转入误差反向传播阶段. 误差反传是将输出误差以某种形式通过隐含层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层的误差信号,此信号即作为修正各单元权值的依据. 上述两个过程

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算法让神经网络再度流行起来. 深度学习掀起海啸 如今,深度学习浪潮拍打计算机语言的海岸已有好几年,但是,