人工智能
什么是 RNN?
循环神经网络 (RNN) 是一种用于深度学习的网络架构,它可以对时间序列或顺序数据进行预测。 RNN 特别适合处理长度不同的顺序数据以及解决自然信号分类、语言处理和视频分析等问题。
RNN 的工作原理 循环神经网络 (RNN) 是一种深度学习结构,它使用过去的信息来提高网络处理当前和将来输入的性能。RNN 的独特之处在于该网络包含隐藏状态和循环。循环结构支持网络以隐藏状态存储过去的信息,并对序列进行运算。 RNN 怎么知道如何将过去的信息应用于当前输入?该网络有两组权重:一组用于隐藏状态向量,另一组用于输入。在训练期间,网络会学习输入和隐藏状态的权重。在实现时,输出基于当前输入以及隐藏状态,而隐藏状态基于以前的输入。 RNN 中单个单元的展开图,显示信息如何通过数据序列的网络。该单元的隐藏状态作用于输入以产生输出,并且隐藏状态会传递给下一个时间步。
展开的单个 RNN 单元,显示信息如何通过数据序列的网络。该单元的隐藏状态作用于输入以产生输出,并且隐藏状态会传递给下一个时间步。
LSTM 实际上,简单的 RNN 在学习长期依存关系时会遇到问题。RNN 通常通过反向传播来训练,在反向传播中,它们可能遇到梯度的“消失”或“爆炸”问题。这些问题会导致网络权重变得非常小或非常大,从而限制学习长期依存关系的有效性。 一种特殊类型的 RNN——长短期记忆 (LSTM) 网络可克服此类问题。LSTM 网络使用额外的门来控制隐藏状态中的哪些信息可以输出,并传递到下一个隐藏状态。这就使网络能够更高效地学习数据中长期关系。LSTM 是一种常用的 RNN。
RNN(左)和 LSTM 网络(右)的比较。 双向 LSTM 可学习时间序列数据或序列数据的时间步的双向依存关系。当您希望网络在每个时间步都从完整时间序列中学习时,这些依存关系会很有用。另一个学习长期依存关系的 RNN 变体是门控 RNN。您可以在 MATLAB 中训练和使用双向 LSTM 和门控 RNN。
RNN 为何重要 RNN 是许多应用中的关键技术,例如: 信号处理 信号天然就是顺序数据,因为它们通常是传感器随着时间的推移采集的。对大型信号数据集的自动分类和回归使得实时预测成为可能。原始信号数据可以馈入深度网络,或进行预处理以关注特定特征,如频率分量。特征提取可以大大提高网络性能。
文本分析
语言天然就是顺序数据,文本片段的长度也各不相同。RNN 非常适合自然语言处理任务,如文本分类、文本生成、机器翻译和情绪分析(对单词和短语的含义进行分类),因为它们可以学习根据语境处理句子中的字词。
何时应使用 RNN?
当您使用序列和时间序列数据执行分类和回归任务时,请考虑使用 RNN。RNN 也非常适合处理视频,因为视频本质上是一个图像序列。与处理信号类似,在将序列馈送到 RNN 之前进行特征提取会很有帮助。利用 CNN(例如 GoogLeNet)对每帧进行特征提取。
用于分类、回归和视频分类任务的 RNN 网络架构。
使用 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 库生成代码,以创建具有高性能推断速度的可部署模型。
深度网络设计器,用于以交互方式构建、可视化和编辑 RNN 网络。
将经过训练的深度学习网络快速部署到生产中。
审核编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !