池化与时间池化

Pooling vs Pooling-over-time

我从概念上理解 max/sum 池中发生的事情作为 CNN 层操作,但我看到这个术语 "max pool over time" 或 "sum pool over time" 随处可见(例如,"Convolutional Neural Networks for Sentence Classification" Yoon Kim 的论文)。有什么区别?

max-over-time pooling 通常应用于 NLP(不同于普通的 max-pool,后者在 CNN 中常见用于计算机视觉任务),因此设置略有不同。

max-over-time 池化的输入是一个特征图 c = [c(1), ..., c(n-h+1)],它是在一个长度为 n 的句子和一个大小为 h 的过滤器上计算得出的。卷积运算与图像非常相似,但在这种情况下,它应用于单词的一维向量。这就是公式(3)中的paper.

随时间变化的最大池化操作非常简单:max_c = max(c),即,它是在整个特征图上获得最大值的单个数字。之所以这样做,而不是像 CNN 中的 "down-sampling" 句子,是因为在 NLP 中,句子在语料库中自然具有不同的长度。这使得不同句子的特征映射不同,但我们希望将张量减小到固定大小,以便最后应用 softmax 或回归头。如论文中所述,它允许捕获最重要的 特征,每个特征图具有最高值。

请注意,在计算机视觉中,图像通常是 1 个相同大小的图像,例如 28x2832x32,这就是为什么不需要下采样该特征立即映射到 1x1

Sum-pooling-over-time 是一样的。


1现代CNN可以用不同大小的图像进行训练,但这需要网络是全卷积的,所以它没有任何池化层。有关详细信息,请参阅

最大池化通常应用于二维特征平面中的区域,而随着时间的推移最大池化发生在一维特征向量上。

这是来自斯坦福大学 CS231n 的最大池化演示:

随着时间的推移最大池化采用一维特征向量并计算最大值。 "over time" 只是意味着这发生在时间维度上,对于某些顺序输入,例如一个句子,或者您链接的论文中一个句子中所有短语的串联。

例如:

[2, 7, 4, 1, 5] -> [7]

来源:CS224d Lecture 13 slides