徐瑞琪, 劉丹丹
(上海電力大學電子與信息工程學院, 上海 201306)
能源是社會發展的基本動力,電能具有清潔、干凈等優點,應用廣泛,極大地促進了生產的發展[1]。但隨著中國城市化的發展和人民生活水平的提高,城鄉居民的用電量日益增長。為了加快實現“碳達峰”和“碳中和”的目標[2],必須引導用戶合理高效地使用電能,完善用電信息采集系統與智能用電系統[3-4]。
非侵入式負載監測(non-intrusive load monitoring,NILM)是一種根據家庭的總能耗來估計單個家用電器能耗的技術[5]。NILM不需要為每個電器安裝專用傳感器,從而避免了電氣系統的復雜性和相關成本[6]。通過負荷監測獲取的設備信息可以及時得到反饋,有助于引導用戶合理用電,從而實現節能降耗,節省電費開支,具有重要的意義[7]。
目前,NILM算法主要有基于數學優化、基于傳統機器學習方法和基于深度學習方法三大類。對于數學優化的方法,其目的是尋找最有可能構成總負荷的電氣設備狀態組合,進而對負荷實施分解。如文獻[8]提出了一種基于遺傳優化的負荷辨識算法,通過遺傳算法對有功功率及電流有效值的不同疊加組合值尋找最優解,最終確定電器運行狀態。但數學優化這類方法求解的效率比較低,而且與未知總功率匹配需要具備完整的負荷特征庫,現實中很難實現。而傳統的機器學習方法在負荷分解中的應用方法有人工神經網絡(artificial neural network,ANN)、K-近鄰(K-nearest neighbor,KNN)、支持向量機(support vector machine,SVM)等[9-11]。雖然這些方法相比數學優化法有一定的提升,但是研究的負荷種類較少,處理的場景也較簡單,大多為單一的負荷狀態,在復雜場景下的效果并不理想[6]。
近年來隨著深度學習的興起,研究人員使用自然語言處理、計算機視覺和語音識別等領域較新的技術來解決NILM問題。文獻[12]最早將深度學習應用于NILM,論文使用三種不同類型的新穎架構,即長短時記憶網絡(long short-term memory,LSTM)和去噪自動編碼器(denoising autoencoders,DAE),以及用于回歸開始/結束時間和功率的網絡。經過在UK-DALE[13]數據集上進行實驗,這些模型的性能優于組合優化算法。但因為是首次應用,總體上模型相對較為簡單,整體效果一般。文獻[14]使用卷積神經網絡(convolutional neural network,CNN)實現了一種稱為序列到點(sequence-to-point,seq2point)的體系結構,以總功率序列的滑窗段作為模型輸入,使用卷積神經網絡搭建模型進行訓練,最終輸出是目標電器設備功率的單個點,實驗表明所提出的模型優于文獻[12]。
隨后,隨著注意力機制的提出,該技術也被廣泛應用于NILM。文獻[15]提出一種引入注意力機制的序列到序列(sequence-to-sequence,seq2seq)[16]的分解模型。該方法利用詞嵌入將輸入功率映射至更高維度的向量,然后利用設計的LSTM編碼器進行特征提取,最后用引入了注意力機制的解碼器完成負荷分解。顯著提升了模型對負荷特征的提取與利用能力。文獻[17]利用序列到點方法,通過使用卷積塊注意力模塊,引入空間和通道 Attention 機制提取負荷特征,最終實驗表明在減少訓練時間的前提下,顯著提升了分解準確率。
文獻[18]提出了一種注意力負荷分解模型(load disaggregation with attention,LDwA),該網絡將回歸子網絡與分類子網絡相結合,以解決NILM問題。具體來說,回歸子網絡用于推斷初始功耗,在回歸子網絡中引入了Bi_LSTM和注意力機制來提高整體體系結構的泛化能力;而分類子網絡則專注于設備狀態(開/關)的二進制分類,通過將回歸子網絡輸出與開關狀態分類子網絡輸出相乘,得到目標設備功耗的預測值。實驗表明,LDwA與前面所提方法相比,進一步提高了負荷分解性能。
然而隨著網絡加深,易出現梯度爆炸以及網絡退化等問題,文獻[19]提出了一種雙向擴張殘差網絡用于序列到點的負荷分解。與標準卷積和擴張卷積相比,雙向擴張卷積擴大了感受野,能夠提取到復雜的特征,同時引入殘差塊來解決梯度爆炸問題。最終實驗結果表明,該方法在所有設備中的性能優于文獻[14]提出的方法。文獻[20]提出了使用感受野更靈活的時間卷積網絡來訓練負荷分解模型,并將傳統的激活函數RELU替換為激活函數GELU,實驗表明時間卷積網絡模型在降低模型參數的同時,大幅提高了負荷分解的性能指標。文獻[21]提出了一種基于變分自動編碼器(variational autoencoders,VAE)框架的負荷分解的方法,VAE的正則化潛在空間能夠對目標設備功率信號所必需的相關特征進行編碼。使用實例批量歸一化網絡來增強從總功率中提取的特征。最終實驗表明所提出的方法在難分解的多狀態電器上表現出了良好的分解性能。
深度學習模型眾多,以上方法雖然在一定程度上提高了負荷分解精度,但在深層負荷特征提取方面仍不充分,且模型的參數眾多,訓練成本較大,分解性能仍需進一步提升。為此現提出一種多尺度特征融合模型(multi-scale feature fusion,MSFF),模型借鑒LDwA中兩個子網絡合并訓練的架構,在兩個子網絡內部引入金字塔池化(pyramid pooling module,PPM)[22]模塊,解決深層特征提取不充分以及模型參數量大的問題,另外在特征映射部分加入多頭自注意力機制(multi-head self-attention mechanism,MHSA)[23],從多個維度實現對重要特征的篩選,以提高負荷分解以及狀態識別的能力。
NILM旨在根據總功率信號預測單個目標設備的功耗。假設一個家庭有M個電器,總功率信號的時間序列長度為T。那么總功率信號可以用這M個電器的分功率信號和噪聲的總和來表示。表達式為
(1)
式(1)中:X(t)為M個電器設備在t時刻功率總和;ym(t)為電器m在時間t的消耗;ε(t)為噪聲。
NILM問題可以被視為回歸問題,將總功率信號作為輸入,來預測每個t時刻目標電器設備的功率輸出。負荷分解流程圖如圖1所示。

