基于一维卷积神经网络的负荷分解方法

2021-10-08 08:32孙本亮王宝珠郭志涛
现代电子技术 2021年19期
关键词:特征提取用电卷积

孙本亮,王宝珠,郭志涛

(河北工业大学 电子信息工程学院,天津300401)

0 引言

负荷分解是非侵入式负荷监测(Non-Intrusive Load Monitoring,NILM)的关键步骤,其主要目的就是将时序下的各种用电设备的总负荷分解为单个用电设备的负荷[1]。通过NILM,人们能够了解到自身的用电信息,进而优化用电管理、改善用电习惯[2-3]。

自麻省理工的Hart教授提出非侵入式负荷监测这个概念以来,NILM受到了广泛的关注。2015年,Kelly首次将深度学习应用于NILM问题[4],并分别基于递归神经网络、自动去噪编码器、深度神经网络搭建了三种不同的深度学习网络框架,证明了深度学习在处理NILM问题上具有良好的性能。文献[5]对文献[4]自动去噪编码器进行了优化,同时与加性因子最大后验算法进行了对比,证明了自动去噪编码器在有噪声的情况下具有更高的鲁棒性。文献[6]中综合考虑了用电设备的功率、状态和时间等信息,并将这些信息作为深度神经网络的输入来证明其可行性。文献[7]提出了端到点(Sequence-to-Point,Seq2point)网络,并证明了在相同的网络体系下,Seq2point网络输出的结果比端到端(Sequence-to-Sequence,Seq2seq)网络更接近目标分布。文献[8]在小窗口条件下基于端到点结构搭建了长短期记忆网络、门控循环单元网络、一维卷积神经网络(One-Dimensional Convolution Neural Network,1D-CNN)三种深度学习网络,实验结果表明三种网络能够有效分解多种用电设备,但分解精度较低,分解性能还有待提升。

为了提升负荷分解的性能,得到较高的分解精度,本文提出一种基于一维卷积神经网络的负荷分解方法。所提方法以滑动窗口读取总负荷的时间序列生成输入序列,以1D-CNN自动提取输入序列特征从而实现负荷分解。在公开的数据集UK_DALE上的实验结果显示,所提出的基于一维卷积神经网络的负荷分解方法与现有方法[8-9]相比,F1得分更高,性能更佳。

1 基于一维卷积神经网络的负荷分解方法

本文所提出的基于一维卷积神经网络的负荷分解方法流程如图1所示。

图1 负荷分解方法流程图

通过滑动窗口读取总负荷时间序列生成输入序列,使用一维卷积神经网络提取输入序列特征和分解负荷。其中,一维卷积神经网络由序列扩展模块和特征提取模块组成,序列扩展模块能够自动提取输入序列的特征并重构为扩展序列,特征提取模块采用Seq2point结构分解扩展序列预测目标用电设备的负荷。

1.1 滑动窗口

滑动窗口主要用于处理长序列数据,减少网络模型训练过程中序列过长带来的梯度消失、难以计算等问题。其本质是一个滤波器,只读取指定长度的序列,其功能可由函数fw(i,W)表示。

式中:i表示滑动窗口移动的步数;W表示滑动窗口的长度;e(i)表示阶跃函数,其表达式为:

在负荷分解任务中,滑动窗口读取总负荷序列和用电设备负荷序列生成相应的输入和标签。为了综合预测点的上下文关系,减少窗口边缘信息的影响,本文选择将用电设备窗口的中点值作为标签。

若序列长度为N,总负荷序列为Y={y1,y2,…,yN},与之在时间上对应的用电设备负荷序列为X={x1,x2,…,xN},那么t(t≥W2)时刻对应的标签和输入序列分别是xt和Yt,Yt的读取为:

1.2 一维卷积神经网络

一维卷积神经网络是一种专门应用于序列型数据的卷积神经网络,其操作仅在一维尺度上,数学模型为:

式中:Gi表示第i层的输出特征量;W i,bi分别表示第i层的卷积核的权重矩阵和偏重向量;⊗表示卷积运算符;f表示激活函数,用以对网络进行非线性计算,提高网络的表达能力,本文使用的激活函数皆为ReLU函数,表示如下:

本文提出的1D-CNN网络模型由序列扩展模块和特征提取模块构成。

1.2.1 序列扩展模块

总负荷时间序列是多种用电设备在时间上的线性聚合数据,信噪比较小。为了优化输入序列,提高有用信息在输入序列中的占比,传统的方法有中值滤波[10]、小波变换[11]、粒子群算法[12]。但是,这些方法只是减少了噪音并不能增大有用信息的总量,为此本文提出序列扩展模块,其结构如图2所示。

图2 序列扩展模块

在序列扩展模块中,首先使用4个连续的卷积层和1个批标准化层(Batch Normalization,BN)提取输入序列Yt的特征得到中间序列Ytc,其过程用函数fad(x)表示。而后将Yt和Ytc进行拼接得到扩展序列Yt*,那么Yt*可表示为:

其中,BN层的作用是将输入的值缩小到0和1之间,从而降低连接层输入之间的分布差异。

假设Yt中总信息量是I,有用信息总量是C,Ytc中总信息量是Ic,有用信息总量是Cc,Y*t中总信息量是I*,有用信息总量是C*,那么在理想情况下有Cc Ic≥C I,故可计算出扩展序列Y*t的有用信息占比为:

由I≥0,Ic≥0,CcI≥CIc,可得C*I*≥C I。又C*=Cc+C≥C,可知输入序列经过序列扩展模块处理后不仅提高了序列中有用信息的占比,而且还增大了有用信息的总量。

1.2.2 特征提取模块

特征提取模块主要用于学习序列特征和输出预测结果,采用Seq2point结构,输入是一个序列而输出为一个点。相较于Seq2seq,Seq2point的优势是不会对同一个负荷多次预测从而产生输出平滑的问题[7]。

为了体现本文所提方法的优越性,特征提取模块的结构同文献[8]中1D-CNN网络一致,如图3所示。

图3 特征提取模块

图3中,数字“0.5”表示计算时会随机舍去50%的输入特征量,目的是提高网络的泛化性。

若特征提取模块的功能表示为函数fs2p(x),那么将扩展序列Y*t输入到网络后的输出为:

式中xtp为负荷分解的结果;以Yt*作为特征提取模块的输入会使得Yt的特征被学习两次;yt:1~k-1表示Yt前k-1个序列,k表示特征提取模块中第一个卷积核尺寸;b表示全连接层输出结果时产生的偏重。

1.2.3 1D-CNN网络模型

本文提出的1D-CNN结构如图2和图3所示,序列扩展模块的输出将作为特征提取模块的输入,网络层参数设置如表1所示。

表1 网络层参数设置

网络模型训练过程中采用自适应矩估计(Adaptive Moment Estimation,Adam)方法作为优化器,学习率为0.001。以均方误差(MSE)函数作为损失函数,表达式为:

式中:xip代表i时刻的预测值;xi代表i时刻的真实负荷;T为样本总数。

2 实验分析

2.1 数据集介绍

为了体现所提出的基于一维卷积神经网络的负荷分解方法的有效性和可比性,本文选择公开的数据集UK-DALE[13]用作实验。该数据集来源于英国能源研究中心能源数据中心,包含英国5个家庭的用电负荷数据,采样周期是6 s,采集时间接近3年。

2.2 用电设备选择与预处理

由于微波炉、洗衣机、冰箱、洗碗机这4种用电设备都至少在3个家庭中有记录,且方便与现有方法进行比较,故本文选择这4种用电设备用于实验研究。4种用电设备训练和测试的家庭如表2所示,在每个训练家庭中采集20万个样本用于训练模型,在每个测试家庭中采集10万个样本用于测试和评估模型。

表2 用于训练和测试的家庭

由于用电设备的运行情况不同,4种用电设备设置滑动窗口长度和启动功率也不同,如表3所示。其中,滑动窗口用以读取总负荷时间序列,启动功率用以评估模型时降低噪音的干扰。

