我从概念上理解最大/总和池中发生的事情作为 CNN 层操作,但我看到这个术语“随时间变化的最大池”或“随时间变化的总和池”(例如,“用于句子分类的卷积神经网络” Yoon Kim 的论文)。有什么区别?
2 回答
max-over-time pooling 通常应用在 NLP 中(与普通的 max-pool 不同,后者在 CNN 中很常见,用于计算机视觉任务),因此设置略有不同。
max-over-time pooling 的输入是一个特征图c = [c(1), ..., c(n-h+1)]
,它是在一个长度为的句子n
和一个大小为 的过滤器上计算的h
。卷积运算与图像运算非常相似,但在这种情况下,它应用于单词的一维向量。这就是论文中的公式(3) 。
max-over-time pooling 操作非常简单:max_c = max(c)
即,它是一个在整个特征图上获得最大值的单个数字。这样做的原因,而不是像在 CNN 中那样“下采样”句子,是因为在 NLP 中,句子在语料库中自然具有不同的长度。这使得不同句子的特征图不同,但我们希望将张量减小到固定大小以最终应用 softmax 或回归头。如论文所述,它允许捕获最重要的特征,即每个特征图具有最高值的特征。
请注意,在计算机视觉中,图像通常是相同大小的128x28
,例如或32x32
,这就是为什么没有必要1x1
立即对特征图进行下采样。
Sum-pooling-over-time 是相同的。
1现代 CNN 可以用不同大小的图像进行训练,但这要求网络是全卷积的,因此它没有任何池化层。有关更多详细信息,请参阅此问题。
最大池化通常适用于 2d 特征平面中的区域,而随着时间的推移,最大池化沿 1d 特征向量发生。
这是斯坦福CS231n的最大池化演示:
随着时间的推移,最大池化采用一维特征向量并计算最大值。“随着时间的推移”只是意味着对于某些顺序输入(例如句子)或句子中所有短语的串联(如您链接的论文中),这是沿着时间维度发生的。
例如:
[2, 7, 4, 1, 5] -> [7]