基于全卷积去噪自编码器与卷积块注意力模块的非侵入式居民负荷分解模型
2024-03-26林顺富沈运帷林屹峰李东东
林顺富,李 毅,沈运帷,林屹峰,李东东
(上海电力大学 电气工程学院,上海 200090)
0 引言
非侵入式负荷监测(non-intrusive load monitoring,NILM)技术的目的是将家庭总有功功率消耗分解为若干台目标电器的有功功率消耗,以避免为每台电器安装数据采集器。NILM 技术具有投资成本低、维护简单、通用性强等优点[1],是建设智能电力物联网的基础技术之一,可以实现对负荷侧物理对象的细粒度感知,为电网公司、虚拟电厂运营商进行负荷可调节潜力的评估和调度策略的制定提供数据支撑,促进负荷侧可调节资源与电力系统间的高效协同与灵活互动[2]。
目前,国内外学者已对NILM 算法进行大量研究,NILM 算法可分为基于高频采样数据的高频特征算法[3-4]与基于低频采样数据的低频特征算法[5-7]两大类。高频特征主要包含U-I轨迹曲线、电流谐波等。文献[3]利用卷积神经网络对U-I轨迹曲线进行特征提取,以实现降维,并利用动态规划算法优化辨识结果。文献[4]采用K-means 算法对电器投切时刻的有功功率和无功功率进行聚类,以实现粗辨识,再通过构建神经网络对未被正确分类电器的U-I曲线进行精细化辨识,在得到最终辨识结果后,结合电器的平均功率得到有功功率消耗。基于高频采样数据的高频特征算法识别精度高,但对采样与数据存储设备要求较高,不利于在居民用户中进行推广。基于低频特征的负荷分解逐渐成为研究重点。低频特征主要包含有功功率、无功功率、电流等。文献[6-7]基于事件检测算法提取特征,并依赖专家经验设置阈值,该方法的通用性较差。文献[8]考虑电器的分时段状态行为,构建负荷行为模板,并利用多特征遗传优化算法实现负荷分解。文献[9-10]通过考虑电器的运行模式与用户用电习惯对负荷分解的影响,有效提高了分解精度。上述算法均需要将得到的运行状态序列与人工提取的负荷特征库相结合,以获得用电设备的有功功率消耗,且文献[8-10]算法的复杂度随着用电设备类型的增加而增加。
深度学习具有自动提取特征的优势,为负荷分解提供了端到端的解决方案。学者将负荷分解视为回归问题,利用深度学习模型学习输入总有功功率消耗与用电设备有功功率消耗间的映射关系,直接得到用电设备的功率分解值。文献[11]提出3 种不同的基于深度学习的负荷分解模型。为进一步提升分解精度,文献[12]提出一种序列到点(sequence to point,seq2point)的负荷分解模型,但该模型易被其他电器干扰。文献[13]利用多任务学习策略有效提升了模型泛化能力,但模型参数量达到了4.5×107个。上述模型参数量较多,在嵌入式平台上进行部署时,对硬件要求较高,从而增加了模型部署成本[14]。文献[15]提出一种适用于非居民用户的全卷积去噪自编码器(fully convolutional denoising auto-encoder,FCN-DAE)非侵入式负荷分解模型,由于仅使用了卷积神经网络,该模型参数量相比其他模型大幅减少,模型部署成本也大幅降低,但是该模型泛化能力不足,导致未参与训练家庭的负荷分解精度不够。
为了进一步提高模型的分解精度与泛化能力,本文提出一种基于FCN-DAE 与卷积块注意力模块(convolutional block attention module,CBAM)的非侵入式居民负荷分解模型。首先,结合参数量较少的FCN-DAE 与多任务学习策略构建主回归子任务网络和辅助分类子任务网络;其次,为了提高模型对负荷特征的提取能力以及减少编码过程中的特征丢失,在子任务网络中引入CBAM 与跳跃连接;然后,利用联合损失函数训练整体模型,实现子任务间的信息交互;最后,利用UK-DALE 数据集[16]与REFIT数据集[17]验证所提模型的分解性能与泛化能力。
1 基于FCN-DAE 与CBAM 的非侵入式居民负荷分解模型
1.1 FCN-DAE
去噪自编码器(denoising auto-encoder,DAE)被广泛应用于图像、语音去噪等领域,其结构如附录A图A1(a)所示。利用有监督学习方法对DAE 进行训练,能使编码器学习并提取最重要的特征到低维的潜在空间特征向量h中,解码器能学会对h进行重建,得到一个与真实值最接近的重构数据。DAE 的权重通过损失函数LDAE进行更新,LDAE的定义为:
式中:T为总时间内的时刻数;zt为t时刻的真实值;ẑt为t时刻DAE的输出值。
DAE 中的编码器与解码器可由卷积神经网络、循环神经网络(recurrent neural network,RNN)等组成,潜在空间层通常为全连接神经网络。FCN-DAE结构如附录A 图A1(b)所示,其编码器、解码器、潜在空间层均仅使用卷积神经网络。其中,在潜在空间层使用卷积神经网络主要是由于卷积神经网络能比全连接层神经网络更好地保留时间信息[15]。
1.2 多任务学习策略与CBAM
在深度学习中,多任务学习策略主要用于对多个子任务间具有一定相关性的问题进行建模[18],利用特定的损失函数对模型参数进行优化,从而提升模型对特殊任务的性能与泛化能力。多任务学习策略主要可分为硬共享机制与软共享机制,其基本原理如附录A 图A2 所示。硬共享机制的不同子任务通过参数共享层可减少模型参数量与训练时间,但当硬共享机制中的部分子任务间的相关性较弱时,模型性能将会降低。软共享机制为各子任务构建参数层,会增加模型参数量与训练时间。但软共享机制以特定的方式实现不同子任务网络间的信息交互,子任务模型能学习到相互间的不同特征,可获得更好的泛化表示,而且软共享机制更灵活,不需要对子任务间的相关性进行任何假设,可提升模型性能。
CBAM[19]是一种前馈卷积神经网络的轻量级通用模块,包含通道注意力模块与空间注意力模块两部分,能够分别从通道上和空间上学习“注意什么”与“注意哪里”,从而实现关注重要特征以及抑制不重要特征。CBAM结构如附录A图A3所示。
CBAM的计算过程可以表示为:
式中:Fc为空间注意力模块的输入;Mc( )F为通道注意力特征矩阵,F为CBAM 的输入;“⊗”表示逐元素相乘;Fcs为CBAM 的输出;Ms( )Fc为空间注意力特征矩阵。Mc(F)与Ms(Fc)的计算公式为:
式中:σ(·)为Sigmoid 激活函数;fMLP(·)为多层感知器;fAvgPool(·)、fMaxPool(·)分别为平均池化和最大池化操作;fConv1D(·)为卷积核大小是7×7 的一维卷积运算。
1.3 基于FCN-DAE 与CBAM 的非侵入式居民负荷分解算法流程
本文提出一种基于FCN-DAE 与CBAM 的非侵入式居民负荷分解算法,算法流程如图1 所示,包含模型训练与负荷分解两部分。
1)模型训练。根据目标电器i的有功功率序列x与阈值的关系构建该电器的开关状态序列o,当功率大于阈值时,电器为开状态,开关状态值为1,反之开关状态值为0。对总有功功率序列y与有功功率序列x和开关状态序列o进行划分与数据预处理后,得到模型的训练数据与验证数据,其中将y作为模型的输入,将x和o作为标签。在训练过程中,采用早停机制防止模型过拟合。数据预处理主要包括数据的归一化与滑动窗口处理,滑动窗口处理的主要目的是增加模型的训练样本。
2)负荷分解。调用已训练好的模型,将总有功功率序列作为输入,得到目标电器i的分解有功功率序列。所提模型需要为每台电器训练一个模型。
2 基于FCN-DAE 与CBAM 的非侵入式居民负荷分解网络模型
2.1 负荷分解网络模型
为解决文献[15]方法因泛化能力差而导致分解精度不足的问题,本文提出以下改进方法:采用多任务学习策略,分别构建主回归子任务网络和辅助分类子任务网络,并利用联合损失函数对模型进行训练;在子任务网络中引入CBAM,以减少不重要因素的干扰;在编码器与解码器间引入跳跃连接,以减少编码过程中的特征丢失。所提模型结构见附录A图A4。
所提模型包括主回归子任务网络与辅助分类子任务网络。主回归子任务网络仅学习输入总功率与目标电器有功功率间的映射关系,是一种回归网络。而辅助分类子任务网络仅学习输入总功率与目标电器开关状态间的关系,是一种二分类网络。辅助分类子任务网络能够不依赖于目标电器的分解值而直接确定目标电器开关状态,避免了在利用目标电器功率分解来确定开关状态时出现因错误的功率分解值而确定出错误的开关状态的情况。将辅助分类子任务网络输出的分类概率作为主回归子任务网络输出的门控单元,可抑制错误的功率分解值,减小分解误差。模型输出为2个子任务网络输出结果的乘积。
分别定义fregression和fstate为主回归子任务网络与辅助分类子任务网络。在t时刻,主回归子任务网络输出的初步功率分解值x̂t和辅助分类子任务网络输出的分类概率ôt可分别表示为:
式中:yt为t时刻的总有功功率消耗。
所提模型的最终功率分解输出fpower(yt)为:
子任务网络由编码器层、解码器层、潜在空间层、CBAM 层与输出层组成。子任务网络的模型参数如附录A 表A1所示。在编码器部分,利用一维标准卷积对输入数据进行特征提取,利用跨步卷积对特征矩阵进行下采样;在潜在空间层,利用标准卷积替代全连接层,得到潜在空间特征向量h;在解码器部分,利用一维转置卷积对潜在空间特征向量h进行上采样,利用一维标准卷积对经过上采样后的特征矩阵进行特征提取;使还原后的特征矩阵经过CBAM 层,以实现模型对重要特征的关注,减少非重要特征的干扰;将卷积核大小和卷积核数均为1 的卷积层作为子任务网络的输出层。
在编码器与潜在空间层中均使用Relu 激活函数。在解码器的第1 层转置卷积中使用线性激活函数Linear,不使用其他激活函数是由于其他激活函数会使大量的负数特征消失。在主回归子任务网络中,模型输出层采用Linear 激活函数;在辅助分类子任务网络中,模型输出层采用Sigmoid 激活函数。设置分类子网络输出分类概率p∈(0,1)。
由于模型结构较深,且浅层简单特征在编码器中经过跨步卷积下采样后会存在一定程度的丢失,因此,在编码器的第5层与解码器的第2层之间加入跳跃连接[20]。通过跳跃连接将编码器中的浅层简单特征与解码器中的高层复杂特征按通道进行融合,并将其作为解码器第3 层卷积的输入。跳跃连接不仅能用于融合浅层与深层特征,还能解决神经网络在训练过程中存在的梯度消失与梯度爆炸问题。
2.2 损失函数
所提模型的损失函数L定义为:
式中:Lpower为衡量目标电器分解模型的功率分解值x̂tôt与真实值xt之间误差的均方误差(mean squared error,MSE)函数;Lstate为衡量辅助分类子任务网络分类误差的二元交叉熵损失函数;ot为t时刻的开关状态真实值。
3 算例分析
基于Python与Tensorflow 深度学习框架,在搭配NVIDIA GeForce GTX 3080 显卡的服务器上进行算例分析。将本文模型与文献[12]的seq2point、文献[11]的RNN 和文献[15]的FCN-DAE 模型进行对比。为了便于比较模型的分解性能、参数量与训练时长,所有模型均采用Adam 优化器对网络权重进行更新,优化器学习率设置为0.001,批大小设置为256。为了防止网络过拟合,在模型训练时均采用早停机制,容忍度设置为5,并保存最优模型。seq2point 与RNN 模型的输入窗口长度均为257,FCN-DAE与本文模型的输入窗口长度均为256。
3.1 数据集简介及电器选取
采用UK-DALE 数据集与REFIT 数据集对所提模型的有效性进行验证。UK-DALE数据集以1/6 Hz的频率记录了英国5 个家庭从2012 年11 月到2015年1 月的全屋总有功功率消耗数据与十多种电器的有功功率消耗数据。REFIT 数据集以1/8 Hz 的频率记录了英国20 个家庭从2013 年到2015 年的全屋总有功功率消耗数据和9种电器的有功功率消耗数据。
选取冰箱、电热水壶、微波炉、洗碗机、洗衣机这5 种电器作为研究对象。冰箱是一种具有周期性、开关状态简单和有功功率消耗较小的电器;电热水壶是一种有功功率消耗较大、运行时间较短和开关状态简单的电器;微波炉是一种运行时间不等、有功功率消耗较大的电器;洗碗机与洗衣机是较复杂的电器,具有开关状态多、有功功率消耗大、运行时间长的特点。所选电器可以较全面地验证所提模型的分解能力。电器阈值主要是依据电器的功率运行状态来确定的,将电热水壶的阈值设置为200 W,将冰箱、微波炉、洗衣机与洗碗机的阈值设置为15 W。
3.2 评价指标
选取平均绝对误差EMAE、信号累计误差ESAE、归一化信号误差ENDE与F1分数F1-score来从不同角度衡量所提模型的性能。EMAE反映了各时刻真实值与预测值间的绝对误差,ESAE反映了一段时间内真实值与预测值间的累计误差,ENDE反映了分解误差占总有功功率消耗的比例,上述3 种指标值越小表示模型的精度越高。F1-score用于衡量分解状态与真实状态间的误差,其值越大表示模型的精度越高。各指标的具体计算公式如附录A式(A1)—(A8)所示。
3.3 基于UK-DALE数据集的实验结果与分析
3.3.1 家庭1下模型的有效性验证
选取UK-DALE 数据集中家庭1 从2013 年8 月1日到2013 年11 月1 日与家庭5 从2014 年7 月1 日到2014年10月1日的数据构成训练集。选取UK-DALE数据集中家庭1从2013年11月21日到2013年12月21 日的数据构成测试集。4 种模型下UK-DALE 数据集中家庭1的负荷分解性能指标对比如表1所示,最优指标值如表中加粗数据所示。
表1 UK-DALE数据集中家庭1的负荷分解性能指标对比Table 1 Comparison of load disaggregation performance indexes for Household 1 in UK-DALE data set
由表1 可知,与3 种对比模型相比,本文模型显著提升了冰箱、电热水壶、微波炉和洗衣机的功率分解精度,仅在洗碗机的指标上略差于FCN-DAE 模型,这说明本文模型具有较好的分解性能,能够充分学习不同类型负荷的特征。
4 种模型下UK-DALE 数据集中家庭1 的负荷分解结果对比图如附录B 图B1 所示。由图可知,4 种模型下均能够实现家庭1 负荷的功率分解,但不同模型的分解效果具有较大差异,本文模型对5 种电器的功率分解效果均优于seq2point与RNN模型。
UK-DALE数据集中家庭1的负荷分解结果局部对比图如图2 所示,图中总功率表示家庭总有功功率消耗,真实值表示目标电器的实际有功功率消耗。由图2(a)可知,在冰箱单独运行时,4 种模型均能够正确分解出冰箱的运行功率,但是当有其他干扰电器与冰箱同时运行时,3 种对比模型的分解值均出现不同程度的波动,而本文模型仍能准确地分解功率。由图2(b)与图2(c)可知,本文模型的功率分解值和预测的开关状态均更准确,没有在电器的非运行时间出现错误的功率预测值,而seq2point 与RNN模型对电器启停时的功率分解不准确,这会导致其EMAE增大。由图2(d)与图2(e)可知,seq2point 与RNN 模型的功率分解值波动较大,而本文模型与FCN-DAE模型的功率分解值更稳定。
图2 UK-DALE数据集中家庭1的负荷分解结果局部对比图Fig.2 Partial comparison diagram of load disaggregation results for Household 1 in UK-DALE data set
3.3.2 模型泛化能力验证
泛化能力是指模型对新样本的适应能力,能够检验模型是否真正学习到隐含在样本数据中的规律。为了验证模型的泛化能力,训练集与测试集的数据应选自不同的家庭,训练集的选取与3.3.1 节相同,选取家庭2 从2013 年6 月1 日到2013 年7 月1 日的数据构成测试集。
跨家庭负荷分解结果指标如附录B 表B1 所示。由表可知:本文模型仅在洗衣机的ESAE指标上略差于FCN-DAE 模型,由于ESAE指标统计的是分解值与真实值之间的累计误差,而EMAE指标是衡量分解值与真实值之间的拟合程度,EMAE越小表明分解值与真实值越接近,因此,EMAE指标可比ESAE指标更准确地描述模型的分解性能;与3 种对比模型相比,本文模型在除洗衣机之外的4种电器上的指标达到最优,这表明本文模型具有更优的分解精度与泛化能力。
4 种模型下跨家庭负荷分解结果对比如附录B图B2所示。由图可知:seq2point与RNN模型在对洗衣机的功率分解上产生了许多错误的分解值,这是由于家庭2 的洗碗机与家庭1 的洗衣机功率特征相近,使得模型将家庭2的洗碗机误认为是家庭1的洗衣机;而FCN-DAE 模型与本文模型具有较深的网络结构,能够提取更复杂的电器特征,可以区分家庭2的洗碗机与家庭1的洗衣机。
FCN-DAE 模型与本文模型的分解结果局部对比图如附录B 图B3 所示。由图可知:相较于FCNDAE 模型,本文模型对5 种电器的功率分解与开关状态预测具有更高的精度;当测试数据与训练数据的负荷特征具有较大差异时,FCN-DAE 模型无法准确分解出家庭2 的负荷,这表明FCN-DAE 模型的泛化能力较弱,而本文模型采用多任务学习策略与CBAM,提高了对电器特征的提取与学习能力,具有更好的泛化能力和工程应用前景。
3.3.3 模型参数量与时间复杂度对比
在嵌入式平台上进行部署时,所需的存储空间大小取决于模型参数量,模型参数量越少,硬件成本越低。对4 种模型的参数量、训练单个轮次消耗的时间Tepoch以及分解1 h 用电数据消耗的时间T1h进行对比,结果如表2所示。
表2 4种模型的参数量与时间复杂度对比Table 2 Comparison of parameter quantity and time complexity among four models
由表B1 和表2 可知,模型参数量与泛化能力间无明显关系。在实际工程应用中,希望在提高模型泛化能力的同时,将模型参数量控制在可接受的范围内。由表2 可知:本文模型在提高泛化能力的同时将参数量保持在232 212个,在嵌入式平台上进行部署时,比seq2point与RNN模型有一定的优势;本文模型采用多任务学习策略与CBAM,以训练时间为代价提高了负荷分解精度;本文模型训练单个轮次消耗的时间为252 s,在实际工程应用的离线训练环境下是可接受的;4 种模型分解1 h 用电数据消耗的时间均少于1 s,满足实际工程应用对实时性的要求。
3.3.4 不同窗口长度的影响
为了研究不同窗口长度对模型性能及参数量的影响,基于UK-DALE 数据集对不同窗口长度下5 种电器EMAE、ESAE、ENDE指标的均值EAMAE、EASAE、EANDE以及参数量进行对比,结果如表3所示。
由表3 可知:随着窗口长度的增加,EAMAE、EASAE与EANDE指标均先逐渐减小,在窗口长度为256 时,3 个指标均达到最优,之后随着窗口长度的继续增加,3 个指标均逐渐增大,这表明较短或较长的窗口长度均会影响模型的分解性能;模型参数量随着窗口长度的增加而增加,这表明窗口长度是一个影响模型参数量的重要因素。
3.3.5 辅助分类子任务网络的影响
为了研究辅助分类子任务网络对模型性能的影响,基于UK-DALE 数据集对剔除分类子任务网络后的无分类子任务网络模型与本文模型的EMAE、ESAE、ENDE以及分解1 h 用电数据消耗的时间进行对比,结果如附录B 表B2 所示。由表可知,与无分类子任务网络模型相比,本文模型对冰箱、电热水壶、微波炉与洗碗机的功率分解效果较好,对洗衣机的功率分解误差略高,但两模型的EMAE指标相近,因此,本文模型的总体负荷分解精度较高;无分类子任务网络模型与本文模型分解1 h 用电数据消耗的时间分别为0.030 5、0.045 0 s,均满足实际工程应用要求。
3.4 基于REFIT数据集的模型有效性验证
为验证所提模型在其他数据集下的有效性,基于REFIT数据集中家庭2的数据进行算例分析,选取160 d的数据用于训练,另外选取40 d的数据用于测试。REFIT 数据集中家庭2 的负荷分解结果指标见附录B 表B3。由表可知:本文模型的功率分解精度总体上最优,相较于其他3种模型,本文模型对冰箱、微波炉与洗衣机的功率分解精度提升较大;微波炉的F1-score比其他4 种电器的低,这主要是由于微波炉的运行时间随着人们的行为而变化,不具有较强的规律性,因此增大了模型对微波炉功率分解的难度。
REFIT 数据集中家庭2 的负荷分解结果对比图如附录B 图B4 所示。由图可知:在对洗衣机的功率分解中,seq2point、RNN、FCN-DAE 模型的功率分解值均小于电器的功率真实值,而本文模型的功率分解值更加接近电器的功率真实值,因此,本文模型具有更高的分解精度。
REFIT 数据集中某天家庭2 的负荷分解效果如附录B 图B5 所示。由图可知:除了选取的5 种电器外,还存在其他类型的电器,如在09:00 左右有功率约为10 500 W 的未知电器在运行;冰箱在一天中均处于运行状态,且工作功率较小;电热水壶功率出现在08:00、16:00、18:00、21:00 左右;微波炉功率主要出现在11:00、18:00、21:00 左右;洗碗机在18:00 —20:00 之间运行;洗衣机在10:00 — 12:00 之间运行。可见,本文模型可以较好地从家庭总功率曲线中分解出目标电器的功率曲线。
4 结论
本文提出一种基于FCN-DAE 与CBAM 的非侵入式负荷分解模型,并基于UK-DALE 和REFIT 公开数据集对所提模型的有效性进行验证。与现有负荷分解模型相比,所提模型具有更优的分解精度和泛化能力。由于所提模型基于FCN-DAE,这使模型参数量较少,在嵌入式平台上进行部署时,所提模型有较大优势。后续笔者将针对如何在减少参数量的同时提升分解性能进行进一步研究。同时,由于不同居民电器的功率分布并不完全相同,这种差异性将会导致训练模型对其他未训练家庭的功率分解性能下降,如何解决该问题也是笔者下一步的研究目标。
附录见本刊网络版(http://www.epae.cn)。