表3 窗口长度和启动功率设置

此外,为提高模型训练时的收敛速度,对输入的数据进行最大最小归一化,数学表达式如下:

2.3 评价标准

为了体现实验结果的有效性,本文选择召回率recall、精确率precision、准确率accuracy、F1得分F1_score、平均绝对误差(MAE)等5种常用的评价指标,计算方法如式(11)~式(15)所示。其中,F1_score是一种综合了recall的precision的评价指标,其值越大代表模型的分类效果越好。

将设备的开启状态视为正样本,关闭状态视为负样本。上面公式中,T为总样本数,TP代表预测值和真实值都为正的样本数;TN代表预测值和真实值都为负的样本数;FP代表预测值为负、真实值为正的样本数;FN代表预测值为正、真实值为负的样本数。

2.4 实验分析

本文实验的软件平台为Ubuntu 18.04操作系统,Python 3.7.6(64位),开发环境为Tensorflow和Keras,编译IDE为Pycharm。

为了体现本文所提基于一维卷积神经网络的负荷分解方法的有效性,基于上节所述评价指标,将本文模型同文献[8]和文献[9]中基于1D-CNN搭建的深度负荷分解网络模型进行比较,实验结果如图4所示。其中,文献[9]提出的1D-CNN网络模型是NILM领域最新的研究成果之一,在多个数据集上的负荷分解性能突出。

观察图4可知,相较于另外两种模型,本文所提出的一维卷积神经网络模型在准确率、F1得分、平均绝对误差3种评价指标上都取得了最优的表现,说明了所提模型在负荷分解问题上具有更高的准确性和泛化性。由于文献[8]的1D-CNN结构同所提模型的特征提取模块一致,相当于所提模型去掉了序列扩展模块,通过实验结果比较,验证了扩展序列模块具有优化输入序列的能力。

图4 本文模型与文献模型对比

值得关注的还有所提模型在微波炉上的负荷分解,相较于文献[8]的分解失败,文献[9]的F1得分仅为0.17,所提模型在微波炉上的F1得分超过了0.3,这表明本文所提出的网络结构对微波炉有更强的特征提取能力。为了了解用电设备的运行方式对负荷分解的影响,在图5中展示了四种用电设备的负荷分解结果。

由图5可观察到,微波炉是一种短时运行的电器,每次开启的时间在2 min左右,这使得输入序列中有用信息总量很少,分解难度较大。本文网络结构中的序列扩展模块能够增加序列中有用信息总量,进而提高微波炉的分解精度。此外,冰箱因为其运行时的功率相对较低,更易受到其他用电设备的干扰,具体表现是在关闭状态更容易被误判为开启状态,应设置较大的启动功率来减少误判。洗衣机因为运行时功率波动剧烈,可以在训练前进行平滑处理;洗碗机因为存在低功率运行的状态,所以设置的启动功率不宜过大。

图5 四种用电设备的负荷分解效果

3 结语

本文提出了一种基于一维卷积神经网络的负荷分解方法,旨在提升负荷分解的性能,提高分解精度。该方法以滑动窗口读取总负荷时间序列,以一维卷积神经网络分解负荷。其中,一维卷积神经网络由序列扩展模块和特征提取模块两部分组成,分别用以优化输入和分解负荷。与现有方法相比,本文所提出的一维卷积神经网络基于多种评价指标都取得了较为突出的表现,证明了该方法在负荷分解任务中的有效性和先进性。

用电设备因其运行状态的不同,在负荷分解上的表现不一致。如何根据用电设备运行状态的不同做针对性处理,进而提高负荷分解精度,将作为未来工作的重点。

猜你喜欢
特征提取用电卷积
用电安全
基于3D-Winograd的快速卷积算法设计及FPGA实现
用煤用电用气保障工作的通知
安全用电知识多
从滤波器理解卷积
用电安全要注意
基于Daubechies(dbN)的飞行器音频特征提取
基于傅里叶域卷积表示的目标跟踪算法
Bagging RCSP脑电特征提取算法
基于MED和循环域解调的多故障特征提取