文档章节

神经网络和深度学习-第二周神经网络基础-第八节:计算图的导数计算

侯法超
 侯法超
发布于 01/01 19:05
字数 875
阅读 271
收藏 6

本系列博客是吴恩达(Andrew Ng)深度学习工程师 课程笔记。全部课程请查看吴恩达(Andrew Ng)深度学习工程师课程目录

上一节中,我们使用计算图来计算函数$J$,现在我们理清一下计算图的描述,看看我们如何利用它计算出函数$J$的导数。

下图是一个流程图,假设你要计算$J$对$v$的导数$\frac{dJ}{dv}$,比如我们改变$v$值那么$J$的值怎么呢?定义上$J$是$3v$,现在$v=11$,所以如果让$v$增加一点点,比如到11.001,那么$J$增加到33.003。所以这里$v$增加了1.001,最终结果是$J$上升到原来3倍,所以$J$对$v$的导数等于3。因为对于任何$v$的增量,$J$都会有三倍增量。

在反向传播算法中,我们看到如果你想计算最后输出变量的导数,使用你最关心的变量对v的导数。那么我们就做完了一步反向传播,所以在这个流程图中是一个反向步。

我们来看另一个例子,$\frac{dJ}{da}$又是多少?换句话说,如果我们提高a的数值,对$J$的数值有什么影响?我们看看这个例子变量$a=5$,我们让它增加到5.001,那么对v的影响就是$a+U=11.001$,$J$就变成了33.003了。所以我们看到的是如果你让a增加0.001,$J$增加0.003。所以可以看出,当a变化时,其变化会传播到流程图的最右边。所以$J$的增量是3乘以a的增量,这意味着导数是3。要解释这样计算过程其中一个方式就是如果你改变了a,那也会改变v,通过改变v也会改变$J$。这在微积分里实际上叫链式法则,就是当你改变a时v的变化量乘以改v时J的变化量。我们从这个计算中看到如果你让a增加0.001,v也会变化相同的大小所以$\frac{dv}{da}=1$。

现在我们介绍一种新的符号约定,当你编程实现反向传播时,通常会有一个最终输出值是你要关心的或要优化的(Final output variable),在这种情况下,最终的输出变量是J(计算图里最后一个符号)。所以,有很多计算方试计算输出变量的导数。所以d FinalOutputVar是对某个变量的导数,我们就用d var表示。所以在很多计算中你需要计算最终输出结果的导数,在这个例子里是$J$,还有各种中间变量,比如a b c u v。当你在软件里实现的时候,变量名叫什么?你可以做的一件事是,在Python中,可以用dJ/dvar,但因为你一直对dJ求导,对这个最终输出变量求导,这里要介绍一个新的符号,在程序里我们就使用变量名dvar来表示你关心的最终变量的导数(var可能是J/L等)。

所以在代码中dv=3,dJ=3。通过这个流程图部分完成的后向传播算法,我们在下一节看这个例子剩下的部分。

© 著作权归作者所有

共有 人打赏支持
侯法超
粉丝 152
博文 57
码字总数 105341
作品 0
大兴
程序员
私信 提问
ng-深度学习-课程笔记-0: 概述

课程概述 这是一个专项课程(Specialization),包含5个独立的课程,学习这门课程后做了相关的笔记记录。 (1) 神经网络和深度学习 (2) 改善深层神经网络:超参数调试,正则化,优化 (3) 结构化...

PilgrimHui
2017/10/09
0
0
《deeplearning.ai》 课程一第二周 | Logistic Regression

deeplearning.ai 是机器学习领域大牛Andrew Ng在Coursera上公布的新的深度学习的课程,相比之前机器学习的课程,本课程更偏重于深度学习的领域。 本文是课程一《Neural Networks and Deep Le...

V怪兽
2017/12/14
0
0
17 BP神经网络算法原理推导和数据演示

反向传播算法(BackpropagationAlgorithm,简称BP算法)是深度学习的重要思想基础,对于初学者来说也是必须要掌握的基础知识!本文希望以一个清晰的脉络和详细的说明,来让读者彻底明白BP算法...

7125messi
06/25
0
0
《deeplearning.ai》 课程一第三周 | Shallow neural networks

deeplearning.ai 是机器学习领域大牛Andrew Ng在Coursera上公布的新的深度学习的课程,相比之前机器学习的课程,本课程更偏重于深度学习的领域。 本文是课程一《Neural Networks and Deep Le...

V怪兽
2017/12/18
0
0
神经网络和深度学习笔记2(浅层神经网络)

1. 浅层神经网络 损失函数从右向左传递 2. 神经网络的计算 关于神经网络是怎么计算的,从我们之前提及的逻辑回归开始,如下图所示。用圆圈表 示神经网络的计算单元,逻辑回归的计算有两个步骤...

thinkando
09/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring源码学习笔记-1-Resource

打算补下基础,学习下Spring源码,参考书籍是《Spring源码深度解析》,使用版本是Spring 3.2.x,本来想试图用脑图记录的,发现代码部分不好贴,还是作罢,这里只大略记录下想法,不写太细了 ...

zypy333
今天
10
0
RestClientUtil和ConfigRestClientUtil区别说明

RestClientUtil directly executes the DSL defined in the code. ConfigRestClientUtil gets the DSL defined in the configuration file by the DSL name and executes it. RestClientUtil......

bboss
今天
17
0

中国龙-扬科
昨天
2
0
Linux系统设置全局的默认网络代理

更改全局配置文件/etc/profile all_proxy="all_proxy=socks://rahowviahva.ml:80/"ftp_proxy="ftp_proxy=http://rahowviahva.ml:80/"http_proxy="http_proxy=http://rahowviahva.ml:80/"......

临江仙卜算子
昨天
11
0
java框架学习日志-6(bean作用域和自动装配)

本章补充bean的作用域和自动装配 bean作用域 之前提到可以用scope来设置单例模式 <bean id="type" class="cn.dota2.tpye.Type" scope="singleton"></bean> 除此之外还有几种用法 singleton:......

白话
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部