吳釘捷,李曉露,陸一鳴
(1.上海電力大學 電氣工程學院,上海 200090; 2.國網上海能源互聯網研究院有限公司,上海 201203)
在泛在電力物聯網的背景下,非侵入式用電負荷感知是新一代智能電表應具有的重要功能,通過對用戶的用電總量進行精細化分解,可得到負荷成分和能耗占比,不僅能夠為用戶提供電器級別的用電詳情和建議,而且是電力公司開展營銷業務和電網運維的重要依托。利用面向邊緣終端設備的人工智能技術和云邊協同計算來實現本地化的數據分析和挖掘,可降低對集中式數據中心的依賴。
基于智能電能表的高頻和低頻采樣數據,可形成相應的負荷分解方法。高頻采樣能夠提供負荷投切的暫態特征,并以此辨識出電器的啟停次數[1]。文獻[2]將負荷的相似特征轉換為離散模糊數矩陣,根據矩陣質心評價值來辨識出最有可能的負荷投切。文獻[3]將負荷投切轉換為二分圖尋優匹配問題,提出基于改進匈牙利算法的多重匹配策略。高頻采樣對電能表的硬件要求較高,可用于對特定設備的監測,但不適用于居民負荷。
由于低頻穩態特征不具有明顯的辨識性,多數文獻會對電器運行狀態和時間的先驗信息進行聚類[4-5]和建立概率統計模型。文獻[6]對樣本電器的功率分布按工/休日進行聚類得到負荷特征,并利用遺傳算法來擬合采樣功率,得到最優的設備工作狀態序列和對應功率。文獻[7]根據歷史用電數據來提取電器運行的時間概率分布和電器組合超狀態,利用時間概率最大似然估計得到負荷分解結果。文獻[8]構建了負荷狀態和行為模板,并引入分時段狀態概率因子作為負荷新特征,通過多特征遺傳優化迭代實現負荷分解。然而,不同用戶的非同源數據可能具有不同的概率分布,使用K-means等非監督聚類算法可能效果不好[9]。
目前,有學者將深度學習應用于負荷分解中,并充分發揮其自動特征提取的優勢。文獻[10]利用降噪自編碼器進行負荷分解,取得了較好效果。文獻[11]將電器狀態進行組合編碼,利用自然語言處理領域的seq2seq模型將待分解的能量信號與狀態碼進行映射訓練,實現負荷分解。文獻[12]對不同電器分別構建seq2seq模型,將分解功率的值回歸問題轉換為求取分解功率值在各個離散整數功率值下概率的多分類問題。文獻[13]利用雙向門控循環網絡來挖掘負荷分解時間點與前多序列之間的時間關聯特征以及電器運行狀態與時間的潛在關系。
傳統集中式的模型訓練方法會增加數據中心的計算和通信壓力,并且無法保護用戶的數據隱私。為此,首先提出一種基于生成對抗網絡的負荷分解模型,通過輕量化生成網絡和判別網絡,使其能應用于邊緣終端設備。其次,提出了一種基于聯邦學習的網絡模型實施方案,以云邊協同的方式對模型進行訓練,并利用公開數據集進行了測試和驗證。
對于居民用戶,由智能電能表采集得到的總功率信號P(t)是n個不同類型家用電器功率信號的線性疊加,負荷分解可被視為一個“去噪”任務,即試圖從其他電器產生的背景噪聲中恢復某個特定電器的功率信號Pi(t),如式(1)所示:
(1)
式中Pj(t)為非指定電器功率信號之和;e(t)為電能表的測量誤差。
在圖像去噪領域,應用較廣的是卷積神經網絡,通過構建自編碼器[14]對原始圖像進行噪聲特征提取,進而生成干凈圖像。對于時間序列數據的處理,同樣可以使用一維卷積神經網絡[15],由于其具有平移不變性,在某個時段內學習到的特征可在其他時段中被識別。但卷積自編碼器屬于無監督學習,所生成的時間序列無法評判優劣,因此構建了基于生成對抗網絡[16]的負荷分解模型,如圖1所示。

