蘇海軍,侯坤福,高敬更,王 琨,王治國
(1.國網甘肅省電力公司營銷服務中心,甘肅 蘭州 730300 ;2.蘭州理工大學電氣工程與信息工程學院,甘肅 蘭州 730050)
非侵入式負荷分解(Nonintrusive Load Monitoring,NILM) 是指通過安裝智能電表獲得居民一段時間內的總用電信息,然后在算法層面推算出該用戶各用電器的用電情況[1],通常獲得的設備用電信息用于用戶制定較為經濟的用電計劃[2]以及電力服務商需求側精細化管理配置[3]。
現有的非侵入式負荷分解問題研究集中于負荷分解精度的提高,代表性的研究包括利用隱馬爾可夫模型、深度學習的方式進行非侵入式負荷分解。其中因子隱馬爾可夫模型[4]在一定程度上改善了負荷分解精度,但較為復雜的用電情況下,模型的分解精度會下降。此外,伴隨著人工智能發展的浪潮,利用深度神經網絡進行負荷分解的方式也逐漸被研究者重視起來,此類方法的優勢在于不需要進行其他方法所必須要完成的特征提取工作,同時這類方法也表現出了較好的效果,代表的研究如2014 年Jack 所提出的利用循環神經網絡和降噪自編碼器的seq2seq 方法[5]以及2018 年Zhong 所提出的基于卷積神經網絡的seq2point 方法[6],都表現出了良好的負荷分解效果。
基于神經網絡的負荷分解方法需要大量的先驗數據對網絡進行訓練,通過大量先驗數據訓練的模型往往只能在某地區某家庭某種設備上表現出良好的效果,一旦將訓練好的模型用于非訓練數據下的設備時,模型的負荷分解精度迅速下降,極大的影響著非侵入式技術的大規模部署。因此如何提高模型的泛化能力,以此期望對任意家庭設備進行負荷分解達到最佳效果,是亟待解決的一個重要問題。
本文針對非侵入式負荷分解提出一種域適應學習神經網絡模型(Domain Adaptation Neural Network,DANN)。與以往的普通神經網絡模型不同,該模型將混合基準家庭數據(源域,有標簽)和目標家庭數據(目標域,無標簽)進行網絡訓練,極大的改善了模型的泛化能力,在目標域家庭中取得了較好的分解效果。同時在實驗中進行了論證,對于運行特征較為簡單的設備有著較高的分解精度,對于較為復雜的運行特征的設備,本文所提方法也表現出了較大的研究潛力。
負荷分解的任務是利用入戶智能電表信息恢復單個設備的功率信息。通常情況下,通過智能電表可以獲得用戶一段時間內總的用電信息,如有功功率,視在功率。設住戶某段時間T 內的用電功率信息為:

n 種用電設備,單個設備用電信息為:

