循环神经网络 (RNN)

 

什么是循环神经网络 (RNN)

不可不知的三大要点

循环神经网络 (RNN) 是一种用于深度学习的网络架构,它可以对时间序列或顺序数据进行预测。

RNN 特别适合处理长度不同的顺序数据以及解决自然信号分类、语言处理和视频分析等问题。

RNN 的工作原理

循环神经网络 (RNN) 是一种深度学习结构,它使用过去的信息来提高网络处理当前和将来输入的性能。RNN 的独特之处在于该网络包含隐藏状态和循环。循环结构支持网络以隐藏状态存储过去的信息,并对序列进行运算。

RNN 怎么知道如何将过去的信息应用于当前输入?该网络有两组权重:一组用于隐藏状态向量,另一组用于输入。在训练期间,网络会学习输入和隐藏状态的权重。在实现时,输出基于当前输入以及隐藏状态,而隐藏状态基于以前的输入。

RNN 中单个单元的展开图,显示信息如何通过数据序列的网络。该单元的隐藏状态作用于输入以产生输出,并且隐藏状态会传递给下一个时间步。

展开的单个 RNN 单元,显示信息如何通过数据序列的网络。该单元的隐藏状态作用于输入以产生输出,并且隐藏状态会传递给下一个时间步。

LSTM

实际上,简单的 RNN 在学习长期依存关系时会遇到问题。RNN 通常通过反向传播来训练,在反向传播中,它们可能遇到梯度的“消失”或“爆炸”问题。这些问题会导致网络权重变得非常小或非常大,从而限制学习长期依存关系的有效性。

一种特殊类型的 RNN——长短期记忆 (LSTM) 网络可克服此类问题。LSTM 网络使用额外的门来控制隐藏状态中的哪些信息可以输出,并传递到下一个隐藏状态。这就使网络能够更高效地学习数据中长期关系。LSTM 是一种常用的 RNN。

RNN 和 LSTM 网络的图,并排显示。RNN 对输入使用隐藏状态,并将该状态用作 RNN 在下一时间步的附加输入。LSTM 使用遗忘门和记忆单元等额外的单位防止出现梯度消失和爆炸问题。

RNN(左)和 LSTM 网络(右)的比较。

双向 LSTM 可学习时间序列数据或序列数据的时间步的双向依存关系。当您希望网络在每个时间步都从完整时间序列中学习时,这些依存关系会很有用。另一个学习长期依存关系的 RNN 变体是门控 RNN。您可以在 MATLAB® 中训练和使用双向 LSTM 和门控 RNN。

使用 MATLAB 中的 RNN 示例快速入门

RNN 为何重要

RNN 是许多应用中的关键技术,例如:

表示信号处理的图标

信号处理

信号天然就是顺序数据,因为它们通常是传感器随着时间的推移采集的。对大型信号数据集的自动分类回归使得实时预测成为可能。原始信号数据可以馈入深度网络,或进行预处理以关注特定特征,如频率分量。特征提取可以大大提高网络性能。

表示文档的图标

文本分析

语言天然就是顺序数据,文本片段的长度也各不相同。RNN 非常适合自然语言处理任务,如文本分类文本生成机器翻译情绪分析(对单词和短语的含义进行分类),因为它们可以学习根据语境处理句子中的字词。

何时应使用 RNN?

当您使用序列和时间序列数据执行分类和回归任务时,请考虑使用 RNN。RNN 也非常适合处理视频,因为视频本质上是一个图像序列。与处理信号类似,在将序列馈送到 RNN 之前进行特征提取会很有帮助。利用 CNN(例如 GoogLeNet)对每帧进行特征提取。

RNN 网络架构图,带有用于构建 RNN 以执行分类、回归和视频分类任务的各层。

用于分类、回归和视频分类任务的 RNN 网络架构。

浏览使用 RNN 处理文本、信号和视频的 MATLAB 示例。

使用 MATLAB 实现 RNN

使用 MATLAB®Deep Learning Toolbox™,您能够设计、训练和部署 RNN。您可以使用 Text Analytics Toolbox™Signal Processing Toolbox™ 将 RNN 应用于文本或信号分析。

设计和训练网络

您可以仅用几行 MATLAB 代码以编程方式创建和训练 RNN。使用循环层(LSTM 层双向 LSTM 层门控循环层LSTM 投影层)构建 RNN。在 RNN 网络中使用单词嵌入层将单词映射到数值序列中。

您还可以使用深度网络设计器以交互方式创建和训练 RNN。通过准确度、损失和验证度量图监控训练。

部署网络

您可以在嵌入式系统、企业系统、FPGA 设备或部署经过训练的 RNN。您还可以使用 Intel®、NVIDIA® 和 ARM® 库生成代码,以创建具有高性能推断速度的可部署模型。

截图:使用深度网络设计器以交互方式构建的简单 BiLST 网络。

深度网络设计器,用于以交互方式构建、可视化和编辑 RNN 网络。

示意图:经由代码生成器产品将深度学习网络连接到嵌入式目标(如 Intel、NVIDIA 和 ARM)。

将经过训练的深度学习网络快速部署到生产中。