深度学习课程笔记(三)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 ...
随机推荐
- 取n到m行
取n到m行 . select top m * from tablename where id not in (select top n id from tablename order by id as ...
- 【安装虚拟机一】配置VMware
安装软件 VMware 10 CentOS-6.5-x86_64-minimal.iso 第一步:打开VMware 10 主页选择 “创建新的虚拟机” 第二步:选择自定义设置 第三步:设置虚拟机兼容 ...
- shell 编程每日100行
xiluhua@localhost ~/tscripts $ echo "hello world !" -bash: !": event not found xiluhu ...
- Python pyodbc安装
1)下面这个链接找个适合自己python版本的文件下载下来 https://pypi.org/project/pyodbc/#files 2)放到scripts下面 3) 在scripts路径上输入c ...
- case when then的用法
用法一:等值判断,相当于switch CASE expression WHEN value1 THEN returnValue1 WHEN value2 THEN returnValue2 WHEN ...
- localstorage跨域解决方案
localstorage也存在 跨域的问题, [解决思路如下] 在A域和B域下引入C域,所有的读写都由C域来完成,本地数据存在C域下; 因此 A哉和B域的页面必定要引入C域的页面; 当然C域最好是主域 ...
- 算法训练 P0505
一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积.阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中:而35!就更大了,它已经无法存放在一个浮点型变量中.因此, ...
- [转载]C#中使用正则表达式验证电话号码、手机号、身份证号、数字和邮编
原文出处:https://www.cnblogs.com/wuhuisheng/archive/2011/03/23/1992652.html 验证电话号码的主要代码如下: public bool I ...
- unittest和pytest的区别
一.用例编写规则 1.unittest提供了test cases.test suites.test fixtures.test runner相关的类,让测试更加明确.方便.可控.使用unittest编 ...
- php中session同ip不同端口的多个网站session冲突的解决办法
在局域网内使用IP加端口的访问方式搭了两个相同程序的站,结果发现用户在一个站下登录后,在另一个站也同时登录了,在一个退出后,另一个站也同时退出了.看了下程序发现两个站都是使用纯session方式记录登 ...