圖1 負荷分解流程圖Fig.1 Load decomposition flow chart

(2)

c為在通道維度進行拼接;linear為線性激活函數;sigmoid為非線性激活函數
(3)
兩個子網絡內部結構都是由特征提取、多尺度特征融合和特征映射三部分組成。首先將家庭總功率序列輸入由一維卷積(one dimensional convolution,Conv1D)、批量歸一化(batch normalization,BN)[24]等網絡層組成的特征提取網絡進行特征初步提取,接著將提取出的特征經過金字塔池化模塊,生成多個不同尺度的特征圖,每個特征圖包含了不同角度的深層負荷特征信息,將該信息與特征提取部分的輸出進行特征融合,最后再通過特征映射網絡輸出。不同的是,回歸子網絡輸出層激活函數為linear,而負荷識別子網絡輸出層激活函數為sigmoid。
特征提取部分由4個一維卷積塊和最大池化層(MaxPooling1D)組成。每個卷積塊包含一維卷積(Conv1D)、激活函數RELU、BN層以及Dropout 4個模塊,如圖3所示。除了第4個卷積塊外每個卷積塊后面添加一個最大池化層。

圖3 卷積塊內部結構Fig.3 Internal structure of convolution block
卷積神經網絡具有卷積核參數共享、稀疏連接的優點,因此減少了模型的訓練參數總量,具有正則化效果,使網絡結構的穩定性和泛化能力得到提升,有利于神經網絡的快速學習和在計算時減少內存開銷。通過它可以很好地捕獲出負荷特征圖的局部簡單特征,隨著層數的增加,產生的特征映射會捕獲輸入總功率信號越來越多復雜的屬性。激活函數RELU將特征映射到高維的非線性區間進行解釋,解決線性模型不能解決的問題。
批量歸一化緩解了網絡內部協變量偏移問題,同時降低了梯度對參數的依賴以及梯度發散的概率。BN層通過優化的方法,改變方差大小和均值位置,使得新的分布更符合數據的真實分布,讓更多相關的特征映射到潛在空間,增加了學習特征的判別能力和模型的非線性表達能力。批量歸一化的引入有效解決了梯度消失問題,加快收斂速度,使得訓練深層網絡模型更加容易和穩定。
文中模型特征提取部分各卷積塊中卷積核的個數依次分別為32、64、128和256,經過特征提取部分后,輸入尺寸大小由480降為60,特征通道數由1增加到了256。
CNN網絡中的幾乎每個參數都可能影響最終產生的特征圖。固定架構的網絡通常會學習到特定尺度的特征,并具有一定的尺度不變性。同時,這些參數通常與當前任務密切相關,難以輕易修改,從而使模型難以學習到多尺度信息。
使用多尺度網絡結構是克服該問題的一種方法。多尺度是指不同尺度的信號采樣,在不同尺度下可以觀察到不同的特征。這種網絡結構考慮學習不同尺度的特征,然后將不同尺度的特征信息進行融合,這樣利用多種不同感受野上的特征之間的互補性,融合了特征之間的優點,進而提高了模型的性能。
多尺度特征融合網絡常見的有串行網絡以及并行多分支網絡兩種結構。串行方法多數利用跳層連接(skip-connection)操作進行特征融合。而并行多分支方法有使用不同大小的卷積核、空洞卷積以及不同大小的池化等操作。文中特征融合部分采用并行多分支結構。并行的結構與串行相比,并行多分支能夠在同一層級獲取不同感受野的特征,經過融合后傳遞到下一層,可以更加靈活地平衡計算量和模型能力。并行結構示意圖如圖4所示。

