Answers:
对于非最大值没有梯度,因为稍微改变它们不会影响输出。此外,相对于实际达到最大值的输入,最大值与斜率1局部线性相关。因此,来自下一层的梯度仅传递回达到最大值的那个神经元。所有其他神经元的梯度为零。
因此,在您的示例中,将是全零的向量,除了第个位置将得到一个值,其中
最大池
因此,假设您有一个位于P层之上的P层。然后,向前通过将是这样的:
,
其中是P层的第i个神经元的激活,f是激活函数,W是权重。因此,如果推导得出,则通过链式规则,您将得到如下所示的渐变流:
。
但是现在,如果您具有最大池化,则 表示最大神经元,表示所有其他神经元,因此表示上一层的最大神经元,表示所有其他神经元神经元。所以:
,
@ Shinvu的答案写得很好,我想指出一个解释MAX()操作的梯度视频和这一个计算图表是快速的掌握之中!
在实现maxpool操作(计算图-您的NN体系结构中的计算节点)时,我们需要一个函数来创建一个“掩码”矩阵,该矩阵跟踪矩阵的最大值。True(1)表示最大值在X中的位置,其他条目为False(0)。我们跟踪最大值的位置,因为这是最终影响输出的输入值,因此也影响了成本。反向传播算法是根据成本计算梯度,因此任何影响最终成本的梯度都应为非零。因此,反向传播将使梯度“传播”回影响成本的特定输入值。