圖1 基于生成對抗網絡的負荷分解模型
生成對抗網絡由生成網絡G和判別網絡D兩部分組成。生成網絡通過學習電器的功率分布特征,生成對應的分解序列。判別網絡對輸入樣本進行真假判別,區分真實數據和生成的數據。通過迭代訓練兩個網絡,使生成網絡生成的分解序列更加真實,而判別網絡的辨識能力相應增強,兩個網絡相互對抗,最終達到一個動態均衡,即生成的數據已足夠真實,判別網絡無法辨別真偽。
文中僅利用電表采集的有功功率數據,因此生成網絡的輸入為一個1×H1維的總負荷有功功率序列z,為了得到某個指定電器的功率分解序列,需要將該電器類別標簽作為額外的條件輸入,以指導數據生成過程。為了使標簽信息不被長序列數據掩蓋,通過詞嵌入層(Embeding)[17]將電器類別標簽轉換為稠密向量,并與總功率序列相乘,得到融合序列。如圖2所示,通過構建編碼器-解碼器結構來實現端到端的序列映射。

圖2 生成網絡的結構
編碼器網絡由多個一維卷積層(Conv)組成,對于每個卷積層l,有Kl個1×F×Kl-1的卷積核以步長Sl在輸入特征矩陣Xl-1上分別進行滑動卷積來學習不同的單一特征,例如一個1 kW的功率躍變,從而得到輸出特征矩陣Xl,并可計算該卷積層所需訓練的參數數量Mltrad和計算代價Cltrad,如式(2)所示:
(2)
Mltrad=F×Kl-1×Kl
(3)
(4)

目前智能電能表的低頻采樣頻率最高可達1 Hz,每天可采集上萬個點的總有功功率序列。對于長序列數據的處理,如果將其直接作為模型的輸入,則網絡結構會變得更為復雜,同時參數量劇增容易導致模型過擬合,故需要對輸入數據進行分段訓練。為了進一步減少網絡參數量,使模型能在嵌入式設備中應用,采用深度可分離卷積[18]替代部分傳統卷積。
深度可分離卷積層(Conv-dw)由深度卷積和點卷積組成,利用Kl-1個1×F×1的卷積核分別對輸入特征矩陣Xl-1的不同通道進行深度卷積,并在此基礎上利用Kl個1×1×Kl-1的卷積核進行點卷積,所得到的輸出特征矩陣Xl與傳統卷積的大小一致,但網絡參數Mldw和計算代價Cldw減少為傳統卷積的1/Kl-1/F倍,如下所示:
(5)
(6)
Mldw=F×Kl-1+Kl-1×Kl
(7)
Cldw=(F×Kl-1+Kl-1×Kl)×[(Hl-F)/Sl+1]
(8)

解碼器網絡同樣利用多個一維卷積層將提取的特征轉換為功率分解序列,為了使多維的特征矩陣逐步還原為初始序列的大小,需要在每個卷積層dl中增加上采樣(Up-Sampling)。例如,在將1×Hdl-1×Kdl-1的輸入矩陣變換為1×Hdl×Kdl的輸出矩陣時,需要先在輸入矩陣元素之間填充Pdl個0元素,并將其作為新的特征輸入,然后再通過Kl個1×F×Kdl-1的卷積核以步長Sl進行卷積操作。Pdl的計算公式如式(9)所示:
Pdl=[Sdl×(Hdl-1-1)+F-Hdl]/2
(9)
在生成網絡中的每個卷積層之后都會設置一個批標準化層(BN)和ReLU激活層。BN層通過對卷積層的輸出進行標準化來避免梯度消失問題,從而加快模型收斂,提高訓練速度。如式(10)所示,ReLU激活函數會使一部分輸出變為0,從而形成較好的網絡稀疏性,有助于緩解過擬合,并且可以防止有功功率分解時負值的產生。
ReLU(x)=max(0,x)
(10)
判別網絡的一個作用是對輸入的電器功率分解序列進行真假判斷,與生成網絡不同,電器標簽信息并不作為條件輸入,而是需要判別網絡額外輸出所屬的電器類型。增加輔助分類器Q可以檢驗判別網絡是否正確識別出電器類型,從而保證了辨別真偽的有效性。此外,訓練深度學習模型通常需要大量的帶標簽數據,而實際的用戶數據中往往缺乏可用的標簽信息,經過預訓練的生成對抗網絡可根據輔助分類器結果自己為數據添加標簽,進而生成本地數據集,提升本地模型的訓練效果。
從表1可以看出,判別網絡的結構與生成網絡中的編碼器相似,首先通過多個卷積層進行特征提取,然后通過全局平均池化(Global-AvgPooling)進一步對序列特征壓縮,最后利用兩個全連接層(Full Connect)分別構建二分類器和多類別分類器。二分類器用于輸出樣本的真偽,使用sigmoid函數進行激活。而多類別分類器采用softmax函數來輸出電器的標簽預測結果。

