第二节,神经网络中反向传播四个基本公式证明——BackPropagation
假设一个三层的神经网络结构图如下:

对于一个单独的训练样本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 = ∑k ωkjl+1δkl+1σ'(zjl) (BP2)
∂C/∂ωjkl = δjlakl-1 (BP3)
∂C/∂bjl = δjl (BP4)
1.让我们从方程(BP1)开始,它给出了输出误差δL的表达式。
δjL = ∂C/∂zjL
应用链式法则,我们可以就输出激活值的偏导数的形式重新表示上面的偏导数:
δjL = ∑k (∂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
=∑k (∂C/∂zkl+1)(∂zkl+1/∂zjl)
=∑k (∂zkl+1/∂zjl)δkl+1
这里最后一行我们交换了右边的两项,并用δkl+1的定义带入。为此我们对最后一行的第一项求值,
注意:
zkl+1 = ∑jωkjl+1ajl + bkl+1 = ∑jωkjl+1σ(zjl) + bkl+1
做微分得到
∂zkl+1 /∂zjl = ωkjl+1σ'(zjl)
带入上式:
δjl = ∑k ω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/∂bjl = (∂C/∂zjl )(∂zjl/∂bjl) = δjl
参考文献
[1]]神经网络基础
[2]Neural Networks and Deep Learning. Michael A. Nielsen
第二节,神经网络中反向传播四个基本公式证明——BackPropagation的更多相关文章
- [AI]神经网络章2 神经网络中反向传播与梯度下降的基本概念
反向传播和梯度下降这两个词,第一眼看上去似懂非懂,不明觉厉.这两个概念是整个神经网络中的重要组成部分,是和误差函数/损失函数的概念分不开的. 神经网络训练的最基本的思想就是:先“蒙”一个结果,我们叫预 ...
- 深度学习与CV教程(4) | 神经网络与反向传播
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
- 使用PyTorch构建神经网络以及反向传播计算
使用PyTorch构建神经网络以及反向传播计算 前一段时间南京出现了疫情,大概原因是因为境外飞机清洁处理不恰当,导致清理人员感染.话说国外一天不消停,国内就得一直严防死守.沈阳出现了一例感染人员,我在 ...
- NLP教程(3) | 神经网络与反向传播
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...
- 神经网络之反向传播算法(BP)公式推导(超详细)
反向传播算法详细推导 反向传播(英语:Backpropagation,缩写为BP)是"误差反向传播"的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见 ...
- 关于 RNN 循环神经网络的反向传播求导
关于 RNN 循环神经网络的反向传播求导 本文是对 RNN 循环神经网络中的每一个神经元进行反向传播求导的数学推导过程,下面还使用 PyTorch 对导数公式进行编程求证. RNN 神经网络架构 一个 ...
- Andrej Karpathy | 详解神经网络和反向传播(基于 micrograd)
只要你懂 Python,大概记得高中学过的求导知识,看完这个视频你还不理解反向传播和神经网络核心要点的话,那我就吃鞋:D Andrej Karpathy,前特斯拉 AI 高级总监.曾设计并担任斯坦福深 ...
- 神经网络中误差反向传播(back propagation)算法的工作原理
注意:版权所有,转载需注明出处. 神经网络,从大学时候就知道,后面上课的时候老师也讲过,但是感觉从来没有真正掌握,总是似是而非,比较模糊,好像懂,其实并不懂. 在开始推导之前,需要先做一些准备工作,推 ...
- 卷积神经网络(CNN)反向传播算法
在卷积神经网络(CNN)前向传播算法中,我们对CNN的前向传播算法做了总结,基于CNN前向传播算法的基础,我们下面就对CNN的反向传播算法做一个总结.在阅读本文前,建议先研究DNN的反向传播算法:深度 ...
随机推荐
- AI算法第三天【矩阵分析与应用】
- JSP从入门到精通
1. jsp开发环境配置 在windows下配置jsp的开发环境: 假设已经安装好了jdk,下面来配置tomcat 去http://tomcat.apache.org 下载tomcat windows ...
- react 入坑笔记(三) - Props
React Props props - 参数. 组件类 React.Component 有个 defaultProps 属性,以 class xxx extend React.Component 形式 ...
- NPOI 上传Excel功能
1.首先写一个Excel表格,第一行数据库类型(varchar.date.decimal).第二行数据库类型长度(100.12,4.时间日期为空)2.html 加按钮 { type: "bu ...
- 三种bean创建方式
- Vue获取dom和数据监听
Vue获取dom对象 在js和jq中我们都能获取dom对象例如 // 获取id=1的div标签 <div id=d1>dom对象</div> // js语法 let ele = ...
- 基于docker部署使用ELK+FileBeat日志管理平台
Docker从狭义上来讲就是一个进程,从广义上来讲是一个虚拟容器,专业叫法为 Application Container(应用容器).Docker进程和普通的进程没有任何区别,它就是一个普通的应用进程 ...
- BZOJ2618[Cqoi2006]凸多边形——半平面交
题目描述 逆时针给出n个凸多边形的顶点坐标,求它们交的面积.例如n=2时,两个凸多边形如下图: 则相交部分的面积为5.233. 输入 第一行有一个整数n,表示凸多边形的个数,以下依次描述各个多边形.第 ...
- D. Flood Fill 区间DP 或lcs匹配
题意 给定一串数字 相同的连续的数字可以同时 转换成一个相同数字 问最小几次可以全部转换成一个相同的数字 法1:区间dp dp[l][r][0/1] 0表示l r区间转化成和最左边相同需要多少次 ...
- BZOJ1095 [ZJOI2007] Hide 捉迷藏 (括号序列 + 线段树)
题意 给你一颗有 \(n\) 个点的树 , 共有 \(m\) 次操作 有两种类别qwq 将树上一个点染黑/白; 询问树上最远的两个黑点的距离. \((n \le 200000, m ≤500000)\ ...