在导读部分我们提到了序列数据,它的一个重要特性是具有顺序,而 RNN 的记忆性使它可以处理序列数据。
现实世界有很多问题的研究对象都是序列数据,尤其是自然语言处理中几乎所有问题都和序列数据相关。段落是句子的序列,句子是单词的序列,单词是字母的序列,音频视频也是由帧组成的序列。
在所有这些应用中,序列数据的顺序是很重要的,顺序发生了变化,含义也会发生变化。
简单的前馈神经网络处理这类问题是非常受限制的,因为它们假设输入数据是独立的,而这样显然会丢失掉数据的很多模式。
下面让我们具体看看 RNN 的结构和计算原理,来看它是如何具有处理序列数据所需的记忆能力的。
本文将讲述以下内容:
- RNN 模型
- RNN 的前向计算
- 为什么说 RNN 具有记忆功能?
- 损失函数
- 反向传播:BPTT
- RNN 存在梯度消失/爆炸问题的原因是什么?
- 梯度消失/爆炸的解决方案有什么?
- 应用举例:
- 用基本的 RNN 识别垃圾邮件
1. RNN 模型
RNN 译为循环神经网络,即这种网络的神经元之间形成了一个有向循环。
- 那首先来看一下基本 RNN 的结构:
我们可以以命名实体识别问题为例来看结构图,即识别一句话中的人名 地名 等实体名词。
在时刻 t,输入为 $x^{<t