RNN 的中间隐藏状态有什么好的用途?

What is a good use of the intermediate hidden states of an RNN?

所以我使用了 RNN/LSTMs 三种不同的功能:

  1. 多对多: 使用最后一层的每个输出来预测下一层。可以是分类或回归。
  2. 多对一:使用最终隐藏状态进行回归或分类。
  3. 一对多: 取一个潜在的 space 向量,可能是 LSTM 编码器的最终隐藏状态,并用它来生成一个序列(我已经完成这是一个自动编码器的形式)。

在 none 这些情况下,我使用中间隐藏状态来生成我的最终输出。在案例 #1 中只有最后一层输出,在案例 #2 和 #3 中只有最后一层隐藏状态。然而,PyTorch nn.LSTM/RNN returns 一个包含每一层最终隐藏状态的向量,所以我假设它们有一些用途。

我想知道这些中间层状态的一些用例是什么?

没有明确要求您只使用最后一层。您可以将序列中每个位置的所有层都输入到最终分类器 MLP(或者在最后,如果您对整个序列进行分类)。

作为一个实际示例,考虑用于生成上下文化(即标记级)词嵌入的 ELMo 架构。 (此处的论文:https://www.aclweb.org/anthology/N18-1202/)表示是多层 biRNN 的隐藏状态。 论文中的图 2 显示了不同层的用途如何因任务而异。作者建议较低级别编码语法,而较高级别编码语义。