1.RNN
RNN是用来处理时序数据的一种网络结构,输入序列之间不再相互独立的。例如输入一句话:“今天天气不错”,每个元素之间都有依赖关系。
在RNN中,当前时刻的输出不仅包括当前时刻的输入还包括上一时刻的输出。也就是说,它的输出就依赖于当前的输入和记忆。
RNN的网络结构如下:

每个时刻的输出公式:

递归神经网络之所以能拥有记忆能力,主要是通过W将以往的输入状态进行总结,并作为下次输入的辅助。可以这样理解隐状态:
RNN在时间维度上,算是深度模型。也可以增加隐层,成为和其他网络一样的结构深度上的深度模型。
2.RNN与HMM的区别
- 网络结构不同
HMM网络结构是:隐层 --> 输入层
RNN网络结构是:输入层 --> 隐层
- 隐状态表示不同
HMM中:采用one-hot编码,稀疏型。只有一个状态是被激活的
RNN中: 分布式表示,紧凑型。每个隐状态都是实心被激活的。

3.语言模型
通过一个单词,预测下一个单词,最终合成符合常理的一句话。
4.RNN中的梯度问题
RNN中使用的参数更新算法仍然是BPTT算法(BPTT:在时间维度上的BP算法),所以也会存在梯度消失和梯度爆炸的情况。
RNN中梯度问题的解决方案:
-
梯度爆炸:Gradient Clipping,即设置梯度阈值。当梯度值大于阈值时Clipping梯度(当前梯度 or 归一化后的值)。归一化阈值的公式如下:
梯度爆炸约束.png
- 梯度消失:采用改进后的RNN网络结构,如LSTM、GRU。
5.双向RNN
Bidirectional RNN(双向RNN),假设当前时刻t的输出不仅和之前的序列有关,还与之后的序列有关,这种RNN结构成为双向RNN。例如:预测一个语句中缺失的词语,那么需要根据上下文进行预测。

- 公式
- 应用实例

网友评论