圖4 并行結構示意圖Fig.4 Parallel structure diagram
文中模型的金字塔池化模塊由4個池化塊構成,合并了4種不同尺度下的負荷特征,如圖5所示,每個池化塊由平均池化層(AveragePooling1D)、一維卷積、激活函數RELU、BN層、上采樣層(Upsampling1D)以及Dropout組成,如圖6所示。特征提取部分產生的輸出經過不同池化塊中的平均池化層轉變為不同大小的負荷特征圖,感受野大的池化操作獲取總功率全局信息,感受野小的池化操作獲取總功率局部信息,最終特征通道數保持不變。再經過卷積核大小為64,步長為1的一維卷積和上采樣將這不同大小的特征圖轉變為4個尺寸大小都相同的特征圖。最后將這4個特征圖和特征提取部分的輸出在通道維度進行拼接,將局部和全局信息融合到一起,得到最終的負荷特征圖,此時所得到的特征總量增加了1倍。

c為在通道維度進行拼接

圖6 池化塊結構Fig.6 Pool block structure
特征映射模塊由多頭自注意力機制(multi-head self-attention mechanism,MHSA)、一維轉置卷積(Conv1DTranspose)和一個一維卷積層(Conv1D)構成。經過特征融合部分后負荷特征信息增加了一倍,但并非所有的特征在識別目標設備激活都有用,所以引入多頭自注意力機制,每個注意力關注負荷特征的不同部分,然后平行地計算注意力輸出,將多個注意力輸出再進行拼接,實現對重要負荷特征的篩選,提高負荷分解性能。
2.3.1 自注意力機制
注意機制的核心思想是計算和分配注意力的權重,突出序列中的重要信息,而不是集中在序列的全部信息。
為了實現注意力機制,輸入的序列元素被看作
自注意力機制是Vaswani在Transformer模型中提出的[23],是注意力機制的變體。相對于注意力機制,它更關注輸入內部之間的聯系,對外部信息的依賴性大大減少。其中Q、K和V來自同一個數據源,Q、K和V分別表示查詢(Query)、鍵(Key)和值(Value),即Q、K和V由同一個矩陣通過不同的線性變換而來,如圖7所示。通過Q和每個K計算得到相應的注意力權重,權重越大越聚焦于其對應的Value值上,然后再作用于V得到整個權重和輸出。計算過程為

