一、绪论
1. 循环神经网络的应用
基本应用:语音问答、机器翻译、股票预测、作词机、模仿写论文、模仿写代码、图像理解、视觉问答
其中模仿写论文只是模仿语法规则而很难学习语义规则
2. 循环神经网络vs卷积神经网络
循环神经网络是一类用于处理序列数据的神经网络,而卷积神经网络是专门用于处理网格化(如一个图像)的神经网络。正如卷积神经网络可以很容易地扩展到具有很大宽度和高度的图像,以及处理大小可变的图像,循环神经网络可以扩展到更长的序列(比不基于序列的特化网络长得多)。大多数循环神经网络也能处理可变长度的序列。
传统的全连接前馈神经网络会给每个输入特征分配一个单独的参数,所以需要分别学习句子每个位置的所有语言规则。相比之下,循环神经网络在几个时间步内共享相同的权重,不需要分别学习句子每个位置的所有语言规则。
参数共享的概念体现在每个时间步中使用的相同卷积核。循环神经网络以不同的方式共享参数,输出的每一项是前一项的函数。输出的每一项对先前的输出应用相同的更新规则而产生。这种循环方式导致参数通过很深的计算图共享。而传统神经网络与卷积神经网络输入与输出之间是相互独立的。
二、基本组成结构
1. 基本结构
其基本结构如下图所示:
两种输入:记忆单元的值、正常输入
两种输出:正常输出,记忆单元的值
一种函数
参数固定的好处:具有很好的泛化能力
隐层状态h可以被看作是“记忆”,因为它包含了之前时间点上的相关信息;输出y不仅由当前的输入所决定,还会考虑到之前的“记忆”,由两者共同决定。RNN在不同时刻共享同一组参数(U,W,V),极大的减小了需要训练和预估的参数量。
2. 深度RNN
基本结构与RNN相同,只是在深度上不断延伸
基本结构如下图所示:
3. 双向RNN
目前为止,我们所考虑的所有循环神经网络有一个“因果”结构,意味着在时刻t的状态只能从过去的序列以及当前的输入捕获信息。然而,在许多应用中,我们要输出的序列的预测可能依赖于整个输入序列。
双向RNN为满足这种需求而发明。顾名思义,双向RNN结合时间上从序列起点开始移动的RNN和另一个时间上从序列末尾开始移动的RNN。如下图所示:
4. BPTT算法
三、循环神经网络的变种
1. 传统RNN的问题
当前循环神经网络在时间维度上非常深的时候,会导致梯度消失或者梯度爆炸的问题。
梯度爆炸导致的问题:模型训练不稳定,梯度变为Nan(无效数字)或Inf(无穷大)
梯度爆炸问题的改进:权重衰减,梯度截断
梯度消失导致的问题:长时依赖问题(随着时间间隔的不断增大,RNN会丧失学习到的连接很远的信息的能力)
梯度消失问题的改进:改进模型,LSTM,GRU
2. LSTM
LSTM(长短期记忆模型)由三个门(遗忘门、输入门、输出门)组成,来保护和控制细胞状态
遗忘门:决定丢弃信息
输入门:确认需要更新的信息
输出门:输出信息
RNN与LSTM的对比
LSTM是以一定概率忘记过去的事情,以一定概率记住现在的事情。
LSTM的一个初始化技巧就是将输出门的 bias设置为正数,这样模型开始训练时forget gate的值接近于1,不会发生梯度消失问题。
3. LSTM变形
加入peephole连接,考虑了参数C,忘记门与输入门连接
4. GRU
GRU(门控循环单元)与LSTM的比较:
差异:
- GRU只有两个门,分别是重置门和更新门
- 混合了细胞状态和隐藏状态
- 重置门:控制忽略前一时刻的状态信息的程度,重置门越小说明忽略的越多
- 更新门:控制前一时刻的状态信息被带入到当前状态中的程度,更新门值越大表示前一时刻的状态信息带入越多
相似:
- 从t-1到t时刻的记忆的更新都引入加法
- 可以防止梯度消失问题
基本结构如下所示:
四、扩展
1. 解决RNN梯度消失问题的其他方法
Clockwise RNN
普通RNN都是隐层从前一个时间步连接到当前的时间步。而CW-RNN把隐层分成很多组,每组有不同的循环周期,有的周期是1,有的周期更长(例如从前两个时间步连接到当前时间步),不同周期的cell之间也有一些连接。这样一来,距离较远的某个依赖关系就可以通过周期较长的cell少数几次循环访问到,从而网络层数不太深,更容易学到。
其基本结构如下图所示:
2. 基于attention的RNN
什么是attention?
是受到人类注意力机制的启发,人们在进行观察图像的时候,其实并不是一次就把整幅图像的每个位置像素都看过,大多是根据需求将注意力集中到图像的特定部分。而且人类会根据之前观察的图像学习到未来要观察图像注意力应该集中的位置。
《Show,attend and tell: Neural image caption generation with visual attention》
关键点:
- 每个时刻根据当前记忆学到一个attention权重矩阵
- 在同一时刻该权重在每个channel上是共享的
基本结构如下图所示: