2.8 计算图的导数计算-深度学习-Stanford吴恩达教授

计算图的导数计算 (Derivatives with a Computation Graph)

在上一个视频中,我们看了一个例子使用流程计算图来计算函数J 。现在我们用简单的例子说明如何用计算图计算出函数J的导数。

这是一个流程图:

在这里插入图片描述

比如我想计算J 对于v的导数,即把v改变一点点,J的值将会如何变化?此处J = 3v,假设v = 11 提高到 v = 11.001 ,J就从33提高到33.003。

用反向传播的术语来解释,如果你想要计算最终输出变量对于v的导数(比如你很关心的某这个变量),那么我们就做完了一步反向传播,在这个流程图中是一个反向步骤(图中第一条从右到左条红线)

在这里插入图片描述 

下面看这个例子 :变量a = 5,我们让它增加到5.001,那么对v的影响从11变成11.001,对J影响从33变成33.003。所以我们看到如果a增加0.001,J会增加0.003,所以Ja的导数=3。那么a对于v的影响呢?其实就是一个简单的复合函数求导(链式求导法则)如下图:

 下面这张小图就示了如何计算,通过\frac{dJ}{dv}算出\frac{dJ}{da}。所以这是另一步反向传播计算(图中第二条从右到左条红线)

在这里插入图片描述

         

现在我想介绍一个新的符号约定,当你编程实现反向传播时,通常会有一个最终输出值是你要关心的,你真正想要关心或者说优化的就是流程图里最后一个符号(比如上例的 J )。所以有很多尝试计算输出变量的导数,所以输出变量对某个变量的导数,我们就用dvar命名。

在程序中给中间变量(a,b,c,u,v等)取什么名?你可以做的一件事是,在python中,你可以写一个很长的变量名,比如\frac{dFinalOutputvar}{dvar},但这个变量名有点长,我们就用变量名 dvar 来表示\frac{dFinalOutputvar}{dvar},反正最后都是对 dJ 求导,对这个最终输出变量求导。

在这里插入图片描述

 

同理,如下图(第三条红线,另一条反向传播

 所以这个视频的要点是,对于上述例子,当计算所有这些导数时,最有效率的办法是从右到左计算,跟着这个红色箭头走(其实就是高数的链式求导)。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值