陳春玲 夏 旻 王 珂 曹 輝
1(南京信息工程大學江蘇省大數據分析技術重點實驗室 江蘇 南京 210000)
2(中國電力科學研究院 江蘇 南京 210000)
負荷分解是實現智能電網[1]的一項關鍵技術。傳統負荷監控一般采用侵入式方法,獲得的數據準確可靠、噪聲小,但實施難度大,用戶接受度低[2-3]。而非侵入式方法能為電網及用戶提供即時的用電信息,對電力供給方實現更精細需求側響應及電力用戶了解自身電能消費,降低用電成本有重要意義。
非侵入式負荷監測(Non-Intrusive Load Monitoring,NILM)概念最早由Hart提出,即將總用電功率分解為各電器消耗功率。Hart的方法主要是通過提取穩態特征進行功率分解,但提取負荷特征[4]量少,分解誤差大。因此后期的研究主要利用增加負荷特征數量進行NILM實驗。
基于組合優化算法[5]的NILM通過尋找聚類[6]得到的各個狀態功率消耗組合與總功率間的最小誤差確定各電器功耗值,Kim等[7]用多因子隱馬爾可夫算法[8]將功率分解問題轉化為編碼解碼問題。以上兩種算法對電器開關狀態判斷有一定作用,但不能準確將總功率數據分解為電器連續值。Kolter等[9]使用了稀疏編碼算法學習各電器功率消耗,并用該算法預測各種電器的功率消耗。相比于多因子隱馬爾可夫算法,Batra等[10]通過K近鄰回歸算法實現了更精確的NILM,但當各電器間功率消耗差異較大時,該算法無法做到準確分解。
近年來深度學習在NILM應用受到很多研究者關注。與數學優化不同,它能自動提取特征,進行端到端的訓練,分解效率更高。Kelly等[11]提出多種深度學習NILM算法[12],證實了自編碼器算法在Seq2Seq方法中效果最好。Zhang等[13]使用兩種卷積神經網絡(Convolutional neural network, CNN)算法進行NILM實驗,比Kelly等的方法有更好的性能表現[14]。
以上基于深度學習的NILM使用的網絡層數較少,較難提取深層次的負荷特征,易出現梯度消失。基于以上問題,提出分組空洞殘差網絡(Group dilated residual network,GD-ResNet)實現序列到序列[15]的NILM,在實現精確NILM的同時,保證了分解的高效性。針對訓練數據量少、目標序列分布不平衡、使用頻率較低的電器,現有算法較難利用總功率數據準確地將其分解到使用頻率較低的電器上。針對上述問題,通過增大滑動窗口能一定程度減小數據不平衡性,但也帶來長時序數據難以學習的問題,對ResNet進行改進,通過加深的網絡提取深層次的負荷特征,利用空洞卷積解決長時序數據較難學習的問題,通過分組卷積減少網絡參數量。實驗表明,利用GD-ResNet對總功率數據分解,對使用頻率較低的電器,也能達到很好的分解效果。

不同評價指標往往具有不同的量綱和量綱單位。為了消除指標之間的量綱影響,需要進行數據歸一化處理。通過采用最大值最小值歸一化方法,使結果映射到[0,1]之間。歸一化函數如下:
(1)

深度學習依賴大量數據訓練,用數據80%作訓練序列,包含總功率序列X和單個電器功率序列Y,其余20%作測試序列。GD-ResNet的輸入需要一定尺寸,因此對原始訓練和測試序列進行滑動處理。


圖1 滑動輸入圖
基于GD-ResNet的NILM以家庭總功率樣本x為輸入,單個電器功率樣本y為輸出。在測試階段,GD-ResNet通過訓練階段建立的x與y間的映射關系,給定一個輸入樣本,GD-ResNet能由映射關系分解得到目標電器的消耗功率。如圖2所示,為了盡可能保留時序信息,GD-ResNet中不采用任何池化操作,并在每一層卷積中采用0填充方式,使空洞卷積輸入和輸出的時序長度相等。以預激活殘差結構為搭建模塊構建殘差單元,將殘差單元構成殘差塊進行堆疊,構造分組空洞殘差卷積神經網絡。

