最简单的循环神经网络RNN
Recurrent Neural Network1 Simple Recurrent Neural Network1.1 Elman Network & Jordan Network1.2 Bidirectional RNN2 Long Short-term Memory (LSTM)2.1 LSTM Memory Cell2.2 LSTM Network2.3 Why LSTM?3 Ga
Recurrent Neural Network
本文是 李宏毅机器学习视频中循环神经网络部分的一点笔记。
1 Simple Recurrent Neural Network
1.1 Elman Network & Jordan Network

传说,Jordan Network的performance好一些,因为Elman Network存在memory里的隐含层不包含target的信息,不好控制;Jordan Network将output的值存在memory里,而这output的值包含target信息,所以存在network中的信息更清晰。
附一张Elman Network的例子:
1.2 Bidirectional RNN

双向的RNN,可以让RNN把前前后后都看了之后再输出output。例如,在自然语言处理中,双向RNN看到整句话后,再输出句子里的各单词含义。
Simple RNN 可以随时把值存入memory,也可以随时把值从memory中取出来。
2 Long Short-term Memory (LSTM)
2.1 LSTM Memory Cell

LSTM输入、输出、忘记时,需要相应gate打开。
一个LSTM的cell有4个input和1个output。input包含一个希望存入memory的信息,三个控制gate开关的输入。
具体计算流程如下:
上图中c是上一步LSTM cell的值,c’是这一步LSTM cell的值。forget gate关闭(为0)时,会遗忘;若forget gate打开(不为0)时,则前面的LSTM cell会被传下去。
上图例子中,蓝色为外界输入,x1、x2、x3为输入门、遗忘门、输出门,y为对应输出。
可以手动计算以下例子,注意即使output为0,LSTM cell的值也会更新。
2.2 LSTM Network
一般的Neural Network长这样:
把上图中的neurons替换为LSTM Cell,即为LSTM Network:
因为每个LSTM Cell都要4个不同的input才能有一个output,所以当neurons数目一样时,LSTM Network的参数量会是一般Neural Network的4倍。

输入Xt,乘上4个不同的矩阵,进行线性变换,得到4个vectors Z,四个Z的维数与cell数目一致,分别操控各个cell的input。
这里,不是矩阵内积,而是元素对应相乘(element wise)。
真正的LSTM cell并不是只input x t x^{t} xt,而是会在每一个cell的input中同时考虑 c t − 1 、 h t − 1 、 x t c^{t-1}、h^{t-1}、x^{t} ct−1、ht−1、xt。
LSTM is quite standard now.
Don’t worry if you cannot understand this. Keras can handle it. Keras supports “LSTM”, “GRU”, “SimpleRNN” layers
2.3 Why LSTM?
用于解决RNN梯度消失的问题。
RNN:


如上图,RNN中的memory与input相乘,替换掉先前的memory,导致 ω \omega ω的 gradient vanishing 与 gradient explode,不好设置learning rate。
LSTM 中memory与input相加,所以前期input的影响不会消失,即梯度不会消失,可以把learning rate设得小一些。
同时,要注意forget gate 需要比较大的bias,保证大部分时候gate打开,input能保留下来。
3 Gated Recurrent Unit (GRU)
LSTM有4个input,GRU只有3个input,参数更少,更鲁棒,overfitting情况更少。
具体而言,GRU将input gate与 forget gate联动起来,即input gate打开,forget gate就会关闭,也就是忘记以前的值,才能记下新的值。 简言之,旧的不去,新的不来。
相关链接:
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)