Recurrent Neural Network (RNN)

经常性神经网络(RNN)是我们深入学习网络结构es information of the past to improve the performance of the network on current and future inputs. What makes RNNs unique is that the network contains a hidden state and loops. The looping structure allows the network to store past information in the hidden state and operate on sequences.

这些复发性神经网络的这些功能使它们非常适合解决各种长度的顺序数据,例如:

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

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

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

LSTM

实际上,简单的RNN会在学习长期依赖性方面遇到一个问题。RNN通常是通过反向传播进行训练的,他们可以在其中遇到“消失”或“爆炸”梯度问题。这些问题导致网络权重变得很小或很大,从而限制了学习长期关系的有效性。

A special type of recurrent neural network that overcomes this issue is the长期记忆(LSTM)网络。LSTM网络使用其他门来控制隐藏单元格中的哪些信息使其进入输出和下一个隐藏状态。这使网络可以更有效地学习数据中的长期关系。LSTMS是一种常见的RNN类型。

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

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

MATLAB®has a full set of features and functionality to train and implement LSTM networks with text, image, signal, and time series data. The next sections will explore the applications of RNNs and some examples using MATLAB.

RNN的应用

自然语言处理

Language is naturally sequential, and pieces of text vary in length. This makes RNNs a great tool to solve problems in this area because they can learn to contextualize words in a sentence . One example includessentiment analysis,一种分类单词和短语含义的方法。机器翻译或使用算法在语言之间翻译是另一个常见的应用程序。首先需要将单词从文本数据转换为数字序列。这样做的有效方法是单词嵌入layer. Word embeddings map words into numeric vectors. The例子below uses word embeddings to train a word sentiment classifier, displaying the results with the MATLAB wordcloud function.

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

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

In anotherclassifier example, MATLAB uses RNNs to classify text data to determine the type of manufacturing failure. MATLAB is also used in amachine translation exampleto train a network to understand Roman numerals.

Signal Classification

信号是自然顺序数据的另一个示例,因为它们通常会随着时间的推移从传感器中收集。自动对信号进行分类非常有用,因为这可以减少大型数据集所需的手动时间或实时分类。可以将原始信号数据馈入深网或预处理以关注其他功能,例如频率组件。功能提取可以大大提高网络性能,例如带有电信号的例子。Below is an例子在RNN中使用原始信号数据。

将传感器数据与MATLAB中的LSTM分类。

将传感器数据与MATLAB中的LSTM分类。

视频分析

RNN在视频中效果很好,因为视频本质上是一系列图像。与使用信号的工作类似,在将序列馈入RNN之前,它有助于进行功能提取。在这一点例子,概括的Googlenet模型(一个卷积神经网络)用于每个帧上的特征提取。您可以在下面看到网络体系结构。

Basic architecture for classifying video with LSTM.

Basic architecture for classifying video with LSTM.