LSTM 和GRU的区别
2017-08-31 14:50
531 查看
先给出一些结论:
GRU和LSTM的性能在很多任务上不分伯仲。
GRU 参数更少因此更容易收敛,但是数据集很大的情况下,LSTM表达性能更好。
从结构上来说,GRU只有两个门(update和reset),LSTM有三个门(forget,input,output),GRU直接将hidden state 传给下一个单元,而LSTM则用memory cell 把hidden state 包装起来。
GRU的设计是为了更好的捕捉long-term dependencies。我们先来看看输入ht−1和x(t), GRU怎么通过计算输出h(t):
Reset gate
r(t) 负责决定h(t−1) 对new memory h^(t) 的重要性有多大, 如果r(t) 约等于0 的话,h(t−1) 就不会传递给new memory h^(t)
new memory
h^(t) 是对新的输入x(t) 和上一时刻的hidden state h(t−1) 的总结。计算总结出的新的向量h^(t) 包含上文信息和新的输入x(t).
Update gate
z(t) 负责决定传递多少ht−1给ht 。 如果z(t) 约等于1的话,ht−1 几乎会直接复制给ht ,相反,如果z(t) 约等于0, new memory h^(t) 直接传递给ht.
Hidden state:
h(t) 由 h(t−1) 和h^(t) 相加得到,两者的权重由update gate z(t) 控制。
LSTM 的设计也是为了更好的捕捉long-term dependencies,但是结构上有一些不同,更复杂一些,我们想来看看计算过程:
new memory cell
这一步和GRU中的new memory类似,输出的向量c^(t)都是对新的输入x(t) 和上一时刻的hidden state h(t−1) 的总结。
Input gate
i(t)负责决定输入的x(t) 信息是否值得保存。
Forget gate
f(t)负责决定past memory cell c^(t−1)对c(t) 的重要性。
final memory cell
c(t) 由c^(t−1) 和c^(t) 相加得到,权重分别由 Forget gate 和Input gate 决定
Output gate
这个门是GRU没有的。它负责决定c(t) 中的哪些部分应该传递给hidden state h(t)
GRU:直接传递给下一个unit,不做任何控制
GRU: 计算new memory h^(t) 时利用reset gate 对上一时刻的信息 进行控制。
这个加法的好处在于能防止梯度弥散,因此LSTM和GRU都比一般的RNN效果更好。
Reference:
1. https://cs224d.stanford.edu/lecture_notes/LectureNotes4.pdf
2. Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling
3. https://feature.engineering/difference-between-lstm-and-gru-for-rnns/
GRU和LSTM的性能在很多任务上不分伯仲。
GRU 参数更少因此更容易收敛,但是数据集很大的情况下,LSTM表达性能更好。
从结构上来说,GRU只有两个门(update和reset),LSTM有三个门(forget,input,output),GRU直接将hidden state 传给下一个单元,而LSTM则用memory cell 把hidden state 包装起来。
1. 基本结构
1.1 GRU
GRU的设计是为了更好的捕捉long-term dependencies。我们先来看看输入ht−1和x(t), GRU怎么通过计算输出h(t):
Reset gate
r(t) 负责决定h(t−1) 对new memory h^(t) 的重要性有多大, 如果r(t) 约等于0 的话,h(t−1) 就不会传递给new memory h^(t)
new memory
h^(t) 是对新的输入x(t) 和上一时刻的hidden state h(t−1) 的总结。计算总结出的新的向量h^(t) 包含上文信息和新的输入x(t).
Update gate
z(t) 负责决定传递多少ht−1给ht 。 如果z(t) 约等于1的话,ht−1 几乎会直接复制给ht ,相反,如果z(t) 约等于0, new memory h^(t) 直接传递给ht.
Hidden state:
h(t) 由 h(t−1) 和h^(t) 相加得到,两者的权重由update gate z(t) 控制。
1.2 LSTM
LSTM 的设计也是为了更好的捕捉long-term dependencies,但是结构上有一些不同,更复杂一些,我们想来看看计算过程:
new memory cell
这一步和GRU中的new memory类似,输出的向量c^(t)都是对新的输入x(t) 和上一时刻的hidden state h(t−1) 的总结。
Input gate
i(t)负责决定输入的x(t) 信息是否值得保存。
Forget gate
f(t)负责决定past memory cell c^(t−1)对c(t) 的重要性。
final memory cell
c(t) 由c^(t−1) 和c^(t) 相加得到,权重分别由 Forget gate 和Input gate 决定
Output gate
这个门是GRU没有的。它负责决定c(t) 中的哪些部分应该传递给hidden state h(t)
2. 区别
1. 对memory 的控制
LSTM: 用output gate 控制,传输给下一个unitGRU:直接传递给下一个unit,不做任何控制
2. input gate 和reset gate 作用位置不同
LSTM: 计算new memory c^(t)时 不对上一时刻的信息做任何控制,而是用forget gate 独立的实现这一点GRU: 计算new memory h^(t) 时利用reset gate 对上一时刻的信息 进行控制。
3. 相似
最大的相似之处就是, 在从t 到 t-1 的更新时都引入了加法。这个加法的好处在于能防止梯度弥散,因此LSTM和GRU都比一般的RNN效果更好。
Reference:
1. https://cs224d.stanford.edu/lecture_notes/LectureNotes4.pdf
2. Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling
3. https://feature.engineering/difference-between-lstm-and-gru-for-rnns/
相关文章推荐
- 关于lstm和gru的一些简单资料,讲得比较容易理解
- LSTM对比GRU:Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling
- 深度学习笔记——RNN(LSTM、GRU、双向RNN)学习总结
- 简单明了的LSTM/GRU应用实例(Tensorflow版)
- 记忆网络RNN、LSTM与GRU
- RNN LSTM与GRU深度学习模型学习笔记
- 循环神经网络——实现LSTM/GRU
- LSTM与GRU的一些比较--论文笔记
- Tensorflow中GRU和LSTM的权重初始化
- LSTM GRU tensorflow代码 和 原理图中的箭头 的对应关系
- Java实现LSTM和GRU做分类(以IRIS数据集为例)
- 目前看到的最好的RNN、LSTM、GRU博客:Understanding LSTM Networks
- LSTM 两个激励函数区别sigmoid 和tanh
- 深度学习(三十九)LSTM、GRU网络入门学习-未完待续
- 目前看到的最好的RNN、LSTM、GRU博客:Understanding LSTM Networks(翻译)
- rnn、lstm,gru中output信息说明
- 深度学习笔记——基于双向RNN(LSTM、GRU)和Attention Model的句子对匹配方法
- 深度学习之OCR(二)——RNN/LSTM/GRU + CTC
- LSTM,GRU最权威的公式
- tensorflow学习笔记(六):LSTM 与 GRU