什么是循环神经网络 (RNN)
不可不知的三大要点
循环神经网络 (RNN) 是一种用于深度学习的网络架构,它可以对时间序列或顺序数据进行预测。
RNN 特别适合处理长度不同的顺序数据以及解决自然信号分类、语言处理和视频分析等问题。
循环神经网络 (RNN) 是一种深度学习结构,它使用过去的信息来提高网络处理当前和将来输入的性能。RNN 的独特之处在于该网络包含隐藏状态和循环。循环结构支持网络以隐藏状态存储过去的信息,并对序列进行运算。
RNN 怎么知道如何将过去的信息应用于当前输入?该网络有两组权重:一组用于隐藏状态向量,另一组用于输入。在训练期间,网络会学习输入和隐藏状态的权重。在实现时,输出基于当前输入以及隐藏状态,而隐藏状态基于以前的输入。
LSTM
实际上,简单的 RNN 在学习长期依存关系时会遇到问题。RNN 通常通过反向传播来训练,在反向传播中,它们可能遇到梯度的“消失”或“爆炸”问题。这些问题会导致网络权重变得非常小或非常大,从而限制学习长期依存关系的有效性。
一种特殊类型的 RNN——长短期记忆 (LSTM) 网络可克服此类问题。LSTM 网络使用额外的门来控制隐藏状态中的哪些信息可以输出,并传递到下一个隐藏状态。这就使网络能够更高效地学习数据中长期关系。LSTM 是一种常用的 RNN。
双向 LSTM 可学习时间序列数据或序列数据的时间步的双向依存关系。当您希望网络在每个时间步都从完整时间序列中学习时,这些依存关系会很有用。另一个学习长期依存关系的 RNN 变体是门控 RNN。您可以在 MATLAB® 中训练和使用双向 LSTM 和门控 RNN。
使用 MATLAB 中的 RNN 示例快速入门
RNN 是许多应用中的关键技术,例如:
何时应使用 RNN?
当您使用序列和时间序列数据执行分类和回归任务时,请考虑使用 RNN。RNN 也非常适合处理视频,因为视频本质上是一个图像序列。与处理信号类似,在将序列馈送到 RNN 之前进行特征提取会很有帮助。利用 CNN(例如 GoogLeNet)对每帧进行特征提取。
用于分类、回归和视频分类任务的 RNN 网络架构。
浏览使用 RNN 处理文本、信号和视频的 MATLAB 示例。
使用 MATLAB® 和 Deep Learning Toolbox™,您能够设计、训练和部署 RNN。您可以使用 Text Analytics Toolbox™ 或 Signal Processing Toolbox™ 将 RNN 应用于文本或信号分析。