表1 生成對抗網絡的構建
生成網絡G和判別網絡D采用交替訓練的方式,首先保持生成網絡的參數固定,利用生成的不同類別電器的分解序列G(z)與真實分解序列x來訓練判別網絡的辨別真偽能力,同時對輔助分類器P(C=c|·)進行訓練,以識別電器類型。通過更新判別網絡的參數來最小化損失函數LD,如下式所示:
Lsrc=-Ex~Pdata[logD(x)]-Ez~Pz[log(1-D(G(z,c)))]
(11)
Lcls=Ex~Pdata[logP(C=c|x))]+Ez~Pz[logP(C=c|G(z,c))]
(12)
LD=Lsrc+Lcls
(13)
式中Pdata為真實序列樣本;Pz為生成序列樣本;c為電器類別標簽;Lsrc為辨別樣本真偽的損失函數;Lcls為輔助分類器的損失函數;E(·)為數學期望,例如Ex~Pdata[logD(x)]表示真實樣本判斷為真的期望。
然后保持判別網絡的參數不變,通過最小化生成的功率分解序列G(z,c)與真實分解序列x之間的L2距離來訓練生成網絡。由于判別網絡已具備一定的辨別真偽能力,可加入損失函數Lgan來指導生成更接近真實的序列樣本,如下式所示。
(14)
Lgan=Ez~Pz[log(D(G(z,c)))]+Ez~Pz[logP(C=c|G(z,c))]
(15)
LG=Ldis+λLgan
(16)
式中Ldis為基于L2范數的損失函數;LG為生成網絡的總損失函數;λ為判別網絡損失函數的權重,用于控制對生成網絡的監督反饋強度。
識別真假樣本通常比生成真實樣本更容易,因此可能會出現判別網絡的辨別能力太強而導致生成網絡無法繼續訓練。另一方面,如果判別網絡能力太差,不能分辨真假,會使生成網絡生成的樣本不穩定。因此,在每一輪的訓練過程中,辨別網絡和生成網絡的迭代次數之比通常為nd:1(nd≥3)。
傳統集中式的模型訓練方法需要將全部數據上傳到數據中心,這會造成巨大的計算壓力和傳輸開銷,并且由于不同用戶的數據通常是非獨立同分布的,使得統一模型不能深入挖掘某一特定用戶的數據特征。本節提出一種基于聯邦學習[19]的非侵入式負荷分解實施方案,通過將深度學習模型嵌入到智能電能表等邊緣節點,并與云計算中心協同完成模型的訓練,可實現本地化的數據采集、存儲和負荷分解,保證用戶信息安全和數據隱私。
聯邦學習算法的工作原理如圖3所示。假設有1個云計算中心和K個邊緣節點,云計算中心對一個全局的負荷分解模型L(w)進行預訓練,并將其參數w下發給邊緣節點,邊緣節點k(k∈K)利用本地數據和接收的參數來訓練本地模型,經過uk次迭代更新參數,并上傳給云計算中心,如式(17)所示。

