深度学习课程笔记(三)Backpropagation 反向传播算法
深度学习课程笔记(三)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 反向传播算法的更多相关文章
- 深度学习课程笔记(十五)Recurrent Neural Network
深度学习课程笔记(十五)Recurrent Neural Network 2018-08-07 18:55:12 This video tutorial can be found from: Yout ...
- 深度学习课程笔记(七):模仿学习(imitation learning)
深度学习课程笔记(七):模仿学习(imitation learning) 2017.12.10 本文所涉及到的 模仿学习,则是从给定的展示中进行学习.机器在这个过程中,也和环境进行交互,但是,并没有显 ...
- 深度学习课程笔记(十一)初探 Capsule Network
深度学习课程笔记(十一)初探 Capsule Network 2018-02-01 15:58:52 一.先列出几个不错的 reference: 1. https://medium.com/ai% ...
- 深度学习课程笔记(四)Gradient Descent 梯度下降算法
深度学习课程笔记(四)Gradient Descent 梯度下降算法 2017.10.06 材料来自:http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS1 ...
- 深度学习课程笔记(二)Classification: Probility Generative Model
深度学习课程笔记(二)Classification: Probility Generative Model 2017.10.05 相关材料来自:http://speech.ee.ntu.edu.tw ...
- 深度学习课程笔记(一)CNN 卷积神经网络
深度学习课程笔记(一)CNN 解析篇 相关资料来自:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html 首先提到 Why CNN for I ...
- 深度学习课程笔记(十八)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 ...
- 深度学习课程笔记(十七)Meta-learning (Model Agnostic Meta Learning)
深度学习课程笔记(十七)Meta-learning (Model Agnostic Meta Learning) 2018-08-09 12:21:33 The video tutorial can ...
- 深度学习课程笔记(十六)Recursive Neural Network
深度学习课程笔记(十六)Recursive Neural Network 2018-08-07 22:47:14 This video tutorial is adopted from: Youtu ...
随机推荐
- 擠出線寬(Extrusion width),要怎麼設定?
擠出線寬(Extrusion width),要怎麼設定? Slic3r的作者,把這邊的%設定,跟"層高"做連結.我個人認為擠出線寬,要以噴頭孔徑當做設定參考才好.層高應該只要設定成 ...
- [转]LoadRunner 各个指标分析
转载:https://www.cnblogs.com/dvbbs2012/p/4073635.html 我们要监视CPU,内存.硬盘的资源情况.得到以下的参数提供分析的依据.%processor ti ...
- Error resolving version for plugin 'org.codehaus.mojo:tomcat-maven-plugin'
从 SNV 导入新工程后,启动工程,但 Maven 报错: Error resolving version for plugin 'org.codehaus.mojo:tomcat-maven-plu ...
- 设计模式之Factory(工厂)(转)
定义:提供创建对象的接口. 为何使用? 工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见. 为什么工厂模式是如此常用?因为工厂模式就 ...
- 转:WCF传送二进制流数据基本实现步骤详解
来自:http://developer.51cto.com/art/201002/185444.htm WCF传送二进制流数据基本实现步骤详解 2010-02-26 16:10 佚名 CSDN W ...
- Python+OpenCV图像处理(二)——打印图片属性、设置图片存储路径、电脑摄像头的调取和显示
一. 打印图片属性.设置图片存储路径 代码如下: #打印图片的属性.保存图片位置 import cv2 as cv import numpy as np #numpy是一个开源的Python科学计算库 ...
- docker log directory
Ubuntu - /var/log/upstart/docker.log Boot2Docker - /var/log/docker.log Debian GNU/Linux - /var/log/d ...
- Zabbix客户端(被监控端)安装配置
1) 创建用户 groupadd zabbix useradd -g zabbix zabbix 2)zabbix软件包下载,安装 zabbix-2.2.6 http://jaist.dl.sourc ...
- axios post参数为空
今天在360浏览器访问时后台接收不到参数,但是用谷歌浏览器就能收到传入的值.
- Camera2点击对焦实现2
https://www.aliyun.com/jiaocheng/22218.html 阿里云 > 教程中心 > android教程 > Camera2点击对焦实现 Cam ...