也许我们写下函数的矩阵格式后,更容易理解池化层的导数max{x}=xW,其中x是张量。让我们看一个具有四个不同值的示例,x = [x1, x2, x3, x4]并且x1是最大值,例如max{x} = x1。现在,max{x}可以写成矩阵乘法,这样xW or Wx', where W = [I(x1>x2)*I(x1>x3)*I(x1>x4), I(x2>x1)*I(x2>x3)*I(x2>x4), I(x3>x1)*I(x3>x2)*I(x3>x4), I(x4>x1)*I(x4>x2)*I(x4>x3)]' = [1, 0, 0, 0]', whereI(.)是比较两个值的识别函数。通常,反向传播算法需要两个导数 ---dWx/dx =W' (W transpose)和dWx/dW = x'--- 来分别更新前一层和当前层的权重或偏差。但是,在最大池化的情况下,不需要更新W. 因为我们可以并且已经写下了最大池化层函数的封闭形式,即W=[I(x1>x2)*I(x1>x3)*I(x1>x4), I(x2>x1)*I(x2>x3)*I(x2>x4), ...]'. 现在要dWx/dx知道,我们有dWx/dx =W' = [1, 0, 0, 0],W'然后可以作为一个成员适当地插入到派生链中。
通常,max{x}可以写成线性函数,这样Wx (or xW), 其中W是一个矩阵,其条目是一组识别函数的生成,例如I(x1>x2)*I(x1>x3)*I(x1>x4)。的一个性质W是,在一列中,只有一个条目是1,其他的都是0。由于这个线性函数的权重已经确定,不需要再使用梯度下降来更新它了。至于max{x}使用链式法则更新前几层的权重和偏差的情况,我们知道dWx/dx =W'。