首页 技术 正文
技术 2022年11月14日
0 收藏 892 点赞 2,123 浏览 1883 个字

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

第一节,windows和ubuntu下深度学习theano环境搭建

对于一个单独的训练样本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)

上一篇: 初始redis数据库
下一篇: TestNg 3.忽略测试
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,078
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,553
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,402
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,177
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,814
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898