RNN-LSTM的简单理解

Recurrent Neural Network

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

RNN-Slot Filling

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

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

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

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

destination 和 time 就是两个slot。所以我们就希望我们的machine是这样的
在这里插入图片描述

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

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

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

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

  • RNN 的一般类型:

    • Elman Network
      在这里插入图片描述

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

    • Jordan Network

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

    • Bidirectional RNN

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

  • Long short-term Memory (LSTM)

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

    • LSTM Neural Network

      上面只是对LSTM单元的一个简单理解,具体到网络结构去理解LSTM时,可以将我们之前的神经网络中的神经元替换为LSTM的memory cell,区别大都在于一般神经网络的神经元接收的一个输入,而LSTM是4个输入。

      下面这幅图则是更加详细的理解, c t − 1 c^{t-1} ct1是指由各个memory cell组成的一个记忆向量(只是我这么叫而已),对于当前元素的标注,我们首先需要将元素 x t x^t xt经过4种矩阵转换从而成为相应的4中输入( z f , z i , z , z o z^f,z^i,z,z^o zf,zi,z,zo)。之后具体的计算过程与前面所述类似:
      c t = c t − 1 × σ ( z f ) + σ ( z i ) × z y t = σ ( c t ) × σ ( z o ) c^t = c^{t-1} \times \sigma(z^f) +\sigma(z^i)\times z \\ y^t = \sigma(c^t) \times \sigma(z^o) ct=ct1×σ(zf)+σ(zi)×zyt=σ(ct)×σ(zo)
      在这里插入图片描述
      这还不够,hhhh。上面也只是最简单的LSTM,正常使用时形成 z f , z i , z , z o z^f,z^i,z,z^o zf,zi,z,zo还是需要 c t − 1 , h t − 1 c^{t-1},h^{t-1} ct1,ht1的参与的。
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T9IFFiAU-1571749659522)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\1571746467242.png)]

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值