Neural network 理解多层LSTM

Neural network 理解多层LSTM,neural-network,deep-learning,lstm,Neural Network,Deep Learning,Lstm,我试图理解并实现多层LSTM。问题是我不知道他们是如何联系的。我有两个想法: 在每个时间步,第一个LSTM的隐藏状态H将成为第二个LSTM的输入 在每个时间步,第一个LSTM的隐藏状态H将成为第二个LSTM隐藏状态的初始值,第一个LSTM的输入将成为第二个LSTM的输入 请帮忙 我正在接受帮助,只是为了让您理解具体部分,我将把它缩短 如上图所示,LSTM具有链状结构,每个LSTM有四个神经网络层 我们传递给下一个时间戳(单元状态)和下一层(隐藏状态)的值基本相同,它们是所需的输出。此输出将基于

我试图理解并实现多层LSTM。问题是我不知道他们是如何联系的。我有两个想法:

  • 在每个时间步,第一个LSTM的隐藏状态H将成为第二个LSTM的输入

  • 在每个时间步,第一个LSTM的隐藏状态H将成为第二个LSTM隐藏状态的初始值,第一个LSTM的输入将成为第二个LSTM的输入

  • 请帮忙

    我正在接受帮助,只是为了让您理解具体部分,我将把它缩短

    如上图所示,LSTM具有链状结构,每个LSTM有四个神经网络层

    我们传递给下一个时间戳(单元状态)和下一层(隐藏状态)的值基本相同,它们是所需的输出。此输出将基于我们的单元格状态,但将是过滤版本。首先,我们运行一个sigmoid层,它决定我们要输出的单元状态的哪些部分。然后,我们通过tanh(将值推到−1和1)并将其乘以sigmoid门的输出,这样我们只输出我们决定通过的部分

    我们还将以前的单元状态信息(上箭头指向下一个单元)传递到下一个时间戳(单元状态),然后使用sigmoid层(忘记门层)决定我们将继续利用新输入和以前状态的输入来获取多少信息


    希望这有帮助。

    没有明确的答案。这取决于你的问题,你应该尝试不同的事情

    您可以做的最简单的事情是通过管道将第一个LSTM(而不是隐藏状态)的输出作为第二层LSTM的输入(而不是对其应用一些损失)。这在大多数情况下都应该有效

    您也可以尝试通过管道传输隐藏状态,但我并不经常看到它

    您也可以尝试其他组合。假设第二层输入第一层的输出和原始输入。或者从当前单元和上一个单元链接到第一层的输出


    这一切都取决于您的问题,您需要进行实验,看看什么对您有效。

    TLDR:时间t和级别l的每个LSTM单元都有输入x(t)和隐藏状态h(l,t) 在第一层中,输入是实际序列输入x(t)和先前隐藏状态h(l,t-1),在下一层中,输入是先前层h(l-1,t)中对应单元的隐藏状态

    发件人:

    增加GRU网络的容量(Hermans和 Schrauwen 2013),重复层可堆叠在 彼此 由于GRU没有两个输出状态,因此相同的输出隐藏状态h'2 传递到下一个垂直层。换句话说,下一层的h1将等于h'2。
    这迫使GRU学习在深度和时间上都有用的转换。

    在PyTorch中,多层LSTM的实现表明前一层的隐藏状态成为下一层的输入。因此,您的第一个假设是正确的。

    我认为您误解了,我认为图像中的三个框是一个LSTM单元的三个时间步,而不是一个LSTM单元。是的,但我想堆叠多个LSTM单元:(@KhoaNgo堆叠可以是水平的,就像想象所有的盒子相互叠在一起一样,其中一个盒子的输入是下一个盒子的输入,具有自己的隐藏状态。LSTM的实际输出是什么?我读了一些关于LSTM的帖子,我看到它们产生了内存Ct和隐藏状态Ht?@KhoaNgo取决于模型。Ct通常是所有的y你需要输出步进预测的节点(下一个字符或下一个标记,如果你这样训练的话),而隐藏状态通常编码到目前为止的状态(即整个单词/句子)。最后你仍然有一些神经元经过训练,很难准确说出它们的意思(除非你训练他们有某种意义)。你的第一个想法是正确的