计算图——一种快速求偏导数的方法

概述

计算题,顾名思义,就是用一张图来表示一个算式,通过图上的一些操作来完成算式的计算。
但是计算题有一个非常厉害的地方在于它不仅仅能正向计算(计算表达式的结果)也可以反向计算(求出导数,利用函数求导的链式法则)。
今天我们就来见识一下这个计算图。

计算图的表示

在计算图上,用结点来表示符号,此处的符号应该理解为广义的符号,即计算操作,不仅仅包括=,-,*,/,还有个包括次幂,对数等运算。
有向边来表示计算的顺序,可知计算图是一个有向无环图,其计算顺序就是拓扑序。
每个结点的入边边权表示其的输入,出边边权表示其的输出。

举个例子

用计算图表示3+4*2

3
4
2
NULL
+
*
ans

计算图的反向传播

这才是计算图真正的用武之地,相比于用定义来计算函数的导数,在计算大量的导数时候,计算图就非常高效。

利用计算图来求导数的原理就是函数求导的链式法则,也就是说,对于计算图上的每个结点,仅仅需要关心与这个结点相连的边(包括入边和出边),就可以计算出当前运算的导数。每一个局部运算导数通过链式法则,就能得到该函数的导数了。

同样是上面的例子

3
4
2
ans'
ans'*1
ans'*1
ans'*4
ans'*2
NULL
+
*
ans

加粗的线表示反向传播,即函数的导数。
不难看出,使用计算图可以快速地求出函数关于每个变量的导数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值