1. 基础概念
循环神经网络(Recurrent Neural Networks ,以下简称RNN)是一类用于处理序列数据的神经网络,广泛的用于自然语言处理、基因序列分析等领域,其中自然语言处理包括语音识别、机器翻译、语义分析等。
以下是一个简单的自然语言处理应用,该应用可以识别语句中的人名。应用的输入是一段语句,输出为语句中包含的人物名称。
如上图所示,在RNN算法中,我们使用表示索引位置,
表示t索引位置对应的输入,
表示t索引位置对应的输出。
表示输入的长度,
表示输出的长度,在上例中
。
输入采用One-hot编码表示,具体方法如下:
1. 确定字典
假设字典的大小为10000个单词,则我们选择最常用的前10000个单词按字典顺序排序,得到一个单词数组,该数组即为RNN算法使用的单词字典。在通常的应用程序中,字典大小一般在30000-100000之间。
2. 编码
将每一个输入单词表示为一个数组,数组大小为10000(等于字典大小),数组中除了单词所在字典位置对应的数值为1,其他数值均为0。以上面示例说明,假设Harry在字典中的位置是4075,则Harry可以表示为下面的数组,在该数组中,4075下标对应的数值为1,其余的数值均为0。
如果输入中的单词不在字典中,则可以统一表示为UNK,用One-hot向量表示,在该向量中,索引10000位置的数值为1,其他位置均为0。
为什么不能使用标准的神经网络算法处理以上问题,主要有几个原因:
- 不同的输入和输出长度不一致
- 不同位置间的特征不能共享
- 特征参数过多
2. RNN模型
下面是RNN的基本模型图:
在上图中,,
为位置t对应的输入内容,每一个RNN节点执行如下运算:
其中,和
是激活函数,
常用Relu、Tanh函数,
常用Sigmoid、Softmax函数,
、
、
、
、
为权值,各隐藏节点使用相同的权值。
RNN模型适用于输入、输出长度不等的应用场景,并且通过权值共享大量减少了参数个数,同时从输入前端学到的知识可以通过有效的传递到后方的计算中。上述公式可以表示为下面的简洁形式:
损失函数可以定义如下:
在上式中,标识t位置的期望输出,
标识t位置RNN算法的输出。
3. 常见的RNN模型
以上是常用的RNN模型,包含Many to many、Many to one、One to many等。Many to many可以用于机器翻译、名称识别等问题,Many to one可以用于语义分析,One to many可以用于音乐生成等应用。
2. GRU & LSTM
在RNN应用,如自然语言处理中,由于输入语句的长度和语法原因,语句最末尾的内容可能由最开始内容决定,如单复数、时态问题等,两者之间相隔较远的距离,导致梯度下降或其他优化算法很难调整参数来影响最开始的位置,这就是神经网络中常提到的Vanishing Gradients问题。如下例所示:
The cat, which already ate a lot of food, was full.
The cats, which already ate a lot of food, were full.
在以上两个语句中,末尾的was/were由最开始的cat/cats决定,但是两者相聚较远的距离,这就会引起Vanishing Gradients问题,梯度下降算法很难根据was/were处的损失函数,反过来影响最开始位置的权值。我们可以使用GRU或LSTM算法解决这一问题。
1. GRU
GRU (Gated Recurrent Unit)是解决RNN中长依赖、Vanishing Gradients的有效方法之一,以下是GRU的运算公式:
在GRU中,我们使用一个开关来决定是否更新
(传递到下一隐藏单元的内容),而
由前一隐藏单元的输出内容
和当前输入
决定,如果
的计算结果为
,则上一隐藏单元的内容可以无损的传递到下一单元。其中
,
,
,具有相同的维度,如果RNN的每一层含有300个节点,则其维度都是300。可以形象的理解为
中存储了300种不同类型的信息,有300个开关来决定这些信息是否需要更新或者保留到下一隐藏层使用。
是另一个开关,其值由前一隐藏单元的输出内容
和当前输入
决定,表示两者之间的相关程度。
2. LSTM
GRU (Long Short-Term Memory)长短期记忆网络,也是解决RNN中长依赖、Vanishing Gradients的有效方法之一,以下是LSTM的运算公式:
在LSTM中,我们使用两个开关、
来决定
的内容,这样
的内容既可以使用本层新计算的内容
,也可以选择性地保留上一层传递下来的内容
,两个开关均由前一隐藏单元的输出内容
和当前输入
决定。同时,使用另一个开关
来决定本层的输出内容
。LSTM可以形象的表示下图:
3. LSTM VS GRU
与GRU相比,LSTM采用两个开关、
控制
的内容,同时
,这些使LSTM更加复杂、功能更加强大。但是GRU的简单性,使得其计算性能更高,适用于大型的RNN应用。
3. Attention model
上图是Attention Model的基本模型图,在该模型中,主要执行如下运算
其中是RNN中索引位置t处激活函数的输出值,
是计算t索引位置输出时,对
的关注程度。该模型允许输出函数在预测t位置输出时,对不同位置的输入内容设置不同的权重,更加适用于长文本的翻译任务。