池化层反向传播公式推导

重点

  • 根据不同类型,上采用上层反向传入的梯度信息

池化层反向传播公式推导

池化层在深度学习网络架构中的作用包括:
* 减少计算量
减少特征图尺寸,减少后面的层的计算量

  • 提高多尺度信息
    如果存在多个池化层,就相当于网络中构造了一个多尺度特征金字塔,多尺度金字塔有利于提高检测/识别的稳定性

上述是池化层的优势,但是随着研究的深入,池化层的劣势也逐渐被发现,比如有实验发现”均值池化不利于网络的收敛”,至于网络稳定性的问题,也有文献怀疑resnet这之类加深网络结构的优化会降低网络对目标位置误差的鲁棒性,池化带来的优势被抵消了不少,感觉是一个鸡肋般的层.

不论如何,池化层目前还是被广泛使用的,本文主要说明池化层如何进行反向误差传播的.

BP算法的具体推导可以参考BP反向传播公式推导,其中推导了梯度信息从 k 层传递到 k 1 层的公式如下:

δ i k 1 = δ j k g ( a j k ) w i k

池化层是没有激励函数的,可以认为激励函数 g ( x ) = x ,其导数 g ( x ) =1.
池化层也没有可学习的权重 w ,可以认为 w = 1
所以上面的反向传播公式简化成

δ i k 1 = δ j k

似乎很简单,直接复制就可以了,但是池化层是会改变特征图尺寸的,所以上面等式两边的尺度不同,不能直接复制. 解决方法就是根据池化层类型,对梯度信息做上采样,令尺度相同.

  • 均值池化
    为了简单起见,假设池化层的 k e r n e l _ s i z e = s t r i d e s .如果 k e r n e l s i z e = n ,则输出特征图中一个元素对应着 n × n 个输入元素. 反向传播时,把反向传播进来的梯度平均分配给
    n × n 个元素,达到上采样的目的

  • 最大值池化
    和均值池化类似,但是不是平均分配,而是直接复制给 n × n 个元素中, 输入值最大的那个元素. 具体实现时,forward()时可以记录下max pooling取最大值的元素位置,反向时直接根据这个记录进行复制

猜你喜欢

转载自blog.csdn.net/z0n1l2/article/details/80892519