圖3 基于聯邦學習的模型實施方案

(17)


(18)
式中nk為第k個邊緣節點的訓練樣本總量。
通過對全局模型的準確性進行評估來優化訓練過程,并將更新后的全局參數保存和下發,進行下一輪的協同訓練。當各邊緣節點的模型準確率達到要求標準后,即可停止訓練,并進行本地的負荷分解計算。
由上述訓練過程可以看出,云計算中心和邊緣節點之間只需進行模型參數交換,避免了數據丟失和泄露,但需要以犧牲計算量為代價來換取雙方較少的通信次數,故對邊緣節點設計了以下三個控制計算量的超參數。
(1)參加訓練的邊緣節點比例c:其取值范圍為c∈(0,1],通過隨機抽取c·K個邊緣節點參與新一輪訓練,可增加樣本多樣性,提高模型的收斂速度,并排除通信中斷的邊緣節點;
(2)樣本批處理量b:每次學習的樣本數量越多,則訓練速度越快;
(3)訓練次數e:每一輪本地模型的訓練次數越多,受全局模型的影響越小,更能反映本地特征。
其中,樣本批處理量b與訓練次數e的關系如式(19)所示:
b=e×nk/uk
(19)
式中uk為每輪訓練的迭代次數。
文中選取REDD數據集[20]進行模型訓練與測試,其中包含6戶美國家庭的用電數據,單個電器的有功功率采樣間隔為3 s。對于缺失數據的處理,可參照文獻[10],當出現大于2 min的間斷時,可視為電器關閉,對其中缺失數據進行補零,而小于2 min的間斷主要是由無線傳輸故障造成的,可使用線性插值法補全。
表2反映了各個家庭的數據采集情況,其電器類型和數據量差異較大,故選取常見的洗碗機、冰箱、電燈、洗衣烘干機和微波爐作為研究對象。為了構建各家庭的本地數據集,可提取某類電器每天的有功功率序列,并將剩余電器的功率序列作為噪聲數據,均以50%概率進行疊加,得到總功率序列。而全局模型的數據集由所有家庭的數據組合而成,兩者均以6:2:2的比例分為訓練、驗證和測試集。考慮到實際應用中歷史數據較少,因此將本地訓練集中60%的數據替換為由預訓練模型生成的樣本,并且隨著本地模型訓練準確度的提高,對生成的數據集進行更新。

表2 各家庭的數據采集情況
由于電表采樣間隔為3 s,設置模型的輸入序列長度為4 800,可跟蹤長達4 h的負荷變化。根據表1可計算出生成網絡的訓練參數為18 736個,辨別網絡的訓練參數為52 128個,而利用傳統卷積層構建的模型擁有454 064個參數,由此可見,經過輕量化的GAN模型更適用于邊緣嵌入式設備。
使用Tensorflow搭建生成對抗網絡模型進行預訓練,并引入早停機制,即當在驗證集上的誤差開始增加后停止訓練,可避免繼續訓練導致過擬合。
圖4展示了生成網絡和判別網絡在預訓練過程中損失函數值的變化,所呈現的大幅震蕩為兩者對抗訓練的結果。判別網絡在初期的辨別能力較弱,隨著訓練次數的增加,損失函數的值逐漸減小。由于判別網絡的參數更新次數相對較多,在與生成網絡的對抗過程中保持了一定優勢,對生成樣本的質量要求更高,使得生成網絡的損失函數值有所上升。