xm為輸入的序列;Qm、Km和Vm為輸入序列xm進行線性變換得到;am為注意力權重,表示輸入序列的內部依賴關系;Cm為上下文向量,表示自注意力機制的輸出

(4)

2.3.2 自注意力機制
當給定相同的Query、Key和Value的集合時,希望模型可以基于相同的注意力機制學習到不同的行為,然后將不同的行為作為知識組合起來,捕獲序列內各種范圍的依賴關系。為此,引入多頭自注意力機制,原理如圖8所示。

圖8 多頭自注意力機制Fig.8 Multi-head self-attention mechanism
多頭的本質是多個獨立的attention計算,每個注意力關注輸入信息的不同部分。首先將Query,Key和Value線性投影h次,然后在Query、Key和Value的每個投影上,并行執行注意功能,最終將這h個注意力的輸出拼接在一起,作為一個集成的作用。最后再通過另一個可學習的線性投影進行變換,產生最終輸出。計算過程為
MultiHead(Q,K,V)=Concat(head1,head2,…,headh)WO
(5)
(6)

通過多頭自注意力機制對負荷特征的篩選,輸出的特征尺寸大小與輸入前保持不變,都為60。轉置卷積作用為上采樣,具有可學習的參數,可通過網絡學習來獲取最優的上采樣方式,通過它將負荷特征圖的尺寸恢復到原始輸入尺寸大小。文中一維轉置卷積的卷積核為32,步長為8,來自多頭自注意力的輸出特征圖經過轉置卷積將通道大小降為32,特征圖的尺寸大小由60變為原始輸入的大小480。最終再通過一個卷積核大小為1、步長為1的一維卷積得到最終的預測輸出。
在訓練過程中,損失函數不是單一的,而是最終總網絡損失Lout和分類子網絡Lclass之和。Lout用均方誤差(mean square error,MSE)表示,代表網絡預測功率值與單個目標設備的實際功率值之間的均方誤差。而Lclass用二元交叉熵損失(binary cross entropy loss,BCE)表示,代表分類子網絡的開關狀態的分類誤差。最終模型的損失函數用L表示,為MSE和BCE之和。表達式為
L=Lout+Lclass
(7)
選取英國在2015年發布的數據集UK-DALE進行訓練和測試。此數據集包含2013—2015年英國的5個家庭的用電數據,分別包含了54、20、5、6和26個子計量設備。每個家庭中總功率的采樣周期為1 s,各電器設備功率的采樣周期為6 s。在電器選擇上選擇以下設備進行負荷分解:冰箱,洗衣機,水壺和洗碗機。冰箱屬于長時間運行的電器,具有周期性特點。洗衣機和洗碗機屬于多狀態電器,具有復雜特征。水壺運行時間短,只有開關兩種狀態,屬于大功率電器。這些電器有不同的特性,相對來說比較全面,具有代表性。
預處理包括了數據缺失值處理以及歸一化處理。首先利用NILMTK工具包[25]對原始數據進行格式轉換,由于總功率和各電器功率的采樣周期不同,所以需要對總功率以及各電器功率進行6 s重采樣。而對于部分長時間段內可能存在數據缺失的數據段,進行刪除處理。為了提升模型的性能,需要有充足的訓練樣本。因此本文研究采用滑動窗口的方法進行樣本擴充,長為480的滑動窗口在原始數據上進行滑動,滑動步長為1。在所需的樣本序列數據生成后,由于不同設備的功率幅度差異很大,所以需對總功率數據進行標準化處理,對各電氣設備功率數據進行最大最小值歸一化處理。標準化與歸一化公式為
(8)
(9)
式中:x為原始數據;x′為標準化或歸一化后的數據;μ為平均值;σ為標準差;xmax為最大值;xmin為最小值。
本次實驗的硬件環境為11th Gen Intel(R) Core(TM) i7-11700 @ 2.50 GHz處理器,32.0 GB內存和NVIDIA GeForce RTX 3060顯卡。軟件平臺為WINDOWS 10專業版操作系統,Python 3.6.13(64位)及TensorFlow 2.4.0深度學習框架。在此基礎上,利用GPU進行加速訓練,節省訓練時間。
在模型訓練中,每個分解模型設定的訓練迭代次數為50次,每次送入的數據批量大小為512。為了防止訓練過擬合,在訓練過程中優化器的選擇上選用Adam優化器進行模型的參數優化,初始學習率為0.001。除此以外,為了防止模型過擬合,在訓練過程中還加入了早停機制(early-stopping),若驗證損失沒有降低,則停止訓練,并保存訓練過程中的最佳參數值。
為了與不同的模型之間進行性能對比和評估,使用了6個評價指標:平均絕對誤差(mean absolute error,MAE)、均方根誤差(root mean square error,RMSE)、標準化分解誤差(normalized disaggregation error,NDE)、F1分數(F1score,F1)、召回率(recall rate,RE)以及精確率(precision rate,PR)。MAE的值反映了通過模型計算出的預測值與真實值之間的誤差。RMSE與MAE相似,對于異常值比較敏感。NDE則表示分解的誤差占總能量的比例。F1、RE、PR三個指標的目的是評估模型檢測設備開關狀態的能力,分數越高,說明模型分類性能更好,其值域為[0,1]。MAE、RMSE、NDE三個指標值越小,代表分解效果比較好,預測的功率曲線和真實曲線越接近。
(10)
(11)
(12)
(13)
(14)
(15)
式中:x′t和xt分別為在t時刻電氣設備的預測功率值和真實功率值;T為輸入功率序列的長度;TP為時間序列中正確識別設備正在運行的時刻數;FP為設備實際處于關閉狀態但分解結果為開啟狀態的時刻數;FN為設備處于開啟狀態但被識別為關閉狀態的情況。
為了驗證文中模型的優越性能,選擇與Bi-LSTM[12]、DAE[12]、Seq2point[14]、LDwA[18]進行了對比,實驗中模型均按照原文獻提出的架構進行搭建。首先驗證了訓練集和測試集來自同一房間的效果,實驗中選取家庭1中3個月的數據作為訓練數據,選取一個月的數據作為測試數據,訓練數據和測試數據不重合,取自不同時間段。經過預處理之后,利用滑動窗口的方法進行樣本的擴充,生成所需的訓練樣本和測試樣本。經過訓練后,各模型的負荷分解性能指標如表1所示,狀態識別結果如表2所示,結果保留后兩位。另外文中對4個電器的局部分解結果進行可視化,結果如圖9所示。