非侵入式負荷分解方法在算法層面構建分解模型,從主表功率序列Y 中恢復出用電設備功率序列Xe,目前該問題主要的研究集中于提高負荷分解的精度,本文將在前人的研究基礎上重點關注模型的泛化性能研究。
目前各類國家之間關于非侵入式負荷分解問題的研究進度并不一致,關于數據集的制作,國外已經領先國內許多,國內還沒有一個用于非侵入式負荷分解任務的標準數據集,所以存在跨地區的非侵入式負荷分解任務需求,但隨著國內研究的推進,針對我國的居民用戶用電行為研究加速,必然會發布用于我國本地的非侵入式負荷分解數據集,針對跨地域的設備負荷分解存在一定的實際意義。
相較于跨地區間的負荷分解任務而言,同地區不同家庭之間的同種設備或者不同設備的負荷分解任務更具有實際意義,首先,目前已經存在一定數量的用于非侵入式負荷分解任務的數據集,存在的實際問題是,利用同一個家庭的不同時間段設備運行作為訓練數據和測試數據,以此在同一用戶家庭中完成負荷分解,可以取得較高的負荷分解精度,但是一旦利用A 家庭的訓練數據對模型展開訓練,利用B 家庭去驗證,負荷分解精度會立馬大幅下降,模型的泛化性能備受考驗,然而在未來實際應用當中,數據集一旦定制完成,將會是一個標準的用戶用電數據,但是數據集所包含的用戶畢竟是有限的,居民的用電行為及家用電器型號卻是千差萬別,利用標準數據集訓練得到的模型不能完全匹配每個家庭的用電特征。
因此,本文提出模型域自適應學習,對于每一個家庭都會在基準的負荷分解模型上做一定量的域自適應訓練,這樣就可以利用標準數據集展開個性化的模型訓練,以少量的數據集訓練各類用戶負荷分解模型,以此提高模型的泛化能力,助力非侵入式負荷分解的實際推廣。
深度學習的模型訓練往往需要大量的帶標簽數據,這類訓練所得模型在指定任務中能夠取得較好的成績,但是更多任務是無標簽數據的,或者說大量的標簽工作需要繁雜的標定工作,這極大的阻礙著該研究領域的發展[7]。
近年來,出現了一種新的深度學習模式:遷移學習。遷移學習是運用已存有的知識對不同但相關領域問題進行求解的一種新的機器學習方法。它放寬了傳統機器學習中的兩個基本假設:用于學習的訓練樣本與新的測試樣本滿足獨立同分布的條件;必須有足夠可利用的訓練樣本才能學習得到一個好的分類模型。而最終的目的則是遷移已有的知識來解決目標領域中僅有少量標簽樣本數據甚至沒有標簽的學習問題[8]。目前遷移學習的研究已經在文本分類[9]、情感分類[10]、圖像分類[11]等相關領域展開。
域適應(Domain Adaption)是遷移學習中一個重要的分支,目的是把具有不同分布的源域(Source Domain)和目標域(Target Domain)中的數據,映射到同一個特征空間,尋找某一種度量準則,使其在這個空間上的“距離”盡可能近。然后,在源域(帶標簽)上訓練好的分類器或者預測器,可以直接用于目標域數據的分類或預測。
本文利用域自適應學習,遷移數據集中已訓練好的模型,用于未知數據標簽的設備負荷分解。數據來源仍然是公開的數據集,在處理時,將一部分數據處理為有標簽數據,一部分數據被處理為無標簽數據,根據不同任務要求完成數據構造。圖1 展示利用DANN 網絡的非侵入式負荷分解過程。

