池化与随时间的池化

Posted

技术标签:

【中文标题】池化与随时间的池化【英文标题】:Pooling vs Pooling-over-time 【发布时间】:2018-07-11 00:08:45 【问题描述】:

我从概念上理解 max/sum 池中发生的事情作为 CNN 层操作,但我看到这个术语“随时间变化的最大池”或“随时间变化的总和池”(例如,"Convolutional Neural Networks for Sentence Classification" 论文尹金)。有什么区别?

【问题讨论】:

你在哪里看到这个词? 参见例如arxiv.org/pdf/1408.5882.pdf - 搜索“max-over-time”。在图中它指的是这种池化方法。 【参考方案1】:

max-over-time pooling 通常应用在 NLP 中(不像普通的 max-pool,在 CNN 中很常见,用于计算机视觉任务),所以设置有点不同。

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

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

请注意,在计算机视觉中,图像通常1大小相同,例如28x2832x32,这就是为什么没有必要立即将特征图下采样到1x1

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


1 现代 CNN 可以用不同大小的图像进行训练,但这要求网络是全卷积的,因此它没有任何池化层。详情请见this question。

【讨论】:

关于你的脚注:我相信 Global Average Pooling 支持不同尺寸的输入图像。 正确。好评论。但它更接近 1x1 卷积,而不是 avg-pool 层,因此网络仍然不会有普通的池化层。 说真的?!他们强制固定大小层的方式是取最大值并将单个数字作为层?这对我来说似乎很疯狂。那么他们如何在最后应用一个 softmax 层呢?【参考方案2】:

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

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

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

例如:

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

来源:CS224d Lecture 13 slides

【讨论】:

虽然这绝对正确,但这与上面的 NLP 相关问题无关,而与计算机视觉有关。

以上是关于池化与随时间的池化的主要内容,如果未能解决你的问题,请参考以下文章

池化(下采样)是什么?图像池化与卷积的区别

tensorflow中的池化函数解析

tensorflow中的池化函数解析

神经网络中的池化层(pooling)

Java装箱==的池化坑

高可用的池化 Thrift Client 实现(源码分享)