LSTM 的输出是什么

机器算法验证 机器学习 数理统计 深度学习 lstm
2022-03-18 12:30:38

我有两个关于 LSTM 的问题:

1) LSTM 输出的形状/大小是否与输入完全相似?
2)我们可以使用 LSTM 的中间输出来推断某种预测吗?

语境:

我有一个输入作为 10 帧长度的图像帧序列。我将它们提供给 LSTM,并想预测每一帧是否是这两个类之一。现在我得到的输出是每个 LSTM 单元的类似大小的帧。我可以使用这些输出来推断一些预测(例如,在它们之上添加一些密集层)吗?我之所以这么问,是因为我的印象是 LSTM 只能在不同的意义上使用,例如在给定 1-t 帧作为输入的情况下预测第 (t+1) 帧。

提前致谢!

1个回答

基本循环神经网络 (RNN) 单元是将先前隐藏状态 h_{t-1} 和当前输入 x_t 作为输入返回隐藏状态的东西ht1xt

ht=tanh(Whhht1+Wxhxt)

LSTM 也是如此,但正如这篇精彩的博客文章中所描述的,它只是稍微复杂一点。因此,回答您的第二个问题,RNN 单元在每一步都会返回一个可用于进行预测的输出。有两种使用 RNN 的方法,您可以处理整个输入序列并仅查看最后的输出状态(例如处理整个句子,然后对句子的情绪进行分类),或者使用中间结果(在 Keras 中,这是return_sequence=True参数)并进一步处理它们,或进行某种预测(例如,每个句子的每个单词的命名实体识别)。这里唯一的区别是,在第一种情况下,您只需忽略中间状态。如果这太抽象,下图(来自上面提到的博客文章)可能会有所帮助。

简单的RNN网络

如您所见,在每个步骤中,您都有一些输出,它是当前输入和所有历史记录的函数,通过前一个隐藏状态传递。htxtht1

至于隐藏状态的形状,这是一个矩阵代数,所以形状将取决于输入和权重的形状。如果您使用一些预构建软件,例如Keras,那么这由 LSTM 单元的参数(隐藏的数量units)控制。如果您手动编码,这将取决于权重的形状。