圖2 分組空洞殘差網絡結構圖
網絡以總功率序列為輸入,先經一層普通卷積提取淺層負載特征,隨后進入第1個殘差塊,每個殘差塊中都經過批規范化、ReLU激活和卷積等操作。從圖2能看到第1個殘差塊中空洞率為1,第1個殘差單元中空洞卷積和普通一維卷積沒有太大差別。隨著網絡加深,殘差網絡對深層特征提取能力增強,同時逐漸加大空洞卷積空洞率,增大卷積層感受野,捕獲較長時序特征圖中的序列關系。
每個殘差單元中卷積層的卷積核尺寸均為3×1。網絡輸入數據為128,將標準卷積分成2組,每組輸入通道為64。網絡中經卷積和殘差塊提取到的特征圖尺寸均相同,前4個殘差塊中殘差單元的個數分別為3、4、6、3,卷積核的個數分別為30、40、50、50,空洞率分別為1、2、3、3。每個殘差塊會將前一個殘差塊得到的特征圖進行串聯。第1和第2個殘差塊所用卷積核個數不一樣,所以第2和第3個殘差塊輸入特征圖個數不一樣。這樣在捷徑連接部分特征圖的個數不匹配,無法完成相加操作。利用在第2個殘差塊的捷徑連接部分加入一個卷積核個數為40的卷積操作,使第2個殘差塊中輸入和輸出通道數相等,整個殘差塊對特征的提取能順利進行。依此類推,網絡每個殘差單元中卷積核尺寸都和殘差塊1中相同。經多個殘差塊特征提取后的序列信息被拉伸為一個一維向量,該向量即為提取的特征向量,使用一個節點數小于向量維度的隱含層對該特征向量降維,再通過一個全連接層將該向量映射到目標序列中。預測結束后,把所有數據反歸一化,得到實際功率消耗值。反歸一化的計算式為:
(2)

3.1.1分組卷積
分組卷積[16-17](Group convolution)指把標準卷積分成幾組分別卷積,將卷積結果合并。圖3(a)中假設輸入數據為H1×W1×C1;有C2個大小為h1×w1的卷積核,卷積后輸出數據H2×W2×C2。圖3(b)中在確定分組數g后,并行運算g個相同的卷積過程,每組輸入數據為H1×W1×C1/g,卷積核大小為h1×w1×c1/g,一共有c2/g個,輸出數據為H2×W2×C2/g。分組卷積極大地減少了參數能增加卷積核之間的對角相關性,不容易產生過擬合。

圖3 普通卷積和分組卷積結構比較
3.1.2空洞卷積


圖4 普通卷積和空洞卷積操作比較
深度殘差網絡[19](Residual Networks,ResNet)能在訓練更深網絡的同時保證良好的性能。殘差網絡通過增加恒等映射使網絡變深,解決普通網絡變深后的性能退化和梯度消失問題,并提升模型精度。如圖5所示,每個殘差結構有兩層,x表示輸入,W1和W2表示權重向量,殘差塊中前向神經網絡的表達式為:

圖5 殘差結構圖
F(x)=W2σ(W1x)
(3)
式中:σ表示激活函數ReLU。
Kelly等[11]的實驗中證實了去噪自編碼器DAE方法在非侵入式負載分解的性能是已有算法中最好的,而Zhang等[13]的實驗中介紹了卷積神經網絡在序列對序列的負載分解的實驗中取得了較好的性能。
利用GD-ResNet在WikiEnergy的家庭數據集上進行相應的負荷分解實驗,使用K-近鄰[10](K Nearest Neighbor,KNN)、降噪自編碼[14](Denoising AutoEncoder,DAE)、CNN序列到序列的學習[13](Seq2Seq Learning with Convolutional Neural Network,CNN s-s)、CNN序列到點的學習[13](Sequence to Point Learning with Convolutional Neural Network ,CNN s-p)等性能表現較好的算法進行對比。WikiEnergy中選取某一家庭中的空調、冰箱、洗衣機、微波爐和洗碗機5種電器,圖6展示了WikiEnergy用戶幾種電器的分解效果圖,圖中對比了真實數據和4種不同方法在5種電器上的分解效果,分別是Real data和KNN、DAE、CNN s-s、CNN s-p、G-ResNet以及本文算法GD-ResNet。

