Original url:

http://blog.csdn.net/sinat_34474705/article/details/54176584

最近看了一下BP神经网络(Backpropagation Neural Networks),发现很多资料对于BP神经网络的讲解注重原理,而对于反向传播公式的推导介绍的比较简略,故自己根据《PATTERN RECOGNITION AND MACHINE LEARNING》这本书的思路推导了一下反向传播的过程,记录在这里,以便以后看。对于BP神经网络的工作原理此处就不再赘述,周志华大牛的《机器学习》中介绍的很详细。

PS: 本人第一次写博客,不足之处还请见谅。

1. BP网络模型及变量说明

1.1 模型简图

1.2 变量说明:

  • mlml:第ll层神经元个数

  • x(1)pxp(1): 输入层第pp个神经元,p=1...m1p=1...m1;

  • ykyk : 输出层第kk的神经元的输出,k=1...ml+1k=1...ml+1;

  • tktk:输出层第kk的神经元的目标值,k=1...ml+1k=1...ml+1;

  • z(l)jzj(l):第ll层的第jj的神经元的输入;

  • a(l)jaj(l):第ll层第jj个神经元的输出;

  • a(l)0a0(l):第ll层的偏置项;

  • w(l)jiwji(l):第l−1l−1层第ii个神经元与第ll层第jj个神经元的连接权值;

  • h(.)h(.):激活函数,这里假设每一层各个神经元的激励函数相同(实际中可能不同);

  • EpEp:网络在第pp个样本输入下的偏差,n=1...Nn=1...N;

  • NN:样本总数

2. 误差反向传播相关推导

2.1 正向传播(forward-propagation)

正向传播的思想比较直观,最主要的是对于激活函数的理解。对于网络中第ll层的第jj个神经元,它会接受来自第l−1l−1层所有神经元的信号,即:

z(l)j=∑i=1ml−1wjia(l−1)i+a(l−1)0zj(l)=∑i=1ml−1wjiai(l−1)+a0(l−1)

如果令wj0=1wj0=1,可以将公式简写为:

z(l)j=∑i=0ml−1wjia(l−1)izj(l)=∑i=0ml−1wjiai(l−1)

则经过该神经元后的输出值为:

a(l)j=h(z(l)j)aj(l)=h(zj(l))

对于多分类问题,网络输出层第kk个神经元输出可表示为:

yk=a(l+1)k=h(zj)=h(∑j=0mlwkja(l)j)yk=ak(l+1)=h(zj)=h(∑j=0mlwkjaj(l))

这里说明一下,BP神经网络中激活函数通常会取sigmoidsigmoid函数或tanhtanh函数,不清楚的可以百度一下这两个函数,这里不再赘述。

2.2 代价函数(cost function)

由2.1节公式可以得到BP网络在一个样本下的输出值,我们定义平方和误差函数(sum-of-square error function)如下:

Ep=∑k=1ml+112(yk−tk)2Ep=∑k=1ml+112(yk−tk)2

所有样本输入下,网络的总误差为:

EN=∑p=1NEpEN=∑p=1NEp

2.3 反向传播(back-propagation)

这是BP神经网络最核心的部分,误差从输出层逐层反向传播,各层权值通过梯度下降法(gradient descent algorithm)进行更新,即:

w:=w−η▽Ep(w)w:=w−η▽Ep(w)

上式中,ηη是每次更新的步长,▽Ep(w)▽Ep(w)是第pp个样本输入下的输出偏差对某一层权值的偏导数,表示每输入一个样本更新一次参数。

下面我们以w(l)jiwji(l)为例推导梯度项:

∂Ep∂w(l)ji==∂Ep∂z(l)j∂z(l)j∂w(l)ji∂Ep∂z(l)ja(l−1)i∂Ep∂wji(l)=∂Ep∂zj(l)∂zj(l)∂wji(l)=∂Ep∂zj(l)ai(l−1)

