深度学习课程笔记(三)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 ...
随机推荐
- html5-textarea元素
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- E. Kefa and Watch hash 线段树
2015-09-28 14:11:36 by opas 这题给的是一个字符串 把其中一些子串给取出来 判断是否是周期为d的字符串 还需要把 其中的一个区间完全变成一个数 ,然后在查询,我们把每个字符 ...
- 【Hbase学习之三】Hbase Java API
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-2.6.5 hbase-0.98.12.1-h ...
- mybatis源码解析3---XMLConfigBuilder解析
1.XMLConfigBuilder XMLConfigBuilder类位于Mybatis包的org.apache.ibatis.builder.xml目录下,继承于BaseBuilder类,关于Ba ...
- html 基本布局介绍
1.div默认是纵向排列的,例子如下: <div id="wrap"> <div id="div1">div1</div> ...
- Linux系统管理和维护常用命令
Linux系统管理和维护常用命令 ls 命令 功能说明 ls 命令显示指定工作目录下的内容,列出工作目录所包含的文件及子目录. 语法结构: ls [选项] [路径或文件] ls 选项及说明 -a 显示 ...
- centos 安装MySQL全过程
1.到chinaunix下载mysql 下载地址: http://download.chinaunix.net/download/0008000/7159.shtml 2.上传到CentOS服务器 本 ...
- JAVA基本语法测试
一: 1,JAVA的基本运行单位是类 2,类的成员:成员变量,构造方法,普通方法和内部类 3,成员变量种类:字符类型:char 布尔类型:boolean 数值类型:byte, s ...
- @Configuration与@Bean作用
Spring的Java配置方式是通过@Configuration和@Bean这两个注解来实现 @Configuration可以作用在任意类上,表示该类是一个配置类,其实就相当于一个xml配置文件. @ ...
- MyBatis的核心配置、动态sql、关联映射(快速总结)
MyBatis的核心对象和配置 #1. SqlSessionFactory对象: 单个数据库映射关系经过编译的内存镜像: 作用:创建SQLSession对象. //读取配置文件 InputSteam ...