1.什么是RNN
在了解LSTM之前,我们先来简单回顾一下什么吗是RNN
人类针对每个问题的思考,一般不会是完全的从头开始思考。正如当你阅读这篇译文的时候,你会根据已经阅读过的内容来对后面的内容进行理解,你不会把之前的东西都丢掉从头进行思考,你对内容的理解是贯穿的。
传统的神经网络做不到这一点,而这似乎是一个主要的缺点。 例如,假设您想对电影中的每个事件进行分类。我们无法想象传统神经网络如何能够利用前面的场景去干预后面的预测。
幸好循环神经网络解决了这个问题, 它们是具有循环的网络,允许信息持续存在,示意图如下。
在上图中,一组神经网络 A接收某些输入xt,并输出一个值ht。 循环允许信息从网络的一个步骤传递到下一个。
这些循环使得循环神经网络看起来很神秘。 然而,如果你再多考虑一下,你就会发现其实它和传统的神经网络并不是完全不同。 一个循环神经网络可以被认为是同一个网络的多个副本,每一个都传递一个消息给后继者。 我们考虑一下如果将循环展开会发生什么:(示意如下)
这种链状特征揭示了循环神经网络与序列和列表密切相关。 它们是用于此类数据的自然神经网络结构。
他们肯定是有用的! 在过去的几年里,RNN应在语音识别、语言建模、翻译,图像字幕等各种问题上取得了巨大成功。在Andrej Karpathy的这篇博文——RNN的难以理解的有效性(The Unreasonable Effectiveness of Recurrent Neural Networks)中讨论了RNN取得的惊人成果,他们真的很神奇。
长依赖存在的问题(短时记忆)
RNN显著的魅力是将以前的信息连接到当前任务的这种思路,例如使用先前的视频帧可以有助于对当前帧的理解。 如果RNN可以做到这一点,这将非常有用。 但他可以吗?这要看情况。
有时,为了处理当前的任务,我们只需要查看最近的信息。 例如,考虑一种语言模型,该模型根据前面的词语来预测下一个单词。 如果我们试图预测““the clouds are in the sky”的最后一个单词,我们不需要任何其