东阳的学习记录,坚持就是胜利!
文章目录
RNN的应用场景
- Slot Filling(填空):eg: I would like to arrive 地 点 ‾ \underline{地点} 地点 on 时 间 ‾ \underline{时间} 时间
- 在1的基础上,需要判断出发地(leave)和目的地(arrive)
考虑以上两个需求,我们可以看到,如果使用传统的神经网络,是无法解决这个问题的。如下图: 我们无法只能将Taipei的前一个单词记为other(不解释)。这就导致了,途中上句和下句是一样的输入,在传统的神经网络中,一样的输入肯定会是一样的输出,故传统方法不可行。
RNN原理剖析
首先看下面这张图,这是最简单的RNN。该图表明了RNN的基本原理,将上次的神经元中的数据保存起来,用到下一次中。
- 初始化memory=0
- input是有序的
通过储存上一次神经元中的数据,这样就保证了,对于同一个输入Taipei,在不同的句子中,得到的output是不一样的。
Jordan Network
Jordan Network存的是output值,据说可以得到比较好的效果。(output时有target的,我们比较清楚memory中的是什么东西。)
Bidirectional RNN
结构如下图,我们可以看到每一个output的得出都是考虑了正向和反向的。
Long Short-term Memory (LSTM)
LSTM的结构如下图:有三个门,门什么时候关闭,什么时候开启时可以学习的。
逻辑图
可以看到当门的输出为0时,代表关闭。
一个例子如下图:
- 当x2 = 1时,将x1加入memory中;
- 当x2 = -1, 清空memory;
- 当x3 = 1, 输出memory中的值。
4组参数的例子(4个门)
- 对于同一个参数xt,使用不同的向量z1, z2, z3, z4…zn将其变为不同输入,输入到神经元中。
总体结构
单个神经元的结构
多层LSTM结构
- C t − 1 C_ t-1 Ct−1: 上一次的memory保存的值(上一次的输出);
- C t C_t Ct: 这一次memory保存的值
- ht-1: 上一次的output
- ht: 本次的output
-
x
t
x_t
xt: 本次的输入;
RNN的常见版本
- LSTM
- GRU
- SimpleRNN