本文介绍RNNs及一种广泛应用的RNNs——LSTM。
Motivations
人类的思维并非每时每刻都从0开始,我们需要基于之前的理解来构造当前的理解——人类的思维具有时间上的延续性。
传统神经网络似乎无法处理这种时间上的延续性。RNN(Recurrent Neural Networks)正是为了解决这个问题。为了让信息可以在网络中具有时间上的延续性,RNN中设计有循环。
为了理解RNN中的循环,我们首先需要了解神经网络中循环的两种等价表示方式
- 如上图左,循环形式(roll)
- 如上图右,展开形式(unroll)
注意到RNN可以表示成一个个模块重复级联,每个重复模块的结构相同, 这体现了权重共享的理念。重复模块的设计影响网络整体的性能。每个重复模块称为Cell
。
LSTM
前文提及RNN的设计是为了使用以前某个时间点
Long Term Dependency
问题。
LSTM(Long Short Term Memory)是一种特殊的RNN,它可以克服Long Term Dependency
。普通RNN中的重复模块结构简单,例如下图(仅有一个非线性激活函数tanh)
LSTM的重复模块则较为复杂——有四层网络(下图黄色框),层间的连接较为特殊。
LSTM的重要组成部分包括:
- Chain:LSTM中的一个个重复模块将整个网络串成一条链
- Cell State(上图中最顶端的水平线):流过整条链,只有些许线性变换,这就允许信息保真地流经整条链。
- Gates(上图中的乘法单元和黄色框的组合):用于控制Cell State中信息的移除和添加,相当于逻辑电路中的与门。例如,sigmoid层与乘法组合成的Gates,Sigmoid层输出范围[0,1],输出为0时则信息不通过,输出为1时则信息完全通过。
基于上述的组成部分,LSTM网络的构建可采用如下步骤
1 决定LSTM要丢弃哪些信息,这部分任务由遗忘门forget gate layer
完成。
2 决定LSTM要存储哪些新的信息,这部分任务由输入门(input gate layer
)和双曲正切层(tanh
)完成
3 决定输出,基于Cell State的过滤,这部分由输出门(output gate
)和双曲正切层(tanh
)完成
输出门决定输出Cell State的哪些值,另一方面Cell State经过双曲正切层输出[-1,1]之间的取值。二者相乘即决定输出Cell State的哪些部分为Variants on LSTMs
LSTM存在许多变种,例如
- 让Gate可以使用Cell State的值
- 让遗忘和记忆彼此相关
- Gated Recurrent Unit将遗忘门与输入门整合成一个更新门
Update Gate
,比LSTM模型的结构简单
大多数LSTM的变种效果都差不多,有些在特别的任务上有较好的表现。