计算图(Computational Graph)笔记-BPTT
来源:互联网 发布:会计在职研究生 网络 编辑:程序博客网 时间:2024/06/06 17:38
计算图(Computational Graph)笔记
最近在学习Tensorflow,而Tensorflow的写法和一般的Python好像不太一样,不是很容易上手。后来看到Tensorflow是基于Computational Graph,那么就先来学习一下,参考的资料A Primer on Neural Network Models for Natural Language Processing
目录如下
- 计算图Computational Graph笔记
- 什么是计算图Computational Graph
- 一些表示
- Forward
- Backward
- 例子
- Backpropagation Through Time BPTT
- 什么是计算图Computational Graph
什么是计算图(Computational Graph)
简单来说就是,就是一个有向图,
上图来源是 这样子的图就代表
图的来源是A Primer on Neural Network Models for Natural Language Processing
一些表示
为了清楚期间,用圆来表示运算符号(tensorflow中的各种op,加减乘除,sigmoid…),用无色的长方形表示输入(tensorflow中的placeholder),用有颜色的长方形表示变量(tensorflow中的Variable)
例如:
要说一下的是,这边图上是看不出来
此外,元素
其中
Forward
非常简单,就是把手头有的资料
Backward
BP的部分也很简单,第一步是将上面那种图中各个node对于他的参数的偏微分。论文上写起来大概就是这样
(当然关于x关于y的不必求了即关于placeholder的不用求),得到下图:
第二步是找到所有从你希望优化的node
到你希望调整的参数
的路径,然后每一条路径上的偏微分乘在一起,所有路径加在一起。
举个例子假如我们的目标是让
再将一条路径上的偏微分乘在一起:
在上面的例子中,
所以
注意,这边
由于这边的例子非常简单,其实就是非常基础的chain rule的应用,实在看不到这样做有什么好处显得多此一举,那么不妨看看下面的例子吧
例子
Backpropagation Through Time (BPTT)
前面的例子在一般的DNN上已经非常清楚了,无非就是图大一点,你要做的就是把图画出来,定义清楚需要的运算,然后算清楚每一个元素对他的所有参数的偏微分,然后就OK了。
但是在我学习的过程中,最头疼的情况是RNN,由于时间的关系,RNN并不都是一次输入一次输出这样的求解gradient,而是使用 unfold
这个过程:如果不用图而用纯粹的数学表达式的推导对我来说有点吓人,而且看到最后的求导公式比较难有直觉,那么我们不妨来看看怎么用computational graph来轻易解决BPTT的吧。
(这边假设读者已经知道RNN和unfold是在做啥啦)
下面是例子,下图是forward的图
简单来说就是在
对于
对于
对于
此外,图中表示
那根据前面讲的内容,我们可以得到下面这张backward的图
这边所有诸如
有了上面这张backward的图,我们就可以很轻易的计算出此时
我这边写一个
接下来将前面的每个
其他的就很简单啦!
- 计算图(Computational Graph)笔记-BPTT
- 计算图(computational graph)角度看BP(back propagation)算法
- 计算图(computational graph)角度看BP(back propagation)算法
- 计算图(computational graph)角度看BP(back propagation)算法
- The Computational Graph
- 计算几何学(Computational Geometry)
- 计算几何学(Computational Geometry)
- 【TensorFlow】计算图graph的使用学习笔记(二)
- TensorFlow框架(1)之Computational Graph详解
- 计算广告学(Computational Advertising)CA
- 计算广告学(Computational Advertising)CA
- 计算广告学(Computational Advertising)CA
- SGU110 计算几何 Computational Geometry
- usaco Computational Geometry 计算几何
- 计算广告(computational advertising)
- 图计算,使用BP反向传播算法Calculus on Computational Graphs: Backpropagation
- 程序设计中的计算复用(Computational Reuse)
- 计算广告学(Computational Advertising)学习资料
- 通过反射写BaseServlet
- 笨办法学python习题13 参数、解包和变量
- 用c语言编写猜数字小游戏
- 神经网络实现手写字符识别系统
- 第十周项目1(2)
- 计算图(Computational Graph)笔记-BPTT
- CMakeList.txt脚本文件及Cmake常用命令
- 打开IIS管理器命令
- 第十周项目1(3)
- 【设计模式】--MONOSTATE模式
- 数据库实验,合肥某工业大学实验内容
- JDBC相关
- 第十周项目1(4)
- QGridLayout