首页 > 解决方案 > 在 LSTM 中,[h(t-1)] 的大小如何与 [h(t)] 相同?

问题描述

我似乎无法在任何地方找到这个特定问题的答案。我正在从头开始重新创建 LSTM,因为我想更好地理解它。

我已经列出了我目前对 LSTM 的理解,并将其附加到这篇文章中。

如果它采用 h(t-1) 并将其与 x(t) 连接,则将生成一个比 h(t-1) 更大的向量。稍后将 Sigmoid 应用于此连接向量,并将 tanh 应用于单元状态,然后将它们相乘。这会产生新的隐藏状态。

那么 h(t) 的大小如何不大于 h(t-1)?为什么隐藏状态不会随着每个时间步长而增长?

插图

标签: artificial-intelligencelstm

解决方案


嗯,图中的一些步骤里面隐藏了一些投影步骤。图中的“sigmoid”符号实际上意味着将 sigmoid 函数应用于线性投影操作的输出。那是; 用于 @矩阵乘法,numpy样式,您不是简单地采用sigmoid([h(t-1); x(t)]),您实际上是采用sigmoid(W @ x(t) + U @ h(t-1))(暂时不考虑偏差项),W, U具有学习参数的投影矩阵在哪里。

在矩阵域中,这在数学上确实等同于连接hx(t) = [h(t-1); x(t)]和学习一些V适当大小的参数,这V @ hx(t)就是你的 sigmoid 的输入。实际上,V只是U, W从上方(按此顺序)的水平串联。

现在,让我们完成图中的示例。您有h(t-1)with shape(3,)x(t)with shape (2,),我们将学习Wshape(3, 2)Uwith shape(3, 3)以产生 shape 的最终输出(3,),这与h(t-1). 请注意,如果我们决定将其表示为hx(t)带有 shape的连接向量(5,),实际上,我们可以水平合并U, W 以达到带有 shape 的东西(3, 5)——这仍然会产生所需 shape 的最终输出(3,)

要达到h(t),您需要使用单元状态项(在图中标记的节点处)再进行一次元素乘法x,但结果也有形状(3,)

Wikipedia 页面还提供了所有操作和维度的精确概述,这是Gers、Schmidhuber 和 Cummins 的第 2 节中提供的方程的更紧凑形式。


推荐阅读