圖1 基于DANN 域適應學習的非侵入式負荷分解流程圖
假設存在兩個分布S(x,y)和T(x,y),將其稱為源分布和目標分布,其中源分布數據有完整的數據標簽,目標分布無數據標簽,兩種分布都是復雜且未知的,這兩種分布相似卻又存在差別,如何求同存異,利用源分布數據幫助目標分布數據展開任務(分類、預測)?
域適應學習或是一種解決方案,Yaroslav Ganin在其關于域適應學習的論文中指出:高性能的深度架構接受了大量標記數據的培訓,在沒有針對某項任務的標記數據的情況下,如果使用性質相似但來自不同域的標記數據(例如合成圖像),則域自適應通常會提供一個有吸引力的選擇[12]。該方法可以在源域中的大量標記數據和目標域中的大量未標記數據上進行訓練(不需要標記的目標域數據)。隨著訓練的進行,該方法促進了“深度”功能的出現,這些特征區分源域上的主要學習任務,并且在目標域實現了自適應。
在域適應網絡訓練期間,可以訪問大量來自源域和目標域的訓練樣本{x1,x2,x3,...,xn},其中源域數據帶有標簽{y1,y2,y3,...,yn},目標域不帶有標簽。對于第i 個示例,用di表示域標簽,該二進制變量指示xi屬于源域分布還是目標域分布,如果di=0,則xi~S(x),如果di=1,則xi~T(x)。對于源分布中di=0 的示例,在訓練時已知相應的標簽yi∈Y。對于目標域中的示例,在訓練時不知道標簽,且希望在測試時預測這些標簽。
針對這種任務,定義一種深度前饋架構,該架構針對每個輸入xi預測其標簽yi和其域標簽di∈{0,1}。將這種映射分解為三個部分,輸入x 首先通過映射Gf(特征提取器)映射到D 維特征向量f∈RD,將所有層的參數向量表示為θf,即f=Gf(x;θf)。然后,特征向量f 通過映射Gf(標簽預測變量)映射到標簽y,用θy表示該預測器的參數。最后,相同的特征向量f 通過帶有系數的θd映射Gd(域分類器)映射到域標簽d。
在學習階段,訓練目標是使訓練集(即源分布部分)上的標簽預測損失最小化,因此,特征提取器和標簽預測器的參數都得到了優化,以使損失最小化用于源域樣本。這確保了特征的可辨別性以及特征提取器和標簽預測器在源域上的組合的總體良好預測性能。另一方面,要使訓練所得的特征是域不變的,則分布S(f)={Gf(x;θf)│x~S(x)}T(f)={Gf(x;θf)│x~T(x)}相似。
要使訓練所得的特征是域不變的,假定學習的效果夠好,則域分類將會無法判別數據來源,換個說法就是此時的域分類損失函數會比較大,因此,為了獲得域不變特征,尋找特征映射的參數,該參數映射使域分類器的損失最大化,尋找域分類器的參數θd,在訓練過程中,使域分類的盡可能無法區分開源域數據與目標域數據,所以它的梯度更新方向應當向域分類損失增大的方向更新。整個特征層的參數更新由兩部分的損失函數決定,在不斷的迭代訓練過程中,一方面需要將預測器損失不斷減小,一方面需要將域分類器損失向增大的方向更新,這種對抗性的訓練促進了域不變特征的出現。
DANN 網絡(Domain Adaption Nerual Network)分為3 個模塊,特征提取器,分類器或者預測器(根據不同任務而定)和域分類器。
特征提取器(feature extractor)用來將數據映射到特定的特征空間,供標簽預測器和域判別器做進一步的數據處理。
標簽預測器(label predictor)對來自源域的數據進行預測,盡可能預測出正確的標簽。
域判別器(domain classifier)對特征空間的數據進行分類,盡可能分出數據來自哪個域。
其中,特征提取器和標簽分類器構成了一個前饋神經網絡。在特征提取器后面,加上一個域判別器,中間通過一個梯度反轉層(Gradient reversal layer,GRL)連接,該層用于特征提取網絡與域分類網絡之間,反向傳播過程中實現梯度取反。在訓練的過程中,對來自源域的帶標簽數據,網絡不斷最小化標簽預測器的損失(loss)。對來自源域和目標域的全部數據,網絡不斷最大化域判別器的損失。
非侵入式負荷分解任務在于學習主表數據與設備數據之間的映射關系,本文中采用序列到點的映射學習模式,5 層卷積層作為特征提取器,兩層全連接層作為預測器,兩層全連接層作為域分類器,網絡選擇Adam 優化器進行梯度更新,學習率0.001,在預測器中添加了Dropout 層[13]用于防止過擬合,具體網絡結構圖如圖2 所示。

圖2 DANN 域適應網絡結構圖
從域適應網絡的參數更新來看:定義整個網絡目標損失函數為:

其中θf是特征提取層需要訓練的網絡參數,θy,θd是預測器和域分類器的所要訓練的參數,整個、網絡的損失函數分為兩部分,前面部分為預測器損失Ly,也就是域標簽di=0 時,數據為源域數據時的預測損失函數;后面部分為域分類器損失函數。
計算整個網絡的前向傳播過程完成后,接著進行網絡的參λ 數更新,利用梯度下降法進行網絡參數更新,由于這種對抗訓練需要將域分類損失最大,故而整體利用梯度下降方法訓練時,需要將域分類器損失取反。
利用優化器進行反向傳播,訓練過程參數的更新過程如下:

式中因子λ的大小決定了域分類器所能影響到特征提取器的參數更新的范圍,μ 是學習率。圖3 詳細展示了DANN 神經網絡的訓練流程。
防治措施以藥劑防治為主。對于炭疽病、斑點落葉病、銹病等真菌性病害,可用43%戊唑醇5 000倍液,或者其他三唑類藥劑,或者用25%吡唑醚菌酯2 500~3 000倍液等甲氧基丙烯酸類藥劑進行防治;對于綠盲蝽、桃小食心蟲等,可用2.5%高效氯氟氰菊酯1 000~1 500倍液、2%甲維鹽12 000倍液等進行防治;對于紅蜘蛛、螨類等,可用20%螺螨酯2 500倍液等進行防治。

