RNN-LSTM的简单理解

Recurrent Neural Network

这是看了台大李宏毅教授的关于RNN的课程后的一个学习笔记,写这篇笔记也是为了稍微整理整理思路。其实对LSTM的理解还很表面,目前也是停留在网络结构层面一个粗浅的理解,很多细节方面还未涉及。

RNN-Slot Filling

在将RNN之前,教授拿Slot Filling 作为例子,Slot Filling 中文名称槽填充,任务时读取句子中元素的语义成分,可以看为一个序列标注问题。序列标注问题简单来说就是给定一个一维线性输入序列(x1,x2,,xn)(x_1,x_2,\ldots,x_n),给序列中的每一个元素打上标签集合(l1,l2,,ln)(l_1,l_2,\ldots,l_n)中的某一个标签。

教授在这边举的例子:自动订票系统

当有人对系统说:I would like to arrive Taipei on Novemeber 2nd2_{nd}

这时候系统应该知道,Taipei 是destination ,Novemeber 2nd2_{nd}是time

destination 和 time 就是两个slot。所以我们就希望我们的machine是这样的
RNN-LSTM的简单理解

输出的是输入元素在各个slot的概率,概率最大的就是我们最后确定的slot。

但是,也会有人对系统说:I would like to leave Taipei on Novemeber 2nd2_{nd}

这时候 Taipei是departure 而不是destination。我们是根据leave和arrive来分辨的,这时候我们就同样希望我们的machine有记忆功能,能够记住前面的元素是什么来帮助分辨。

这时候,machine就是这样的。
RNN-LSTM的简单理解
这是教授ppt上的一个示意图。大致意义就是我们在进行第一个元素的标注时,将其隐层输出再作为第二个元素标注时隐层的输入。这样的话,还是刚才那个例子,我们在标注Taipei时是考虑到arrive的。这样的话,作为destination的Taipei和作为departure的Taipei是有可能被分开的。

  • RNN 的一般类型:

    • Elman Network
      RNN-LSTM的简单理解

      这里的网络就是之前提到的那种考虑之前元素的隐层输出。

    • Jordan Network

      RNN-LSTM的简单理解

      这个网络和Elman网络的区别就是,第二个元素的隐层输入变成了前一个元素输出层的输出,一个比较好的解释就是,Elman Network虽然也提供了前一个元素的相关信息,但隐层的输出相对来说信息不太明确,比较来说,输出层提供的输出信息就确定很多。

    • Bidirectional RNN
      RNN-LSTM的简单理解

      双向RNN分别从一个序列的头尾训练数据,这样一来对于序列中的一个元素来说,就即考虑了它前面的元素也考虑了它后面的元素。讲真的只能大概理解,并不能想出来他是怎么训练的。

  • Long short-term Memory (LSTM)

    • LSTM单元
      RNN-LSTM的简单理解
      上图所示是LSTM的一个记忆单元,我们可以很简单的看出来,相比于前面的简单RNN,LSTM对记忆单元增加了很多控制。一个LSTM记忆单元有4个输入,分别为元素的输入,Input Gate通常控制输入的程度, Forgrt Gate 通常控制对原先记忆信息的记忆程度,Output Gate 通常控制输出的程度。照下面这幅图简单情况下,可以这么理解:
      RNN-LSTM的简单理解

    • LSTM Neural Network

      上面只是对LSTM单元的一个简单理解,具体到网络结构去理解LSTM时,可以将我们之前的神经网络中的神经元替换为LSTM的memory cell,区别大都在于一般神经网络的神经元接收的一个输入,而LSTM是4个输入。
      RNN-LSTM的简单理解
      下面这幅图则是更加详细的理解,ct1c^{t-1}是指由各个memory cell组成的一个记忆向量(只是我这么叫而已),对于当前元素的标注,我们首先需要将元素xtx^t经过4种矩阵转换从而成为相应的4中输入(zf,zi,z,zoz^f,z^i,z,z^o)。之后具体的计算过程与前面所述类似:
      ct=ct1×σ(zf)+σ(zi)×zyt=σ(ct)×σ(zo) c^t = c^{t-1} \times \sigma(z^f) +\sigma(z^i)\times z \\ y^t = \sigma(c^t) \times \sigma(z^o)
      RNN-LSTM的简单理解
      这还不够,hhhh。上面也只是最简单的LSTM,正常使用时形成zf,zi,z,zoz^f,z^i,z,z^o还是需要ct1,ht1c^{t-1},h^{t-1}的参与的。
      RNN-LSTM的简单理解