深度学习记录--计算图(前向后向传播)

什么是计算图?

从一个例子入手:

J=3(a+b*c) 

u=b*c

v=a+u

J=3*v

将函数J的计算用流程图表示出来,这样的流程图被称为计算图

简单来说,计算图是用来显示每个变量间的关系的一种图

两种传播方式

计算图有两种传播方式:前向传播 和 后向传播

什么是前向传播?

还是以函数J为例,前向传播就是将计算函数J的值的每一个过程表示出来,类似分步计算

什么是后向传播? 

后向传播就是从最后一个方框开始,逐步向前求最终输出变量(FinalOutput Variable)对普通变量(variable)的导数,记为:\frac{\mathrm{d} (FinalOutput Variable) }{\mathrm{d} (var)} ,在函数J的例子中,最终输出变量是变量J的值,所以导数写为:\frac{\mathrm{d} J }{\mathrm{d} (var)} ,在编程代码中,为了简便,通常将导数记作:d (var) ,当我们求出J对所有普通变量的导数后,我们也就清楚了每个变量var对于J变化的影响程度,同时,这些导数也可以用来更新变量(即梯度下降法),方便进行迭代计算

后向传播的计算方法

简要来说,就是求导

但是,我们可以利用链式法则(chain rule)来简化计算

比如:当我们求完 ^{\frac{\mathrm{d} J }{\mathrm{d} v}} 之后,之后我们要求 \frac{\mathrm{d} J }{\mathrm{d} u} ,可以进行拆分,拆分成:\frac{\mathrm{d}J }{\mathrm{d} v}\frac{\mathrm{d} v }{\mathrm{d} u} , 这样我们只需要求 \frac{\mathrm{d} v }{\mathrm{d} u} ,并将上一次求出的 ^{\frac{\mathrm{d} J }{\mathrm{d} v}} 代入即可求出 \frac{\mathrm{d} J }{\mathrm{d} u} 

同理之后每个导数都可以拆分成两个导数,进行简化运算

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值