具有多对一设置的RNN - 要使用的输出

时间:2018-05-10 10:00:11

标签: python machine-learning recurrent-neural-network pytorch rnn

我经历了一系列机器学习示例,这些示例使用RNN进行文档分类(多对一)。在大多数教程中,使用最后一个时间步的RNN输出,即,将其输入一个或多个密集层以将其映射到类的数量(例如,[1][2])。

但是,我还遇到了一些例子,其中使用了所有时间步长的输出的平均值而不是最后一个输出(平均合并?,例如[3])。此平均输出的尺寸当然与上一次输出的尺寸相同。从计算上看,两种方法都是一样的。

我现在的问题是,两种不同方法之间的直觉是什么。由于递归性质,最后一个输出也反映了前一时间步的输出。那么为什么在所有时间步骤中平均RNN输出的想法。什么时候用?

1 个答案:

答案 0 :(得分:1)

随时间推移汇总是一种特定技术,用于从输入序列中提取要素。来自this question

  

这样做的原因是,在NLP中,句子中的句子自然地具有不同的长度,而不是像在CNN中那样“下采样”句子。这使得不同句子的特征映射不同,但我们希望将张量减小到固定大小以最终应用softmax或回归头。如本文所述,它允许捕获最重要的特征,每个特征映射具有最高值。

这里需要注意的是,max-over-time(或平均时间)通常是中间层。特别是,它们中的一些可以连续或并行(具有不同的窗口尺寸)。网络产生的最终结果仍然可以是多对一或多对多(至少在理论上)。

但是,在大多数情况下,RNN有一个输出。如果输出必须是序列,则此输出通常被馈送到另一个RNN。所以这一切归结为如何学习这个单一的值:在整个序列中采用最后一个单元格输出或聚合或应用注意机制等。