假设一个三层的神经网络结构图如下:

对于一个单独的训练样本x其二次代价函数可以写成:

C = 1/2|| y - aL||2 = 1/2∑j(yj - ajL)2

ajL=σ(zjL)

zjl = ∑kωjklakl-1 + bjl

代价函数C是ajL的函数,ajL又是zjL的函数,zjL又是ωjkL的函数,同时又是akL-1的函数......

证明四个基本方程(BP1-BP4),所有这些都是多元微积分的链式法则的推论

δjL = (∂C/∂ajL)σ'(zjL)                                                         (BP1)

δjl = ∑ωkjl+1δkl+1σ'(zjl)                                                    (BP2)

      ∂C/∂ωjk= δjlakl-1                                                                           (BP3)

∂C/∂bj= δjl                                                                                      (BP4)

1.让我们从方程(BP1)开始,它给出了输出误差δL的表达式。

δjL = ∂C/∂zjL

应用链式法则,我们可以就输出激活值的偏导数的形式重新表示上面的偏导数:

δjL = ∑(∂C/∂akL)(∂akL/∂zjL)

这里求和是在输出层的所有神经元k上运行的,当然,第kth个神经元的输出激活值akL只依赖于当k=j时第jth个神经元的带权输入zjL。所以当k≠j

时,∂akL/∂zjL=0。结果简化为:

δjL = (∂C/∂ajL)(∂ajL/∂zjL)

由于ajL=σ(zjL),右边第二项可以写成σ'(zjL),方程变成

δjL = (∂C/∂ajL)σ‘(zjL)

2.证明BP2,它给出了下一层误差δl+1的形式表示误差δl。为此我们要以δkl+1=∂C/∂zkl+1的形式重写 δjl = ∂C/∂zjl

δjl = ∂C/∂zjl

=∑(∂C/∂zkl+1)(∂zkl+1/∂zjl)

=∑(∂zkl+1/∂zjlkl+1

这里最后一行我们交换了右边的两项,并用δkl+1的定义带入。为此我们对最后一行的第一项求值,

注意:

zkl+1 = ∑jωkjl+1ajl + bkl+1 =  ∑jωkjl+1σ(zjl) + bkl+1 

做微分得到

∂zkl+1 /∂zjl = ωkjl+1σ'(zjl)

带入上式:

δjl = ∑ωkjl+1δkl+1σ'(zjl)

3.证明BP3。计算输出层∂C/∂ωjkL:

∂C/∂ωjkL = ∑m (∂C/∂amL)(∂amL/∂ωjkL )

这里求和是在输出层的所有神经元k上运行的,当然,第kth个神经元的输出激活值amL只依赖于当m=j时第jth个神经元的输入权重ωjkL。所以当k≠j

   时,∂amL/∂ωjkL=0。结果简化为:

      ∂C/∂ωjkL = (∂C/∂ajL)(∂ajL/∂zjL)*(∂zjL/∂ωjkL)

= δjLakL-1

计算输入层上一层(L-1):

∂C/∂ωjkL-1= (∑m(∂C/∂amL)(∂amL/∂zmL)(∂zmL/∂ajL-1))(/∂ajL-1/∂zjL-1)(∂zjL-1/∂ωjkL-1)

= (∑mδmLωmjL)σ'(zjL-1)akL-2

= δjL-1akL-2

对于处输入层的任何一层(l):

∂C/∂ωjkl = (∂C/∂zjl )(∂zjl/∂ωjkl ) = δjlakl-1

4.证明BP4。计算输出层∂C/∂bjL:

∂C/∂bjL = ∑m (∂C/∂amL)(∂amL/∂bjL )

这里求和是在输出层的所有神经元k上运行的,当然,第kth个神经元的输出激活值amL只依赖于当m=j时第jth个神经元的输入权重bjL。所以当k≠j

   时,∂amL/∂bjL=0。结果简化为:

      ∂C/∂bjL = (∂C/∂ajL)(∂ajL/∂zjL)*(∂zjL/∂bjL)

= δjL

计算输入层上一层(L-1):

∂C/∂bjL-1= (∑m(∂C/∂amL)(∂amL/∂zmL)(∂zmL/∂ajL-1))(/∂ajL-1/∂zjL-1)(∂zjL-1/∂bjL-1)

= (∑mδmLωmjL)σ'(zjL-1)

= δjL-1

对于处输入层的任何一层(l):

∂C/∂bj= (∂C/∂zjl )(∂zjl/∂bjl) = δjl

参考文献

[1]]神经网络基础

[2]Neural Networks and Deep Learning.       Michael A. Nielsen

[3]一文弄懂神经网络中的反向传播法

[4]深度神经网络(DNN)反向传播算法(BP)

