1. 在一维的情况下,链式法则为: 。

    1. 链式法则不仅可以作用于向量,也可以应用于张量:

      • 首先将张量展平为一维向量。
      • 然后计算该向量的梯度。
      • 然后将该梯度重新构造为张量。
    2. 一、链式法则 - 图1,用单个变量 来表示 一、链式法则 - 图2 的索引元组。则张量的链式法则为:

      如:

      一、链式法则 - 图3

      则有:

    1.2 重复子表达式

    1. 给定计算图以及计算图中的某个标量 一、链式法则 - 图4 ,根据链式法则可以很容易地写出 对于产生 一、链式法则 - 图5 的任意节点的梯度的数学表达式。

      但是在计算该表达式的时候,许多子表达式可能在计算整个梯度表达式的过程中重复很多次。

      如图中:

      一、链式法则 - 图6

      可以看到 被计算多次。

      • 在复杂的计算图中,可能存在指数量级的重复子表达式,这使得原始的链式法则几乎不可实现。

      • 一个解决方案是:计算 一、链式法则 - 图7 一次并将它存储在 中,然后采用 一、链式法则 - 图8 来计算梯度。

        这也是反向传播算法采用的方案:在前向传播时,将节点的中间计算结果全部存储在当前节点上。其代价是更高的内存开销。