【问题标题】:Why do LSTM forget gates take in new inputs?为什么 LSTM 遗忘门会接受新的输入?
【发布时间】:2020-08-01 01:54:00
【问题描述】:
我正在关注LSTMs的这个解释
在图中所示的门示例之一中,它们显示了遗忘门采用旧的单元状态值(等于先前的隐藏状态?)以及新的输入。
我的问题有两个:
1) 如果遗忘门应该调节对先前单元状态的记忆,为什么需要接受新的输入?不应该只在输入门中处理吗?
2) 如果输入门决定将哪些新信息添加到单元状态,为什么我们还要在输入门中输入先前的单元状态?那个规定不是应该已经在遗忘门发生了吗?
总的来说,这里似乎有一些多余的过程。
【问题讨论】:
标签:
machine-learning
deep-learning
neural-network
lstm
recurrent-neural-network
【解决方案1】:
以下是 LSTM 方程:
当您查看这些方程式时,您需要在头脑中区分出门是如何计算(第 1 到 3 行)以及它们是如何应用(第 5 行和第 3 行)。 6)。它们被计算为隐藏状态h 的函数,但它们被应用于内存单元c。
它们显示遗忘门接收旧的单元状态值(等于先前的隐藏状态?)以及新的输入。
让我们具体看一下第 2 行计算的forget 门。它的计算将当前输入x[t] 和最后一个隐藏状态h[t-1] 作为输入。 (请注意,您评论中的断言不正确:隐藏状态与记忆单元不同。)
事实上,第 1 行到第 3 行中的所有 input、forget 和 output 门都统一计算为采用 x[t] 和 h[t-1] 的函数。从广义上讲,这些门的值取决于当前输入是什么以及之前的状态是什么。
直接回答您的问题:
1) 如果遗忘门应该调节对先前单元状态的记忆,为什么需要接受新的输入?不应该只在输入门中处理吗?
不要将门的计算方式与应用方式混淆。看看第 5 行中如何使用f 遗忘门来执行您提到的调节。遗忘门仅适用于前一个存储单元c[t-1]。您可能知道,门只是浮点小数的向量,它被用作逐元素乘法。在这里,f 门将与c[t-1] 相乘,从而保留一些c[t-1]。在同一行 5 中,i 输入门对新的候选存储单元 c-tilde[t] 执行相同的操作。第 5 行的基本思想是新的记忆单元c[t]将一些旧记忆单元和一些新的候选记忆单元混合在一起。
第 5 行是 LSTM 方程中最重要的一个。您可以在 GRU 方程中找到类似的线。
2) 如果输入门决定将哪些新信息添加到单元状态,为什么我们还要在输入门中输入先前的单元状态?那个规定不是应该已经在遗忘门发生了吗?
同样,您需要区分门是如何计算和如何应用的。输入门确实控制了向单元状态添加哪些新信息,正如我在上面写的那样,这是在第 5 行执行的。