【小组队名】设备状态智能诊断队
【小组队员】欧阳辉(组长)、熊少勇、张建杰、郎国庆、史镇玮
【小组口号】以智取胜,创新求远。让智能与核电共舞!
【作品名字】基于AI技术的核电故障早期预警和诊断模型
【作品展示】
【视频展示】
(温馨提示:如使用手机观看时视频无法适配屏幕尺寸,请将视频左滑点击全屏按钮观看!)
【技术文章展示】
基于AI技术的核电故障早期预警和诊断模型
仪控项目组:欧阳辉、张建杰、郎国庆、史镇玮、熊少勇
一、 引言
本文章主要是介绍如何通过AI技术来对核电站的相关典型故障做早期故障识别预警以及诊断的办法,本次的AI算法模型是基于Python进行开发的,但是Python并不是本次项目的核心要素,其只是一个搭建的工具,本次的所有功能都打包成一个EXE文件,但该执行文件并没有我们常规意义上的可显示界面。此次进行的机器学习的核心算法是微软的开源算法LightGBM,于其称之为算法不如称之为宏大的开源项目工程更为贴切,LightGBM是2017年由微软推出的可扩展机器学习系统,是微软旗下DMKT的一个开源项目,它是一款基于GBDT(梯度提升决策树)算法的分布式梯度提升框架,为了满足缩短模型计算时间的需求而诞生,LightGBM的设计思路主要集中在减小数据对内存与计算性能的使用,以及减少多机器并行计算时的通讯代价。与其这样说可能过于枯燥,首先来看一下其强大功能目前主要的应用场景:
Ø 癌症分类预测-良/恶性癌肿瘤预测
Ø 实现基于客户浏览内容的个性化推荐
Ø 信用评级以及金融诈骗识别(是否是金融诈骗)
Ø 航空发动机剩余寿命预测
二、 研究对象的选取
本次研究的对象主要是基于以”决策树”为基础算法模块,此方法目前比较多的用于金融体系的信用评级,癌症的辅助诊断和基因突变识别以及大宗商品的销售预测等。其主要的模型构思如下图所示:
此次分析的模型主要是基于N4ARE032VL异常故障而导致SG水位波动的事故。其研究对象的维度主要如下:
注意:由于本次研究的对象数据全部来源于KNS数据,因此由于受限KNS平台的限制,以上的数据维度仅采用了7个维度,但从AI数据分析来看维度的个数在强关联性下应该是越多越好!
写到这里大家可能会觉得异常枯燥,所以先给大家展示一下此次模型能够实现的机器预测的魅力,注意:本次模型里面仅仅只涉及到二分类,也就是“0”代表“正常”;“1”代表“故障”。
从上图的IOE报告截图可以看出:在2022年7月16日20:02:29分出现N4ARE403KA1报警,但是如果用机器模型来预警的话从第二张图可以看出:能够在同一时段的20:00:28就能判断出有故障情况的出现。但是仅仅通过现有的DCS技术和人工识别都是无法能够在严格意义上的第一时间甄别出来的,从AI数据的分析来看告诉我们一点:“任何质的改变都是由细小的量变开始的!”
三、 数据的获取
由于本次数据全部来源于KNS,因此为了能够实时通过KNS来获取数据也成为此次项目的核心技术要点,否则如果仅仅只是通过分析历史数据则丧失了实时对观测数据进行动态监视预测的功能。其大致的流程如下所示:
模拟RPA功能:由于需要获取当前的实时KNS数据,因此必须要通过Python代码来模拟实现鼠标和键盘操作才能够实现此功能,其在KNS实现的效果如下视频所示:
在获取大量的数据之后需要对数据进行处理,以便于下一步的模型算法的利用,其主要的流程如下:
至此相关需要进行机器学习的数据已经基本上处理完毕,下一步将进行机器学习的数据划分,其大致的流程如下:
本次机器学习的算法虽然维度较少,但是为了便于进一步了解“正常”(绿色)和“故障”(红色)的大体分布以便于为下一步的分析带来便利,因此通过降维的方式进行数据展示并分析,降维后的显示如下所示:
可能这种显示不够直观,因此引入了4号机组比例阀卡涩的模型,也就是4GRE017MM相关故障的降维模型显示:
四、 模型的建立
所谓模型的建立其核心内容也就是如何选择合适算法的过程,在此过程中确实经历过不少挫折,但最终在老师的指点下找到了最为合适的算法也就是开篇介绍的LightGMB,其大致的过程如下:
在以上主要是针对的设备模型的故障预测,但是却没有提到诊断功能的实现方式,因此如下将简单介绍一下诊断功能的实现方式,也就是模型的重头戏:特征重要性----和我们的根本原因分析有异曲同工之妙,简单来说,所谓“特征重要性”的评判就是:如果该特征非常的重要,那么稍微改变一点它的值,就会对模型造成很大的影响。其实现的代码和数据如下所示:
因此模型给出的特征重要性的第一个就是“4ARE032VLC”,这个结果和我们实际的情况是完全一致的。
基于以上是比较通俗的概括了模型预测的准确性,但是基于模型“好与坏”的各项指标是有其专业的评判标准,下面做个简单的介绍。
1. 混淆矩阵的数据
从上图可以看出,在三十八万多条数据当中,模型仅仅只有8个案例被识别错误!
2. ROC曲线指标
3. 独立测试
为了验证模型的真实可靠性,采用了两种方法来进行一一的验证,第一种是完全独立于机器学习的43条数据(其中“正常”数据23条,“故障”数据20条);第二种是从KNS随机抽取5190条数据进行测试,其两种测试结果分别如下所示:
第一种测试情况模型能够完美的进行识别,其识别率为100%,但是这可能与测试样本较少有关!
第二种测试情况当中,在对5190条随机数据进行模型比对其中有37个故障状态识别错误,被识别成正常状态!(但这37条数据是在初次预警判断之后出现的,可能和当时4ARE032VLC被置为手动有强关联性所致)
五、 对实时获取的数据比对并报警
在上文中已经描述过通过类似RPA的方法来实时获取CSV文件数据,但是由于此操作方法是模拟键盘鼠标,因此在数据的采集上会有大约3秒钟的间隔,为了提高效率每个CSV文件仅仅保存近10秒钟的数据点(KSN的采集精度为1个数据/S),因此必须通过代码来实时对众多的CSV文件中的数据进行合理的整合、去重,并将实时数据与模型进行比对,当数据比对出的结果显示为“故障”状态时会对该数据进行标识,并同步的会通过程序来触发特定的报警声响报警来做提示效果。如此一来数据的比对与实时数据的滞后时间大概能维持在4秒钟的时差,基本上可以实现实时数据的比对和预警功能。
至此整个项目从前期的研究对象的选取、数据的获取方式和处理、模型的建立、算法的探索经历了不少的困难,但是却最终能够将该有的功能实现出来还是比较令人欣慰,特别是在前期得知无法通过简单的Python“爬虫”技术从KNS获取数据时几乎要放弃而另辟蹊径,但最终还是能够实现我们想要的效果,在此还是衷心地感谢一下阿里云的何老师、吕博士给我们带来了全新的数字化理念和思维方式,商业有价但教育无价。感谢!!