深度学习相关概念:计算图和反向传播

在深度学习分类问题中,反向传播是一个重要的环节,它决定了模型能否被训练。反向传播相当于负反馈。当一件事完成时,它会寻找当前事件做得不好。问题,进行回发,并在下次执行时对其进行优化。
深度学习相关概念:计算图和反向传播

计算图

在了解反向传播之前,我们必须先了解什么是计算图。当只形成一个计算图时,可以通过反向传播来更新数据。
计算图是表示输入、输出和中间变量之间的计算关系的有向图。图中的每个节点对应一个数学运算。
例如函数f=(x+y)²的计算图如下所示
深度学习相关概念:计算图和反向传播
这里假设x=1,y=2,则z=x+y=3,f=z²等于9,计算%5Cleft.%20%5Cfrac%7B%7B%5Crm%20d%7Df%7D%7B%7B%5Crm%20d%7Dz%7D%20%5Cright%7C%20_%7Bz%3D3%7D%3D2z%3D6
又因为z对于x的导数%5Cfrac%7B%7B%5Crm%20d%7Dz%7D%7B%7B%5Crm%20d%7Dx%7D%3Dy%3D1
z对于y的导数%5Cfrac%7B%7B%5Crm%20d%7Dz%7D%7B%7B%5Crm%20d%7Dy%7D%3Dx%3D1
根据链式法则,可以找到%5Cfrac%7B%7B%5Crm%20d%7Df%7D%7B%7B%5Crm%20d%7Dx%7D%20%3D%5Cfrac%7B%7B%5Crm%20d%7Df%7D%7B%7B%5Crm%20d%7Dz%7D%5Cfrac%7B%7B%5Crm%20d%7Dz%7D%7B%7B%5Crm%20d%7Dx%7D%3D6%5Cfrac%7B%7B%5Crm%20d%7Df%7D%7B%7B%5Crm%20d%7Dy%7D%3D%5Cfrac%7B%7B%5Crm%20d%7Df%7D%7B%7B%5Crm%20d%7Dz%7D%5Cfrac%7B%7B%5Crm%20d%7Dz%7D%7B%7B%5Crm%20d%7Dy%7D%20%3D6
深度学习相关概念:计算图和反向传播

计算图总结

  • 任何复杂的函数都可以用计算图的形式表示
  • 在整个计算图中,每个门单元都会得到一些输入,然后进行以下两个计算:

a) 这个门的输出值
b) 其输出值关于输入值的局部梯度。

  • 使用链式法则,一个门单元应该将返回的梯度乘以其局部梯度到它的输入,以获得整个网络输出的梯度(内核),对于每个输入到门单元的值。

反向传播

根据上面总结,我们可以把反向传播应用到下面中,以函数f(w,x)为例在)这里插入图片描述
返回的梯度乘以其输入的局部梯度,得到整个网络的输出对于门单元的每个输入值的梯度深度学习相关概念:计算图和反向传播
以此类推计算前一个门单元的输入梯度
深度学习相关概念:计算图和反向传播深度学习相关概念:计算图和反向传播
深度学习相关概念:计算图和反向传播深度学习相关概念:计算图和反向传播深度学习相关概念:计算图和反向传播深度学习相关概念:计算图和反向传播

颗粒感

在上述的反向传播中,每一次数据运算都要进行一次传播,显得有些冗余。我的前项计算结果在计算梯度的时候都是要用到的。如何避免这个现象了?这里讲了一个颗粒度问题,如果我把这个方框中的所有运算做写成一个函数,就写成一个这个Sigmoid的函数的话,写成一个函数,我直接把这个导数写出来的话,这个导数我可以直接相当于输入和输出就可以直接求出,那么我就可以直接求出这个0.1。深度学习相关概念:计算图和反向传播
这样求的好处是什么?在我的这个计算过程中,这点就不用分解成多处的分解成多次的这种局部门的计算,我可以直接用这一个公式就可以算到这个到这个点的梯度了,这样的好处就是计算效果快,所以在很多这个学习框架里面可以用的就是这样的,他的梯度可以推断是比较快的,你甚至把这整个写成一个函数,你一次就可以求出来w0、x0、w1、x1、w2所有的梯度。组合这种大函数,优势时速度快,计算少,但是缺点是你就得自己去写导函数。但是大部分情况是另一种情况,他把所有的算法都拆解成计算图,那么拆解的计算图了以后,那这样的话你不用自己求导函数,因为这种标准的分解流程它可以子在神经网络中写成标准的程序,它能帮你标准的完成这件事情。这就是计算图的颗粒度问题,计算块颗粒度小,计算慢;但颗粒度越大,你就要自己写求导函数,这就是计算图的颗粒度,它跟效率有关系。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2022年3月18日 下午2:55
下一篇 2022年3月18日 下午3:57

相关推荐