我在跟进LSTM的这个解释
在其中一个关于门的示意图中,他们展示了遗忘门接收旧的细胞状态值(它等于之前的隐藏状态吗?)以及新的输入。
我的问题有两个方面:
1) 如果遗忘门应该调节前一个细胞状态的记忆,为什么需要接收新输入?这不应该完全由输入门处理吗?
2) 如果输入门决定将哪些新信息添加到细胞状态中,为什么我们还要在输入门中输入之前的细胞状态?这种调节不应该已经在遗忘门中完成吗?
总的来说,这里似乎有一些冗余的过程。
回答:
以下是LSTM的方程:
当你查看这些方程时,你需要在心理上区分门是如何被计算的(第一到第三行)和它们是如何被应用的(第五和第六行)。它们被计算为隐藏状态h
的函数,但它们被应用于记忆细胞c
。
他们展示了遗忘门接收旧的细胞状态值(它等于之前的隐藏状态吗?)以及新的输入。
让我们具体看看第二行计算的forget
门。它的计算接收当前输入x[t]
和最后的隐藏状态h[t-1]
作为输入。(请注意,你的评论中的断言是错误的:隐藏状态与记忆细胞不同。)
事实上,第一到第三行的input
、forget
和output
门都是统一计算为接收x[t]
和h[t-1]
的函数。从广义上讲,这些门的数值基于当前输入是什么以及之前的状态是什么。
直接回答你的问题:
1) 如果遗忘门应该调节前一个细胞状态的记忆,为什么需要接收新输入?这不应该完全由输入门处理吗?
不要混淆门是如何被计算的和它们是如何被应用的。看看第五行中f
遗忘门是如何被用来执行你提到的调节的。遗忘门只被应用于前一个记忆细胞c[t-1]
。如你可能知道的,一个门只是一个浮点分数数值的向量,它被作为逐元素乘法应用。在这里,f
门将与c[t-1]
相乘,结果是c[t-1]
的某些部分被保留。在同一行的第五行,i
输入门对新的候选记忆细胞c-tilde[t]
做同样的事情。第五行的基本思想是新的记忆细胞c[t]
是将旧的记忆细胞和新的候选记忆细胞的一部分混合在一起。
第五行是LSTM方程中最重要的一行。你可以在GRU方程中找到类似的行。
2) 如果输入门决定将哪些新信息添加到细胞状态中,为什么我们还要在输入门中输入之前的细胞状态?这种调节不应该已经在遗忘门中完成吗?
同样,你需要区分门是如何被计算的和它们是如何被应用的。输入门确实调节了哪些新信息被添加到细胞状态中,这是我在上面写的第五行中完成的。