全连接神经网络——计算图

一、定义

计算图是一种有向图,用来表达输入、输出以及中间变量之间的计算关系,图中每一个结点代表一种数学运算。例如求函数f=(x+y)^2的计算图,那么该计算图如下所示:

不难发现,该图是一个有向图,其中结点包含运算符,边代表着运算结果。

二、计算图的前向计算

计算图的前向计算就是从起始位置x,y开始,每次运算只关注当前运算结点得出的运算结果,最终得出输出结果。除了上图的基础运算,也可以进行求一阶导、求偏导等更复杂的操作。

三、计算图的反向计算

若要计算图的反向传播,首先我们需要根据图的输入把计算结果写出来,也就是优先对图进行前向计算。下述的图为函数f(w,x)=\frac{1}{1+e^{-(w0x0+w1x1+w2)}}

之后,我们从计算图的终端开始反向地对每条有向边求导。目前,终端输出的结果即为函数f,我们便对f求关于f自身的导数,得出结果为1,我们在终端对应的边上将计算出的导数1添加上来。

接下来,我们去计算函数\frac{1}{x}的关于x的导数,即-\frac{1}{x^2},然后我们将上游边的值(1.14)带入该导数,即-\frac{1}{1.14^2},然后我们在用之前计算出来的边上的导数1.00乘上-\frac{1}{1.14^2},得出一个值,将该值添加到指向\frac{1}{x}结点的有向边上。

以此类推,从图的终端开始,反向地遍历该图,算出每个结点的导数,然后将指向该结点的边上的值代入到该导数中,再乘上以该结点为起点的边上的值,然后将图上的每个结点输出值关于输入值的局部梯度计算出来。

四、计算图的颗粒度

在之前的反向传播过程中,需要对每个结点分别地去进行求导,如果函数过于负责,那么计算起来会过于复杂。通过观察可知,该图后面的几个结点就是sigmoid函数,那么可以将后面的几个结点视为一个大的结点,对这个结点进行求导,适当地增大该图的颗粒度。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值