先给出一些结论:
GRU和LSTM的性能在很多任务上不分伯仲。
GRU 参数更少因此更容易收敛,但是数据集很大的情况下,LSTM表达性能更好。
从结构上来说,GRU只有两个门(update和reset),LSTM有三个门(forget,input,output),GRU直接将hidden state 传给下一个单元,而LSTM则用memory cell 把hidden state 包装起来。
- 基本结构
1.1 GRU
GRU的设计是为了更好的捕捉long-term dependencies。我们先来看看输入ht−1ht−1和x(t)x(t), GRU怎么通过计算输出h(t)h(t):
Reset gate
r(t)r(t) 负责决定h(t−1)h(t−1) 对new memory h(t)h(t) 的重要性有多大, 如果r(t)r(t) 约等于0 的话,h(t−1)h(t−1) 就不会传递给new memory h(t)h(t)
new memory
h(t)h(t) 是对新的输入x(t)x(t) 和上一时刻的hidden state h(t−1)h(t−1) 的总结。计算总结出的新的向量h(t)h(t) 包含上文信息和新的输入x(t)x(t).<