基于多层多核卷积神经网络的非侵入式负荷监测方法研究*
2021-03-11梁瑞宇
汪 涛,梁瑞宇,黄 虎,丁 超
(1.南京工程学院电力工程学院,江苏 南京 211100;2.南京工程学院信息与通信工程学院,江苏 南京 211100)
非侵入式负荷监测(Non-Intrusive Load Monitoring,NILM)是一种利用大数据分析对电力系统负荷进行检测与分解的技术[1],对电力需求侧管理的决策制度以及电网和电力用户互动体系的构建有着重要的意义。相比于侵入式负荷监测,NILM 需要安装的传感设备数量较少,是一种快捷、经济的负荷监测方法[2-3]。近年来,随着大数据分析、智能电网、智能电表[4]和智能家居等技术的不断成熟与推广,越来越多的学者开始专注于NILM 研究。
20 世纪80 年代,英国学者Hart[5]提出了非侵入式负荷监测的概念,同时构建了实现NILM 的框架结构。目前,非侵入式负荷监测可分为以高频采样和以低频采样数据为基础的两种研究方法。以高频采样数据为基础的NILM,通过获取负荷开断时刻的暂态特征进行负荷识别与分解。文献[6]提出了一种粒子群聚类算法,将电压有效值、电流有效值和3 次谐波作为负荷特征,实验证明了粒子群优化能够提高算法收敛到全局最优的速度。文献[7]通过提取电流图片特征辨别负荷类型。文献[8]提出一种强化谐波幅值差异的算法,对负荷谐波信息进行加权处理,模型对相似负荷电器的区别能力得到提升。以低频采样数据为基础的NILM,通过获取负荷的稳态特征,如稳态时的电压、电流、有功功率进行负荷识别与分解。文献[9-10]采用深度字典学习实现负荷分解。文献[9]提出深度稀疏编码法为各项设备学习多层字典,模型在学习深层字典后分解性能提升,但随着字典的深入,模型参数过拟合现象也越发严重。文献[10]提出基于多标签分类的分解方法,将不同设备视为不同的类,最终把负荷分解问题转化为多元回归问题。文献[11]不同于传统的因子隐马尔可夫模型(Factorial Hidden Markov Model,FHMM 模型),提出一种结合加法因子隐马尔可夫模型和减法因子隐马尔可夫模型两者优点的可加性概率模型,并实验证明了该想法的有效性。
近年,鉴于深度学习的方法在语音识别、计算机视觉等多项领域获得突破进展,已经有一些学者使用深度学习[1]的方法实现非侵入式负荷分解。2015 年,英国学者Kelly[12]第一次实现基于深度学习的非侵入式负荷分解,并采用三种模型进行验证,对比于传统隐马尔可夫模型和组合优化模型,算法的负荷分解准确度得到了显著提升。文献[13]提出了一种通用的深度学习分解模型,并提供相应的固定模型架构及超参数,模型能够适应各种类型的负荷,但分解性能相对较低。文献[14]提出了一种变分自编码的卷积神经网络模型,卷积神经网络对特征的提取能力强,将卷积网络与自编码相结合,能够有效地实现负荷分解。文献[15]和文献[16]对常规的长短时记忆网络模型进行了优化,所提的贝叶斯优化双向长短时记忆(long short term memory,LSTM)模型和正则化LSTM 模型可以解决由设备数量增加而引起的维数过大和参数过拟合问题。文献[17]针对序列到序列(sequence-to-sequence,seq2seq)模型中输入序列过长导致的模型运算能力下降问题,提出一种注意机制,使模型在解码过程中拥有了侧重点,优化了序列到序列模型的信息利用能力。文献[18]提出一种可变步长的去噪自编码器模型,在数据有噪声情形下分解性能较好。文献[19]提出一种序列到点(sequence-to-point,seq2point)模型,相比于序列到序列模型,负荷分解的绝对误差和与平均绝对误差都有所减小。文献[20]论述并证明了基于V-I 轨迹特征进行负荷分解时所提模型具备的可迁移性。文献[21]提出设备迁移学习模型和跨域迁移学习模型,证明了seq2point 模型是可以迁移的。文献[22]通过对比实验,证明了长短时记忆算法在NILM 领域的优越性。文献[23]提出一种基于时间卷积网络的半监督多标签深度学习框架,结合有标签数据和无标签数据实现了特定电器的开关状态监测。虽然上述模型都成功运用了深度学习的方法,但仍然未能提出关于深层次特征信息提取的优化方法,模型特征提取层次仅有一至两层,所以这些模型对于负荷监测的识别准确率还有待提高。
为此,本文提出一种基于多层多核卷积神经网络的负荷监测模型,利用REDD 公开数据集完成了模型的训练与测试,并与多层单核网络模型及目前认可度较高的CNN-LSTM 模型[12]对比,以验证本文模型对负荷识别准确度的提升效果。
1 模型构成
1.1 模型流程
本文提出的NILM 模型流程如图1 所示。
模型首先对低频采样数据进行分段,并将输入的功率序列通过高维映射对应至高维向量序列,最后通过本文所提神经网络进行训练和分解。
1.2 数据预处理
1.2.1 数据切割
由于用于NILM 训练的样本数据数量级可以达到104甚至106,因此本文首先对采样数据进行数据切割,使输入序列的长度为一固定值。
由于不同种类的电器能够代表其电气特征的数据长度不同,故对不同电器需要设定不同的序列长度。假设功率数据中含有M种不同的电器{A1,A2,…,AM},对应网络模型输入序列长度分别设置为{N1,N2,…,NM},再由设定的序列长度对功率数据进行数据切割,使其分为若干数据段。
1.2.2 高维映射
高维映射包含两个步骤,第一步是输入总负荷有功功率序列{P1,P2,…,},进行整数化处理得到{P1,P2,…,}。第2 步为将整数化处理后的有功功率序列中每个值Pi,通过高维映射矩阵E=[v_s*e_s]映射到高维向量E[Pi],得到映射后的序列{E[P1],E[P2],…,E[]},将E[Pi]作为A[1:Ni]生成输入矩阵A。高维映射矩阵E中的第一维度v_s为功率大小,第二维度e_s为设备序列长度。将整数有功功率映射到高维向量,实现了输入序列的抽象,同时也确定了高维向量与功率的对应关系,其作为本文深度神经网络的输入,有利于后续编码器对时序信息的提取和负荷的分解。
1.3 网络构成
1.3.1 卷积神经网络
卷积神经网络中包含卷积层、池化层、全连接层等基本功能层[24]。各个层具有独立的神经元,不同层神经元间相互连接,同层神经元间无连接。卷积层计算公式为
式中:表示第l层的第j个滤波器特征表示第l-1 层第j个滤波器特征和第l层卷积核的卷积核函数;为第l层的第j个偏置参数。f函数为激活函数;一般来说卷积层还有2-D 卷积层、3-D卷积层、转置卷积层和分组卷积层等。池化层计算公式为:
式中:和分别表示网络层之间的权重和偏置参数;down(·)为池化函数;f(·)是激活函数。池化层用来降低分辨率,常用的池化层有平均池化层、最大池化层以及全局平均池化层。本文选用Relu 函数作为激活函数,Relu 函数对输入的每个元素执行阈值运算,任何小于零的值都设置为零。经过卷积层和池化层的计算后原始数据特征便映射到了隐含特征空间,通过全连接层标记这些特征空间便能提取原数据特征,然后利用softmax 层概率分类。后继的网络层还有批量归一化层、dropout 层(脱落层)等。批量归一化层对网络中的激活值和梯度传播进行归一化,使网络训练成为更简单的优化问题,dropout层则可以防止过度拟合。模型得到结果后会通过反向传播方式调整模型网络参数。
1.3.2 LSTM 神经网络
卷积神经网络LSTM 是一种特殊的循环神经网络(RNN),解决了长依赖性问题,在处理时间序列方面具有良好的性能。LSTM 神经网络由序列输入层、LSTM 层、全连接层、dropout 层(值为0.1)、softmax 层以及分类层组成。使用具有动量的梯度随机下降优化器训练网络,网络训练参数设置如下:动量大小为0.97,L2 正则化(L2 Regularization)因子为0.000 5,梯度阈值为1,最大迭代数300,小批量训练大小为500,初始学习率0.01,每过50 代学习率在原有基础上乘0.2。实验测试发现,增加LSTM层层数会导致辨识效果变差,为此不再增加LSTM神经网络的层数。
1.3.3 多层多核卷积神经网络
由多个卷积核同时卷积进行特征提取的方法称为多核卷积特征提取法。通常情况下,神经网络使用一个卷积核对负荷特征进行提取,但一个卷积核只能够提取一种特征,特征提取并不充分,因此本文添加多个卷积核,同时学习功率负荷的多种特征,目的是提高网络对功率负荷的分辨能力,进一步达到提高负荷分解准确率的目标。经过之前的高维映射得到输入矩阵A,由于每一行的映射向量E[Pi]表示一个与其对应的功率,为了提取有利于功率序列分类的特征,应当从映射向量的级别进行特征提取,才能保证功率特征的完整性,也就是说卷积核的宽度w需要完全覆盖映射向量。当卷积核宽度等于映射向量维度时,卷积核只在竖直方向做卷积,卷积核的高度表示同时提取几个功率序列的特征。假定输入矩阵A的宽度为w,高度为Ni;卷积核的宽度也为w,高度为h,则卷积过程可表示为:
一个卷积核提取的特征数量为Ni-h+1,而不同高度的卷积核提取到的特征大小也不同,因此本文选择Max pooling 进行池化操作,对卷积后的特征映射进行降维,使其维度统一。通过Max pooling 提取特征中的最大值得到特征中最重要的部分,再将负荷特征最大值拼接输入到softmax 层。
同时,本文在利用多核卷积网络实现负荷分解的基础上,加深了网络层数,使其具有更强特征提取能力,识别结果更加精确。一维深层神经网络的输入是总有功功率序列转化的4-D 矩阵。总有功功率序列为1×n行向量,将其重构成1×1×1×n的矩阵,其中前两维表示1×1 像素,第3 维1 表示灰度颜色通道,第4 维n表示序列长度。深层卷积网络由输入层、A 类层、B 类层、全连接层、softmax 层和分类层组成,共47 层。A 类层一共10 组40 层,每组由2-D卷积层、批量归一化、Relu 函数层以及最大池化层构成,每层2-D 卷积层滤器数量分别为8、16、32、64、128、256、512、1 024、2 048、4 096,大小均为1×1。B 类层由2-D 卷积层(过滤器数量为8 192,大小为1×1)、批量归一化层和Relu 函数层组成。为了使该模型辨识效果更好,在训练模型时加入了更多的网络参数,为防止模型过度拟合,加入了L2 正则化因子,其值为0.000 5,使用具有动量的梯度随机下降优化器训练网络,动量大小为0.97,梯度阈值为0.5,最大迭代数为300,在每一代训练时增加数据混淆,初始学习率为0.01。为了效果更佳设定学习率梯度下降,每过50 代学习率在原有基础上乘0.2。
1.3.4 模型结构
本文模型采用卷积神经网络(convolutional neural networks,CNN)作为网络基础层,设计并实现了多层多核网络结构,对照文献(CNN-LSTM)模型构成如表1 所示,多层单核(CNN-1d-2)模型构成如表2 所示,多层多核(CNN-multi-kernel)模型构成如表3 所示。
表1 CNN-LSTM 模型构成
表2 CNN-1d-2 模型构成
表3 CNN-multi-kernel 模型构成
三种网络结构中对照文献(CNN-LSTM)采用两层卷积层两层LSTM 进行编码解码,多层单核(CNN-1d-2)和多层多核(CNN-multi-kernel)模型均采用CNN 和最大池化作为基础层,多层单核模型会在每层卷积层之后接池化层,而多层多核模型采用三个卷积核同时进行卷积,之后再接Max Pooling 进行池化操作。
2 实验分析
2.1 实验软件平台
本文实验软件平台为Windows10(64 位)操作系统,Python3.6.8、TensorFlow2.0.0 机器学习平台。编译IDE 为PyCharm,数据处理使用NILMTK 开源工具包。
2.2 数据集
为验证本文所提模型的有效性和准确性,选取REDD[25]数据集进行实验。REDD 数据集包含6 个美国家庭的用电数据。
数据集包含两种家庭用电数据。一种是低频功率数据,包括两处总线路和各个子设备的有功功率数据;另一种是总线路的高频电流和电压的波形数据。本文所提模型使用低频功率数据对网络进行学习。模型将每个家庭用电数据的前70%用于深度网络的训练,后30%作为测试数据对模型性能进行测试,数据集训练过程如图2 所示。
图2 数据集训练过程框图
2.3 序列长度及激活阈值设定
为了得到用于负荷分解的功率序列,首先要对数据集内各电器序列进行激活提取。本文为实验用到的5 种电器设定了具体的序列长度及激活阈值,如表4 所示。
表4 序列长度及激活阈值
2.4 评价指标
为全面评价模型性能,本文选用准确率(precision,PRE)、平均绝对值误差(mean absolute error,MAE)、绝对误差和(signal aggregate error,SAE)和R2决定系数四项指标作为评价标准,具体公式如下:
(1)准确率PRE:
式中:TP 为模型判定结果与实际负荷都为运行状态的序列数量;FP 为模型判定结果为非运行状态但实际负荷为运行状态的序列数量。
(2)平均绝对值误差MAE:
(3)绝对误差和SAE:
(4)决定系数R2(拟合优度):
R2决定系数越接近1 表示拟合效果越好。上述公式中yi为i时刻用电电器真实功率,为模型分解功率,nsample为总样本输入数量。
最后,为了表示模型预测值与实际值间的差距,定义损失函数(Loss)表达式如下:
式中:p表示概率;T为序列总长度;Xt为各设备的功率;Y为总负荷功率;θs为网络参数;Ni为第i项设备的序列长度。
2.5 实验结果
2.5.1 可视化分解结果
本文选取REDD 数据集家庭1 一段时间内的负荷功率进行分解。通过实验结果可视化操作,能够直观地判断模型对各项电器功率的预测效果。由图3 可以看出,在该段时间内,冰箱电器在训练集和测试集上负荷分解的预测值与真实值基本拟合,初步判断本模型的可行性。
图3 实验结果可视化展示
2.5.2 负荷识别准确率
通过多次实验比较获得模型的系数。实验中,各模型识别准确度(PRE)结果如表5 所示。
表5 各模型识别准确率
识别准确率能够反映模型对负荷的识别能力。可以看到三种模型准确率都超过了98%,多层单核(CNN-1d-2)和多层多核模型(CNN-multi-kernel)更是超过了99%,其中对照文献(CNN-LSTM)深度浅、特征提取能力较弱,准确率相对较低。而CNNmulti-kernel 相较于其他模型采用了多层多核网络结构,特征提取更加充分,从而获得最高的准确率。
与对照文献相同,本文也选用了REDD 数据集中的冰箱、洗碗机、水壶、微波炉、洗衣机5 种常用电器数据,统计了各种电器的相应识别率。具体结果如表6 所示。
表6 各模型下不同电器的识别准确率 单位:%
相比于对照文献,多层单核模型对各项电器的分解准确率的提升程度为2%~18%,多层多核模型分解准确率的提升程度为3%~19%。其中,对于洗衣机和水壶等多档运行的电器设备识别准确度提升效果较为明显,说明多层多核模型对运行方式复杂的电器识别能力更强。
2.5.3 损失函数及误差
本文模型在训练中的损失函数(Loss)、平均绝对值误差(MAE)、绝对误差和(SAE)和拟合优度R2曲线如图4 所示,实线代表整体平均曲线,虚线代表冰箱数据的曲线。上述指标可以反映模型的负荷功率分解能力。从图4 可以看出,随着网络迭代次数的增加,本文模型在各个电器上训练的损失函数呈现收敛的趋势。以冰箱数据为例,损失函数收敛十分平稳,说明损失函数对神经网络的超参数优化作用明显,实现了模型超参数的自动寻优。随着迭代次数的增加,平均绝对值误差(MAE),绝对误差和(SAE)不断下降,拟合优度R2曲线不断上升并逐渐收敛至稳定常数,该三项指标的全面提升表明模型分解得到的功率值与实际功率的真实值间的差距随网络迭代次数逐渐减小。由此可见,本模型负荷特征提取性能的提升使得负荷识别率得到提高,与之相应的,功率分解性能也得到了提升。
图4 loss、MAE、SAE、R2 曲线
3 结束语
本文提出一种基于多层多核卷积神经网络的非侵入式负荷监测深度学习模型,该模型在提取负荷特征时,采用多核卷积特征提取法提取负荷功率的多项特征,并结合多层卷积法增强网络结构。实验结果中各模型识别准确率之间的差异说明,多核卷积法与多层卷积法都能够增强网络对负荷特征的提取能力,将两种方法相结合后,特征提取会更加充分。通过本模型在数据集上的实验结果可以看出模型对负荷识别准确率提升很大,尤其显著提升了运行状态较复杂的电器识别准确率。同时,相对于目前认可度较高的CNN-LSTM 模型,本模型对负荷分解功率值的平均绝对值误差和绝对误差和也有大幅度的减小,且拟合优度更高。实验验证了模型不仅仅对负荷识别性能有提升,对负荷分解性能也有一定程度的提高。