文中图片来源:吴恩达老师的深度学习视频
视频链接:https://www.bilibili.com/video/av49445369?p=152
对于标准的RNN来说,它是利用前一时刻的隐藏单元和该时刻的输入一起学习,但是当小序列的相关信息相隔较长时,普通RNN常常不能学习的很好。举个例子,(1)如果我们要预测“the clouds are in the sky”的最后一个单词,因为只在这一个句子的语境中进行预测,那么将很容易地预测出是这个单词是sky。在这样的场景中,相关的信息和预测的词位置之间的间隔是非常小的,RNN 可以学会使用先前的信息。(2) 而在比较长的环境中,例如在“I grew up in France… I speak fluent French”中去预测最后的French,那么模型会推荐一种语言的名字,但是预测具体是哪一种语言时就需要用到很远以前的Franch,这就说明在长环境中相关的信息和预测的词之间的间隔可以是非常长的。在理论上,RNN 绝对可以处理这样的长环境问题。人们可以仔细挑选参数来解决这类问题中的最初级形式,但在实践中,RNN 并不能够成功学习到这些知识。然而,LSTM和GRU模型就可以解决这一问题。
标准RNN结构:
简易GRU结构:
完整GRU结构
GRU模型包含两个门,分别是更新门(update)和相关性门(relevant)。
和标准的RNN相比,GRU模型多了更新(update)门和相关性门(relevant),更新门用来控制是否对记忆进行更新,如果相关联的cat和was连接的比较远,则会一直保持上个时刻的状态从而有记忆效果,解决了长序列的问题。相关性门表示前一时刻的c和它的候选值之间的相关性。
LSTM结构
LSTM包含三个门,分别是遗忘门(forget),更新门(update),输出门(output)
如图红线部分所示,只要设置好遗忘门和更新门,0时刻的记忆会和3时刻的记忆相同,从而也达到了保存记忆的效果。
GRU只有两个门,当构建庞大的网络是更加有力,效率更高
LSTM有三个门,更加灵活和强大,计算量可能会比较大。
没有说这两个方法孰优孰劣,他们都能在长序列模型中解决长期记忆的问题,