RNN 的中间隐藏状态有啥用处?
Posted
技术标签:
【中文标题】RNN 的中间隐藏状态有啥用处?【英文标题】:What is a good use of the intermediate hidden states of an RNN?RNN 的中间隐藏状态有什么用处? 【发布时间】:2021-05-29 21:29:02 【问题描述】:所以我以三种不同的能力使用了 RNN/LSTM:
-
多对多:使用最后一层的每个输出来预测下一层。可能是分类或回归。
多对一:使用最终隐藏状态执行回归或分类。
一对多:获取潜在空间向量,可能是 LSTM 编码器的最终隐藏状态,并使用它来生成序列(我以自动编码器的形式完成了此操作)。
在这些情况下,我都没有使用中间隐藏状态来生成最终输出。在 #1 情况下只有最后一层输出,在 #2 和 #3 情况下只有最后一层隐藏状态。然而,PyTorch nn.LSTM/RNN
返回一个包含每一层最终隐藏状态的向量,所以我假设它们有一些用途。
我想知道这些中间层状态的一些用例是什么?
【问题讨论】:
【参考方案1】:没有明确要求您只使用最后一层。您可以针对序列中的每个位置(或者在最后,如果您对整个序列进行分类)将所有层输入到最终分类器 MLP。
作为一个实际示例,请考虑使用 ELMo 架构来生成上下文化(即令牌级)词嵌入。 (论文:https://www.aclweb.org/anthology/N18-1202/)表示是多层 biRNN 的隐藏状态。 论文中的图 2 显示了不同层在有用性方面的差异,具体取决于任务。作者建议低层编码语法,而高层编码语义。
【讨论】:
我指的是堆叠 RNN 意义上的层。对于长度为T
的输入,带有N
层的RNN 会为您提供两个输出:首先,[1, T]
中每个时间步t
的层N
的output
。二是h_n
,也就是向量[h_T_1, ..., h_T_N]
。这是从 1 到 N 的每一层的最终隐藏状态。我相信这是约定,正如 PyTorch 文档的这个可视化表示所说明的那样:***.com/a/48305882/3696204 所以我要问的是具体h_n = [h_T_1, ... , h_T_N]
你能编辑吗你的回答让我知道我们在同一页上。
是的,这是使用该术语的自然方式。我对流行的词嵌入方法 ELMo 的评论适用于这种情况。
好的,所以你的答案成立?在我继续之前,我只是想确保我们说的是同一种语言。
是的!我们是。我删除了答案的不相关的后半部分。
太棒了,谢谢艾莉亚。我已将您链接的论文添加到我不断增长的“要阅读的论文”书签文件夹中。以上是关于RNN 的中间隐藏状态有啥用处?的主要内容,如果未能解决你的问题,请参考以下文章