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

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

第一节,windows和ubuntu下深度学习theano环境搭建的更多相关文章

  1. ubuntu 深度学习cuda环境搭建,docker-nvidia 2019-02

    ubuntu 深度学习cuda环境搭建 ubuntu系统版本 18.04 查看GPU型号(NVS 315 性能很差,比没有强) 首先最好有ssh服务,以下操作都是远程ssh执行 lspci | gre ...

  2. 人工智能之深度学习-初始环境搭建(安装Anaconda3和TensorFlow2步骤详解)

    前言: 本篇文章主要讲解的是在学习人工智能之深度学习时所学到的知识和需要的环境配置(安装Anaconda3和TensorFlow2步骤详解),以及个人的心得体会,汇集成本篇文章,作为自己深度学习的总结 ...

  3. ubuntu下的c/c++环境搭建

    原文地址:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274556.html ubuntu下的c/c++环境搭建是比较简单,因为有apt和新立得 ...

  4. Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda

    Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda Ubuntu16.04安装 参考https://blog.csdn.net/flyy ...

  5. 深度学习开发环境搭建教程(Mac篇)

    本文将指导你如何在自己的Mac上部署Theano + Keras的深度学习开发环境. 如果你的Mac不自带NVIDIA的独立显卡(例如15寸以下或者17年新款的Macbook.具体可以在"关 ...

  6. Ubuntu下kafka集群环境搭建及测试

    kafka介绍: Kafka[1是一种高吞吐量[2]  的分布式发布订阅消息系统,有如下特性: 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能 ...

  7. Ubuntu下php网站运行环境搭建

    第一步:查看是否安装lamp相关软件: dpkg -s 软件名称,比如php.mysql.apache. dpkg-query -l 软件名称 要列出你系统中安装的所有包,输入下面的命令:dpkg - ...

  8. ubuntu下android开发工作环境搭建

    www.bubuko.com/infodetail-655571.html 解压软件安装: sudo apt-get install unrar rar zip gzip  串口工具安装: sudo ...

  9. linux下安卓编译apk环境搭建

    ubuntu下linux安卓编译环境搭建. 配置好编译环境 (前提是已经安装了jdk,可以用java -verison 命令查看) 一.设置环境变量 用vi  ~/.bashrc  打开编译环境 JA ...

随机推荐

  1. valgrind 检查内存泄露

    https://www.oschina.net/translate/valgrind-memcheck

  2. DBC格式解析(数据部分)

    dbc格式说明:DBC Format   实战: 我们先来看一段数据 BO_ VOLTAGE01: BMS2 SG_ V01 : |@+ () [|] "" Vector__XXX ...

  3. Nintex Forms Drop-Down "z-index"

    Now we’ve got the issue, that if we are working with a “Person-Column”, the drop-down where you can ...

  4. 一般服务器端口号的反斜杠表示访问webapp下的资源

  5. ES系列十五、ES常用Java Client API

    一.简介 1.先看ES的架构图 二.ES支持的客户端连接方式 1.REST API http请求,例如,浏览器请求get方法:利用Postman等工具发起REST请求:java 发起httpClien ...

  6. sql server2012学习笔记

    第1章 SQL安装   1-1 [SQL Server基础]前言 (10:44) 1-2 SQL Server安装 (08:29) 1-3 第一次登陆 SQL Server (02:58) 1-4 [ ...

  7. 初次尝试使用jenkins+python+appium构建自动化测试

    初次尝试使用jenkins+python+appium构建自动化测试 因为刚刚尝试使用jenkins+python+appium尝试,只是一个Demo需要很多完善,先记录一下今天的成果,再接再厉 第一 ...

  8. luogu P2680 运输计划 (二分答案+树上差分)

    题目背景 公元 20442044 年,人类进入了宇宙纪元. 题目描述 公元20442044 年,人类进入了宇宙纪元. L 国有 nn 个星球,还有 n-1n−1 条双向航道,每条航道建立在两个星球之间 ...

  9. Ionic生命周期与注意点

    需要注意的地方是:在走页面的生命周期以前,会先走构造方法 构造方法只走一次,除非再次创建这个页面.所以如果先push了一个新页面,然后再调用pop()返回到之前的页面,那么是不会走构造方法里面的方法的 ...

  10. 爬虫_猫眼电影top100(正则表达式)

    代码查看码云