RNN
什么是RNN(Recurrent Neural Network)
在之前的所提到的NN,比如CNN,都是没有记忆性的。但如果我们要求NN能处理上下文的信息,比如下面的航空检票系统:
每次输入一条信息,我们想知道每个单词是属于哪一类(slot),即:构建一个NN,输出每个单词属于每个slot的概率。
在第一条信息时,我们已经知道了Taipei是dest,因此在处理第二条信息我们要能使用这一信息。
这就要求NN有存储功能。这就是RNN的核心。
Elman Network
实际的操作并不复杂:在一些神经处有会有一个存储值,每次操作得到新的值后将其存储起来,留到下次使用。
那回到航空检票系统,做法也和上例类似。看似是用了三个神经元,实际上是一个神经元用了三次,大大减少了开支。
在处理第二条信息时,就会发现:同样的输入可能会有不同的输出。
Jordan Network
Elman Network存储的是神经元的值,而Jordan Network存储的是Output的值。通常效果更好。
Bidirectional RNN
RNN也可以双向训练。
LSTM(Long Short-term Memory)
LSTM的基本架构由3个gate和1个Memory组成,如下图:
- Input Gate:由NN产生一个 z i z_i zi,得到 f