【算法分享】双向长短期记忆(BiLSTM)及长短期记忆 (LSTM)网络详细文档
长短期记忆 (LSTM) 网络是一种循环神经网络 (RNN)。LSTM 主要用于学习、处理和分类顺序数据,因为它们可以学习数据的时间步之间的长期相关性。
LSTM 的工作原理
LSTM 和 RNN
LSTM 网络是 RNN 架构的一种特殊形式。RNN 使用过去的信息来提高神经网络处理当前和将来输入的性能。它们包含隐藏状态和循环,这使得网络可以以隐藏状态存储过去的信息并对序列进行运算。RNN 有两组权重:一组用于隐藏状态向量,另一组用于输入。在训练期间,网络会学习输入和隐藏状态的权重。在实现时,输出基于当前输入以及隐藏状态,而隐藏状态基于以前的输入。
实际上,简单的 RNN 学习长期相关性的能力有限。RNN 通常通过反向传播来训练,在反向传播中,它们可能遇到梯度消失或爆炸问题。这些问题导致网络权重变得非常小或非常大,从而限制需要网络学习长期关系的应用的有效性。
LSTM 层架构
LSTM 层使用额外的门来控制隐藏状态中的哪些信息作为输出导出和传递到下一个隐藏状态。这些额外的门克服了 RNN 在学习长期相关性方面的常见问题。除了传统 RNN 中的隐藏状态之外,LSTM 模块的架构通常具有记忆单元、输入门、输出门和遗忘门。额外的门使网络能够更高效地学习数据中的长期关系。LSTM 网络对时间空缺的敏感度较低,这使得它比简单 RNN 更适合分析顺序数据。在下图中,您可以看到 LSTM 架构及其在时间步 t 处的数据流。
输入门的权重和偏置控制新值流入 LSTM 单元的程度。同样,遗忘门和输出门的权重和偏置分别控制值保留在单元中的程度以及单元中的值用于计算 LSTM 模块的输出激活的程度。
下图显示穿过一个具有多个时间步的 LSTM 层的数据流。输出中通道的数量与 LSTM 层中隐藏单元的数量匹配。
LSTM 网络架构
LSTM 可以很好地处理用于分类和回归任务的序列和时间序列数据。LSTM 也非常适合处理视频,因为视频本质上是一个图像序列。与处理信号类似,在将图像序列馈送到 LSTM 层之前执行特征提取会很有帮助。利用卷积神经网络 (CNN)(例如 GoogLeNet)对每帧进行特征提取。下图显示如何为不同任务设计 LSTM 网络。
双向 LSTM
双向 LSTM (BiLSTM) 可学习时间序列数据或序列数据的时间步的双向依存关系。当您希望网络在每个时间步都从完整时间序列中学习时,这些依存关系会很有用。BiLSTM 网络支持额外的训练,因为输入数据会传递过 LSTM 层两次,这可以提高网络的性能。
一个 BiLSTM 由两个 LSTM 组件组成:前向 LSTM 和后向 LSTM。前向 LSTM 从第一个时间步运算到最后一个时间步。后向 LSTM 从最后一个时间步运算到第一个时间步。在数据传递过两个 LSTM 组件后,该运算沿通道维度串联各个输出。