圖4 生成對抗網絡的損失函數值變化
將全局模型的預訓練參數下發給各家庭的本地模型,并基于Tensorflow-Federated框架進行聯邦學習,設置協同訓練50次,每輪的訓練參數為c=1,b=6和e=5,并且計算各本地模型在每輪協同訓練后對本地測試集的準確率Acc,如式(20)所示:
(20)
式中TP和TN分別表示電器實際處于工作狀態,模型分解結果為工作和非工作狀態的序列點總數;FP和FN分別表示電器實際處于非工作狀態,模型分解結果為工作和非工作狀態的序列點總數。
圖5中曲線最左端的初始值代表了預訓練模型對于各家庭的負荷分解效果,且并沒有達到全局模型的基準準確率,而在經過10輪聯邦學習后,部分本地模型的準確率超過了全局模型,這說明本地模型能夠在全局模型的基礎上更好地挖掘單個家庭的用電特征。此外,由于在第3輪訓練后,各本地模型的準確率都有一定的提升,利用模型的自監督標記能力對訓練集進行更新,使得之后的準確率有所降低,但隨著對新數據的深入學習,最終模型的準確率超過了以往水平。

圖5 聯邦學習的測試準確率
以家庭1的電器為例,將基于組合優化算法(CO)[6]、因子隱馬爾科夫模型(FHMM)[20]和文中提出的生成對抗網絡模型(GAN)的負荷分解結果進行對比。圖6和圖7分別展示了洗碗機和洗衣烘干機的負荷分解結果,其都屬于多狀態電器,并且工作時間較長。由于CO和FHMM通過負荷特征聚類,所能表示的功率特征有限,從而形成了矩形線形,而GAN生成的分解序列具有較好的趨勢跟蹤效果,能夠反映電器功率波動,且曲線相似度較高。

圖6 洗碗機的負荷分解結果

圖7 洗衣烘干機的負荷分解結果
如圖8和圖9所示,冰箱和電燈都屬于長時間跨度的電器,但不同的是冰箱為間隔性啟動,而電燈多在晚間連續運行。對于冰箱,CO識別啟動間隔的能力較差,FHMM會忽略出現最高功率值的時刻,而這些反復出現的負荷特征是GAN最容易學習到的,因此生成的分解序列較為真實。由于電燈的功耗較低,容易被其他大功率電器掩蓋,對于其辨識和定位較為困難,CO與FHMM均出現了較大偏差。

圖8 冰箱的負荷分解結果

圖9 電燈的負荷分解結果
從圖10可以看出,微波爐的使用多集中在三餐時間,并且運行時間較短,使用頻率較高。由于其功率值較大,具有良好的辨識性,三種方法均能成功識別,但對于功率值的估計,GAN最接近真實值。

圖10 微波爐的負荷分解結果
為了全面評價模型的負荷分解效果,將輕量化的GAN與基于傳統卷積層構建的Trad-GAN以及CO和FHMM進行比較,分別對每戶家庭7天的負荷數據進行測試,選取功率分解準確率AP作為評價指標,如式(21)所示:
(21)

表3展示了各模型的負荷分解準確率,CO與FHMM在不同家庭的分解結果中各有優劣,并且對家庭4和家庭6的負荷分解效果較好。GAN和Trad-GAN的功率分解準確率都超過了前兩種模型,雖然Trad-GAN的準確率保持領先,但考慮到訓練成本和模型部署難度,輕量化的GAN犧牲了較少的準確率而大幅減少運算量,使之完全可以取代Trad-GAN,具有更大的應用前景。

表3 各模型的負荷分解準確率
文中提出了一種基于生成對抗網絡的負荷分解模型,利用生成網絡和判別網絡之間的相互對抗,使生成的功率分解序列更為真實,并且提出了一種基于聯邦學習的網絡模型實施方案。基于REDD數據集的測試結果表明,以云邊協同方式訓練的本地模型能夠更好地挖掘家庭用電特征,取得了較高的負荷分解準確率。將GAN模型與不同方法進行比較,所得到的電器功率分解序列具有較好的趨勢跟蹤效果,并且能更好辨識和定位小功率電器。
下一步的工作是研究將聯邦學習應用于多層通信網絡,以實現更大范圍的智能電能表等終端設備的協同訓練,進而滿足大規模的家庭非侵入式負荷分解需求。