深度学习课程笔记(三)Backpropagation 反向传播算法

2017.10.06 

材料来自:http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS17.html

反向传播算法这里是用到 chain rule(链式法则)的,如下图所示:

这个应该没什么问题。大家都学过的。

我们知道总的loss 是由各个小的 loss 组合得到的,那么我们在求解 Loss 对每一个参数的微分的时候,只要对每一个 loss 都这么算就可以了。那么我们以后的例子都是以 loss 的为基础而来的。

这里我们的反向传播,主要依赖于前向传播和反向传播,其loss的计算也是依赖于链式法则:

有了上面 z 的表达式,我们分别对 w1 和 w2 进行求导,我们可以得到对应的结果,分别为: x1 and x2。其实就是连接权重的输入。

那么,很直观的,我们可以得到如下的结果:

OK,现在我们求解出其中的一项了,那么,另外一项该怎么算呢?我们接着看:

这里的激活函数  a,我们用的 sigmoid,当然也可以是其他的函数了。我们对该激活函数进行求导,可以得到其微分,这个就是该项的左侧部分,那么右侧该怎么算呢?

我们知道,后面有可能又有很多的 layer,该结果可能影响后面所有的值。我们假设这里只有 2 个神经元,那么我们可以得到:

我们将右边那一项按照链式法则展开后,可以发现,又是这样子,输出对变量求导后就是输入,所以,展开后的两项的稀疏,都是已知的输入,即:w3 and w4。那么另外两项分别是什么呢?其实这个又是和后续有关的,这里我们假设这些值是已知的,那么我们就可以算出右侧的值了。

那么 l 对 z 求偏导之后的值,我们可以计算出来:

这里,其实有两种情况:

1. 此处是最后一层,那么我们就可以直接计算就行了:

2. 若不是最后一层呢?我们只要将后面计算出的值,带入到这里就行了。

以上部分,是从输入端开始算起,所以每次都会遇到利用后面的值的问题,貌似计算量很大啊。。怎么办?

其实,没必要的啦,我们可以后面向前算,我们知道了后面的 loss,我们去求前一层的各种偏导数,然后依次向前算,就可以得到整个网络的各个偏导数的值啦。。。。

也就是说:

所以,这个过程其实就是反向传播算法啦。。。总结一下:

通过这样子的方法,我们得到了其偏微分,其实就是梯度啦。。。根据梯度下降的方法,我们就可以更改权重,使得 loss 最小,从而就完成了神经网络的训练。。。。

深度学习课程笔记(三)Backpropagation 反向传播算法的更多相关文章

  1. 深度学习课程笔记(十五)Recurrent Neural Network

    深度学习课程笔记(十五)Recurrent Neural Network 2018-08-07 18:55:12 This video tutorial can be found from: Yout ...

  2. 深度学习课程笔记(七):模仿学习(imitation learning)

    深度学习课程笔记(七):模仿学习(imitation learning) 2017.12.10 本文所涉及到的 模仿学习,则是从给定的展示中进行学习.机器在这个过程中,也和环境进行交互,但是,并没有显 ...

  3. 深度学习课程笔记(十一)初探 Capsule Network

    深度学习课程笔记(十一)初探 Capsule Network  2018-02-01  15:58:52 一.先列出几个不错的 reference: 1. https://medium.com/ai% ...

  4. 深度学习课程笔记(四)Gradient Descent 梯度下降算法

    深度学习课程笔记(四)Gradient Descent 梯度下降算法 2017.10.06 材料来自:http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS1 ...

  5. 深度学习课程笔记(二)Classification: Probility Generative Model

    深度学习课程笔记(二)Classification: Probility Generative Model  2017.10.05 相关材料来自:http://speech.ee.ntu.edu.tw ...

  6. 深度学习课程笔记(一)CNN 卷积神经网络

    深度学习课程笔记(一)CNN 解析篇 相关资料来自:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html 首先提到 Why CNN for I ...

  7. 深度学习课程笔记(十八)Deep Reinforcement Learning - Part 1 (17/11/27) Lectured by Yun-Nung Chen @ NTU CSIE

    深度学习课程笔记(十八)Deep Reinforcement Learning - Part 1 (17/11/27) Lectured by Yun-Nung Chen @ NTU CSIE 201 ...

  8. 深度学习课程笔记(十七)Meta-learning (Model Agnostic Meta Learning)

    深度学习课程笔记(十七)Meta-learning (Model Agnostic Meta Learning) 2018-08-09 12:21:33 The video tutorial can ...

  9. 深度学习课程笔记(十六)Recursive Neural Network

    深度学习课程笔记(十六)Recursive Neural Network  2018-08-07 22:47:14 This video tutorial is adopted from: Youtu ...

随机推荐

  1. [转]sql server 常用脚本(日常查询所需)

    1:查看sql server代理中作业的运行状况的脚本 -- descr : a simple sql script to view sql server jobs run status -- las ...

  2. XML系列之--解析电文格式的XML(二)

    上一节介绍了XML的结构以及如何创建.讲到了XML可作为一种简单文本存储数据,把数据存储起来,以XML的方式进行传递.当接收到XML时,必不可少的就是对其进行解析,捞取有效数据,或者将第三方数据以节点 ...

  3. GAN的文献综述

    1.Conditional Generative Adversarial Netwoks Describe GAN: Generative adversarial nets were recently ...

  4. 开始Nginx的SSL模块

    nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/n ...

  5. linux系统电视盒子到底是什么

    经常看到各种大神说今天刷了什么linux系统可以干嘛干嘛了,刷了乌班图可以干嘛干嘛了,但是身为一个小白,对这种名词都是一知半解.所以这边给大家科普一下,什么是linux系统?电视盒子刷了这个可以干啥? ...

  6. github开源的一些ip解析 ,运营商信息,经纬度 地址 后续开发使用

    https://github.com/wzhe06/ipdatabase  ip解析 https://github.com/flyaction/ipdatabase 比较新 https://githu ...

  7. css实现16:9的图片比例

    摘自:https://www.cnblogs.com/caizhenbo/p/css.html 需求: 最近产品要求不管原图的大小是多少,宽度一定,高度要自自适应为16:9. 分析: 对于正常的固定好 ...

  8. 怎样从外网访问内网Jupyter Notebook?

    本地安装了一个Jupyter Notebook,只能在局域网内访问,怎样从外网也能访问到本地的Jupyter Notebook呢?本文将介绍具体的实现步骤. 准备工作 安装并启动Jupyter Not ...

  9. Java Thread.yield详解

    这是Java中的一种线程让步方法,让Java中的线程从执行状态变成就绪状态,然后处理器再从就绪队列中挑选线程进行执行(优先级大的,被挑选的概率较大),这种转换也不确定,让或者不让都是取决与处理器,线程 ...

  10. Golang的值类型和引用类型的范围、存储区域、区别

    常见的值类型和引用类型分别有哪些? 值类型:基本数据类型 int 系列, float 系列, bool, string .数组和结构体struct,使用这些类型的变量直接指向存在内存中的值,值类型的变 ...