第二节,神经网络中反向传播四个基本公式证明——BackPropagation的更多相关文章

  1. [AI]神经网络章2 神经网络中反向传播与梯度下降的基本概念

    反向传播和梯度下降这两个词,第一眼看上去似懂非懂,不明觉厉.这两个概念是整个神经网络中的重要组成部分,是和误差函数/损失函数的概念分不开的. 神经网络训练的最基本的思想就是:先“蒙”一个结果,我们叫预 ...

  2. 深度学习与CV教程(4) | 神经网络与反向传播

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...

  3. 使用PyTorch构建神经网络以及反向传播计算

    使用PyTorch构建神经网络以及反向传播计算 前一段时间南京出现了疫情,大概原因是因为境外飞机清洁处理不恰当,导致清理人员感染.话说国外一天不消停,国内就得一直严防死守.沈阳出现了一例感染人员,我在 ...

  4. NLP教程(3) | 神经网络与反向传播

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...

  5. 神经网络之反向传播算法(BP)公式推导(超详细)

    反向传播算法详细推导 反向传播(英语:Backpropagation,缩写为BP)是"误差反向传播"的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见 ...

  6. 关于 RNN 循环神经网络的反向传播求导

    关于 RNN 循环神经网络的反向传播求导 本文是对 RNN 循环神经网络中的每一个神经元进行反向传播求导的数学推导过程,下面还使用 PyTorch 对导数公式进行编程求证. RNN 神经网络架构 一个 ...

  7. Andrej Karpathy | 详解神经网络和反向传播(基于 micrograd)

    只要你懂 Python,大概记得高中学过的求导知识,看完这个视频你还不理解反向传播和神经网络核心要点的话,那我就吃鞋:D Andrej Karpathy,前特斯拉 AI 高级总监.曾设计并担任斯坦福深 ...

  8. 神经网络中误差反向传播(back propagation)算法的工作原理

    注意:版权所有,转载需注明出处. 神经网络,从大学时候就知道,后面上课的时候老师也讲过,但是感觉从来没有真正掌握,总是似是而非,比较模糊,好像懂,其实并不懂. 在开始推导之前,需要先做一些准备工作,推 ...

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

    在卷积神经网络(CNN)前向传播算法中,我们对CNN的前向传播算法做了总结,基于CNN前向传播算法的基础,我们下面就对CNN的反向传播算法做一个总结.在阅读本文前,建议先研究DNN的反向传播算法:深度 ...

随机推荐

  1. AI算法第三天【矩阵分析与应用】

  2. JSP从入门到精通

    1. jsp开发环境配置 在windows下配置jsp的开发环境: 假设已经安装好了jdk,下面来配置tomcat 去http://tomcat.apache.org 下载tomcat windows ...

  3. react 入坑笔记(三) - Props

    React Props props - 参数. 组件类 React.Component 有个 defaultProps 属性,以 class xxx extend React.Component 形式 ...

  4. NPOI 上传Excel功能

    1.首先写一个Excel表格,第一行数据库类型(varchar.date.decimal).第二行数据库类型长度(100.12,4.时间日期为空)2.html 加按钮 { type: "bu ...

  5. 三种bean创建方式

  6. Vue获取dom和数据监听

    Vue获取dom对象 在js和jq中我们都能获取dom对象例如 // 获取id=1的div标签 <div id=d1>dom对象</div> // js语法 let ele = ...

  7. 基于docker部署使用ELK+FileBeat日志管理平台

    Docker从狭义上来讲就是一个进程,从广义上来讲是一个虚拟容器,专业叫法为 Application Container(应用容器).Docker进程和普通的进程没有任何区别,它就是一个普通的应用进程 ...

  8. BZOJ2618[Cqoi2006]凸多边形——半平面交

    题目描述 逆时针给出n个凸多边形的顶点坐标,求它们交的面积.例如n=2时,两个凸多边形如下图: 则相交部分的面积为5.233. 输入 第一行有一个整数n,表示凸多边形的个数,以下依次描述各个多边形.第 ...

  9. D. Flood Fill 区间DP 或lcs匹配

    题意 给定一串数字 相同的连续的数字可以同时 转换成一个相同数字 问最小几次可以全部转换成一个相同的数字 法1:区间dp  dp[l][r][0/1]  0表示l r区间转化成和最左边相同需要多少次 ...

  10. BZOJ1095 [ZJOI2007] Hide 捉迷藏 (括号序列 + 线段树)

    题意 给你一颗有 \(n\) 个点的树 , 共有 \(m\) 次操作 有两种类别qwq 将树上一个点染黑/白; 询问树上最远的两个黑点的距离. \((n \le 200000, m ≤500000)\ ...