圖3 DANN 神經網絡算法流程圖
(1)設定DANN 神經網絡參數,訓練輪次50,預測器及域分類器損失函數定義,分別為均方誤差損失函數、負對數似然函數損失函數,訓練數據批量大小:256,Adam 優化器學習率:0.001 等參數;
(2)加載已處理完成的源域訓練數據(帶預測標簽),目標域數據(不帶預測標簽標簽),定義域標簽,源域數據標簽為0,目標域數據標簽為1;
(3)將源域與目標域數據訓練數據送入卷積層特征提取器;
(4)將提取到的特征數據送入由全連接神經網絡構成的預測器,計算預測損失函數;
(5)將提取到的特征數據送入梯度反轉層,進行梯度反轉;
(6)將梯度反轉后的特征數據送入由全連接神經網絡的構成的域判別器,計算源域域目標域域分類損失函數;
(7)損失函數求和,用于統一利用梯度下降法更新參數;
(9)判斷迭代次數是否達到設定值,未達到轉至步驟2)繼續迭代訓練,達到則訓練結束。
數據集采用UKERC 能源數據中心2015 年公開發布的UKdale 數據集[14]。
Ukdale 數據集記錄了從2012 年11 月到2015年1 月份的5 個家庭的用電數據,每6 秒鐘采集一次用電數據。數據集包含10 多種類型的電器的測量值。本文中,僅關注冰箱,洗衣機,這類電器均具有較為明顯的運行特征,如冰箱的運行特征具有周期運行的特點,洗衣機的工作模式更為豐富,相比冰箱運行特征更為復雜。
數據預處理分為實驗數據提取,處理異常值,劃分實驗數據。通過nilmtk工具包將原始數據轉化為可用于科學計算的數據格式。同時,設置相應的實驗數據時間段并進行重新采樣,部分時間段存在數據缺失,會被直接刪除。利用滑動窗口方法擴充數據,滑動窗口在給定的樣本數據上進行步長為1的滑動,可以獲得大量主表功率序列及對應設備運行值,最后采用零均值歸一化方法歸一化數據以便于神經網絡訓練。
在制作訓練數據集時,將源域數據和目標域數據數據同時送入網絡訓練,預測器根據傳入的源域數據計算預測損失,域分類器根據源域數據和目標域數據計算域分類損失,然后進行梯度更新,完成網絡訓練。
本文硬件環境為Intel(R)CoreTM i7-7700 CPU@3.6GHz,16G DDR4 內存及GeForce GTX 1070(8GB 顯存)的64 位計算機。軟件平臺為WINDOWS-10 專業版操作系統,Python 3.6.2(64 位)及Pytorch 深度學習框架。在訓練深度學習模型時使用GPU 進行硬件加速。
本次所提網絡主要針對非侵入式負荷分解模型泛化能力的提升展開研究,因此,會對模型的泛化能力做全面的比較,測試從2 個角度展開:
(1)UKdale 數據集同一家庭中的不同設備之間的分解精度對比;
(2)UKdale 數據集不同家庭之間的同一設備之間的分解精度對比。
其中:(1)代表的可能實際應用情況是某家庭新購置一種家電,利用家庭中已有設備分解模型對其進行負荷分解;(2)代表的是在某一地區下,存在標準分解模型,由于家庭之間的設備及用電行為差異,導致模型分解能力波動,也是最具有研究意義的一點。此外,在一定程度上跨地域設備負荷分解與跨家庭設備負荷分解屬于同一類問題,均屬于不同家庭之間的設備負荷分解問題,考量到問題的同質性及文章篇幅限制,本文測試了Ukdale 數據間的不同家庭同種設備的負荷分解效果,不再展開跨地域設備負荷分解。表1 所示為算例分析測試跨家庭負荷分解所用數據配置情況,表中“S”代表源域數據,“T”代表目標域數據,“H”代表家庭。

表1 數據分配表
由于不存在同類型域自適應研究方法和非侵入式負荷分解模型泛化能力的研究,故本次實驗的對比,將在采用DANN 方法與其他僅對源域數據進行訓練的模型中展開對比,分別為文獻[5]所提DAE與LSTM 方法和文獻[6]所提基于CNN 的Seq2point方法,以及組合優化法、FHMM 方法[15],所用對比算法的具體實現參考文獻[15]。
評價指標采用MAE,F1score。MAE 可以驗證所提方法得出的分解預測值跟實際設備運行值的差距,F1score 更加側重于評價設備運行狀態(設備開啟或關閉)而不是設備實際運行的功率值大小,分數越高代表性能越好。計算公式如(7)(8)所示。

