循环神经网络(RNN)背后的想法对我很清楚。我以以下方式理解它:
我们有一系列观察()(或换句话说,多元时间序列)。每个单个观测是一个维数值向量。在RNN模型中,我们假定下一个观测值是先前观测值以及先前的“隐藏状态”,其中隐藏状态也由数字表示向量(观察状态和隐藏状态的尺寸可以不同)。还假定隐藏状态本身取决于先前的观察和隐藏状态:
最后,在RNN模型中,函数被假定为神经网络。我们使用可用数据(观察序列)训练(拟合)神经网络。我们训练的目标是能够使用先前的观察结果尽可能准确地预测下一个观察结果。
现在,LSTM网络是对RNN网络的修改。据我了解,LSTM背后的动机是解决RNN特有的短存储问题(常规RNN在相关事件之间存在时间间隔过长的问题)。
我了解LSTM网络是如何工作的。这是我发现的LSTM的最佳解释。基本思想如下:
除了隐藏状态向量之外,我们还引入了一种所谓的“单元状态”向量,该向量具有与隐藏状态向量()相同的大小(维数)。我认为引入了“细胞状态”向量来建模长期记忆。与常规RNN一样,LSTM网络将观察到的和隐藏的状态作为输入。使用此输入,我们可以通过以下方式计算新的“单元状态”:
其中的功能,和由神经网络建模。为了简化表达式,我只需要删除参数:
因此,我们可以看到新的“单元状态向量”()是旧状态向量()和“中间”单元状态向量()的加权和。向量之间的乘法是逐分量的(我们将两个N维向量相乘,结果得到另一个N维向量)。换句话说,我们使用特定分量的权重来混合两个单元状态向量(旧的和中间的一个)。
这是所描述的操作之间的直觉。单元状态向量可以解释为存储向量。第二权重矢量(由神经网络计算出的)是一个“保持”(或忘记)栅极。它的值决定我们是保留还是忘记(擦除)单元状态向量(或长期记忆向量)中的相应值。所述第一权重向量(),这是由另一神经网络计算出的,被称为“写入”或“记忆”门。它决定是否必须保存新的内存(“中间”单元状态向量)(或更准确地说,是否必须保存/写入新的内存)。“中级”向量)。实际上,这将是更准确的说,与两个权重向量(和)我们“混”新老内存。
因此,在上述混合(或忘记和记忆)之后,我们有了一个新的细胞状态向量。然后,我们通过使用另一个神经网络来计算“中间”隐藏状态(像以前一样,我们使用观察状态和隐藏状态作为输入)。最后,我们将新的单元格状态(内存)与“中间”隐藏状态()结合起来,以获得实际输出的新(或“最终”)隐藏状态:
其中是应用于单元状态向量每个分量的S型函数。
因此,我的问题是:为什么该架构(或精确程度)可以解决问题?
我特别不理解以下内容:
- 我们使用神经网络生成“中间”内存(单元状态向量),将其与“旧”内存(或单元状态)混合以获得“新”内存(单元状态)。混合的加权因子也由神经网络计算。但是为什么我们不能仅使用一个神经网络来计算“新”细胞状态(或记忆)。或者换句话说,为什么我们不能将观察到的状态,隐藏状态和旧内存用作计算“新”内存的神经网络的输入?
- 最后,我们使用观察到的状态和隐藏状态来计算新的隐藏状态,然后使用“新”单元状态(或(长期)记忆)来校正新计算出的隐藏状态的组成部分。换句话说,像元状态的成分被用作权重,它们仅减少了计算出的隐藏状态的相应成分。但是为什么以这种特定方式使用细胞状态向量?我们为什么不能通过将细胞状态向量(长期记忆)放入神经网络的输入(也将观察到的和隐藏状态作为输入)来计算新的隐藏状态?
添加:
这是一段视频,可能有助于阐明如何组织不同的门(“保持”,“写入”和“读取”)。