本主题介绍如何使用长短时记忆(LSTM)网络处理分类和回归任务中的序列和时间序列数据。有关如何使用LSTM网络对序列数据进行分类的示例,请参阅gydF4y2Ba基于深度学习的序列分类gydF4y2Ba.gydF4y2Ba
LSTM网络是一种递归神经网络(RNN),它可以学习序列数据时间步长之间的长期依赖关系。gydF4y2Ba
LSTM网络的核心组件是序列输入层和LSTM层。一个gydF4y2Ba序列输入层gydF4y2Ba将序列或时间序列数据输入到网络中gydF4y2BaLSTM层gydF4y2Ba学习序列数据的时间步长之间的长期依赖关系。gydF4y2Ba
这个图说明了一个用于分类的简单LSTM网络的体系结构。网络从序列输入层开始,然后是LSTM层。为了预测类标签,网络以完全连接层、软最大层和分类输出层结束。gydF4y2Ba
此图说明了用于回归的简单LSTM网络的体系结构。该网络从序列输入层开始,然后是LSTM层。该网络以完全连接层和回归输出层结束。gydF4y2Ba
此图说明了视频分类网络的体系结构。要将图像序列输入网络,请使用序列输入层。要使用卷积层来提取特征,即,要将卷积运算独立地应用于视频的每个帧,请先使用序列折叠层,再使用卷积层,然后使用序列展开层。要使用LSTM层从矢量序列中学习,请先使用展平层,然后使用LSTM和输出层。gydF4y2Ba
要为序列标签分类创建LSTM网络,请创建包含序列输入层、LSTM层、完全连接层、softmax层和分类输出层的层阵列。gydF4y2Ba
将序列输入层的大小设置为输入数据的特征数量。将完全连接层的大小设置为类的数量。您不需要指定序列长度。gydF4y2Ba
对于LSTM层,指定隐藏单元数和输出模式gydF4y2Ba“最后一次”gydF4y2Ba
.gydF4y2Ba
numFeatures=12;numHiddenUnits=100;NumClass=9;图层=[gydF4y2Ba...gydF4y2BasequenceInputLayer numFeatures lstmLayer (numHiddenUnits,gydF4y2Ba“输出模式”gydF4y2Ba,gydF4y2Ba“最后一次”gydF4y2Ba) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer;gydF4y2Ba
有关如何为序列训练LSTM网络以标记分类和分类新数据的示例,请参阅gydF4y2Ba基于深度学习的序列分类gydF4y2Ba.gydF4y2Ba
要创建用于序列到序列分类的LSTM网络,请使用与序列到标签分类相同的架构,但设置LSTM层的输出模式为gydF4y2Ba“序列”gydF4y2Ba
.gydF4y2Ba
numFeatures=12;numHiddenUnits=100;NumClass=9;图层=[gydF4y2Ba...gydF4y2BasequenceInputLayer numFeatures lstmLayer (numHiddenUnits,gydF4y2Ba“输出模式”gydF4y2Ba,gydF4y2Ba“序列”gydF4y2Ba) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer;gydF4y2Ba
要创建序列到一回归的LSTM网络,需要创建一个包含序列输入层、LSTM层、全连接层和回归输出层的层阵列。gydF4y2Ba
将序列输入层的大小设置为输入数据的特征数量。将完全连接层的大小设置为响应的数量。您不需要指定序列长度。gydF4y2Ba
对于LSTM层,指定隐藏单元数和输出模式gydF4y2Ba“最后一次”gydF4y2Ba
.gydF4y2Ba
numFeatures=12;numhidden单位=125;numResponses=1;层=[gydF4y2Ba...gydF4y2BasequenceInputLayer numFeatures lstmLayer (numHiddenUnits,gydF4y2Ba“输出模式”gydF4y2Ba,gydF4y2Ba“最后一次”gydF4y2Ba)完全连接层(numResponses)回归层];gydF4y2Ba
要创建序列到序列回归的LSTM网络,使用与序列到一回归相同的架构,但设置LSTM层的输出模式为gydF4y2Ba“序列”gydF4y2Ba
.gydF4y2Ba
numFeatures=12;numhidden单位=125;numResponses=1;层=[gydF4y2Ba...gydF4y2BasequenceInputLayer numFeatures lstmLayer (numHiddenUnits,gydF4y2Ba“输出模式”gydF4y2Ba,gydF4y2Ba“序列”gydF4y2Ba)完全连接层(numResponses)回归层];gydF4y2Ba
有关如何训练LSTM网络进行序列到序列回归和预测新数据的示例,请参见gydF4y2Ba使用深度学习的序列到序列回归gydF4y2Ba.gydF4y2Ba
要为包含图像序列(如视频数据和医学图像)的数据创建深度学习网络,请使用序列输入层指定图像序列输入。gydF4y2Ba
要使用卷积层提取特征,也就是说,要将卷积运算独立应用于视频的每一帧,请先使用序列折叠层,然后是卷积层,然后是序列展开层。要使用LSTM层从向量序列中学习,请使用平坦层,然后是LSTM和output层。gydF4y2Ba
inputSize=[28 28 1];filterSize=5;numFilters=20;numHiddenUnits=200;NumClass=10;layers=[gydF4y2Ba...gydF4y2BasequenceInputLayer (inputSizegydF4y2Ba“名字”gydF4y2Ba,gydF4y2Ba“输入”gydF4y2Ba) sequenceFoldingLayer (gydF4y2Ba“名字”gydF4y2Ba,gydF4y2Ba“折”gydF4y2Ba) convolution2dLayer (filterSize numFilters,gydF4y2Ba“名字”gydF4y2Ba,gydF4y2Ba“conv”gydF4y2Ba)批处理规范化层(gydF4y2Ba“名字”gydF4y2Ba,gydF4y2Babn的gydF4y2Ba) reluLayer (gydF4y2Ba“名字”gydF4y2Ba,gydF4y2Ba“雷卢”gydF4y2Ba)序列展开层(gydF4y2Ba“名字”gydF4y2Ba,gydF4y2Ba“展开”gydF4y2Ba) flattenLayer (gydF4y2Ba“名字”gydF4y2Ba,gydF4y2Ba“平”gydF4y2Ba)第一层(numhidden单位,gydF4y2Ba“输出模式”gydF4y2Ba,gydF4y2Ba“最后一次”gydF4y2Ba,gydF4y2Ba“名字”gydF4y2Ba,gydF4y2Ba“lstm”gydF4y2Ba)完全连接层(NumClass,gydF4y2Ba“名字”gydF4y2Ba,gydF4y2Ba“fc”gydF4y2Ba)软MaxLayer(gydF4y2Ba“名字”gydF4y2Ba,gydF4y2Ba“softmax”gydF4y2Ba)分类层(gydF4y2Ba“名字”gydF4y2Ba,gydF4y2Ba“分类”gydF4y2Ba)];gydF4y2Ba
将层转换为层图并连接gydF4y2BaminiBatchSizegydF4y2Ba
序列折叠层的输出到序列展开层的相应输入。gydF4y2Ba
lgraph=层图形(层);lgraph=连接层(lgraph,gydF4y2Ba“折叠/小批量大小”gydF4y2Ba,gydF4y2Ba“展开/小批量大小”gydF4y2Ba);gydF4y2Ba
有关如何为视频分类培训深度学习网络的示例,请参阅gydF4y2Ba使用深度学习对视频进行分类gydF4y2Ba.gydF4y2Ba
通过插入带有输出模式的额外LSTM层,可以使LSTM网络更深入gydF4y2Ba“序列”gydF4y2Ba
LSTM层之前。为了防止过拟合,可以在LSTM层之后插入dropout层。gydF4y2Ba
对于序列标签分类网络,最后一个LSTM层的输出模式必须为gydF4y2Ba“最后一次”gydF4y2Ba
.gydF4y2Ba
numFeatures=12;numhiddenuts1=125;numhiddenuts2=100;numclass=9;层=[gydF4y2Ba...gydF4y2BasequenceInputLayer(numFeatures)lstmLayer(numHiddenUnits1,gydF4y2Ba“输出模式”gydF4y2Ba,gydF4y2Ba“序列”gydF4y2Ba) dropoutLayer (0.2) lstmLayer (numHiddenUnits2gydF4y2Ba“输出模式”gydF4y2Ba,gydF4y2Ba“最后一次”gydF4y2Ba) dropoutLayer(0.2) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer];gydF4y2Ba
对于序列到序列分类网络,最后一个LSTM层的输出模式必须为gydF4y2Ba“序列”gydF4y2Ba
.gydF4y2Ba
numFeatures=12;numhiddenuts1=125;numhiddenuts2=100;numclass=9;层=[gydF4y2Ba...gydF4y2BasequenceInputLayer(numFeatures)lstmLayer(numHiddenUnits1,gydF4y2Ba“输出模式”gydF4y2Ba,gydF4y2Ba“序列”gydF4y2Ba) dropoutLayer (0.2) lstmLayer (numHiddenUnits2gydF4y2Ba“输出模式”gydF4y2Ba,gydF4y2Ba“序列”gydF4y2Ba) dropoutLayer(0.2) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer];gydF4y2Ba
层gydF4y2Ba | 描述gydF4y2Ba |
---|---|
序列输入层将序列数据输入到网络。gydF4y2Ba | |
LSTM层学习时间序列和序列数据中时间步长之间的长期依赖关系。gydF4y2Ba | |
双向LSTM (BiLSTM)层学习时间序列或序列数据的时间步长之间的双向长期依赖关系。当您希望网络在每个时间步骤中从完整的时间序列中学习时,这些依赖项可能会很有用。gydF4y2Ba | |
GRU层学习时间序列和序列数据中时间步之间的依赖关系。gydF4y2Ba | |
一维卷积层将滑动卷积滤波器应用于一维输入。gydF4y2Ba | |
一维最大池层通过将输入划分为一维池区域,然后计算每个区域的最大值来执行下采样。gydF4y2Ba | |
1-D平均池化层通过将输入划分为1-D池化区域,然后计算每个区域的平均值来执行向下采样。gydF4y2Ba | |
一维全局最大池层通过输出输入的最大时间或空间维度来执行下采样。gydF4y2Ba | |
序列折叠层将一批图像序列转换为一批图像。使用序列折叠层独立地对图像序列的时间步长执行卷积运算。gydF4y2Ba | |
序列展开层恢复序列折叠后输入数据的序列结构。gydF4y2Ba | |
平坦层将输入的空间维度折叠为通道维度。gydF4y2Ba | |
|
单词嵌入层将单词索引映射到向量。gydF4y2Ba |
要对新数据进行分类或预测,请使用gydF4y2Ba分类gydF4y2Ba
和gydF4y2Ba预测gydF4y2Ba
.gydF4y2Ba
LSTM网络可以记住网络在预测之间的状态。当您没有预先得到完整的时间序列,或者您想对一个长时间序列进行多次预测时,网络状态是很有用的。gydF4y2Ba
为了对时间序列的部分进行预测和分类,并更新网络状态,使用gydF4y2Ba预测和更新房地产gydF4y2Ba
和gydF4y2Ba分类与更新房地产gydF4y2Ba
. 要在预测之间重置网络状态,请使用gydF4y2BaresetStategydF4y2Ba
.gydF4y2Ba
有关如何预测序列的未来时间步长的示例,请参见gydF4y2Ba基于深度学习的时间序列预测gydF4y2Ba.gydF4y2Ba
LSTM网络支持具有不同序列万博1manbetx长度的输入数据。当通过网络传递数据时,软件填充、截断或拆分序列,以便每个小批量中的所有序列都具有指定的长度。可以使用指定序列长度和用于填充序列的值gydF4y2Ba序列长度gydF4y2Ba
和gydF4y2BaSequencePaddingValuegydF4y2Ba
中的名称-值对参数gydF4y2Ba培训选项gydF4y2Ba
.gydF4y2Ba
训练网络后,在使用时使用相同的小批量大小和填充选项gydF4y2Ba分类gydF4y2Ba
,gydF4y2Ba预测gydF4y2Ba
,gydF4y2Ba分类与更新房地产gydF4y2Ba
,gydF4y2Ba预测和更新房地产gydF4y2Ba
和gydF4y2Ba激活gydF4y2Ba
功能。gydF4y2Ba
要减少填充或截断序列时填充或丢弃的数据量,请尝试按序列长度对数据进行排序。要按序列长度对数据排序,首先通过应用gydF4y2Ba尺寸(X,2)gydF4y2Ba
对每个序列使用gydF4y2BacellfungydF4y2Ba
。然后使用gydF4y2Ba分类gydF4y2Ba
,并使用第二个输出对原始序列重新排序。gydF4y2Ba
SequenceLength=cellfun(@(X)大小(X,2),XTrain);[sequenceLengthsSorted,idx]=排序(SequenceLength);XTrain=XTrain(idx);gydF4y2Ba
下图以柱状图的形式显示了已排序和未排序数据的序列长度。gydF4y2Ba
如果指定序列长度gydF4y2Ba“最长”gydF4y2Ba
,然后软件填充序列,以便小批量中的所有序列与小批量中最长的序列具有相同的长度。此选项是默认选项。gydF4y2Ba
下图说明了设置的效果gydF4y2Ba“SequenceLength”gydF4y2Ba
到gydF4y2Ba“最长”gydF4y2Ba
.gydF4y2Ba
如果指定序列长度gydF4y2Ba“最短”gydF4y2Ba
,然后软件截断序列,使一个小批中的所有序列与该小批中的最短序列具有相同的长度。序列中剩余的数据将被丢弃。gydF4y2Ba
下图说明了设置的效果gydF4y2Ba“SequenceLength”gydF4y2Ba
到gydF4y2Ba“最短”gydF4y2Ba
.gydF4y2Ba
如果将序列长度设置为整数值,则软件会将小批量中的所有序列填充到指定长度的最近倍数,该指定长度大于小批量中最长的序列长度。然后,软件将每个序列拆分为指定长度的较小序列。如果发生拆分,则软件会创建额外的小批量。gydF4y2Ba
如果完整序列无法装入内存,则使用此选项。或者,您可以尝试通过设置gydF4y2Ba“MiniBatchSize”gydF4y2Ba
选择权gydF4y2Ba培训选项gydF4y2Ba
降低到较低的值。gydF4y2Ba
如果将序列长度指定为正整数,则软件将在连续迭代中处理较小的序列。网络将更新拆分序列之间的网络状态。gydF4y2Ba
下图说明了设置的效果gydF4y2Ba“SequenceLength”gydF4y2Ba
5。gydF4y2Ba
填充和截断的位置会影响训练、分类和预测的准确性。尝试设置gydF4y2Ba“SequencePaddingDirection”gydF4y2Ba
选择权gydF4y2Ba培训选项gydF4y2Ba
到gydF4y2Ba“左”gydF4y2Ba
或gydF4y2Ba“对”gydF4y2Ba
然后看看哪一个最适合您的数据。gydF4y2Ba
因为LSTM层一次只处理一个时间步长的序列数据,所以gydF4y2BaOutputModegydF4y2Ba
属性是gydF4y2Ba“最后一次”gydF4y2Ba
,最后时间步骤中的任何填充都会对层输出产生负面影响。要在左侧填充或截断序列数据,请设置gydF4y2Ba“SequencePaddingDirection”gydF4y2Ba
选项gydF4y2Ba“左”gydF4y2Ba
.gydF4y2Ba
对于序列到序列网络(当gydF4y2BaOutputModegydF4y2Ba
属性是gydF4y2Ba“序列”gydF4y2Ba
对于每个LSTM层),第一个时间步骤中的任何填充都会对较早时间步骤的预测产生负面影响。要在右侧填充或截断序列数据,请设置gydF4y2Ba“SequencePaddingDirection”gydF4y2Ba
选项gydF4y2Ba“对”gydF4y2Ba
.gydF4y2Ba
下图显示了左侧和右侧的填充顺序数据。gydF4y2Ba
下图显示了在左侧和右侧截断序列数据。gydF4y2Ba
若要在训练时使用零中心归一化自动重定向训练数据,请设置gydF4y2Ba规范化gydF4y2Ba
选择gydF4y2Ba序列输入层gydF4y2Ba
到gydF4y2Ba“零中心”gydF4y2Ba
.或者,您可以通过首先计算所有序列的每个特征均值和标准偏差来规范化序列数据。然后,对每一个训练观察,减去平均值,除以标准差。gydF4y2Ba
mu=平均值([XTrain{:}],2);sigma=标准值([XTrain{:}],0,2);XTrain=cellfun(@(X)(X-mu)。/sigma,XTrain,gydF4y2Ba“UniformOutput”gydF4y2Ba,假);gydF4y2Ba
当数据太大而无法放入内存或在读取成批数据时无法执行特定操作时,请将数据存储用于序列、时间序列和信号数据。gydF4y2Ba
想要了解更多,请看gydF4y2Ba列车网络使用内存不足的序列数据gydF4y2Ba和gydF4y2Ba使用深度学习对内存不足的文本数据进行分类gydF4y2Ba.gydF4y2Ba
通过对序列和时间序列数据的激活提取,研究并可视化LSTM网络学习到的特征gydF4y2Ba激活gydF4y2Ba
函数。想要了解更多,请看gydF4y2Ba可视化LSTM网络的激活gydF4y2Ba.gydF4y2Ba
这个图表说明了时间序列的流程gydF4y2BaXgydF4y2Ba与gydF4y2BaCgydF4y2Ba长度特征(通道)gydF4y2Ba年代gydF4y2Ba通过LSTM层。在图中,gydF4y2Ba 和gydF4y2Ba 表示输出(也称为gydF4y2Ba隐藏状态gydF4y2Ba)和gydF4y2Ba细胞状态gydF4y2Ba时间步长gydF4y2BatgydF4y2Ba,分别。gydF4y2Ba
第一个LSTM块使用网络的初始状态和序列的第一个时间步长来计算第一个输出和更新的cell状态。在时间步gydF4y2BatgydF4y2Ba,块使用网络的当前状态gydF4y2Ba 和下一个时间步长序列来计算输出和更新的单元格状态gydF4y2Ba .gydF4y2Ba
层的状态由gydF4y2Ba隐藏状态gydF4y2Ba(也称为gydF4y2Ba输出状态gydF4y2Ba)和gydF4y2Ba细胞状态gydF4y2Ba.时间步的隐藏状态gydF4y2BatgydF4y2Ba包含此时间步骤的LSTM层的输出。单元格状态包含从前面的时间步骤中获得的信息。在每个时间步骤中,该层向单元格状态中添加信息或从单元格状态中删除信息。该层使用gydF4y2Ba盖茨gydF4y2Ba.gydF4y2Ba
下面的组件控制层的单元格状态和隐藏状态。gydF4y2Ba
组件gydF4y2Ba | 意图gydF4y2Ba |
---|---|
输入门(gydF4y2Ba我gydF4y2Ba)gydF4y2Ba | 单元格状态更新的控制级别gydF4y2Ba |
忘记门(gydF4y2BafgydF4y2Ba)gydF4y2Ba | 单元格状态重置的控制级别(忘记)gydF4y2Ba |
候选细胞(gydF4y2BaggydF4y2Ba)gydF4y2Ba | 向单元格状态添加信息gydF4y2Ba |
输出门(gydF4y2BaogydF4y2Ba)gydF4y2Ba | 添加到隐藏状态的单元格状态的控制级别gydF4y2Ba |
此图说明了时间步长的数据流gydF4y2BatgydF4y2Ba.该图突出显示了门是如何忘记、更新和输出单元格和隐藏状态的。gydF4y2Ba
LSTM层的可学习权重是输入权重gydF4y2BaWgydF4y2Ba(gydF4y2BaInputWeightsgydF4y2Ba
),循环权重gydF4y2BaRgydF4y2Ba(gydF4y2BaRecurrentWeightsgydF4y2Ba
),以及偏见gydF4y2BabgydF4y2Ba(gydF4y2Ba偏见gydF4y2Ba
).矩阵gydF4y2BaWgydF4y2Ba,gydF4y2BaRgydF4y2Ba和gydF4y2BabgydF4y2Ba分别是输入权重、循环权重和每个分量的偏差的串联。这些矩阵按如下方式连接:gydF4y2Ba
哪里gydF4y2Ba我gydF4y2Ba,gydF4y2BafgydF4y2Ba,gydF4y2BaggydF4y2Ba和gydF4y2BaogydF4y2Ba分别表示输入门、遗忘门、单元候选和输出门。gydF4y2Ba
时间步长的单元状态gydF4y2BatgydF4y2Ba是由gydF4y2Ba
哪里gydF4y2Ba 表示Hadamard乘积(向量的元素相乘)。gydF4y2Ba
时间步长的隐藏状态gydF4y2BatgydF4y2Ba是由gydF4y2Ba
哪里gydF4y2Ba
表示状态激活函数gydF4y2BalstmLayergydF4y2Ba
默认情况下,函数使用双曲正切函数(tanh)计算状态激活函数。gydF4y2Ba
以下公式描述了时间步长下的组件gydF4y2BatgydF4y2Ba.gydF4y2Ba
组件gydF4y2Ba | 公式gydF4y2Ba |
---|---|
输入门gydF4y2Ba | |
忘记门gydF4y2Ba | |
候选细胞gydF4y2Ba | |
输出门gydF4y2Ba |
在这些计算中,,gydF4y2Ba
表示栅极激活功能gydF4y2BalstmLayergydF4y2Ba
函数,默认情况下,使用s形函数gydF4y2Ba
计算闸门激活函数。gydF4y2Ba
S. Hochreiter和J. Schmidhuber。“长短期记忆。”gydF4y2Ba神经计算gydF4y2Ba1997年第9卷第8期,第1735-1780页。gydF4y2Ba
序列输入层gydF4y2Ba
|gydF4y2BalstmLayergydF4y2Ba
|gydF4y2Ba双层膜gydF4y2Ba
|gydF4y2BagruLayergydF4y2Ba
|gydF4y2Ba分类与更新房地产gydF4y2Ba
|gydF4y2Ba预测和更新房地产gydF4y2Ba
|gydF4y2BaresetStategydF4y2Ba
|gydF4y2BasequenceFoldingLayergydF4y2Ba
|gydF4y2BasequenceUnfoldingLayergydF4y2Ba
|gydF4y2BaflattenLayergydF4y2Ba
|gydF4y2Ba字嵌入层gydF4y2Ba
(文本分析工具箱)gydF4y2Ba|gydF4y2Ba激活gydF4y2Ba