主要内容

使用深度学习Sequence-to-Sequence回归

这个例子展示了如何预测剩余寿命(原则)的引擎使用深度学习。

训练一个深神经网络预测数值从时间序列或序列数据,您可以使用很长一段短期记忆(LSTM)网络。

下面的例子使用了涡扇发动机退化模拟数据集[1]中描述。火车的例子一个LSTM网络的剩余使用寿命预测引擎(预见性维护),测量周期,代表各种传感器在给定时间序列数据引擎。训练数据包含模拟100年的时间序列数据引擎。每个序列不同长度和对应于一个完整的运行失败(RTF)实例。测试数据包含100个剩余使用寿命的部分序列和相应的值在每个序列。

数据集包含100个训练观察和100个测试观察。

下载数据

下载并解压缩涡扇发动机退化模拟数据集https://ti.arc.nasa.gov/tech/dash/groups/pcoe/prognostic-data-repository/[2]。

涡扇发动机的每个时间序列退化模拟数据集代表一个不同的引擎。每个引擎从开始未知程度的磨损和制造变化。引擎操作通常在每个时间序列的开始,并开发一个错误在某种程度上在系列。在训练集,断层生长在级到系统故障。

数据包含一个zip压缩文本文件与26列的数字,用空格分开。每一行是一个快照的数据在一个运行周期,每一列是一个不同的变量。列对应如下:

  • 列1 -单元号

  • 列2 -时间周期

  • 列3 - 5——操作设置

  • 列6-26——传感器测量1日到21日

创建一个目录来存储涡扇发动机退化模拟数据集。

