赵宇
(国家广播电视总局2021台,黑龙江 齐齐哈尔161000)
在无线广播发射台站中,ups是供电系统中重要的基础设备,是保证播音任务的重要一环,因此,对ups设备的监测维护就十分必要。而限于算法局限性,传统计算机的观测过程缺乏人类行为特征,此外,设备故障的预测也是传统算法无法实现的功能,而神经网络技术在近年已被广泛应用于各领域的预测研究(如天气、地震等领域的预测)[1]。
本文基于分布式节点结构实现了与不同ups设备的通信,借助神经网络技术,组成一个能进行供电性能估算、预测故障风险的统一设备观测平台[2]。
硬件部分:两台服务器分别运行神经网络节点、数据库,多台计算机运行不同的程序节点、主界面节点。计算机之间通过网络连接,此外还需要串口服务器将ups设备由串口通讯转换为网络通讯。
软件部分:python3、pyqt5、vb.net、sql。
主界面承担数据显示与节点管理两大功能,按如下方式开发:ups数据、神经网络观测结果都由其它节点写入到数据库表中,主界面不断读取;同时,其它节点程序每秒上传自身cpu占用、ip地址、一个随机数,神经网络节点还将向表中汇报线程池排队情况、计算请求数,主界面使用随机数是否持续变化监视节点是否在线,当表中有报警消息时使用微软语音引擎发起语音合成报警。
获取ups设备数据使用serialport控件,一般各厂商ups设备都是ascii通信,每一个型号的ups开发为一个单独程序,每秒将数据、自身状态写入数据库,同时,节点可发起神经网络请求,请求的sql记录格式为:“目的+网络模型文件名+时间id+数据”,目的分为“训练”、“使用”,神经网络节点计算完毕后将标注记录为“完成”。
导入numpy库为np,导入Pyqt5库,构建初步可视化窗体,然后进行神经网络的开发。
图1 系统主界面
initnet()是对于权重和偏置的初始化,偏置为高斯分布,均值0,标准差1,权重均值0,标准差1/√n,net是列表类型,填写网络各层神经元数,co用于交叉熵的使用。
随机梯度下降算法公式:
等号左边表示重力滑落模拟过程中权重和偏置的最小值,C为二次代价函数,η为学习速率[3]。Python随机梯度下降应用上述公式的核心代码为:
反向传播是网络的学习过程,在进行前向传播后,反馈权重的核心代码为:
神经网络中,通常会因较大误差的权重和偏置导致学习速度的下降,而将交叉熵作为神经网络的代价函数,能有效解决这个问题[4]。公式为:
其中a是网络总输出,y是对应训练输入x的输出,n为训练数,相应python中应用上述公式的核心代码为:
np.sum(np.nan_to_num(-y*np.log(a)-(1-y)*np.log(1-a)))
规范化主要是在代价函数后添加规范化因子:
在程序中,梯度下降的核心处在接收到用户请求后,变为:
程序的其它传参处也会被加入规范化参数。
神经网络的训练:ups节点发出请求后,数据库就新填入请求数据,第一项数据注明为“训练”,第二项注明使用的模型文件,第三项写明的是请求的唯一性时间,后面跟随训练数据。神经网络节点主线程扫描数据表发现请求后,根据模型文件名加载相应的文件,读取数据进行训练,完毕返回根据唯一时间插入的标注为“完成”的数据记录到相应的节点的表中,相应ups节点在读取到“完成”、唯一时间的记录后,获知该次请求已被计算完成。
神经网络的使用:ups节点写入请求数据库记录,并把第一项“训练”改为“计算”,神经网络节点读取数据库后加载对应网络模型进行计算,计算完毕将结果返回数据库。第一种模型是根据ups供电期间的数据样本训练的网络模型,用来进行即时的供电性能估算,第二种模型由正常运行期间的样本和故障期间的样本训练而来,用于及时发现设备可能出现的问题风险。
通过使用神经网络的学习型观测技术,能极大的提高计算机监测系统对数据的识别、分析能力,目前使用神经网络技术进行具体设备观测的系统并不多见,该系统的开发至应用都有较多的创新点。