随着神经网络所要完成的任务越来越智能化,其内部的结构也变得越来越复杂,神经网络学到的解题方法也越来越难以被人类所理解。神经网络的内部单元就好比一个"黑箱",虽然这种处理方法能够在某种程度上达到非常不错的效果,但其原因却非常模糊不清,例如卷积核在学习提取特征的过程中,究竟学习到的是什么?在卷积神经网络的架构设计中应该设计多少层网络、每层又该包含多少的卷积核数,以及如何选择激活函数,且为什么某些选择会优于另一些选择?这些问题的答案不仅有利于提升我们对CNN的科学理解,而且还能提升它们的实用性。随着神经网络越来越多地参与解决现实世界中的问题,解决这个"黑箱"问题也变得越发重要。
然而人们对这些网络工作原理的理解仍然滞后于其发展,至今没有人能够从数学原理上对该模型予以解释。研究者们都是通过不断的试错和反复的调参过程才得到较为满意的结果。这对理论研究者,尤其是数学家来说当然是不可接受的。此外,目前实现CNN的方法需要大量训练数据,而且不同的模型设计对结果有着很大的影响。从理论上更深入地理解卷积神经网络能够减轻对数据驱动设计的依赖。尽管已有实证研究调查了所实现的网络的运行方式,但到目前为止,这些结果很大程度上还局限在内部处理过程的可视化上,即理解CNN中不同层中发生的情况。
神经网络的特征层可视化是一个新兴的科学研究领域,虽然无法完全"打开"这个"黑箱",但是仍然出现了很多探索这个"黑箱"的尝试工作。神经网络的可视化研究,具体来说是对神经网络所提取的特征的可视化研究,不仅有助于理解网络内部结构的工作机制,而且对神经网络在其他应用上的研究也具有指导意义,避免了盲目的调参或试错。神经网络的训练涉及大量的反复试错,直到找到合适的参数为止,这个过程既耗时又容易出错。另外一个训练好的神经网络相当于含百万参数的复杂非线性函数,很难指出其优缺点。神经网络用在其他领域如工业、政府机构及医疗机构等同样会因为其内部的"黑盒"特性而很难让人们理解。试想一名医生若用深度神经网络的方法来诊断一位病人,除非该医生能够理解神经网络的工作原理他才有可能相信这种自动诊断方法。更好地理解这些网络能够帮助研究者们找到新的指导训练网络的方法,对常用网络中的缺陷进行检测并对其进行改善,使得训练的网络层数更深、提取的特征更加有效。
鉴于此,本项目采用卷积神经网络对滚动轴承进行故障诊断并进行特征可视化,采用的数据集为西储大学轴承数据集,Python版本为3.9.0,所用部分模块如下:
import numpy as np
import tensorflow as tf
from tensorflow.keras.applications.vgg19 import VGG19
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.vgg19 import preprocess_input
from tensorflow.keras.models import Model, load_model
重要模块版本如下:
tensorflow=2.8.0
keras=2.8.0
sklearn=1.0.2
部分出图如下:
完整代码可由知乎学术咨询获得:
Python环境下基于深度学习的旋转机械故障诊断及其权重可视化
工学博士,担任《Mechanical System and Signal Processing》审稿专家,担任《中国电机工程学报》优秀审稿专家,《控制与决策》,《系统工程与电子技术》,《电力系统保护与控制》,《宇航学报》等EI期刊审稿专家。
擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。