表1 同一房間負荷分解指標對比Table 1 Comparison of load decomposition indicators in the same room

表2 同一房間狀態識別指標對比Table 2 Comparison of status recognition indicators in the same room

P為用電器的功率
從表1中可知,MSFF模型在大部分評價指標上均優于其他模型,表現出了良好的性能。究其原因,Bi-LSTM、DAE、Seq2point這些通用方法不能有效提取深層次的負荷特征,易造成梯度消失等問題,分解效果較差,分解精度遠遠低于MSFF模型。而與使用復雜組合網絡的LDwA模型相比,MSFF模型仍能表現出良好的性能。首先在目標設備負荷分解方面,MSFF在所有電器的MAE、RMSE、NDE三個分解性能指標上均優于其他模型。如與LDwA相比,在所有電器上MAE平均減小了50%,RMSE平均減小了35%,NDE平均減小了31%。另外從分解曲線圖中也可以明顯地看到,MSFF模型的負荷分解曲線與目標電器的真實值吻合度最好,與其他模型相比準確地預測了設備的功耗變化趨勢。
其次,在開關狀態識別方面,MSFF在所有電器的F1均優于其他對比模型,與LDwA相比,F1平均提升了27%,表現出了良好的電器開關識別能力。在召回率上,除了洗衣機之外,MSFF在其余三個電器上的表現均為最優。在洗衣機的召回率上LDwA雖為最好,但MSFF與其相比僅差1%,所以整體分析來看,本文提出的MSFF綜合性能優于其他模型。
為了驗證注意力機制的引入對負荷分解結果的影響,進行了消融對比試驗。去掉多頭自注意力機制后的模型用N-MHSA表示,實驗對N-MHSA和MSFF兩者就MAE和F1進行了比較,結果如表3所示。

