为什么LSTM的遗忘门需要接收新输入?

我在跟进LSTM的这个解释

在其中一个关于门的示意图中,他们展示了遗忘门接收旧的细胞状态值(它等于之前的隐藏状态吗?)以及新的输入。

我的问题有两个方面:

1) 如果遗忘门应该调节前一个细胞状态的记忆,为什么需要接收新输入?这不应该完全由输入门处理吗?

2) 如果输入门决定将哪些新信息添加到细胞状态中,为什么我们还要在输入门中输入之前的细胞状态?这种调节不应该已经在遗忘门中完成吗?

总的来说,这里似乎有一些冗余的过程。


回答:

以下是LSTM的方程:

enter image description here

当你查看这些方程时,你需要在心理上区分门是如何被计算的(第一到第三行)和它们是如何被应用的(第五和第六行)。它们被计算为隐藏状态h的函数,但它们被应用于记忆细胞c

他们展示了遗忘门接收旧的细胞状态值(它等于之前的隐藏状态吗?)以及新的输入。

让我们具体看看第二行计算的forget门。它的计算接收当前输入x[t]和最后的隐藏状态h[t-1]作为输入。(请注意,你的评论中的断言是错误的:隐藏状态与记忆细胞不同。)

事实上,第一到第三行的inputforgetoutput门都是统一计算为接收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) 如果输入门决定将哪些新信息添加到细胞状态中,为什么我们还要在输入门中输入之前的细胞状态?这种调节不应该已经在遗忘门中完成吗?

同样,你需要区分门是如何被计算的和它们是如何被应用的。输入门确实调节了哪些新信息被添加到细胞状态中,这是我在上面写的第五行中完成的。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注