这里我们定义δ(l)j=∂Ep∂z(l)jδj(l)=∂Ep∂zj(l),对于输出层,可以得出δ(l+1)k=yk−tk=a(l+1)k−tkδk(l+1)=yk−tk=ak(l+1)−tk,则上式可表示为:

∂Ep∂w(l)ji=δ(l)ja(l−1)i∂Ep∂wji(l)=δj(l)ai(l−1)

现在问题转换为求解δ(l+1)kδk(l+1):

δ(l)j==∂Ep∂z(l)j∑k=1ml+1∂Ep∂z(l+1)k∂z(l+1)k∂z(l)jδj(l)=∂Ep∂zj(l)=∑k=1ml+1∂Ep∂zk(l+1)∂zk(l+1)∂zj(l)

根据δδ的定义可知∂Ep∂z(l+1)k=δ(l+1)k∂Ep∂zk(l+1)=δk(l+1),代入上式,则:

δ(l)j==∑k=1ml+1δ(l+1)k∂z(l+1)k∂z(l)j∑k=1ml+1δ(l+1)k∂z(l+1)k∂a(l)j∂a(l)j∂z(l)jδj(l)=∑k=1ml+1δk(l+1)∂zk(l+1)∂zj(l)=∑k=1ml+1δk(l+1)∂zk(l+1)∂aj(l)∂aj(l)∂zj(l)

根据z(l+1)kzk(l+1)和aljajl的定义可知:

∂z(l+1)k∂a(l)j=w(l+1)kj∂a(l)j∂z(l)j=h′(z(l)j)∂zk(l+1)∂aj(l)=wkj(l+1)∂aj(l)∂zj(l)=h′(zj(l))

代入上式得:

δ(l)j==∑k=1ml+1δ(l+1)kw(l+1)kjh′(z(l)j)h′(z(l)j)∑k=1ml+1w(l+1)kjδ(l+1)kδj(l)=∑k=1ml+1δk(l+1)wkj(l+1)h′(zj(l))=h′(zj(l))∑k=1ml+1wkj(l+1)δk(l+1)

由此我们得到了误差从输出层向低层反向传播的递推公式,进而可以求出误差对于每一层权值的梯度▽Ep(w)▽Ep(w)

3. 总结

BP神经网络是应用最多的一种神经网络,其精髓在于误差反向传播。本人在学习这块内容是为了给接下来学习和研究深度学习及caffe做准备,由于个人水平有限,在上述推导中可能存在不合理的地方,还请见谅,同时也欢迎指出内容的不足之处。

4. 参考文献

[1] 周志华,机器学习[M] , 清华大学出版社,2016. 
[2] CHRISTOPHER M.BISHOP. PATTERN RECOGNITION AND MACHINE LEARNING [M], 2006.

版权声明:本文为博主原创文章,转载请注明出处。 http://blog.csdn.net/sinat_34474705/article/details/54176584