表3 消融實驗結果對比Table 3 Comparison of ablation experiment results
從消融結果可以看出,相比于N-MHSA,多頭注意力機制的引入使得負荷分解的誤差以及開關狀態識別都有明顯的改善。冰箱的MAE降低了31%,洗衣機和水壺的MAE均降低了20%,洗碗機的MAE降低了16%。F1也有相應的提高,冰箱和洗碗機增加幅度最明顯,分別為18%和19%。除此以外,加入多頭自注意力只另模型的參數有小幅度增加,但分解誤差有明顯的降低。由此可見,多頭自注意力機制的引入,使模型能夠完成對重要負荷特征的篩選,進而提升模型的負荷分解性能。
為了驗證模型的泛化能力,進行了跨家庭實驗,訓練數據和前一實驗相同,都采用家庭1中3個月的數據作為訓練數據,而測試集選取家庭2中的1個月數據進行測試,最終結果如表4和表5所示。

表4 跨家庭負荷分解指標對比Table 4 Comparison of cross-household load decomposition metrics

表5 跨家庭狀態識別指標對比Table 5 Comparison of cross-household state recognition metrics
對比發現,MSFF無論是在分解性能還是運行狀態識別上,均為最優。在所有電器上,與LDwA相比,MAE平均降低了14%,RMSE平均降低了6%,NDE平均降低了6%,F1平均提升了23%。對于洗碗機,由于兩個家庭的洗碗機之間的特征相差較大,模型的表現效果不太理想。這個現象表明,MSFF在識別電器的特征方面非常準確,能夠有效地區分相似但不同的特征,從而不會將它們誤認為是同一種設備。
為了進一步驗證模型在其他數據集上的分解效果,選擇REDD數據集[26]對模型的泛化能力進行進一步驗證。實驗選取了REDD中的冰箱、洗碗機和微波爐3種電器,結果對比如表6和表7所示。

表6 REDD數據集負荷分解結果對比Table 6 Comparison of load disaggregationresults on the REDD dataset

表7 REDD數據集狀態識別結果對比
從表6和表7可看出,在MAE、RMSE和NDE 3個分解指標上,MSFF模型在3個電器上誤差均為最小。在電器開關狀態識別能力上,MSFF模型在F1均優于其余模型,有較好的電器運行狀態識別能力。綜合來看,文中所提的模型與其他模型相比在不同的數據集上依然有較好的泛化性能。
深度學習在訓練過程中,不同的模型復雜度不同,模型在保證性能的同時復雜度應盡量最小,減少計算資源的消耗,提高運行效率。因此本文研究中對模型的訓練時間以及模型參數進行了對比,結果如表8所示。

表8 模型復雜度對比Table 8 Comparison of model complexity
從表8可以看出,雖然前三者每個epoch所耗時相對較少,但淺層網絡的分解精度不能滿足要求,在分解能力上以及開關狀態識別上與后三者相比大幅度降低。而MSFF與N-MHSA參數量與LDwA相比均有大幅度減少,MSFF與LDwA相比減少了75%,平均耗時與LDwA相比也有明顯下降。因此綜合復雜度和分解能力來看,MSFF模型性能比較好,能夠同時滿足分解準確度和計算量的要求。
針對負荷分解模型的深層負荷特征提取不充分、分解精度低以及訓練成本高等問題,提出了一種多尺度特征融合模型,并進行了分析和實驗驗證,得出如下結論。
(1)融合部分采用金字塔池化模塊從多個維度精確提取深層負荷特征,該結構在保證分解準確性的同時還大大減少了網絡參數,降低了訓練成本。
(2)網絡中引入多頭自注意力機制從多個角度實現對重要負荷特征的篩選,進一步提高分解性能。經過多個實驗表明,本文所提模型與其他模型相比,無論是在負荷分解還是電器開關狀態識別方面,有較好的優越性。
(3)未來還需對網絡進行優化,進一步提升模型在復雜電器上的泛化性能。且目前NILM主要針對一些標準的用電設備進行負荷分解,如冰箱、電視機、洗衣機等。但是一些非標準的設備,如充電器、電動工具等的負荷分解仍然是一個難題。未來的研究可以探索更多樣化的數據源和建模方法,以支持更廣泛的設備類型。