圖6 WikiEnergy用戶負荷分解結果對比
可以看出,KNN算法在后面三種電器的分解效果最差,不能實現突變點的準確分解。對空調等這種規律性明顯使用頻率較高的電器,以上算法基本都能實現有效分解。冰箱分解圖中,CNN s-p和KNN算法相比其他3種算法在均值區域波動較大,后3種電器使用頻率較低。DAE和CNN兩種算法中,DAE對消耗功率近0的區域分解較穩定,CNN s-p在低功率消耗區分解波動較大。相比以上幾種方法,本文方法在每種電器上表現更突出,G-ResNet在洗衣機、微波爐、洗碗機三種使用頻率較低的電器上的分解效果沒有GD-ResNet更接近真實數據,本文方法分解圖曲線更接近真實數據分解圖曲線,因此可以說GD-ResNet對使用頻率較低的電器,能實現較為準確的分解。
為驗證本文方法有效性,選擇大量可靠性評估指標對算法性能評估。有平均絕對誤差(Mean Absolute Error,MAE[14-15])和綜合信號誤差(Signal Aggregate Error,SAE[15]),MAE是衡量每個時刻分解到的單個電器消耗功率和真實消耗功率間的平均誤差,SAE能衡量長時間內整體誤差。負荷分解后通過劃分閾值區分電器啟停狀態。劃分5種電器閾值分別為:空調100 W、冰箱50 W、洗衣機20 W、微波爐200 W、洗碗機100 W。在啟停狀態判斷上,使用召回率(Recall)[14]、精確度(Precision)[14]、準確率(Accuracy)[14]、F1值[11]4種評價指標。在經典NILM算法中,FHMM因其對電器狀態的有效估計受到廣泛關注,因此在評價指標對比中新增了FHMM算法的對比實驗。
表1為WikiEnergy用戶負荷分解評價指標對比,可以看出,在空調、冰箱、洗衣機、微波爐和洗碗機這5種電器的MAE指標中,GD-ResNet在MAE和SAE指標上表現出了明顯的優勢。在MAE指標中,GD-ResNet在5種電器上的表現均優于其他算法。在SAE指標上,GD-ResNet在洗衣機、微波爐、洗碗機達到了最低,實現了總能量的準確分解。相比于G-ResNet,GD-ResNet在MAE指標上的表現均更好;GD-ResNet在冰箱、洗衣機、微波爐和洗碗機的SAE指標上都比G-ResNet低。

表1 WikiEnergy用戶負荷分解評價指標對比
結合圖6和表1可以看出,淺層的兩種CNN算法CNN s-s和CNN s-p較難準確地將總功率分解到使用頻率較低的電器功率中,相比KNN、DAE、GD-ResNet,淺層CNN的分解誤差較大。因為淺層CNN不能有效提取深層次的負荷特征,易造成梯度消失等問題,分解效果不如深度神經網絡。另外結合圖6和表1中G-ResNet和GD-ResNet的表現可以看出空洞卷積通過增大感受野,捕獲更多實驗數據,使得本文方法即使在使用頻率較低的電器上,其功率特征也能被捕捉到,提高了負荷分解的準確率。
結合圖6中KNN算法對微波爐功耗的分解效果能看出,KNN對微波爐功率分解效果較差,但從表1中KNN在微波爐MAE指標上可見KNN對這種電器的分解誤差較小,即 KNN對微波爐平均分解誤差較小,但KNN對微波爐整體分解效果不好,為了進一步分析類似情況,采用更細尺度的分解效果圖來闡述這種矛盾現象產生原因。圖7為各算法在各電器上更細尺度的分解對比圖,可以看出在所有算法中,GD-ResNet的擬合效果最好,針對以上矛盾現象,重點分析圖7(d)中KNN的表現,能看出KNN不能準確對功率突變的時刻點以及峰值點做精確分解,但對大部分功率消耗為0的區域,這種算法能達到非常精確的分解。結合圖6中微波爐的真實功耗數據,能看出該電器大部分時間點的功率消耗為0,而KNN對功耗為0區域具有較好分解性能,使這種算法能降低微波爐功率的平均誤差。同時從圖7中可以明顯看出G-ResNet對真實曲線的擬合程度比GD-ResNet差很多。

(a) 洗碗機的負荷分解對比圖
如表2所示,在Accuracy和F1指標中,GD-ResNet在各電器上的表現均達到最優。從Recall和Precision指標中可見,CNN s-s和CNN s-p對使用頻率較低的電器表現較差。結合圖6中CNN s-s、CNN s-p在洗衣機、微波爐、洗碗機的分解圖能看出這3種電器真實的電器消耗功率中,處于開狀態的比例明顯小于前兩種電器。在這樣的非平衡分布的數據中,根據CNN s-s和CNN s-p在召回率和精確度指標上的表現可以看出這兩種方法在開狀態的判別能力很差,在微波爐這個電器上,這兩種方法都不能有效預測到電器開關狀態,效果比較好的仍是本文方法,最準確地預測到電器開關狀態。另外,在Precision、Accuracy和F1指標中,GD-ResNet在各電器上的表現均比G-ResNet更優,空洞卷積能夠進一步提升網絡性能。

表2 WikiEnergy用戶電器啟停評價指標對比
針對目前深度學習算法在非侵入式負荷分解應用中存在的特征提取不充分、淺層網絡易出現梯度消失、較難有效學習長時序數據間的映射關系等問題,利用GD-ResNet進行非侵入式負載分解。實驗表明,在WikiEnergy這類數據分布不平衡的小數據集上,相比其他算法,GD-ResNet能更充分地提取深層次負荷特征,在MAE和SAE兩個指標中均取得最好的性能表現,在開關狀態判斷任務中,GD-ResNet在準確率指標和F1綜合指標上均達到最優,對使用頻率較低的電器,GD-ResNet能實現更準確的序列到序列的NILM。但是深度學習在NILM方面的應用還處在發展階段,實驗仍存在一些不足,有待進一步改進和深度研究。