课件下载地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/Lecture/RNN (v2).pdf
视频:https://www.bilibili.com/video/av9770190/?p=25
讲解LSTM最好的文章:http://colah.github.io/posts/2015-08-Understanding-LSTMs/
RNN是一种比较复杂的网络结构,每一个layer还会利用上一个layer的一些信息。
比如说,我们要做slot filling的task。我们有两个句子,一个是“arrive Taipei on November 2nd”,另一个是“leave Taipei on November 2nd”。我们可以发现在第一个句子中,Taipei是destination,而第二个句子中Taipei是departure。如果我们不去考虑Taipei前一个词的话,Taipei的vector只有一个,那么同样的vector进来吐出的predict就是一致的。所以我们在做的时候就需要把前一个的结果存起来,在下一个词进来的时候用了参考。
所以这样我们就在neuron中设计一个hidden layer来存储这个值,如下图中a1,a2所示,相当于让神经网络拥有记忆能力。
我们用这个网络来举例。假设我们每个weight都是1,bias=0,每个activation都是linear的。那么我们现在有一个序列(1,1),(1,1),(2,2),那么一开始memory里面的值是(a1=0,a2=0),现在将序列第一个值传入network,我们得到(x1=1,x2=1),因为active function都是linear的,所以经过第一个hidden layer,我们输出的就是1×a1+1×a2+1×x1+1×x2,其中a1=a2=0,两个节点一致。所以第一个hidden layer得到(2,2)(绿色方块所示),同时我们将(2,2)保存起来,更新一下得到(a1=2,a2=2),