还是从敏感度的角度的角度来理解。对于某个门来说,上游回传来的梯度,其实就是整个函数对这个门的一个敏感度。
之前通过对导数定义的直观理解,我们已经掌握了这样一个知识,也就是——如果我们知道,在一个特定的位置上,函数对某个变量的导数,我们就能够知道这个如何对变量进行微小的改变(朝哪个方向,变大还是变小)就能使整个函数的值增加。
注意,“在某一个特定的位置上”以及“对变量进行微小的改变”这是非常重要的条件,也就是导数成立的条件。
其实从这个角度就已经能够说明问题了。没有必要非要用拟人化的比喻,反而把理解的难度增高了。我试着把作者那种拟人的比喻用我的话描述一下:
假设把整个函数看成一个网络(或者回路),中间变量就是这个回路上的门(或者网络上的节点),这个网络中存在两种信息的传递机制,一个是正向传播,一个是反向传播。正向传播是相邻的门之间的信息传递,任何一个节点只能和直接相连的节点通信。但是通过层层的传递,最后输入传递到了输出,其实并不是传递,这其实是计算的结果层层汇总。反向传播梯度从输入往输出传播的过程,其实也是层层计算的过程。当所有的节点接受到上游传来的梯度的时候,你也可以把它想象成函数输出向所有门发出的一个信号,指示所有的门应该如何变化才能使整个输出变大。