对LSTM的理解
人类会基于对之前所见词的理解来推断当前词的含义,我们当然不会将所学过的东西全部丢掉,用空白的大脑去思考。所以,我们的思考具有持久性。
而传统的神经网络并不能做到这一点,假设你希望对电影中每个时间点的时间类型进行分类,传统的神经网络很难处理这个问题——使用电影中先前的事件推断后续的事件。
Rnn是包含循环的网络,允许信息的持久化,可以解决这一问题。

神经模块A正在读取输入Xt,并输出一个Hi值,循环可以使得信息传送到下一步。如果不是很容易理解,我们可以把其展开。

从链式特征来看,RNN本质上与序列和列表有关,他们是对于序列和列表最为自然的神经网络架构。
LSTM(Long Short Term)——特殊的RNN,比标准的RNN表现效果还好一点。可以学习长期依赖信息。记住长期的信息是LSTM默认的信息,对于较远的信息,LSTM的表现效果较好。


LSTM和RNN的结构相同,但是单一模块中却拥有不同的结构,这里有四个神经网络层,以特殊的方式进行交互。
LSTM有精心设计的门来筛选信息,包含一个sigmoid层和pointwise乘法操作。

sigmoid层输出0到1的数值来描述多少量可以通过。0表示不允许任何量通过,1表示允许任意量通过。
逐步理解LSTM
LSTM拥有三个门来控制细胞状态,第一步是决定丢弃细胞哪些信息——遗忘门。

遗忘门是以上一层的输出ht-1和本层要输入的序列数据xt作为输入,通过一个激活函数sigmoid,得到ft,其取值在【0,1】区间,表示上一层细胞被遗忘的概率,1是完全保留,0是完全舍弃。
下一阶段是输入门,确定哪些新的信息能够被存放到细胞中——输入门。

输入门包含两个部分,第一部分是sigmoid函数,输出it,第二部分使用tanh激活函数。输出为Ct。此时,ft是遗忘门的输出,控制上一层细胞状态即Ct-1被遗忘的程度,it*Ct是输入门的两个输出乘法运算,表示多少新信息被保留。Ct已经更新,我们将旧状态Ct-1与ft相乘,丢弃掉我们要丢弃的信息,加上it*Ct。此时结果为我们新的候选值。

最后一阶段即输出门,用来控制该层的细胞状态的过滤情况。首先使用sigmoid函数得到【0,1】的区间Ot,然后新的细胞状态Ct通过tanh函数的处理后与Ot相乘,即本层的输出ht。

至此LSTM的结构已经理解了,目前有很多LSTM结构的变体,如流形的LSTM变体。即在门层加了peephole connection,即也接受细胞状态的输入。
