当前位置:网站首页>APReLU:跨界应用,用于机器故障检测的自适应ReLU | IEEE TIE 2020
APReLU:跨界应用,用于机器故障检测的自适应ReLU | IEEE TIE 2020
2020-11-08 21:03:00 【晓飞的算法工程笔记】
> 论文的工作属于深度学习在工业界的应用,借鉴计算机视觉的解决方法,针对机器故障检测的场景提出自适应的APReLU,对故障检测的准确率有很大的提升。论文整体思想应该也可以应用于计算机视觉,代码也开源了,大家可以尝试下
来源:晓飞的算法工程笔记 公众号
论文: Deep Residual Networks with Adaptively Parametric Rectifier Linear Units for Fault Diagnosis

- 论文地址:https://ieeexplore.ieee.org/document/8998530/metrics#metrics
- 代码地址:https://github.com/zhao62/Adaptively-Parametric-ReLU
Introduction
论文讨论的场景是电子设备的错误检测,由于在苛刻环境下长期运行,电子设备经常会不可避免地出现故障,进而造成意外和损失。而振动信号(vibration signal)通常包含由于机器故障引起脉冲和波动,可用来检测设备故障。近期,深度学习方法也被用于电子设备的错误检测中,将振动信号作为输入,输出当前设备是否正常。

主流的分类神经网络使用一组完全相同的非线性变换来处理不同的输入,如图a所示,F、G和H代表非线性变化,$=$代表非线性变换是否相同。对于振动信号场景而言,相同健康状态的机器,由于当前操作不同,反馈的振动信号的差异可能较大,很难将不同波形的归为同一健康状态。相反的,不同健康状态的机器偶然会产生相同的振动信号,神经网络会将其映射到相近的区域,难以区分。综上,固定的非线性变换在振动信号场景中可能会对特征学习能力带来负面的影响,能够自动学习并根据输入信号使用不同的非线性变换是十分有意义的。

论文基于ResNet提出了改进版ResNet-APReLU,如图b所示,根据输入信号赋予不同的非线性变换,具体是通过插入一个类似SE(squeeze-and-excitation)模块的子网来调整激活函数的斜率,能够大幅提升故障检测的准确率。由于论文的场景比较特殊,所以主要学习论文提出的方法,至于应用场景相关的部分和实验部分,就简单地带过就好了。
Fundamentals of classical ResNets

论文以ResNet为基础,ResNet的核心结构如图2a所示,相信各位都很清楚,就不再介绍了。将ResNet应用到机器错误识别中,如图2b所示,输入振动信号,经过网络的特征提取后进行状态识别,判断机器是健康还是处于其它错误状态中。论文的核心是通过改进ReLU进行自适应的非线性变换,原版ReLU可公式化为:

Design of the developed ResNet-APReLU
Design of the fundamental architecture for APReLU

APReLU集成了一个特别设计的子网,有点类似于SE模块,根据输入自适应地预测用于非线性变换的乘法因子,结构如图3a所示,输出channel-wise的ReLU参数,包含以下步骤:
- 用ReLU和GAP将输入特征映射到1D向量,获取正面特征(positive feature)的全局信息。用min(x, 0)和GAP将输入特征映射到另一个1D向量,获取负面特征(negative feature)的全局信息,负面信息可能包含某些有用的故障信息。GAP能够处理信号的偏移问题,将输入特征图信息压缩为两个1D向量,分别代表正面和负面信息。
- 将两个1D向量Concate到一起,进行FC-BN-ReLU-FC-BN-Sigmoid计算,两个FC的输出与输入特征的维度一致,最后sigmoid输出用于公式10的$\alpha \in (0, 1)$因子:

Architecture of the developed ResNet-APReLU for vibration-based gearbox fault diagnosis


基于APEeLU构建新的ResBlock,如图b所示,与原版的ResBlock基本一致,只是将ReLU替换为APReLU进行自适应非线性激活。APReLU的输出大小跟输入大小一样,可以简单地嵌入到各种网络中。完整的网络结构如图c所示,最后输出多个机器状态的预测,计算交叉熵损失,进行梯度下降学习。
Experimental Results

从结果来看,针对机器故障的场景,论文提出的方法是十分有效的。
Conclustion
论文的工作属于深度学习在工业界的应用,借鉴计算机视觉的解决方法,针对机器故障检测的场景提出自适应的APReLU,对故障检测的准确率有很大的提升。论文整体思想应该也可以应用于计算机视觉,代码也开源了,大家可以尝试下。
> 如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

版权声明
本文为[晓飞的算法工程笔记]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4490761/blog/4708283
边栏推荐
- 不是程序员,代码也不能太丑!python官方书写规范:任何人都该了解的 pep8
- CountDownLatch 瞬间炸裂!同基于 AQS,凭什么 CyclicBarrier 可以这么秀?
- 选择排序
- go语言参数传递到底是传值还是传引用?
- [elastic search technology sharing] - ten pictures to show you the principle of ES! Understand why to say: ES is quasi real time!
- Dynamic ReLU:微软推出提点神器,可能是最好的ReLU改进 | ECCV 2020
- 解决go get下载包失败问题
- Chapter five
- 数组初相识
- 【云服务】阿里云服务器ECS实例规格那么多,如何选型?最佳实践说明
猜你喜欢

. net core cross platform resource monitoring library and dotnet tool

Creating a text cloud or label cloud in Python

单例模式的五种设计方案

CountDownLatch 瞬间炸裂!同基于 AQS,凭什么 CyclicBarrier 可以这么秀?

Dynamic planning

接口测试用例思路总结

JVM真香系列:轻松理解class文件到虚拟机(下)

Exercise 5
![[elastic search technology sharing] - ten pictures to show you the principle of ES! Understand why to say: ES is quasi real time!](/img/4b/176185ba622b275404e2083df4f28a.jpg)
[elastic search technology sharing] - ten pictures to show you the principle of ES! Understand why to say: ES is quasi real time!

experiment
随机推荐
Iterm2 configuration and beautification
Chapter five
abp(net core)+easyui+efcore实现仓储管理系统——出库管理之五(五十四)
Infix expression to suffix expression
Using annotation + interceptor to implement asynchronous execution
[elastic search technology sharing] - ten pictures to show you the principle of ES! Understand why to say: ES is quasi real time!
To introduce to you, this is my flow chart software—— draw.io
CountDownLatch 瞬间炸裂!同基于 AQS,凭什么 CyclicBarrier 可以这么秀?
Creating a text cloud or label cloud in Python
动态规划答疑篇
Experiment 1 assignment
Programmers should know the URI, a comprehensive understanding of the article
Introduction and application of swagger
npm install 无响应解决方案
Dynamic query processing method of stored procedure
experiment
Deep copy
C / C + + learning diary: original code, inverse code and complement code
Proficient in high concurrency and multithreading, but can't use ThreadLocal?
Exercise 5