1.2.7&1.2.8 【Deep Learning翻译系列】Derivatives with a Computation Graph 采用计算图计算微分

我说神经网络的计算是按正向传递或前向传播步骤组织的,我们计算神经网络的输出,然后是反向传递或反向传播步骤,我们用于计算梯度或计算导数。计算图解释了为什么它以这种方式组织。我们将通过一个例子说明计算图(比对数概率回归或完整的神经网络更简单的例子)。

假设我们正在尝试计算一个函数 J = 3 ( a + b c ) ,我们令 u = b c v = a + u J = 3 v ,并在计算图中绘制它们如下。
这里写图片描述
当有一些特殊的输出变量(例如在这种情况下为 J )你想要优化时,计算图就派上用场了。在对数概率回归的情况下, J 当然是我们试图最小化的成本函数。我们在这个小例子中看到的是,通过从左到右的传递,你可以计算出 J 的值。

如果我们将 v 的数值稍微改变一下, J 的值会如何变化?在这里,我们将 v 增加了0.001。最终的结果是 J 增加了0.003。所以 J v = 3 。因为 J 的增加是 v 的增加的3倍。

现在让我们看另一个例子。 J a = ? ,换句话说,如果我们改变a的值,那么这对J的值有何影响?

在代码中,当你在你编写的代码中计算这个东西时,我们只是使用变量名dvar来表示 J v a r

从这个例子来看,利用计算图计算导数的关键点是,当计算微分时,最有效的方法是按照反向进行从右到左的计算。特别是,我们首先计算 J v 。然后,这对于计算关于 J a J u 是有用的。再往下传播,这些对于计算关于 J b J c 也是有用的。

猜你喜欢

转载自blog.csdn.net/u014625530/article/details/82115835
今日推荐