循环神经网络(RNN)

一个轮回神经网络(RNN)是一种深度学习网络结构,它使用过去的信息来提高网络在当前和未来输入上的性能。rnn的独特之处在于网络包含隐藏状态和循环。循环结构允许网络以隐藏状态存储过去的信息并对序列进行操作。

循环神经网络的这些特征使它们非常适合解决具有不同长度的顺序数据的各种问题,例如:

展开RNN的单个单元,显示信息如何在数据序列的网络中移动。单元格的隐藏状态作用于输入以产生输出,隐藏状态被传递到下一个时间步骤。

展开RNN的单个单元,显示信息如何在数据序列的网络中移动。单元格的隐藏状态作用于输入以产生输出,隐藏状态被传递到下一个时间步骤。

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

LSTM

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

克服这个问题的一种特殊类型的循环神经网络是长短期记忆(LSTM)网络。LSTM网络使用额外的门来控制隐藏单元中的哪些信息可以进入输出和下一个隐藏状态。这使得网络能够更有效地学习数据中的长期关系。lstm是一种常用的RNN类型。

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

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

MATLAB®具有一整套的特性和功能,可以用文本、图像、信号和时间序列数据来训练和实现LSTM网络。下一节将探讨rnn的应用以及使用MATLAB的一些示例。

rnn的应用

自然语言处理

语言自然是有顺序的,文本的长度各不相同。这使得rnn成为解决这一领域问题的一个很好的工具,因为它们可以学习在句子中语境化单词。一个例子包括情绪分析是一种将单词和短语的含义分类的方法。机器翻译,或使用算法在语言之间进行翻译,是另一种常见的应用。单词首先需要从文本数据转换为数字序列。一个有效的方法是字嵌入层。词嵌入将单词映射为数字向量。的例子下面使用词嵌入训练一个词情感分类器,并使用MATLAB词云函数显示结果。

情感分析结果在MATLAB中。词云显示了训练过程的结果,因此分类器可以确定新文本组的情感。

情感分析结果在MATLAB中。词云显示了训练过程的结果,因此分类器可以确定新文本组的情感。

在另一个分类器的例子, MATLAB使用rnn对文本数据进行分类,以确定制造故障的类型。MATLAB也用于机器翻译示例训练一个网络去理解罗马数字。

信号分类

信号是自然顺序数据的另一个例子,因为它们通常是随着时间的推移从传感器收集的。自动分类信号很有用,因为这可以减少大型数据集所需的手动时间,或者允许实时分类。原始信号数据可以被输入到深度网络中,也可以进行预处理,以专注于频率成分等其他特征。特征提取可以极大地提高网络性能心脏电信号的例子.下面是一个例子在RNN中使用原始信号数据

在MATLAB中使用LSTM对传感器数据进行分类。

在MATLAB中使用LSTM对传感器数据进行分类。

视频分析

rnn适用于视频,因为视频本质上是一组图像序列。类似于处理信号,它有助于在将序列输入RNN之前进行特征提取。在这个例子,一个预先训练的GoogleNet模型(a卷积神经网络)对每一帧进行特征提取。您可以在下面看到网络架构。

基于LSTM的视频分类基本架构。

基于LSTM的视频分类基本架构。

Baidu
map