BP神经网络:误差反向传播公式的简单推导相关推荐

  1. 神经网络梯度反向传播公式

    考虑三层网络: 输出层没有激活函数,只有中间层有: y=Wout⋅tanh(Win⋅x)y = W_{out}\cdot tanh(W_{in}\cdot x)y=Wout​⋅tanh(Win​⋅x) ...

  2. BP神经网络(反向传播算法原理、推导过程、计算步骤)

    BP神经网络 1.反向传播算法的原理 2.反向传播算法参数学习的推导 3.反向传播算法参数更新案例 3.1 反向传播的具体计算步骤 3.1.1 计算输出层的误差 3.1.2 计算隐藏层误差 3.1.3 ...

  3. 卷积神经网络(CNN)反向传播算法推导

    作者丨南柯一梦宁沉沦@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/61898234 编辑丨极市平台 导读 在本篇文章中我们将从直观感受和数学公式两方面来介绍CNN反 ...

  4. 深度学习 --- BP算法详解(误差反向传播算法)

    本节开始深度学习的第一个算法BP算法,本打算第一个算法为单层感知器,但是感觉太简单了,不懂得找本书看看就会了,这里简要的介绍一下单层感知器: 图中可以看到,单层感知器很简单,其实本质上他就是线性分类器 ...

  5. 深度学习图像处理目标检测图像分割计算机视觉 04--神经网络与误差反向传播BP算法

    深度学习图像处理目标检测图像分割计算机视觉 04--神经网络与误差反向传播BP算法 摘要 一.神经元 二.前馈网络 2.1 Delta学习规则 2.2 目标函数J(w) 三.误差反向传播算法(BP算法 ...

  6. 深度学习之前馈神经网络(前向传播和误差反向传播)

    转自:https://www.cnblogs.com/Luv-GEM/p/10694471.html 这篇文章主要整理三部分内容,一是常见的三种神经网络结构:前馈神经网络.反馈神经网络和图网络:二是整 ...

  7. 深度学习入门-误差反向传播法(人工神经网络实现mnist数据集识别)

    文章目录 误差反向传播法 5.1 链式法则与计算图 5.2 计算图代码实践 5.3激活函数层的实现 5.4 简单矩阵求导 5.5 Affine 层的实现 5.6 softmax-with-loss层计 ...

  8. 深度学习的数学-卷积神经网络的误差反向传播

    文章目录 前言 正文 卷积神经网络中的关系式 卷积层 池化层 输出层 平方误差(损失函数) 梯度下降法 卷积层和输出层的神经单元误差(重点) 输出层的神经单元误差计算 输出层的神经单元与其权重偏置的关 ...

  9. 误差反向传播算法(BP网络)

    1.引言 误差反向传播网络(Error Back Propagtion,),简称为BP神经网络,是一种多层神经网络,与之相关的另一个概念是多层感知器(Multi-Layer Perceptron,ML ...

  10. 机器学习入门(14)— 神经网络学习整体流程、误差反向传播代码实现、误差反向传播梯度确认、误差反向传播使用示例

    1. 神经网络学习整体流程 神经网络学习的步骤如下所示. 前提 神经网络中有合适的权重和偏置,调整权重和偏置以便拟合训练数据的过程称为学习.神经网络的学习分为下面 4 个步骤. 步骤1(mini-ba ...

最新文章

  1. python基本语法的有关知识
  2. 如何解决 SQL Server 2000 中的连接问题
  3. mysql connector c编程_MySQL数据库之MySQL Connector 编程
  4. HTTP/2 in GO(二)
  5. mvc 调用其他控制器方法session丢失_Java从入门到放弃;MVC 模式
  6. java的linux内核构建,构建一个Docker 的Java编译环境
  7. C#复制文件夹下的所有内容到另一个文件夹
  8. RecyclerView数据显示不全的问题
  9. Netty权威指南(第2版)
  10. 苹果App Store搜索出Bug,网友:完美避开所有正确答案
  11. 第十一周项目1——二叉树算法验证(3) 中序线索化二叉树的算法验证
  12. JAVA基础---函数式接口、Stream流
  13. 入门激光雷达点云的3D目标检测
  14. Kick Start Round A 2022
  15. 从word2vec到node2vec
  16. 移动光猫只有一个lan口?其他是电视用,如何增lan口
  17. 嵌入式编程中volatile的重要性
  18. 第09篇 Compose-03 操作详解
  19. ALSA驱动框架分析
  20. 强强合作,替代钉盘/微盘,企业实现低成本扩容

热门文章

  1. win10桌面的计算机图标怎么删除,win10系统桌面图标小箭头去掉的操作步骤
  2. 高数 | 导数极限定理、分段点求导能不能用公式?导数和导数的极限?
  3. u盘无法打开 计算机限制,u盘无法打开,教您U盘打不开常用修复方法
  4. 量化7年1000万知与行,回测量化7年如果只每月定投5.4万到沪深300指数基金,能否实现7年1000万
  5. 生成密钥、配送密钥和更新密钥
  6. robots文件简介
  7. C++基础练习(1)
  8. 第二章 Dubbo框架
  9. 0014 UVA1589 象棋 Xiangqi
  10. www读取本地图片做微缩图