李宏毅机器学习笔记-12.1 循环神经网络(Recurrent Neural Network-RNN)- part 1

Recurrent Neural Network(RNN) - 循环神经网络(part 1)


1 从一个例子说起

  • 假设要做一个智能客服系统或者智能订票系统之类的,需要用到一个叫做 Slot Filling 的技术,举个例子,如果做一个人对智能订票系统说 ”I would like to arrive Taipei on November 2nd“。那么你的系统会有一些 Slot,在这里应该是 Destinationtime of arrival ,然后根据对方的话讲一些词填入到这些 Slot 中。具体如下图:

    1526519201203

  • 那应该要怎么实现以上的 Slot Filling 呢?可以考虑用之前学过的 前馈神经网络(Feedforward Neural NetWork),将输入的单词转换成向量的形式输入神经网络进行学习。将单词转换成向量的方法有很多,这里就不详细说明。

    1526519547272

  • 那以上的方法真的可行吗? 想一下输入的两个句子是

    1. arrive Taipei on November 2nd.
    2. leave Taipei on November 2nd.

    第一句中的 Taipei 表示的是目的地,而第二句中的表示的是出发地,但是我们的前馈神经网络是无法分辨这种情况的,因为前馈神经网络并不知道在 Taipei 之前是什么单词。也就是说,因为前馈神经网络没有记忆性。

2 Recurrent Neural Network(RNN)

  • RNN 具有记忆性,而这是通过设置一些内存单元实现的,如在下图中,a1a2 就表示内存,其中存的值就是 hidden layer 的输出。并且,a1a2 同样会被当成输入。

    1526520642712

  • 假设所有的 weight 都是 1bias 都是 0a1a2 的初始值是 0, σ(z)=z σ ( z ) = z ,

    1. 第一次的输入为 [1, 1] ,那 hidden layer 的输出就是 [2, 2],同时 a1a2 也会被更新为 [2, 2],output = [4, 4].
    2. 第二次的输入为 [1, 1] ,那 hidden layer 的输出就是 [6, 6],同时 a1a2 也会被更新为 [6, 6],output = [12, 12].
    3. 第三次的输入为 [2, 2] ,那 hidden layer 的输出就是 [16, 16],同时 a1a2 也会被更新为 [16, 16],output = [32, 32].
  • 如上,前两次输入是一样的,但是因为有“记忆性”,所以两次的输出不一样。并且我们注意到,现在这个 RNN 对顺序是敏感的,也就是说,如果我们把第三次输入换到第一次,那么整个输出的结果都会改变。

    1526521584756

  • 以上介绍的叫做 Elman NetworkRNN 还有很多其他的变体,比如 Jordan Network,还有 双向的RNN,即 Bidirectional RNN

    1526522692266

    1526522705370

  • 以上的这些都是一些 RNN 的 simple 版本,接下来的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值