您怎么知道一台机器是否在正常运行?问题的回答是:通过利用深度学习来检测工业机器的常规振动数据中的异常情况。异常检测有很多用途,而尤其在预测性维护中特别有用。
这个深度学习的例子讲的是基于双向长短期记忆网络(biLSTM)的自动编码器。虽然这个词很拗口,但它仅表示训练网络来重构“正常”数据。这样,当我们给算法提供一些看起来不同的数据时,重构错误会提示您机器可能需要维护。当您所拥有的数据均为“正常”数据时,自动编码器不失是一个很好的尝试方法。
数据集有两部分:维护前的数据和维护后的数据。从逻辑上讲,我们可以假定维护后的数据是“正常”的(当我们有一个称职的维护团队的情况下!)。但是我们对维护前的数据并不确定。
以下显示了两个相互叠加在一起的数据样本。
与其在原始信号上进行训练,不如提取特征区分训练前后的数据,这往往帮助更大。使用Diagnostic Feature Designer应用程序,一次性从所有数据中自动提取特征并对其排序。然后,这个应用程序可以自动创建一个函数generateFeatures,以编程方式重做所有这些工作。
trainFeatures = generateFeatures(trainData);
这就是那个基于biLSTM的自动编码器。
featureDimension = 1;
% Define biLSTM network layers
layers = [ sequenceInputLayer(featureDimension, 'Name', 'in')
bilstmLayer(16, 'Name', 'bilstm1')
reluLayer('Name', 'relu1')
bilstmLayer(32, 'Name', 'bilstm2')
reluLayer('Name', 'relu2')
bilstmLayer(16, 'Name', 'bilstm3')
reluLayer('Name', 'relu3')
fullyConnectedLayer(featureDimension, 'Name', 'fc')
regressionLayer('Name', 'out') ];
自动编码器是这样工作的:在正常数据上训练网络。如果您把正常的数据传给它,就能很好地重构它。如果您把一些不正常的数据传给它,就无法重构它,并且您会从重构错误中看到提示。
在每个通道的排名前四的特征上训练网络—仅根据正常(维护后)数据。
通过挑选合适的重构误差阈值,算法能以相当高的准确率识别出异常情况。而我们有一些已知为异常的测试数据,可以明确地测试算法的准确率。
预测类别 |
全部0条评论
快来发表一下你的评论吧 !