其中PRE 與REC 的計算方式如(9)(10)所示,PRE 為準確率,REC 為召回率。TP 表示負荷在真實數據中打開而在預測中也是打開時的總數;FP 表示負荷在真實數據中關閉而在預測中打開時的總數;TN 表示負荷在真實數據中關閉而在預測中也是關閉時的總數;FN 表示負荷在真實數據中打開而在預測中關閉時的總數。
5.4.1 跨家庭設備負荷分解結果對比
對比冰箱實驗結果圖4、圖5,冰箱的運行特點較為簡單,各類算法對于冰箱的功率變換時刻有著較好的預測效果,而其他5 種方法僅僅能夠預測設備的啟停狀態,對設備的運行功率值預測較差,評價指標見表2。

表2 冰箱跨家庭實驗評價指標對比

圖4 CNN 冰箱跨家庭實驗結果

圖5 DANN 冰箱跨家庭實驗結果
對比洗衣機實驗結果圖6、圖7,洗衣機作為一種工作方式復雜的設備,在5 種對比方法中,卷積神經網絡類方法僅預測了一個功率波動時刻,反觀本文所提方法,精準的預測了3 個設備運行功率有較大波動的時刻,對于設備功率值也相對更為接近,對于各類細節把握也比上述方法更為精準,如在小功率運行時刻,較為精細的預測了洗衣機運行的功率值,其他方法預測的結果較為粗糙,同時也不存在較大的誤判情況,評價指標對比見表3。

表3 洗衣機跨家庭負荷分解評價指標對比

圖6 CNN 洗衣機跨家庭負荷分解結果

圖7 DANN 洗衣機跨家庭負荷分解結果
5.4.2 跨設備負荷分解結果對比
圖8 展示了源域水壺與目標域微波爐的負荷分解結果,表4 為評價指標對比。分別利用運行特點最為復雜的洗衣機和利用運行特點最為簡單的水壺作為源域數據對網絡進行訓練,其他用電設備作為目標域數據,發現所有利用洗衣機作為源域數據進行訓練的方法來分解其他設備負荷時效果非常差,相反利用水壺作為源域數據時,所有方法對設備的啟停能夠較好預測,但對于功率值的預測不是很準確;同時發現,利用水壺作為訓練數據時,能夠較好的完成微波爐的負荷分解效果,其中RNN方法效果最好,本文所提方法表現較好。該跨設備測試效果較好的可能原因是兩者工作運行的模式比較接近,都是短時運行大功率與性能,功率值兩者也比較接近。如何利用RNN 作為特征提取器,實現域適應學習,改善跨設備負荷分解效果,這也將是接下來的研究重點。

表4 微波爐跨家庭實驗評價指標對比

圖8 DANN 微波爐跨設備實驗結果
本文將遷移學習中的域適應學習方法引入非侵入式負荷分解問題,用以解決目前模型普遍存在的泛化能力不足問題以及適應未來無標簽任務的需求,提出一種域適應負荷分解模型,該方法利用源域數據和目標域數據共同訓練網絡,使得特征提取網絡所獲得的的特征更具有代表性,考慮到不同家庭之間的用電行為差異,用于非侵入式負荷分解模型的網路必須擁有更好的網絡泛化能力,所提方法從多個角度出發設計了驗證試驗。綜合考量本文所提方法的性能,其在跨家庭同種設備負荷分解任務中,對于簡單運行特征的設備,本文所提方法相較于其他未利用源域與目標域數據混合訓練的方法而言,有著對設備運行功率值負荷分解精度較高的優勢;對于有著復雜運行特點的設備,本文所提方法更能獲取源域與目標域數據的共同特征。所以在不同家庭之間同種設備的負荷分解精度相較于其他未利用目標域數據的方法而言,對于設備的運行特征(開啟或關閉)把握的更好,對于設備運行功率值的預測有一定的提升。