TL;DR这是一个带有图表的漂亮解释:来源。
讲话:
细胞状态本质上是长期记忆嵌入(如果我错了,请纠正我)
嵌入可以是长期或短期的,它是一个向量。
回答:
为什么将之前的隐藏状态、当前输入和偏差放入一个 sigmoid 函数中?sigmoid 是否有一些特殊的特征可以创建一个重要的嵌入向量?
摘自来源:
sigmoid 层输出 0 到 1 之间的数字,描述应该让每个组件的多少。值 0 表示“不让任何东西通过”,而值 1 表示“让所有东西通过!”
形式上,忘记向量是:
F吨= σ(WF⋅ [Ht - 1,X吨] , +bF)
所以我们看到它实际上是一个线性操作,然后是一个非线性操作,它将值限制在 0 和 1 之间。这之后是对前一个单元状态的元素操作。那就是我们“门”/“过滤”之前的细胞状态:
Ct - 1⊙F吨,
在哪里⊙是逐元素乘法。
因此,我们看到遗忘门实际上就像一个门:它要么让值通过,要么将它们推向零。因此,它的目的是分配要忘记/记住的值。
回答:
前一个输入和当前输入的隐藏状态与偏差的连接如何帮助忘记什么?
这种连接考虑了“滚动”隐藏状态和当前输入。也就是说,线性运算会产生一个新向量,该向量可以看作是当前输入的“考虑嵌入”以及过去输入和单元状态的“总结”。然后 sigmoid 将这个“考虑嵌入”转换为忘记向量。
总之,遗忘门的主要目的是形成一个介于 0 和 1 之间的值向量。这个向量是通过考虑当前输入和先前的隐藏状态得到的。该向量用于通过逐元素乘法来忘记/记住先前单元状态的部分。所以,不,它不是一个黑匣子,它是一种高度考虑时间的非线性操作。
额外的直觉 - 更多的数学
回想一下,将右侧的矩阵乘以列向量会产生一个向量,该向量是矩阵列的线性组合。所以每一列WF可以看作是一列“切换”,向上推到 1 或拉到 0(一旦我们应用 sigmoid)。也就是说,列WF形成“切换空间”的一种“基础”。
当我们连接形成[Ht - 1,X吨]然后相乘,我们看到这个术语WF⋅ [Ht - 1,X吨]考虑隐藏状态和输入。也就是说,两者Ht - 1和X吨有手在切换门。
LSTM 从数据中学到了如何使这种切换“有意义”。下面是一个简单的象形图示例。
那是,WF⋅ [Ht - 1,X吨]将是列空间中的向量WF(即“切换空间”)。因此,连接的向量将“指向”列(“toggle”)空间中的最佳“toggle”WF. 这个“切换”然后被转换为“门空间”中的“门”。
如此直观地,忘记组件的范围是一种“门空间”,其中域是所有形式的向量[Ht - 1,X吨]. 正式地:
F吨: [Ht - 1,X吨] ↦G吨
也就是说,遗忘门学习了从连接隐藏/输入域到可能门范围的最佳映射。
重要的提示
LSTM 只是众多类型的遗忘门映射中的一种。主要的收获是 LSTM在许多应用程序中都是凭经验工作的。
那就是忘记门是一般“门映射”的一个实例:
F吨:v吨↦G吨,
在哪里v吨可以是任意数量的连接产生的任意数量的向量。
结论
过去的一些数据与当前时间步无关。我们需要一种正确“忘记”无关信息的方法。“忘记”的一种方法是使用忘记门映射(如 LSTM 中的那个)。然后我们需要优化那个遗忘门的参数。在常见的 LSTM 架构中使用了一种实现。最后,前一个隐藏状态的连接为当前输入提供了上下文信息,这对遗忘非常有帮助。
更多数学直觉
这是从动态的角度来看 LSTM 中正在发生的事情的另一种观点:视频。