邓晓平 张桂青 魏庆来 彭伟 李成栋
非侵入式负荷监测(Non-intrusive load monitoring,NILM)也称为负荷分解(Load disaggregation),其通过对某一特定区域的总电表数据进行分析,可获取该范围内各用电负荷的相关信息,如负荷的数量、各负荷的类别、所处工作状态以及对应的能耗使用情况等.相对于传统监测方式,非侵入式负荷监测不需要为用户的每个用电设备安装测量装置便能获得各个用电设备的运行情况,一方面节省了传感设备的购置费用;另一方面免去了对现有用电设备线路逐一改造及维护的麻烦,是一种便捷、成本低、通用性强的监测方式.同时,它在一定程度上也实现了对用户隐私的保护[1].非侵入式负荷监测得到的信息对于各用电参与方都有很大的实用价值.对于普通用户,如果通过负荷监测获取的设备详情可以及时得到反馈,将有助于引导用户合理用电,从而实现节能降耗,节省电费开支[2].对于电力公司,非侵入式负荷监测在不明显提高投入的前提下,可实现负荷各组成成分的细粒度感知,提升电力系统负荷预测准确度,提高电网的安全性及经济性,还有助于更精准地对用户行为进行建模,实现对用户的差异化、精准化服务[3].对于用电设备制造商,非侵入式负荷监测所提供的设备状态及对应的能耗信息,能够为设备故障诊断提供依据或进一步实现对设备的预测性维护[4].非侵入式负荷监测属于计算机、通信、电子与电气工程等学科的交叉应用,可广泛应用于建筑节能、智慧城市、智能电网等领域[5].
近年来,智能电表已经在世界各地得到广泛部署.据统计数据显示,截止到2016 年底,英国、美国和中国已经部署的智能电表数量已经分别达到290 万、7 200 万和9 600 万台[6].大规模部署的电表及其对应的通信网络与数据管理系统共同构成了面向用电的高级量测体系(Advanced metering infrastructure,AMI),为海量细粒度电力消耗数据的采集、存储与管理提供了基础[7].同时,随着大数据分析、机器学习等技术的成熟应用,电表数据中所蕴含的信息价值将能得到更为充分发挖掘,而不仅限于传统的电费计量[8].所以,非侵入式负荷监测得到了工业界和学术界的广泛关注,目前已经成为人工智能技术在建筑、电力等相关行业应用的研究热点.
为了对非侵入式负荷监测目前已有的研究情况进行全面而系统的总结,我们使用WoS (Web of science)文献数据库查询了近10 年来以非侵入式负荷监测为研究主题的相关文献,其检索式为:TS=(“NILM” OR “NIALM” OR “Load Disaggregation” OR “Energy Disaggregation” OR “Non-Intrusive Load Monitoring” OR “Non-Intrusive Appliance Load Monitoring” OR “Nonintrusive Load Monitoring” OR “Nonintrusive Appliance Load Monitoring”)AND SU=(“Engineering”OR “Construction &Building Technology” OR“Electric *” OR “Computer *” OR “Energy *”)NOT SU=(“Chemistry *” OR “Materials *” OR“Health*” OR “Medicine*” OR “Optics*” OR“Physics*”).检索命中文献728 篇,其中期刊论文266 篇,每年录入的期刊论文数量分布如图1 所示.
从图1 中可以看出近10 年来该领域的研究基本呈现不断增长态势,尤其是从2015 年开始,新的研究成果大量发布.其主要原因,一方面是以AlexNet在2012 年的ImageNet 比赛中夺冠为标志,激发了广大研究者使用机器学习相关算法尤其是深度学习方法进行数据处理的兴趣;另一方面是自2011 年该领域的第一个公开数据集 ——参考用能分解数据集(Reference energy disaggregation dataset,REDD)发布后,多个用于非侵入式负荷监测的公开数据集陆续发布,为该领域的研究提供了数据基础[9].
图1 WoS 数据库中相关期刊论文数量分布(2010~2019)Fig.1 Number distribution of related journal article publications indexed by WoS (2010~2019)
不同行业领域的负荷组成及特性存在较大差异,非侵入式负荷监测的应用场景划分可划分为工业、商用、住宅等几类.其中住宅场景的应用模式相对固定、非侵入式监测需求相对明确,目前已有的研究多集中于这一场景[10].图2 是一个用于办公室环境的非侵入式负荷监测系统,图3 给出了此系统对应的负荷分解示意图.
图2 典型的非侵入式负荷监测系统框图Fig.2 The diagram of a typical NILM system
图3 非侵入式负荷监测结果示意图Fig.3 The illustration of NILM result
非侵入式负荷监测的挑战在于基于现有电表数据设计可广泛适用于不同场景的实时负荷分解算法.尽管许多研究者在提升准确度[11-14]、降低计算量[15-18]、增强算法鲁棒性[19-21]等方面做了大量的工作,但由于用电负荷种类多样、各行业负荷组成各不相同、参数采集类型及时间精度各有差异、监测设备计算能力有限等因素,非侵入式负荷监测在国内尚未得到成熟应用,还存在不少挑战需要进一步研究克服.
本文对目前已有的非侵入式负荷监测方法及技术进行综述.第1 节提炼非侵入式负荷监测的问题模型并给出总体处理框架.第2 节介绍用于非侵入式负荷监测的数据采集与预处理过程,分别对数据采集、事件检测及特征提取的方法进行梳理.第3节总结现有的各类负荷分解模型及算法,重点分析近五年来基于深度学习方法的研究进展.第4 节给出非侵入式负荷监测算法常用的评估指标.第5 节对有代表性的几个非侵入式负荷监测公开数据集进行汇总.第6 节对目前研究存在的问题进行分析总结,并对未来的研究方向进行展望.
非侵入式负荷监测的基本数学模型及整体处理框架是由MIT 的Hart 博士在上世纪80 年代提出的[1,22],随后许多研究者在其基础上进行了模型和算法的改进.
非侵入式负荷监测是典型的时间序列分析问题.以功率为例,某一时刻的用电总功率由该时刻各个设备的工作状态及对应的功率确定.为简化描述,假设总电表下面有M个用电设备且各个设备只有简单的开和关两种状态,且在开的状态下所消耗的功率恒定,则在时刻t电表测量的总功率可表示为
其中,am(t)表示设备m在t时刻的状态,如果设备m在t时刻处于开的状态,则am(t)=1,否则,am(t)=0,Pm表示设备m处于开状态时的功率,e(t)表示噪声或误差量.
如果M个设备各自的功率Pm已知,并且给定测量的总功率P(t),则非侵入式负荷监测可建模为优化问题,即在每一个时刻t,搜索使得功率误差最小的M维向量(t)为
实际用电设备的状态并不仅是简单的开与关,根据各个用电设备的用途、内部结构及工作原理,可将用电设备划分为四种类型,分别是开关型、多状态型、连续变化型和永久运行型[11].其中,开关型只有开与关两种状态,如图3 中的灯与饮水机.多状态型的设备有有限个运行状态,可以用一个有限状态机(Finite state machines,FSM)描述其工作状态,如图3 中的空调与台式机,住宅中常用的冰箱、洗衣机也属于多状态型设备.连续变化型设备的功率可以连续变化,状态变化时没有明显的转换信号,如亮度可连续调节的调光灯,对这类设备进行负荷分解较为困难.永久运行型设备在较长的监测周期中都保持恒定的功率消耗,如路由器、电视机顶盒等,这类设备的功率相对较小.不同类型的设备具有不同的能量消耗模式,进行非侵入式负荷监测往往需要先明确设备所属的负荷类型,然后再根据特定类型对应的分解方法进行负荷识别与分解.
典型的非侵入式负监测流程包括数据采集、数据预处理、负荷分解等步骤,如图4 所示.其中,数据预处理包括异常点检测、采样率转换、事件检测、特征提取等模块,负荷分解包括负荷辨识、功率分解等模块.
图4 非侵入式负荷监测典型流程图Fig.4 Typical flowchart of NILM
在Hart 提出的方案中,首先利用数字交流电表获取1 s 间隔的平均功率和电压有效值;在数据预处理阶段,利用电压有效值对平均功率进行归一化处理,得到的归一化平均功率进入边缘检测模块进行事件检测,然后将检测到的功率变化表示在一个由有功功率和无功功率组成的二维平面内,在此平面上进行聚类处理,获得各个设备的状态变化;在负荷分解阶段,利用设备状态切换闭合环路的功率变化之和为零(Zero loop-sum constraint,ZLSC)等物理约束建立设备模型,然后跟踪模型行为,获取设备的状态切换时间,通过与特定设备的实际工作状态进行匹配实现设备辨识,通过统计获得各设备的状态功率及使用时间实现能耗分解[1].该方案实现了对开关型设备的监测,但对其他类型设备的监测还存在明显的问题,也不能区分具有相似功率变化特性的设备[11].一方面,不少多状态型设备内部各个部分是独立工作的,在这种情况下ZLSC 约束可能会将一个多状态型设备识别成多个独立的开关型设备;另一方面,该方案通过判定特定时间内功率的变化是否超过设定门限来确认设备是否产生状态切换,但连续变化型设备和永久运行型设备的功率没有明显的突变特征,所以该方案无法有效对其进行事件检测.
不同非侵入式负荷监测方案的差异主要在于所提取的负荷特征及负荷分解算法的不同.根据监测方案是否需要进行设备状态变化的检测,可将非侵入式负荷监测方案分为基于事件(Event-based)的方案和不依赖事件(Event-free)的方案.对于不依赖事件的方案,流程中的事件检测模块可以直接跳过.
负荷特征(Load feature)是能够反映用电设备特性并用来区别于其他设备的各类信息,也称为设备指纹或设备签名,如设备的功率、电流波形、谐波、状态持续时间等.选取恰当的负荷特征可以有效提高事件检测及负荷分解的准确率,不同的负荷特征也会对数据采集设备提出不同的要求.
数据采集是非侵入式负荷监测的第一步.非侵入式负荷监测的数据是由部署在特定区域的电表采集的.对于家庭场景,电表通常处于入户电力线路上,电表所测量的数据是家庭内所有用电设备的总电量.数据采集中主要考虑的两个因素是采集的物理量和采集频率.
电表能测量的基本物理参数包括电压、电流、视在功率和频率.这些基本物理参数通过简单计算可获得有功功率、功率因数、无功功率及能耗等设备参数[23].如果电表的采样速率足够高且具备一定的计算能力,可以获得谐波失真[24-25]、电磁干扰[26]、暂态波形以及设备的各种统计特性参数(如最大值、最小值、平均值、特征值等)[27-28].按照采集频率的高低,可将数据采集分为两大类:高频采集(>1 Hz)和低频采集(≤ 1 Hz).
高频采集一般以几kHz 的速率进行电气参数的采集,采集的典型参数如电流周波、谐波、电磁干扰等,高频采集能够更为全面地捕获设备特征信息,但采集设备的成本相对较高,而且对于数据的传输和存储也提出了较高的要求.例如,如果要采集设备的5 次谐波,根据奈奎斯特采样定理,所需的采样速率至少应为10 倍的基频频率.为了采集暂态波形及电磁干扰等信息,需要使用更高速率的采集设备(10~100 MHz).由于目前商业化部署的大部分电表仅实现了对负荷功率或能耗的低频计量,所以基于高频采集的特征数据进行负荷监测的研究大多需要自行搭建实验环境[29-30].目前已有一些开源项目能够提供构建实验环境所需的软硬件.例如,文献[31]设计了一套称为YoMo (You only measure once)的低成本电表计量系统,该系统通过电流互感器以非侵入方式进行测量,具有与Arduino 平台兼容的接口,同时支持不同的采样频率,可以测量有功功率、无功功率、视在功率、电流及电压等物理量,其精度和分辨率满足从几瓦特到5 kW 的各种不同负荷.文献[32]设计了一套称作c-meter (Cognitive power meter)的智能数字功率采集处理平台,该平台由一个可支持多路采集的电流测量原型及一套可运行在嵌入式平台的负荷分解算法组成,可用于采集分析多种负荷特征.
低频采集的典型参数是功率、电量,采样间隔可以从1 s 到1 天不等[21,33-35].低频采集降低了数据的传输与存储要求,但会损失设备的高频信息.由于低频采集数据可以通过对高频采集的数据进行降采样获得,所以基于低频采集特征进行负荷监测的算法具有更广的应用范围.但是,相对于高频特征,许多设备的低频特征存在相似性,所以基于低频特征进行有效的负荷辨识面临较大的挑战.另一方面,文献[36]通过对若干具有无线传输功能的商用电气参数传感器进行对比分析发现,虽然各传感器的规格说明中称其测量的准确度优于3%,但不同传感器实际测量得到的有功功率和功率因数却存在10%~20%的差异.这对负荷分解算法的鲁棒性提出了要求,所采用的负荷辨识与分解算法需要能够克服由传感器引入的误差[5].
一个或者多个设备状态的变化、线路上的噪声与干扰、连续变化型负载的正常运行都有可能引起采集数据中负荷特征的变化.事件检测是根据一定时间内负荷特征的变化情况,判断是否有事件产生,理想的事件检测方法应能够检测所有类型设备产生的状态变化.根据事件检测策略的不同,主要的事件检测方法可以分为启发式、匹配滤波和概率模型三类[37].
启发式方法基于简单的规则判断进行事件检测.例如文献[1]将归一化后的功率时间序列按照特定的规则进行了分段,在特定时间间隔内数据波动小于某一阈值的认为是稳定区,稳定区之间的部分定义为变化区,将相邻稳定区的平均值之差作为变化量,变化区的第一个采样点对应的时间作为事件时间.为了有效滤除电磁干扰等暂态波动,在事件检测前需对输入数据做平滑处理,常用的处理方式有中值滤波器、线性平滑及全变差正则化[38]等.启发式检测方法需要根据专家经验预先对判断阈值进行设定,通用性较差.
匹配滤波的方法是将特定的已知信号与采集的信号进行相关处理,以检测对应的事件是否发生.文献[39-40]使用了匹配滤波的方法进行事件检测,该方法通过将输入的功率信号与一个的已知的信号模板进行相关运算来检测目标事件是否存在.其中,匹配操作所用的模板可以通过对不同设备的开关暂态采集得到.
在时间序列中检测突变的问题称为变化检测,确定变化发生的特定时刻的问题称为变点检测[41].该领域的许多技术已被应用于功率信号的事件检测问题.文献[42]提出了一种通过计算事件通用似然比(Generalized likelihood ratio,GLR)来进行事件检测的算法,该算法需要对滑窗长度、功率方差、判决门限等参数调整以降低误报率,文献[43]在此基础上进行了改进,通过将事件检测算法与无监督聚类算法相结合以从环境中学习并调整参数.文献[44]提出了基于拟合优度(Goodness-of-fit,GOF)卡方检验的事件检测方法,推导出了判决门限的闭合形式并给出了选择检测窗口的指导原则,通过实际数据对比测试,验证了其相对于GLR 方法的性能优势.文献[45]通过在公开数据集上进行对比试验,验证了GOF 方法的性能优于基于规则判断的方法.文献[46]在GOF 方法的基础上进行了改进,提出GOF 的改进版本和基于倒谱的事件检测方法,并使用基于代理模型的优化(Surrogate-based optimization,SBO)概念有效地提高了算法的鲁棒性和参数优化效率.为提高小功率设备的事件检测性能,文献[47]提出了基于累积和图(Cumulative sum charts,CUSUM)的事件检测方案,该方案通过累积样本数据信息以放大过程中的小偏差,从而提高事件检测的响应率.文献[48]提出了一种自配置事件检测框架,这一框架结合了用于识别重复图案的自动聚类以及用于检测事件的基于接近度的图案匹配,能从环境中自主学习负荷的上下文特征并调整事件检测参数,这一框架在检测不同环境中不同类别负载的运行状态方面优于常规事件检测方法.
启发式方法和匹配滤波方法原理简单,运算量小,在早期的研究中使用较多.随着需要监测的设备类型的不断增加,基于概率模型的变点检测方法由于较高的抗干扰能力和准确性,逐渐得到广泛应用.提高数据的采集时间精度,通常可以获得更多关于事件切换的暂态信息,因此可以提高后续负荷辨识所用分类算法的准确度,但也引入了更多的噪声,使得事件检测的错检概率增大.为了克服这一问题,上述变点检测方法都引入了更多的算法参数,而这些参数需要针对不同的环境通过执行训练过程进行单独配置,因此,此类方法的运算量较大,适合于所有负荷数据可集中处理的应用场景,设计可针对不同设备环境自适应调整参数的检测算法是该类方法研究的一个重要的方面.
非侵入式负荷监测是根据负荷特征从总的测量数据中辨识某一特定的设备是否存在,确定其工作状态并逐一剥离出来的过程.从采集的数据中提取合适的负荷特征对于监测性能至关重要.用于非侵入式负荷监测的负荷特征可分为三大类,分别是稳态特征、暂态特征和非传统特征,具体分类如图5所示.
图5 负荷特征分类Fig.5 Taxonomy of load features
稳态特征是设备在各个稳定的工作状态下表现出来的特征.稳态特征包括功率(包括有功、无功、视在功率)的变化、稳态电压及电流的波形、V-I 轨迹(Voltage-current trajectory)、稳态电流及电压谐波等.其中功率变化是最常使用的时域稳态特征,例如文献[1]中便使用归一化平均功率的变化进行事件检测并通过聚类处理分析设备状态变化;文献[49]通过对有功功率设定门限,采用决策树对设备进行分类;文献[50]为降低监测成本,采用低速采集的功率信号利用高斯混合模型(Gaussian mixture model,GMM)结合序贯期望最大化(Sequential expectation-maximization,SEM)算法构建设备状态分类器;文献[51]提出的负荷分解方法以采集的功率数据作为输入,使用粒子滤波算法近似计算设备状态的概率密度函数.也有不少文献对功率信号进行一定的转换处理,利用得到的新特征进行负荷分类与分解.例如,文献[52]将负荷分解看做单信道信号源分离问题,采用非负张量分解(Nonnegative tensor factorization,NTF)获取最相关特征来进行信号分离;文献[53]对采集的总功率信号进行希尔伯特变换以获取合适的负荷分解特征.
使用单一特征进行负荷分解可能存在不同设备的特征相互重叠的情况,所以通常将多个特征通过一定的方式组合使用.例如,文献[54-57]将负荷分解任务看作多变量时间序列问题进行处理,获得了优于单一变量的分解性能;文献[58-59]从采集数据中提取特定的统计量,如设备工作状态占空比,在特定状态下的功率波动方差等用于负荷辨识与分解;文献[60]通过时域变换获得家庭中每个设备的负荷曲线,综合利用多种特征进行负荷分解;V-I 轨迹是由电流与电压波形组成的平面图形,文献[61-66]以V-I 轨迹的形状作为负荷特征进行了负荷分解算法的设计,如Hassan等[61]评估了将基于V-I 轨迹的负荷辨识与基于其他特征的辨识算法相结的方案,得出对于动态、噪声和非常相似的负荷设备,组合方案可以提供更好的整体预测精度和可靠性;Yang等[65]在利用主成分分析和k 近邻算法之前对V-I 轨迹的图形模板进行了裁剪和图像金字塔缩减,设计并实现了一套多阶段的负荷分类算法,并在实际数据集上验证了该算法的有效性.
除了时域特征外也有不少研究人员采用快速傅里叶变换将电流等时域数据转换为频域特征,并将这些频域特征与其他时域特征组合进行负荷分解[18,67-72].快速傅里叶变换虽然能够很好地表征信号的频率特性,但丢失了部分时域信息,无法看出频率随时间的变化.针对这一问题,可以采用时频分析的方法,如离散小波变换[73-75]或短时傅里叶变换[76-78]来获取负荷特征.其中,Chang等[73]利用Parseval 定理计算了不同尺度小波变换系数的功率谱,高效地表征了负荷的开/关暂态特征;文献[74]采用卷积和小波多分辨率分析技术(Convolution and wavelet multi-resolution analysis,WMRA)从原始功率波形中提取新的功率特征,并使用Parseval 定理从其中获取功率指数(Power indices,PI),通过功率指数进行负荷的辨识;文献[76]通过对比实验分析了小波变换和短时傅里叶变换提取特征的性能,得出小波变换所得暂态特征用于负荷辨识的性能较好的结论.也有研究采用S 变换[79-80],如Borin等[79]对采集的电流数据进行Stockwell 变换,再将转换得到的时频域数据作为负荷特征,之后使用图像模式识别领域的向量投影方法进行负荷辨识.
暂态特征是从设备状态切换过程中采集的特征信息,例如暂态过程中的功率变化、启动电流波形、电压噪声、电流波形尖峰的边沿大小或者峭度等都可以作为负荷特征[81],多数暂态特征是通过傅里叶变换等变换技术间接获得的[82-83].相对于稳态特征,暂态特征与设备本身的特性相关性更强[84-85],所以能够更好地进行设备辨识.进一步,可将负荷的稳态与暂态特征结合起来进行负荷辨识与分解,这样可充分利用两者的优点[86].文献[87]和文献[88]都采用委员会决策机制(Committee decision mechanisms,CDMs)将多种稳态与暂态特征进行综合,同时用于负荷分解,有效提高了负荷分解的准确性.
除上述稳态与暂态特征外,将一些非传统的负荷特征用于负荷分解也能取得不错的分解效果.如文献[89]通过仿真和实验方式研究了采用高频电磁干扰(Electromagnetic interference,EMI)进行负荷辨识的可靠性和可行性;文献[90]采用递归图分析(Recurrence plot analysis,RPA)作为非线性负荷电流波形的分析工具,提取负荷辨识所需的负荷特征;文献[91]采用基于波形子片段(Shapelets)的算法区分不同负荷的状态变化,从而实现对负荷的辨识与分解;文献[92]通过将负荷波形转换为量化的状态序列构造电流波形有限状态机(Finite state machine,FSM),通过分析状态序列的统计特征(均方根值和停留时间),实现了对负荷的辨识;由于设备在开启暂态过程包含了大量与设备本身特性相关特征,文献[93]和文献[94]采用开启能量作为负荷特征进行了负荷辨识算法的设计;为了从采集的数据中提取对于负荷分解最为显著的特征,文献[28]通过对电流和电压波形进行主成分分析(Principal component analysis,PCA)获得了用于负荷分解的特征组合.
在采集了设备数据并确定负荷分解所用特征之后,便可构造分解模型,然后通过设计特定的学习策略与算法选取最优模型,最后将提取的特征输入模型进行推理,实现对负荷种类、工作状态的辨识以及对应功率的估计.目前,负荷分解的模型及算法可分为基于组合优化的方法和基于模式识别的方法两大类,如图6 所示.
图6 负荷分解模型与算法分类Fig.6 Taxonomy of load disaggregation models and algorithms
基于组合优化的方法尝试将观察到的功率测量值与(设备特征库中)设备功率信号的可能组合进行匹配,以减少匹配误差作为优化策略[95].例如基于模板滤波的负荷辨识方法通过先验获取各负荷的特征来构造特征滤波器,在此基础上通过0-1 化处理生成模板滤波器,利用模板滤波器分别对采集的混合信号进行滤波,然后根据滤波结果进行负荷种类及运行状态的判别[96].这类方法原理直观,对于设备数量较少且设备特性已知的情况具有较好的分解效果,但存在如下问题:模型本质是NP 完全问题,优化效率提升困难;该方法假设各设备的特征满足叠加性,但并不是所有负荷特征都符合这一条件;要实现准确识别,该方法需要有完备的设备特征库,这在实际应用场景中往往很难满足[97].
基于模式识别的方法则直接从数据中学习设备的特征模式,从而实现对负荷的辨识与分解.根据学习过程是否利用标记信息,可以进一步划分监督学习算法和无监督学习算法两类.
监督学习算法除了需要总负荷数据外,在训练阶段还需各设备的状态信息等标记数据,这些标记数据可以由用户协助采集[98],也可通过为各设备安装独立的监测装置获取[99].k 近邻(k-nearest neighbor,kNN)[100-102]、决策树[103-105]、支持向量机(Support vector machine,SVM)[106-109]、人工神经网络(Artificial neural network,ANN)[110-111]等都是在负荷分解中常用的模型.在文献[100]中,Figueiredo等利用有功功率、无功功率、功率因数等数据进行事件检测,然后分别采用了支持向量机和kNN 算法进行负荷分类.文献[103]将采集的有功功率、无功功率及视在功率输入决策树进行设备的分类,作者通过实验发现使用各功率分量的变化量作为决策树的输入能够获得更高的分类精度.文献[111]设计了一种ANN 与粒子群优化(Particle swarm optimization,PSO)集成的负荷分解方法,其中ANN 用于负荷辨识,PSO 用于搜寻最优ANN 参数,并在实际住宅数据上进行测试,获得了高于90%的准确度.
无监督类的算法不需要标签进行模型的训练,而是直接从数据中挖掘特征的相似性.例如,通过K-means、DBSCAN 等聚类方法进行负荷特征的提取以及设备的辨识[112-114],通过希尔伯特变换等数据处理工具进行设备投切事件的配对[53],也有研究人员将负荷分解看作盲信号分离问题[115],通过一定的方式将领域知识嵌入分解过程,实现了分解性能的有效提升[116].由于在很多现场环境中标签数据不易获取,无监督类算法符合此类应用场景需求,但其准确率通常低于监督类算法.
采用集成学习方法将多个不同的分类器进行结合[87,117-118]或采用多标签分类算法综合使用多种负荷特征进行分类[119-121],可进一步提升负荷分解算法的准确性及泛化性能.例如,文献[118]针对负荷分类时面临的类别不均衡问题,设计了随机森林集成分类器,并在插座负载设备辨识数据集(Plug load appliance identification dataset,PLAID)上验证了该方法的性能.考虑到多个独立的负荷可能同时出现状态变化,文献[121]提出了三种基于图的半监督多标签负荷监测算法,并在5 个数据集上对所提出算法的性能进行了评估.
在众多负荷分解模型与方法中,隐马尔科夫模型(Hidden Markov model,HMM)由于具备对时序数据进行建模并表征不可观测状态的能力,获得了大量的关注和研究.近5 年来,基于图信号处理(Graph signal processing,GSP)的方法及基于深度学习(Deep learning,DL)的方法也在该领域逐渐得到应用,并获得了优于传统方法的性能.下面分别对这三类方法进行简要介绍.
马尔科夫链是符合马尔科夫假设的一类随机过程,即过程中各个状态St的概率分布仅与它的前一个状态St-1有关.隐马尔科夫模型是马尔科夫链的一个扩展:状态序列S1,S2,···,是一个典型的马尔科夫链,但任一时刻t的状态St不可见,观察者无法直接通过状态序列来推测转移概率等参数.该模型会在每个时刻t输出一个观测值Ot,且Ot只与St相关(独立输出假设)[122].一个典型的HMM模型的示意图如图7 所示.
图7 隐马尔科夫模型示意图Fig.7 The illustration of hidden Markov model
隐马尔科夫模型由初始状态概率向量π、状态转移概率矩阵A和观测概率矩阵B决定.因此,隐马尔科夫模型λ可表示为
其中,π和A决定状态序列,B决定观测序列.
在非侵入式负荷监测问题中,电表采集的时间序列对应模型的观测序列,而各用电设备的工作状态构成模型的隐含状态序列.基于HMM 的负荷分解可分为模型学习和解码两个阶段.在模型学习阶段需要根据训练数据估计模型参数,使得在该模型下观测序列概率P(O|λ)最大;在解码阶段则根据已经估计得到的模型及输入的观测序列,求取给定观测序列条件概率P(S|O)最大的状态序列.鉴于HMM 能够很好地表征时间序列和无法直接观测的负荷状态,自HMM 方法引入负荷分解领域后,很快成为研究的热点[123].
用HMM 进行负荷分解存在的主要问题是模型所需处理的状态数量及运算量随着设备数量及各设备的状态数目的增加呈指数增加.例如,假设电表下有M个用电设备,每一个设备有K个内部状态,则总的HMM 状态数为KM.基于HMM 的算法改进主要集中在如何有效降低分解算法的复杂度.因子隐马尔科夫模型(Factorial HMM,FHMM)对基本的马尔科夫模型进行了扩展,该模型的隐含状态由多个独立的状态序列组成,观测量的值由对应时刻的各个独立的隐藏状态变量决定[124].该模型的示意图如图8 所示.
图8 因子隐马尔科夫模型示意图Fig.8 The illustration of factorial hidden Markov model
FHMM 降低了隐含状态的数量,所以在一定程度上降低了运算的复杂度.假设被监测的系统中有8 个两状态(只有开、关两种状态)用电负荷,如果使用HMM,则隐含状态的数目为256 个;如果采用FHMM 模型,则得到的是8 个平行的马尔科夫链.由于FHMM 中假设每一个设备的状态是相互独立的,所以丢失了设备间的相关性信息.除此之外,FHMM 模型训练的复杂度仍然较高,并且精确推理所需处理的状态数量仍然会呈指数增加[17].
Kolter等[9,99]于2011 年将FHMM 引入了非侵入式负荷分解领域,他们针对负荷分解的应用特点,采用了加性因子隐马尔科夫模型这一特殊的FHMM;同时针对标准的基于平均场方法的FHMM 推理易落入局部最优的问题,通过对观测量进行差分处理构造差分模型、通过使用总方差正则项构造稳健的混合模型、通过添加同一时刻最多只允许一次隐藏状发生变化的后验约束,充分利用了加性FHMM中的加性结构,然后将多个模型进行联合优化构造凸二次规划优化问题,并提出加性因子近似最大后验概率(Additive factorial approximate MAP,AFAMAP)算法进行寻优,有效克服了这一问题.通过在REDD 数据集上进行测试,该方法取得了当时最优的监测性能[99].此后,基于FHMM 模型及其变种得到了该领域研究者的持续关注[51,125-127].其中,文献[125]进一步利用半定规划(Semidefnite program,SDP)松弛替换文献[99]中的整数规划松弛,并采用交替方向乘子法(Alternating direction method of multipliers,ADMM)结合随机舍入的方法,获得了更优的负荷分解性能.除此之外,采用牛顿法等优化方法可进一步提高寻优迭代的收敛速度[128].
降低基于HMM 模型负荷分解复杂度的另一个思路是充分利用状态转移概率矩阵和观测概率矩阵的稀疏性,将负荷分解问题表示为序列解码问题,然后用Viterbi 算法进行求解.虽然Viterbi 算法极大地降低了模型解码的复杂度,但用传统Viterbi 算法时运算量仍然会随用电设备个数和状态数的增加而快速增加,当用电设备个数或状态数增加到一定程度时,会因计算耗时过长而不再适用.为此研究人员提出了多种基于Viterbi 算法的改进,其中Zeifman等[15]利用状态转移概率矩阵的稀疏性,提出了稀疏转移维特比算法(Viterbi algorithm with sparse transitions,VAST),但该算法仅适用于开关型设备,如果对多状态型设备进行处理,需要使用多个开关型模型进行组合,同时该算法并没有考虑观测概率矩阵的稀疏性.Makonin等[17]在此基础上利用了更多的稀疏特征,提出了基于超状态HMM和改进稀疏Viterbi 算法的负荷分解方法,该方法通过概率密度函数(Probability mass function,PMF)描述设备状态的离散分布,通过事先测量的数据获取各个负荷对应状态的PMF,并构造超状态HMM 模型,通过矩阵压缩处理,一方面节省了解码所需的存储空间,另一方面避免了状态转移概率矩阵和观测概率矩阵中的零概率分量参与解码处理,实现了模型的精确推理并在嵌入式设备上实现了多达18 个设备(包含多状态设备)的实时负荷分解.
图具有表征和处理具有复杂结构数据的能力,图信号处理通过定义一组节点和加权邻接矩阵来表示数据集,是一种新兴的数据分析工具,数据元素间的依赖性、相似性或其他性质可以通过这一工具进行分析和处理.图信号处理将经典的数字信号处理推广到了一般的图,尤其适用于训练时间短且无法建立合适的模型的数据分类问题,并已在传感器网络、生物网络、图像及3D 点云处理、数据科学等领域逐渐得到应用[129-130].
在图信号处理中,数据集X可以通过由图G=(V,A)索引的离散信号s表示,其中V表示图的节点,A表示图的加权邻接矩阵.数据集X的每一个元素xi对应图上的节点vi∈V.节点vi与vj之间边的权重反映了xi与xj之间的相关性,通常使用如下高斯核权重函数来定量表示:
其中,ρ是比例因子.信号s即为图信号,它可定义为从V到一组复数的映射.例如,s可以是一组分类标签,其中si对应为xi所属类的标签.
图G的固有结构可以用总Lipschitz 平滑度表征,定义为
式(5)等效于sTLs.其中,L是N×N的Laplacian 矩阵,该矩阵是一个实对称矩阵,可以看作对图信号s的差分操作,即
式中,D是N×N的对角阵,k=1,···,N.L的特征值具有图信号s的频谱的概念,与低特征值相关的特征向量的值在节点间的变化较小[131].
图9 给出了一个具有4 个节点的图,图中边的粗细反映了节点之间的相关性,垂直线对应图信号的值.如果信号s相对于图G是分段平滑的,则式(5)通常较小,这可以用作进行正则化的先验.
图9 具有4 个节点的图示例Fig.9 A graph example with four nodes
对于非侵入式负荷监测问题,可设定M为一个总电表下所有已知设备的集合,p(ti)为总电表在ti时刻采集的有功功率.不失一般性,将p(ti)简记为pi.对应地,设备m∈M在ti时刻的功率记为.则有
其中,ei包含测量噪声及所有在运行的未知设备的功率.负荷分解的任务就是对所有i=1,···,N和m∈M,给定pi,对进行估计.
同时可引入基于图转移矩阵的图信号总方差这一平滑度指标作为优化的正则化项进行模型参数估计.在测试阶段,通过求解如下优化问题,对(n<i<N)进行估计[132].
其中,ω用于控制平滑度这一正则化项在整体目标函数中的权重.在设备数量及采集的数据规模很大时,上述优化过程将变得难以处理,为此有研究者采用逐项迭代优化的方式,如模拟退火算法[133-134]等,给出了近似的解决方案.
由于数据、算力及深层网络训练算法等方面条件的具备,深度学习的方法在计算机视觉、语音识别以及机器翻译等领域已经获得广泛应用.深度学习为数据处理提供了端到端的处理方案,对于非侵入式负荷监测任务而言,不需要检测电器开关事件便能直接进行负荷分解,自2015 年以来基于深度学习的解决方案逐渐引起了该领域研究人员的兴趣.
Mauch等[135-136]提出了采用具有两层的双向递归神经网络架构以及HMM 与深度神经网络的组合两种方案进行负荷分解,并在REDD 数据集上进行了测试,尽管这两种结构的准确性优于传统的FHMM,但由于训练所用的数据较少,算法的泛化性能并未得到充分验证.Kelly 等将3 种深度神经网络架构应用于非侵入式负荷监测任务,这3 种网络分别是长短期记忆网络(Long short-term memory,LSTM)、降噪自动编码器(Denoising autoencoder,dAE)和一种可以实现对设备启停时间及平均功率需求进行回归分析的深度神经网络.长短期记忆网络总共包含6 层,输入层的长度与设备活动持续时间有关,第2 层是个一维的卷积层,用来从信号中提取特征,第3 层和第4 层是双向LSTM,最后两层是全连接层,整个网络通过时间反向传播方法进行训练.降噪自动编码器将负荷分解任务看作一个去除信号中噪声的过程,该网络首先通过一维卷积运算和全连接网络将输入信号编码到一个紧凑的向量空间,在这一向量空间内实现对输入信号重要特征的提取,然后再通过一层全连接网络与一维解卷积运算实现对输入信号的重构.文献中该网络采用总负荷功率作为输入,由一个一维卷积层,三个全连接层及一个卷积输出层组成,其结构如图10所示.第3 种网络的目的是估计目标设备启停时间及平均功率需求,网络由一个输入层,两个一维的卷积层,五个全连接层组成,最后一层的三个输出对应设备的设备启、停时间及平均功率需求.为了提高模型的泛化性能,在网络训练阶段混合使用了真实数据与合成数据,验证及测试阶段只使用真实数据.Kelly等[12]在英国家用电器级用电(UK domestic appliance-level electricity,UKDALE)数据集上对这三种深度神经网络架构的性能进行了测试,测试所用的设备包括洗衣机、热水壶、冰箱、洗碗机和微波炉,使用了包括 F1分数在内的7 种性能评估指标,测试结果表明相对于传统的组合优化或FHMM模型,三个神经网络在通常情况下均获得了更好的 F1分数,并且具有良好的泛化性能.他们同时发现,LSTM 网络在开关类设备上获得了较好的分解性能,但对于状态较为复杂的设备,LSTM 网络的性能比另外两个网络稍差[12].Bonfigli等[137]通过将分解输出与中值滤波器进行智能组合,扩展和改进了Kelly等[12]提出的降噪自动编码器,同时在不同数据集上与基于HMM 的AFAMAP 算法进行了对比,结果显示该方法在不同条件下都表现出了显著的鲁棒性.
图10 基于自动编码器的非侵入式负荷监测网络结构图Fig.10 Network structure diagram of NILM based on automatic encoder
Kelly等[12]提出的方法属于序列到序列(seq2seq)模型,其通过CNN、RNN 等神经网络单元学习总负荷序列与各个独立设备序列间的非线性回归模型.但是,由于输入与输出的序列可能会很长,模型训练所需的计算和存储资源将会很高.解决这一问题的一个方式是采用滑窗(Sliding window)对序列进行分割,然后训练神经网络(定义为Fs)将输入的总负荷数据的滑窗片段Yt:t+W-1映射到对应时间范围内各设备的功率数据Xt:t+W-1,即Xt:t+W-1=Fs(Yt:t+W-1)+ε,其中ε是W维高斯随机噪声.模型训练时所用的损失函数可定义为
其中,T是序列长度,θs是网络Fs的参数.为了减少运算量,在实际的参数训练过程中,可从所有可能的滑窗中选取一部分进行训练.在序列到序列模型中,输出信号的每个元素被预测多次,最终的预测结果通过对多次预测值进行平均获得.实际上,一些滑窗能提供比其他窗口更好的预测,但简单的滑窗平均处理无法利用这些信息,Zhang等[13]针对这一问题提出了序列到点(seq2point)模型,其输入是总负荷的滑窗片段,输出是目标设备的单个点,使用卷积神经网络来训练模型,将网络的表示能力集中在窗口的中点,产生了更为准确的预测.在这一模型中神经网络(定义为Fp)将输入的总负荷数据的滑窗片段Yt:t+W-1映射到对应时间范围目标设备的滑窗序列Xt:t+W-1的中间点xτ处,即xτ=Fp(Yt:t+W-1)+ε,模型的损失函数可表示为
其中,θp是网络Fp的参数.
针对基于深度学习的负荷分解模型容易出现梯度消失和模型退化现象,难以从负荷时间序列中提取有效特征的问题,Xia等[138]提出了采用双向注意力机制的空洞残差深层网络来提取高级负荷特征,提高了辨识电器开/关状态的准确性,同时改善了学习低使用率的电器的能力.Barsim等[139]针对深度学习模型的超参及性能与特定设备存在关联的问题,开发了用于非侵入式负荷监测的通用模型,该模型观测窗口长度等超参数不依赖于负载类别,通过采用全卷积网络实现了低频采样数据的负荷识别.
与传统的机器学习方法相比,深度学习高度依赖大规模的训练数据,由于在某些领域构建大规模的标注良好的数据集非常困难,限制了深度学习的应用.迁移学习放宽了训练数据必须与测试数据独立同分布的假设,能够有效缓解训练数据不足的问题[140].例如,De Baets等[141]将V-I 轨迹的加权像素化图像用作深度学习方法的输入数据,使用了深度卷积神经网络,自动提取用于电器分类的关键特征.针对不同家庭的用电负荷存在差异,难以收集足够的标签数据以训练具有较强代表性和泛化能力的分类模型的问题,文献[118]采用迁移学习的方法,首先将V-I 轨迹的通过颜色编码转换为视觉表示,然后将在图像识别数据集上预训练的深度学习模型进行迁移,训练负荷辨识的分类器,增强了负荷辨识与分解的模型的泛化性能.
近两年,也有研究者将传统字典学习技术拓展为深度字典学习并应用于非侵入式负荷监测.如文献[142]中用于负荷分解的字典不再是单层,而是了通过深度学习方法为每一个设备学习了一个多层字典,有效提高了负荷分解的准确性;文献[143]进一步采用多标签一致的深度字典学习和迁移学习实现了多设备的同时监测.综述文献[144]从特征选择、准确度、扩展性、泛化性能、隐私保护程度等8个维度对近5 年提出的10 个典型非侵入式负荷分解算法进行了定性对比分析,得出如下结论:基于深度神经网络的算法在准确度和泛化性能方面明显优于传统算法,但对于功率连续可变设备还不能做到很好地监测,同时大部分基于深度学习的算法属于监督类算法,其对于数据集的依赖较大.
综上所述,基于隐马尔科夫模型、基于图信号处理及基于深度学的三类非侵入式负荷监测方法各有优劣,可总结如表1 所示.
表1 NILM 方法优缺点对比Table 1 Comparison of NILM methods
合理定义性能指标对于实现对非侵入式负荷监测算法的性能评估并在算法之间进行合理的性能比较至关重要.由于非侵入式负荷监测任务中包括负荷辨识与负荷分解两个过程,关注的过程不同,对应的评估指标也不同.
对于负荷辨识,不少研究人员使用了最基本的准确性度量指标 (Acc),该指标定义为在算法运行时间范围内正确辨识次数与总辨识次数之比,即
由于不少场景下设备可能一直处于关闭状态,该指标并不能很好地体现算法的性能[145].例如,如果一台电视在一天内可能只有5%的时间处于运行状态,那么即使算法计算出的该设备一直处于关闭状态,也可以得到95%的准确度,这样的指标很可能会引起误导.
FM(F-Measure)是精确率(Precision,PR)和召回率(Recall,RE)的调和平均,该指标的定义式为
其中,TP为真正例,表示正确地识别了设备状态的情况;FP为假正例,表示处于关闭状态的设备被别识别为开状态的情况;FN为假反例,表示处于开状态的设备被识别为关闭状态的情况.FM克服了Acc指标存在的问题,但只能用于度量仅有开和关两个状态的设备,并不适用于具有多个状态的设备.
为了度量多状态设备的负荷分解算法的准确度,Makonin 等引入了有限状态FM(Finite-state Fmeasure,FS-FM)的准确度度量指标[146].该指标中将TP分解为两部分,分别是不正确的真正例(Inaccurate true-positives,ITP)和正确的真正例(Accurate true-positives,ATP),分别为
对新的精确率和召回率计算调和平均值,即可得到FS-FM.Acc和FM都属于分类度量,它们仅能衡量算法辨识的设备状态的准确度.
为了进一步度量算法对功率、电流等物理量的分解的准确性,需要采用其他的性能指标.均方根误差(Root mean square error,RMSE)描述了分解所得功率与设备真实功率之间的差值,其计算式可表示为
其中,T表示用于算法处理的采样数据数目.由于没有针对功率进行归一化处理,RMSE很难横向比较不同设备的功率分解性能.为了解决这一问题,可使用归一化的分解误差[99,147],其计算式可表示为
文献[99]采用的估计准确度可以用来评估分解算法的整体性能,其定义为
其中,T是时间序列包含的样点数目,M是设备数目.利用这一定义也可以考察每一个设备的估计准确度,即
DeRMSE和可用来评价分解的功率与实际功率的匹配程度.DeRMSE越小或者越大,表示分解的准确度越高.
除了上述评估指标外,还有不少与具体的非侵入式监测方法相关的评估指标.如文献[148]针对非侵入式负荷监测的事件检测算法,通过实验分析了23 个相关评估指标的表现.在对特定非侵入式负荷监测方法进行评估时,需要根据具体的监测场景需求、对应的算法流程以及算法模型进行评估指标的选取.为了判断一个非侵入式负荷监测方案是否能够在实际中应用,Zeifman 等在文献[11]中提出了6 个方面的要求,分别是:
1)特征选择.数据收集的频率会影响可提取的特征,大多数智能电表和低成本解决方案要求不大于1 Hz 的采样率.
2)准确度.可接受的用户体验要求系统的最低准确度要在80%~90%.
3)无需训练.用户用来进行系统配置的投入应尽量小,系统应该能自动检测新设备,甚至之前从未见过的设备.
4)实时性.系统应支持在线工作,并应实时提供有关房屋当前能源使用状况的准确反馈.
5)可扩展性.即使面临复杂的现场环境,如超过20 个的目标设备,多设备同时发生状态变化等,系统算法也应保持健壮和高效.
6)支持多种设备类型.系统应能识别第1 节所述的4 种不同类型的电气设备.
为了准确评估不同非侵入式负荷监测算法的性能,需要构建面向不同应用场景的非侵入式负荷监测的数据集.目前已有一些公开数据集可供研究人员使用,这些数据集通常会提供一个或多个房屋用电负载的功率、电压、电流等的测量值,部分数据集还提供了目标房屋的环境测量数据以及使用人员的活动情况,其特点总结如表2 所示.例如,REDD 数据集包含了两种类型的数据集,即高频数据集和低频数据集.其中高频数据集是两个总电表的电压与电流波形,采集频率为15 kHz;低频数据集包括了总表和各个设备的功率数据,采集频率为0.5 Hz或1.0 Hz.数据集中每一个数据点都带有基于协调世界时(Coordinated universal time,UTC)的时间戳,是典型的时间序列数据集.文献[158]通过将三种深度学习结构在同一数据集进行对比实验,发现当数据采样率太低或数据集中的独立房屋数量太小时,算法的性能可能会受到极大限制.由于更为精细、全面的测量需要定制专用的测量设备,数据采集持续时间长且设备状态标注的工作繁琐,所以目前已有的数据集不论在数据规模还是丰富性方面尚无法满足不断涌现的新算法的需求.
表2 非侵入式负荷监测公开数据集Table 2 Publicly available datasets for NILM
尽管目前已有一些用于非侵入式负荷监测的公开数据集,但是由于各个数据集的组织形式不同,即使同一个数据集,不同研究者用来进行算法测试的数据子集也存在差异.同时,不同的负荷分解研究所采用的评估指标也各有差异.因此,在不同的数据集和算法上进行性能的交叉对比仍然比较困难.为此,Parson等[162]开发了非侵入式负荷监测工具包(Non-intrusive load monitoring toolkit,NILMTK),该开源工具包支持将REDD,SMART*,AMPds 等6 个数据集加载到一个通用的Python 数据结构中,提供了两个NILM 算法(组合优化与精确FHMM)的实现作为性能基线,并提供了若干基本的统计及预处理功能(如,过滤数据集中的异常点、对数据进行重采样等).2019 年,Batra等[163]对该工具包中的分解算法及其实验调用接口进行了重写,并发布了一个包含3 个基准和9 个新负荷分解算法的代码仓库,进一步提高了该工具包的易用性、可支持算法的多样性及其性能的可复现性.
通过上述讨论可以看到,目前非侵入式负荷监测的方法众多,虽然监测的准确性在不断提高,但在实时性、通用性、稳健性等方面距离规模化实用还存在一定差距,将来的研究可以从以下几方面展开:
1)随着终端设备处理能力的不断提升,边缘计算物联网架构已经在不少领域得到部署应用[164].但在非侵入式负荷监测领域,基于模式识别的各类监测算法的复杂度仍然过高,需要在保证一定监测性能的基础上对模型进行压缩处理,以达到可在低成本嵌入式设备上实时运行的程度.
2)实施非侵入式负荷监测的一个初衷是保护用户隐私.在监测过程中不可避免会产生用户数据的传输,如何尽可能地降低隐私信息泄露风险也是非侵入式监测系统部署应用需要重点考虑的方面.联邦学习(Federated learning,FL)架构允许数据维持在各个终端本地,通过中央服务器协同进行模型训练,能够减轻传统集中式机器学习方法所导致的系统性隐私风险[165].因此,研究如何在联邦学习架构下进行非侵入式负荷监测模型的分布式训练,实现模型从构造、优化到推理的全流程分布式运行,将是非侵入式负荷监测研究的一个重要方面.
3)在已有的监测算法中,具有较好准确度的算法多为监督类算法,但监督类算法依赖于大量的训练数据且泛化性能尚需进一步增强,以降低不同建筑甚至不同应用场景下进行模型重新训练的时间与计算成本.数据增强、元学习、迁移学习等方法为这一问题提供了解决思路.
4)基于图信号处理的方法与神经网络的方法各有优点,如果将两类方法融合将能充分发挥各自的优势.实际上,目前图神经网络(Graph neural networks,GNN)的研究及应用方兴未艾[166],如果能够成功应用于非侵入式负荷监测,有望显著提升监测性能.另外,通过多传感器数据融合技术,如将环境温度、气候等因素考虑在内,联合进行负荷监测,也可以在一定程度上提高监测的性能.
5)目前用于非侵入式负荷监测研究的公开的数据集大多数是国外的.由于国内外电压标准、供配电线路结构等存在差异,为更好地评估非侵入式负荷监测算法在实际中的性能,应根据不同的应用领域逐步构建基于国内应用环境的数据集.