第二节,神经网络中反向传播四个基本公式证明——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的反向传播算法:深度 ...
随机推荐
- B站弹幕姬(🐔)分析与开发(下篇)
接上篇 下面开始分析弹幕信息: 当我们在完成和服务器的握手之后,b站的弹幕服务器就会开始不停的开始给我们推送相关房间的弹幕消息了.老规矩前面16个字节是这个包的相关信息,我们先来看下这条消息的前面16 ...
- 简单谈谈数据库DML、DDL和DCL的区别
一.DML DML(data manipulation language)数据操纵语言: 就是我们最经常用到的 SELECT.UPDATE.INSERT.DELETE. 主要用来对数据库的数据进行一些 ...
- OSError: mysql_config not found
使用Python3开发一个管理平台,用MySQL数据库存放元数据.使用pip安装mysqlclient模块时出现“OSError: mysql_config not found”错误. 解决: # a ...
- 【转】console.log 用法
标签: 转自http://www.cnblogs.com/ctriphire/p/4116207.html 大家都有用过各种类型的浏览器,每种浏览器都有自己的特色,本人拙见,在我用过的浏览器当中,我是 ...
- 转 My97日历控件常用功能记录
My97相信大家都不陌生,应该是我所见过的最强大的一个日历控件了,最近的项目中也比较多地用到了此控件,而且项目中经常会有不同时间范围的需求,在此列出一些比较常用的日期范围格式的设置,尽管在My97的官 ...
- html5 autoplay不起作用 Uncaught (in promise) DOMException: play() failed because the user didn't interac
chrome://flags/#autoplay-policy
- codeforces589I
Lottery CodeForces - 589I Today Berland holds a lottery with a prize — a huge sum of money! There ar ...
- G - Balanced Lineup POJ - 3264 线段树最大最小值区间查询模版题
题意 给出一个序列 每次查询区间的max-min是多少 思路:直接维护max 和min即可 写两个query分别查最大最小值 #include<cstdio> #include< ...
- windows环境pip安装时一直报错Could not fetch URL https://pypi.org/simple/xrld/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url:
最近项目不忙了~~有开始专研的python大业,上来想用pip安装一个第三方的库,就一直报错: Could not fetch URL https://pypi.org/simple/xrld/: T ...
- bzoj 4542: [Hnoi2016]大数 (莫队)
Description 小 B 有一个很大的数 S,长度达到了 N 位:这个数可以看成是一个串,它可能有前导 0,例如00009312345.小B还有一个素数P.现在,小 B 提出了 M 个询问,每个 ...