dataFolder = fullfile (tempdir,“涡扇”);如果~存在(dataFolder“dir”mkdir (dataFolder);结束

下载并提取的涡扇发动机退化模拟数据集https://ti.arc.nasa.gov/tech/dash/groups/pcoe/prognostic-data-repository/

解压缩的数据文件CMAPSSData.zip

文件名=“CMAPSSData.zip”;解压缩(文件名,dataFolder)

准备训练数据

使用函数加载数据processTurboFanDataTrain这个例子。这个函数processTurboFanDataTrain提取的数据filenamePredictors细胞并返回数组XTrainYTrain,包含训练预测和响应序列。

filenamePredictors = fullfile (dataFolder,“train_FD001.txt”);[XTrain, YTrain] = processTurboFanDataTrain (filenamePredictors);

删除与常量值特性

特性保持不变的步骤可以产生负面影响训练。找到的数据行有相同的最小值和最大值,和删除行。

m = min ([XTrain {:}], [], 2);M = max ([XTrain {:}], [], 2);idxConstant = M = = M;i = 1:元素个数(XTrain) XTrain{我}(idxConstant:) = [];结束

查看剩余的数量特征序列。

numFeatures =大小(XTrain {1}, 1)
numFeatures = 17

规范化培训预测

规范化培训预测零均值和单位方差。计算平均值和标准偏差对所有观察,连接序列数据水平。

μ=意味着([XTrain {:}), 2);sig =性病([XTrain {}):, 0, 2);i = 1:元素个数(XTrain) XTrain{我}= (XTrain{我}-μ)。/团体;结束

剪辑的反应

学习更多的序列数据引擎是接近失败时,夹的反应阈值150。这使得网络对实例高荷重软化值相等。

用力推= 150;i = 1:元素个数(YTrain) YTrain{我}(YTrain{我}>刺)=刺;结束

这图中显示第一个观察和对应的剪的回应。

准备数据填充

最小化的填充量添加到mini-batches,对训练数据进行排序的序列长度。然后,选择一个mini-batch把训练数据大小均匀,减少mini-batches的填充量。

排序序列长度的训练数据。

i = 1:元素个数(XTrain) = XTrain序列{};sequenceLengths (i) =(序列,2)大小;结束[sequenceLengths, idx] =排序(sequenceLengths,“下”);XTrain = XTrain (idx);YTrain = YTrain (idx);

在条形图中查看排序序列的长度。

图酒吧(sequenceLengths)包含(“序列”)ylabel (“长度”)标题(“排序数据”)

选择一个mini-batch把训练数据大小均匀,减少mini-batches的填充量。指定一个mini-batch 20的大小。这个数字说明了填料添加到无序和有序的序列。

miniBatchSize = 20;

定义网络体系结构

定义网络体系结构。创建一个LSTM网络由一个LSTM隐藏层200单元,紧随其后的是一个完全连接层大小50和辍学层辍学概率为0.5。

numResponses =大小(YTrain {1}, 1);numHiddenUnits = 200;层= [sequenceInputLayer numFeatures lstmLayer (numHiddenUnits,“OutputMode”,“序列”)fullyConnectedLayer (50) dropoutLayer (0.5) fullyConnectedLayer (numResponses) regressionLayer];

指定培训选项。训练60时代mini-batches大小20使用解算器“亚当”。0.01指定学习速率。防止爆炸的梯度,梯度阈值设置为1。保持序列按长度、集“洗牌”“永远”

maxEpochs = 60;miniBatchSize = 20;选择= trainingOptions (“亚当”,“MaxEpochs”maxEpochs,“MiniBatchSize”miniBatchSize,“InitialLearnRate”,0.01,“GradientThreshold”,1“洗牌”,“永远”,“阴谋”,“训练进步”,“详细”,0);

培训网络

列车网络使用trainNetwork

网= trainNetwork (XTrain、YTrain层,选择);

测试网络

准备测试数据使用函数processTurboFanDataTest这个例子。这个函数processTurboFanDataTest提取的数据filenamePredictorsfilenameResponses细胞并返回数组XTest欧美包含测试预测和响应序列,分别。

filenamePredictors = fullfile (dataFolder,“test_FD001.txt”);filenameResponses = fullfile (dataFolder,“RUL_FD001.txt”);[XTest,欧美]= processTurboFanDataTest (filenamePredictors filenameResponses);

删除与常量值使用特性idxConstant从训练数据计算。标准化测试预测使用相同的参数训练数据。夹在同一阈值测试反应用于训练数据。

i = 1:元素个数(XTest) XTest{我}(idxConstant:) = [];XTest{我}= (XTest{我}-μ)。/团体;我次{}(欧美{我}>刺)=刺;结束

在测试数据使用作出预测预测。防止函数添加填充数据,指定mini-batch大小1。

XTest YPred =预测(净,“MiniBatchSize”1);

LSTM网络使得预测部分序列一个时间步。在每个时间步,此时使用价值的网络预测步骤,和上一次的网络状态计算步骤。每个预测之间的网络更新其状态。的预测函数返回一个序列的预测。预测的最后一个元素对应于局部序列的预测原则。

或者,你可以预测一个时间步使用predictAndUpdateState。这是有用的,当你有时间的值到达流的步骤。通常是更快的做出预测全序列相比,预测一个时间步。为一个例子,演示如何预测未来时间步骤通过更新网络之间单一的时间步的预测,明白了使用深度学习时间序列预测

可视化的一些预测在一个阴谋。

idx = randperm(元素个数(YPred), 4);图i = 1:元素个数(idx)次要情节(2,2,我)情节(欧美{idx (i)},“——”)举行情节(YPred {idx (i)},“。”)举行ylim([0刺+ 25)标题(“测试观察”+ idx (i))包含(“时间步”)ylabel (“原则”)结束传奇([“测试数据”“预测”),“位置”,“东南”)

对于一个给定的部分序列,预测当前荷重软化是预测的最后一个元素序列。计算均方根误差(RMSE)的预测和可视化预测误差在一个柱状图。

i = 1:元素个数(欧美)YTestLast (i) =次{我}(结束);YPredLast (i) = YPred{我}(结束);结束图rmse =√意味着(YPredLast - YTestLast) ^ 2))直方图(YPredLast - YTestLast)标题(" RMSE = "+ rmse) ylabel (“频率”)包含(“错误”)

引用

  1. Saxena,阿凯Goebel唐西门,和尼尔·埃克伦。“损害传播为航空发动机建模run-to-failure模拟。”在预测和健康管理,2008年。2008年榜单。国际会议上1 - 9页。IEEE 2008。

  2. Saxena,阿凯Goebel。“涡扇发动机退化仿真数据集。”NASA艾姆斯预测数据存储库https://ti.arc.nasa.gov/tech/dash/groups/pcoe/prognostic-data-repository/NASA艾姆斯研究中心,莫菲特场,CA

另请参阅

||||

相关的话题