何健明,李夢(mèng)詩(shī),張祿亮,季天瑤
(華南理工大學(xué) 電力學(xué)院,廣東 廣州 510641)
非侵入式負(fù)荷監(jiān)測(cè)(non-intrusive load monitoring,NILM)旨在僅根據(jù)家庭電表的總有功功率,通過(guò)算法分解得到各用電器的功率。一方面,這有利于幫助用戶了解各電器的用電情況,結(jié)合分時(shí)電價(jià)引導(dǎo)用戶進(jìn)行負(fù)荷轉(zhuǎn)移,減少用電支出,增加社會(huì)效益;另一方面,這有利于促進(jìn)用戶進(jìn)行節(jié)能減排,同時(shí)減少電網(wǎng)削峰填谷成本,增加經(jīng)濟(jì)效益[1-3]。
對(duì)于NILM的研究,Hart[4]提出對(duì)有功功率變化量和無(wú)功功率變化量進(jìn)行聚類(lèi),但是不適用于負(fù)荷種類(lèi)和數(shù)量較多的情況。為了減少聚類(lèi)過(guò)程中對(duì)人為設(shè)定參數(shù)的依賴(lài),文獻(xiàn)[5]對(duì)用電器功率進(jìn)行C聚類(lèi),通過(guò)定義聚類(lèi)中心的距離閾值,以迭代的方式確定聚類(lèi)狀態(tài)個(gè)數(shù),并通過(guò)隱馬爾可夫模型求解用電器的狀態(tài)。文獻(xiàn)[6]用均值偏移聚類(lèi)構(gòu)建電器狀態(tài)模板,通過(guò)狀態(tài)概率因子和遺傳算法求解用電器的狀態(tài),通過(guò)聚類(lèi)方法得到用電器各狀態(tài)和相應(yīng)的聚類(lèi)中心,從而將狀態(tài)還原為功率。上述聚類(lèi)方法大幅度縮小了功率信息的可行解個(gè)數(shù),降低了模型的復(fù)雜度,能夠被運(yùn)算能力低的小設(shè)備執(zhí)行。然而,這些方法的分解功率值僅是各狀態(tài)的聚類(lèi)中心,無(wú)法得到準(zhǔn)確的真實(shí)功率值。
目前,人工智能在電力系統(tǒng)得到了廣泛的應(yīng)用[7-8]。由于NILM可以理解為將總功率序列“翻譯”為用電器功率序列,隨著自然語(yǔ)言處理(natural language processing,NLP)領(lǐng)域中深度學(xué)習(xí)的發(fā)展,越來(lái)越多的翻譯模型被應(yīng)用到NILM[9-12]。序列到序列(sequence to sequence,seq2seq)框架包含編碼器和解碼器,原用于解決輸入的原序列與輸出的翻譯序列的長(zhǎng)度不同的問(wèn)題,但是也能解決功率序列的等長(zhǎng)變換問(wèn)題。文獻(xiàn)[10]基于seq2seq框架,使用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)提取總功率特征,并使用長(zhǎng)短期記憶(long short-term memory,LSTM)網(wǎng)絡(luò)作為編碼器和解碼器,但是模型未能很好地?cái)M合功率躍變的情況。為了使模型在用電器的不運(yùn)行狀態(tài)輸出功率為0,文獻(xiàn)[11]引入判斷用電器啟停的二分類(lèi)神經(jīng)網(wǎng)絡(luò),并將分類(lèi)結(jié)果與功率分解結(jié)果進(jìn)行內(nèi)積運(yùn)算,但是對(duì)于具有多狀態(tài)的用電器在運(yùn)行期間的功率躍變情況仍不能很好擬合。文獻(xiàn)[12]將功率映射為功率類(lèi)別,用多分類(lèi)方法解決回歸問(wèn)題,并且在seq2seq的編碼器與解碼器之間引入自注意力(self-attention)機(jī)制,能夠很好地?cái)M合功率的躍變。隨著深度學(xué)習(xí)在NILM中的應(yīng)用研究,功率分解誤差不斷降低,但是神經(jīng)網(wǎng)絡(luò)的參數(shù)量也顯著增加,給算法實(shí)際應(yīng)用帶來(lái)了很高的門(mén)檻,難以在運(yùn)算能力低的裝置上運(yùn)行。
為了大幅度降低大模型的參數(shù)量,Hinton[13]提出知識(shí)蒸餾概念:將參數(shù)量大、模型復(fù)雜但是效果好的神經(jīng)網(wǎng)絡(luò)稱(chēng)為教師網(wǎng)絡(luò);將參數(shù)量小、模型簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)稱(chēng)為學(xué)生網(wǎng)絡(luò);通過(guò)引入溫度系數(shù)對(duì)教師網(wǎng)絡(luò)輸出的軟標(biāo)簽進(jìn)行平滑,與真實(shí)標(biāo)簽共同指導(dǎo)學(xué)生網(wǎng)絡(luò)訓(xùn)練,實(shí)現(xiàn)知識(shí)遷移。但是該方法未使用無(wú)標(biāo)簽數(shù)據(jù),當(dāng)有標(biāo)簽數(shù)據(jù)的數(shù)據(jù)量小的時(shí)候,不能保證良好的遷移效果。
只是用少量的數(shù)據(jù)進(jìn)行有監(jiān)督訓(xùn)練難以使模型獲得較高的泛化性能,一個(gè)可行的思路是通過(guò)模型生成數(shù)據(jù)。文獻(xiàn)[14]將用于功率分解的CNN作為生成器,增加一個(gè)CNN作為判別器,通過(guò)生成式對(duì)抗網(wǎng)絡(luò)(generative adversarial networks,GAN)生成大量數(shù)據(jù),提高了判別器的泛化能力,但是該方法需進(jìn)行7 000多次迭代,訓(xùn)練耗時(shí)巨大,并且對(duì)于功率變換頻繁的洗衣機(jī),誤差僅比簡(jiǎn)單的LSTM降低5%。一個(gè)可能的原因是當(dāng)原數(shù)據(jù)不足時(shí),生成器難以生成足夠真實(shí)的狀態(tài)復(fù)雜的洗衣機(jī)功率數(shù)據(jù)。
半監(jiān)督學(xué)習(xí)[15](semi-supervised learning,SSL)指用于訓(xùn)練的數(shù)據(jù)中,一部分?jǐn)?shù)據(jù)有標(biāo)簽,另一部分?jǐn)?shù)據(jù)無(wú)標(biāo)簽,同時(shí)使用有標(biāo)簽數(shù)據(jù)進(jìn)行有監(jiān)督學(xué)習(xí)和無(wú)標(biāo)簽數(shù)據(jù)進(jìn)行無(wú)監(jiān)督學(xué)習(xí)。由于現(xiàn)實(shí)中常常同時(shí)存在少量的有標(biāo)簽數(shù)據(jù)和大量的無(wú)標(biāo)簽數(shù)據(jù),因此半監(jiān)督學(xué)習(xí)具有很大的實(shí)用價(jià)值。
自訓(xùn)練(self-training)算法[16]是早期的一種半監(jiān)督學(xué)習(xí)方法。該方法使用有標(biāo)簽樣本訓(xùn)練分類(lèi)器,對(duì)無(wú)標(biāo)簽樣本進(jìn)行分類(lèi);取置信度比較高的偽標(biāo)簽樣本加入到有標(biāo)簽樣本集中;分類(lèi)器重新訓(xùn)練,直到?jīng)]有新的偽標(biāo)簽加入。但是重新訓(xùn)練分類(lèi)器會(huì)導(dǎo)致樣本被反復(fù)訓(xùn)練,增加了訓(xùn)練耗時(shí)。
綜上所述,NILM的功能逐漸從負(fù)荷辨識(shí)發(fā)展到負(fù)荷分解,隨著分類(lèi)準(zhǔn)確率的提高和分解誤差的降低,模型的結(jié)構(gòu)越來(lái)越復(fù)雜,參數(shù)越來(lái)越多。知識(shí)蒸餾技術(shù)可以減少網(wǎng)絡(luò)的參數(shù)。半監(jiān)督學(xué)習(xí)可以利用大量的無(wú)標(biāo)簽數(shù)據(jù)。
為了得到功率分解誤差盡可能低的模型,本文基于seq2seq,引入雙向門(mén)控循環(huán)單元(bi-directional gating recurrent unit, BiGRU)、自注意力機(jī)制和殘差網(wǎng)絡(luò),構(gòu)建了一個(gè)功率分解誤差小的大模型。
針對(duì)大模型參數(shù)量大,不便于部署到運(yùn)算性能低和內(nèi)存容量的小功率設(shè)備的問(wèn)題,本文引入知識(shí)蒸餾技術(shù),使用大模型作為教師網(wǎng)絡(luò)指導(dǎo)小模型訓(xùn)練。
針對(duì)實(shí)際應(yīng)用中存在大量無(wú)標(biāo)簽數(shù)據(jù)的情況,本文引入半監(jiān)督學(xué)習(xí),使用有標(biāo)簽數(shù)據(jù)對(duì)教師網(wǎng)絡(luò)進(jìn)行訓(xùn)練,使用預(yù)訓(xùn)練的教師網(wǎng)絡(luò)處理無(wú)標(biāo)簽數(shù)據(jù),將教師網(wǎng)絡(luò)輸出的偽標(biāo)簽作為學(xué)生網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù),指導(dǎo)學(xué)生網(wǎng)絡(luò)的訓(xùn)練。
為了更好地模擬現(xiàn)實(shí)應(yīng)用的情況,本文中訓(xùn)練集與測(cè)試集的數(shù)據(jù)分別來(lái)自不同的家庭。將所提出的模型在開(kāi)源數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),驗(yàn)證本文提出的教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的優(yōu)越性。
為了充分利用無(wú)標(biāo)簽數(shù)據(jù),在獲得較低的功率分解誤差的同時(shí)縮小模型的體積,本文提出一種結(jié)合知識(shí)蒸餾和半監(jiān)督學(xué)習(xí)的訓(xùn)練框架。首先使用有標(biāo)簽數(shù)據(jù)對(duì)參數(shù)量大的網(wǎng)絡(luò)進(jìn)行有監(jiān)督訓(xùn)練,再基于知識(shí)蒸餾,使用偽標(biāo)簽(由預(yù)訓(xùn)練的網(wǎng)絡(luò)在無(wú)標(biāo)簽數(shù)據(jù)中輸出)指導(dǎo)參數(shù)量小的學(xué)生網(wǎng)絡(luò)訓(xùn)練。
知識(shí)蒸餾是一種通過(guò)大模型指導(dǎo)小模型訓(xùn)練的模型壓縮技術(shù),大模型被稱(chēng)為教師網(wǎng)絡(luò),小模型被稱(chēng)為學(xué)生網(wǎng)絡(luò)。教師網(wǎng)絡(luò)使用真實(shí)的標(biāo)簽進(jìn)行單獨(dú)訓(xùn)練,學(xué)生網(wǎng)絡(luò)同時(shí)使用真實(shí)標(biāo)簽和教師網(wǎng)絡(luò)輸出的偽標(biāo)簽進(jìn)行訓(xùn)練。真實(shí)的標(biāo)簽在每個(gè)時(shí)刻均是一個(gè)獨(dú)熱(one-hot)向量,教師網(wǎng)絡(luò)輸出的偽標(biāo)簽在每個(gè)時(shí)刻均是一個(gè)關(guān)于功率類(lèi)別的概率分布向量,因此學(xué)生網(wǎng)絡(luò)通過(guò)知識(shí)蒸餾能夠?qū)W習(xí)到教師網(wǎng)絡(luò)輸出的時(shí)序功率概率分布。
學(xué)生網(wǎng)絡(luò)通常是參數(shù)量少的小模型,對(duì)內(nèi)存容量的依賴(lài)小,計(jì)算速度快,但是網(wǎng)絡(luò)容量低,難以直接對(duì)原數(shù)據(jù)進(jìn)行充分的擬合。
為了使得參數(shù)少的學(xué)生網(wǎng)絡(luò)能夠充分?jǐn)M合原數(shù)據(jù)信息,選擇合適的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)成為重要環(huán)節(jié)。參數(shù)在時(shí)間軸共享的遞歸神經(jīng)網(wǎng)絡(luò)(recursive neural network,RNN)不僅節(jié)約了參數(shù)量,而且適合用于處理NILM的時(shí)序功率數(shù)據(jù),因此適用于構(gòu)建學(xué)生網(wǎng)絡(luò)。
圖1 GRU結(jié)構(gòu)
第1個(gè)二分類(lèi)神經(jīng)網(wǎng)絡(luò)是僅包含1層使用sigmoid激活函數(shù)的全連接層,將上一時(shí)刻隱藏狀態(tài)向量ht-1和當(dāng)前時(shí)刻輸入到GRU的向量xt作為輸入;輸入的向量通過(guò)矩陣Wr進(jìn)行線性變換;變換后的向量的每個(gè)元素被sigmoid激活函數(shù)映射到值域?yàn)閇0,1]的浮點(diǎn)數(shù)。輸入的向量經(jīng)過(guò)這個(gè)過(guò)程處理后得到的向量被稱(chēng)為重置門(mén)rt,
(1)
式中[·,·]表示2個(gè)向量在最后1個(gè)維度拼接。
(2)
(3)
(4)
BiGRU增加1個(gè)反向GRU用來(lái)處理反向序列,在最后1個(gè)維度對(duì)正向GRU和反向GRU的結(jié)果進(jìn)行拼接,因此能夠?qū)W習(xí)正反2個(gè)方向的功率信息。
(5)
式中:Ψ(·)為GRU變換;ΨB(·)為BiGRU變換;Xr為在時(shí)間維度對(duì)序列X進(jìn)行逆向的向量。
為了使得知識(shí)蒸餾和半監(jiān)督學(xué)習(xí)訓(xùn)練的小模型具有盡可能低的功率分解誤差,本文綜合多種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)勢(shì),構(gòu)建一個(gè)擬合能力足夠強(qiáng)的大模型作為教師網(wǎng)絡(luò),用于指導(dǎo)小模型的訓(xùn)練。
本文構(gòu)建的教師網(wǎng)絡(luò)基于seq2seq框架,由輸入層、嵌入層、編碼器、解碼器、輸出層組成,如圖2所示。輸入層接受總功率序列的輸入,每個(gè)輸入時(shí)刻均是一個(gè)獨(dú)熱向量,獨(dú)熱向量?jī)H有1個(gè)元素為1,其余元素為0,并且非零元素的下標(biāo)表示相應(yīng)的功率類(lèi)別;嵌入層通過(guò)一個(gè)矩陣將高維稀疏離散的獨(dú)熱向量映射為低維稠密連續(xù)的向量;編碼器通過(guò)BiGRU、自注意力機(jī)制和殘差連接,對(duì)嵌入層輸出的向量進(jìn)行編碼;解碼器使用BiGRU進(jìn)行解碼,解碼結(jié)果通過(guò)回歸層進(jìn)行加權(quán)組合,最后使用softmax函數(shù)將加權(quán)后的解碼結(jié)果映射到功率的概率分布。
圖2 教師網(wǎng)絡(luò)結(jié)構(gòu)
自注意力機(jī)制對(duì)一個(gè)輸入的序列X計(jì)算權(quán)重,并為自身進(jìn)行加權(quán)。權(quán)重計(jì)算方法是構(gòu)建一個(gè)函數(shù)f(X)計(jì)算一個(gè)向量,再通過(guò)softmax函數(shù)將這個(gè)向量轉(zhuǎn)換為概率分布。f(X)的計(jì)算方法有多種,包括:直接計(jì)算向量與自身的點(diǎn)積、經(jīng)過(guò)線性變換后計(jì)算與自身的點(diǎn)積、計(jì)算線性變換后使用softmax激活函數(shù)。本文不對(duì)X進(jìn)行線性變換,而是使用GRU進(jìn)行相應(yīng)的變換,通過(guò)計(jì)算得到的自注意力得分為經(jīng)過(guò)GRU變換的輸入進(jìn)行加權(quán),即:
(6)
(7)
式中:Ψ1(·)、Ψ2(·)、Ψ3(·)為3個(gè)結(jié)構(gòu)相同、參數(shù)變通的GRU變換;a(·)為自注意力得分。
因此,自注意力機(jī)制為模型在每個(gè)時(shí)刻計(jì)算需要關(guān)注的重要時(shí)刻,減少來(lái)自不重要信息的干擾,加強(qiáng)信息的提取能力。
殘差網(wǎng)絡(luò)(residual network,ResNet)[17]在殘差塊的輸入和輸出之間建立直接連接,則殘差塊的總輸出
(8)
式中r(X)為殘差塊內(nèi)的神經(jīng)網(wǎng)絡(luò)層輸出。
因此,殘差塊內(nèi)的神經(jīng)網(wǎng)絡(luò)層只需要擬合輸入與輸出之間的差異,降低了神經(jīng)網(wǎng)絡(luò)的擬合難度。
知識(shí)蒸餾技術(shù)是將教師網(wǎng)絡(luò)輸出的概率分布作為偽標(biāo)簽,指導(dǎo)學(xué)生網(wǎng)絡(luò)進(jìn)行訓(xùn)練,完成知識(shí)遷移的一種技術(shù)。學(xué)生網(wǎng)絡(luò)進(jìn)行單獨(dú)訓(xùn)練時(shí),標(biāo)簽是時(shí)序的獨(dú)熱向量。
(9)
(10)
式中:y為樣本的真實(shí)標(biāo)簽;yt為t時(shí)刻的真實(shí)功率類(lèi)別lt所對(duì)應(yīng)的獨(dú)熱向量;T為輸入序列長(zhǎng)度,即單個(gè)樣本序列的采樣時(shí)刻點(diǎn)數(shù)。
參數(shù)量小的學(xué)生網(wǎng)絡(luò)參數(shù)少,網(wǎng)絡(luò)容量不足且結(jié)構(gòu)簡(jiǎn)單,因此難以學(xué)習(xí)到復(fù)雜的從總功率序列到用電器序列的變換,容易過(guò)擬合到訓(xùn)練集上的非共性特征。
教師網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,網(wǎng)絡(luò)參數(shù)多,具有很強(qiáng)的擬合能力,其輸出的偽標(biāo)簽包含各個(gè)功率類(lèi)別的概率分布。具體而言,偽標(biāo)簽在某時(shí)刻的向量不僅僅是指向一個(gè)具體的功率,而是多個(gè)功率及其相應(yīng)的概率。
(11)
(12)
(13)
式中:LKD為知識(shí)蒸餾訓(xùn)練的損失函數(shù);α為加權(quán)系數(shù),用于調(diào)節(jié)訓(xùn)練學(xué)生網(wǎng)絡(luò)的標(biāo)簽中來(lái)自真實(shí)標(biāo)簽和教師網(wǎng)絡(luò)輸出的偽標(biāo)簽的比例;ypred為學(xué)生網(wǎng)絡(luò)輸出的標(biāo)簽;DKL(p,q)為概率分布p和概率分布q的KL散度,用于量化2個(gè)概率分布的距離;LCE(p,q)為交叉熵,是用概率分布q表示概率分布p所需的平均編碼長(zhǎng)度。
為了平滑教師網(wǎng)絡(luò)輸出的概率分布,一般的知識(shí)蒸餾中使用帶溫度系統(tǒng)K的softmax激活函數(shù)替換已訓(xùn)練好的教師網(wǎng)絡(luò)的softmax函數(shù)。
(14)
式中:vt為激活函數(shù)t時(shí)刻的輸入;vt,i為第t時(shí)刻第i個(gè)類(lèi)別的數(shù)值;softmax(vt)i為激活函數(shù)t時(shí)刻輸出類(lèi)別i的置信概率。
半監(jiān)督學(xué)習(xí)是包括有監(jiān)督學(xué)習(xí)與無(wú)監(jiān)督學(xué)習(xí)的一種學(xué)習(xí)方法。有監(jiān)督學(xué)習(xí)能對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行有效學(xué)習(xí),在樣本量足夠的情況下是效果最好的學(xué)習(xí)方法,但是在訓(xùn)練樣本不足時(shí)容易對(duì)訓(xùn)練集過(guò)擬合,在測(cè)試集或?qū)嶋H使用中效果差。無(wú)監(jiān)督學(xué)習(xí)不使用任何標(biāo)簽進(jìn)行學(xué)習(xí),但是學(xué)習(xí)效果不如有監(jiān)督學(xué)習(xí)。半監(jiān)督學(xué)習(xí)綜合了有監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí)的優(yōu)點(diǎn),同時(shí)使用有標(biāo)簽數(shù)據(jù)和無(wú)標(biāo)簽數(shù)據(jù)進(jìn)行訓(xùn)練。
本文提出結(jié)合知識(shí)蒸餾和半監(jiān)督學(xué)習(xí)的訓(xùn)練框架,如圖3所示。
圖3 結(jié)合知識(shí)蒸餾和半監(jiān)督學(xué)習(xí)的訓(xùn)練框架
訓(xùn)練步驟如下:
a)教師網(wǎng)絡(luò)在有標(biāo)簽數(shù)據(jù)上使用真實(shí)標(biāo)簽進(jìn)行有監(jiān)督訓(xùn)練,獲得較低的功率分解誤差;
b)預(yù)訓(xùn)練教師網(wǎng)絡(luò)在無(wú)標(biāo)簽數(shù)據(jù)上輸出偽標(biāo)簽;
c)學(xué)生網(wǎng)絡(luò)在無(wú)標(biāo)簽數(shù)據(jù)上使用偽標(biāo)簽進(jìn)行無(wú)監(jiān)督訓(xùn)練。
整個(gè)訓(xùn)練框架同時(shí)利用了有標(biāo)簽數(shù)據(jù)和大量無(wú)標(biāo)簽數(shù)據(jù),結(jié)合了知識(shí)蒸餾和半監(jiān)督學(xué)習(xí)的優(yōu)勢(shì)。實(shí)際應(yīng)用數(shù)據(jù)中常常包含大量的無(wú)標(biāo)簽數(shù)據(jù),半監(jiān)督學(xué)習(xí)減少了對(duì)有標(biāo)簽數(shù)據(jù)的依賴(lài),又充分利用了大量的無(wú)標(biāo)簽數(shù)據(jù),具有實(shí)際應(yīng)用價(jià)值。
本文對(duì)用電器每個(gè)時(shí)刻的功率類(lèi)別進(jìn)行多分類(lèi),因此模型是一個(gè)多分類(lèi)模型,使用交叉熵LCE作為損失函數(shù)。
(15)
式中:p(yt,j)為真實(shí)標(biāo)簽或偽標(biāo)簽中t時(shí)刻的功率類(lèi)別為i的概率;q(yt,i)為預(yù)測(cè)標(biāo)簽中t時(shí)刻的功率類(lèi)別為i的概率。
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程是在訓(xùn)練集上計(jì)算損失函數(shù)對(duì)模型的輸出值與真實(shí)值的損失值,并使用反向傳播(back propagation,BP)算法逐層計(jì)算損失函數(shù)對(duì)各參數(shù)的梯度值,進(jìn)而通過(guò)優(yōu)化器定義的規(guī)則更新網(wǎng)絡(luò)參數(shù)。如果只對(duì)訓(xùn)練集進(jìn)行反復(fù)訓(xùn)練,將產(chǎn)生嚴(yán)重的過(guò)擬合現(xiàn)象,表現(xiàn)為在訓(xùn)練集上的評(píng)價(jià)指標(biāo)值很好,但是在實(shí)際應(yīng)用時(shí)的評(píng)價(jià)指標(biāo)值很差。
本文引入早停策略,根據(jù)驗(yàn)證集的評(píng)價(jià)指標(biāo)值的變化情況決定訓(xùn)練的終止。若持續(xù)15次訓(xùn)練迭代未在驗(yàn)證集上觀測(cè)到更好的評(píng)價(jià)指標(biāo)值,則終止在訓(xùn)練集上的訓(xùn)練,并且恢復(fù)訓(xùn)練歷史過(guò)程中在驗(yàn)證集上表現(xiàn)最好的模型。
平均絕對(duì)誤差(mean absolute error,MAE)是量化模型精度的典型評(píng)價(jià)指標(biāo)。MAE在每個(gè)時(shí)刻對(duì)預(yù)測(cè)值與真實(shí)值的差值之和求均值:
(16)
為了量化模型在用電器模型估計(jì)消耗的電量與實(shí)際消耗電量的誤差,定義信號(hào)總誤差(signal aggregate error,SAE)
(17)
本文基于seq2seq框架,以BiGRU作為編碼器和解碼器,在編碼器引入改進(jìn)的自注意力機(jī)制和殘差網(wǎng)絡(luò),構(gòu)建了一個(gè)大的神經(jīng)網(wǎng)絡(luò)模型,并在開(kāi)源數(shù)據(jù)集上驗(yàn)證了該模型的有效性。以此神經(jīng)網(wǎng)絡(luò)作為教師網(wǎng)絡(luò),構(gòu)建一個(gè)小型的BiGRU的學(xué)生網(wǎng)絡(luò),通過(guò)模型蒸餾技術(shù)讓教師網(wǎng)絡(luò)指導(dǎo)學(xué)生網(wǎng)絡(luò)學(xué)習(xí),獲得了比學(xué)生網(wǎng)絡(luò)單獨(dú)學(xué)習(xí)更低的功率分解誤差。
本文選取一個(gè)NILM開(kāi)源數(shù)據(jù)集REFIT[18]對(duì)所提出的模型進(jìn)行驗(yàn)證。該數(shù)據(jù)集記錄了英國(guó)20個(gè)家庭持續(xù)2年的用電信息,包括家庭總有功功率和各用電器的有功功率。REFIT數(shù)據(jù)采樣頻率為0.125 Hz,即采樣時(shí)間間隔為8 s。
盡管數(shù)據(jù)發(fā)布者已對(duì)原數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗,但是仍存在以下問(wèn)題:
a)部分?jǐn)?shù)據(jù)中,用電器功率與家庭總功率的變化不同步;
b)錯(cuò)誤地將太陽(yáng)能的發(fā)電功率作為用電功率計(jì)入總功率中;
c)部分?jǐn)?shù)據(jù)中,總功率小于用電器功率之和;
d)原數(shù)據(jù)集處于關(guān)閉狀態(tài)的負(fù)樣本過(guò)多,處于運(yùn)行狀態(tài)的正樣本過(guò)少,并且多用電器同時(shí)運(yùn)行的樣本少,存在復(fù)雜情形的樣本少和各情形的樣本不平衡的問(wèn)題。
選取4種用電器,包括洗衣機(jī)、洗碗機(jī)、微波爐、冰箱。為了體現(xiàn)構(gòu)造數(shù)據(jù)集的真實(shí)性,本文從原數(shù)據(jù)中將家庭總功率減去所選取的4種用電器功率,定義為干擾用電器功率。
分別為選取的用電器設(shè)置運(yùn)行功率區(qū)間,定義用電器在功率大于運(yùn)行功率區(qū)間下限的時(shí)刻處于運(yùn)行狀態(tài);當(dāng)用電器功率大于運(yùn)行功率區(qū)間上限,將其功率值設(shè)置為功率上限值。為了使提取的用電器運(yùn)行序列符合實(shí)際,設(shè)置最多不運(yùn)行時(shí)刻點(diǎn)數(shù)和最少運(yùn)行時(shí)刻點(diǎn)數(shù):最多不運(yùn)行時(shí)刻點(diǎn)數(shù)是指用電器功率序列中,功率低于相應(yīng)的運(yùn)行功率區(qū)間下限的采樣時(shí)刻點(diǎn)數(shù);最少運(yùn)行時(shí)刻點(diǎn)數(shù)是指用電器功率序列中,功率高于相應(yīng)的運(yùn)行功率區(qū)間下限的采樣時(shí)刻點(diǎn)數(shù)。提取符合這些條件的用電器功率序列,構(gòu)建用電器運(yùn)行數(shù)據(jù)庫(kù)。各用電器的運(yùn)行狀態(tài)判斷閾值見(jiàn)表1。
表1 用電器功率序列的運(yùn)行狀態(tài)判斷閾值
針對(duì)原數(shù)據(jù)的問(wèn)題,本文為每種用電器構(gòu)造一個(gè)包含總功率和用電器功率的數(shù)據(jù)集。以洗衣機(jī)數(shù)據(jù)集為例,設(shè)置洗衣機(jī)和剩余用電器均有50%的概率運(yùn)行,干擾用電器有100%的概率運(yùn)行;隨機(jī)選取各用電器的啟停時(shí)刻;從用電器運(yùn)行數(shù)據(jù)庫(kù)中對(duì)功率序列進(jìn)行有放回的簡(jiǎn)單隨機(jī)抽樣;各用電器的功率和干擾用電器功率之和作為總功率。如此構(gòu)造的序列中,有68.75%的概率出現(xiàn)2個(gè)及以上的用電器運(yùn)行,并且一直出現(xiàn)干擾用電器運(yùn)行。洗衣機(jī)、洗碗機(jī)、微波爐是大功率電器,設(shè)置功率分類(lèi)間隔為10 W,即每10 W作為一個(gè)功率類(lèi)別。數(shù)據(jù)集的各參數(shù)見(jiàn)表2。
表2 數(shù)據(jù)集參數(shù)
本文取來(lái)源于家庭1、2、4、5、6、7、10、11、12、13、15、20的數(shù)據(jù)構(gòu)造訓(xùn)練集,取來(lái)源于家庭9的數(shù)據(jù)構(gòu)造測(cè)試集。
神經(jīng)網(wǎng)絡(luò)利用訓(xùn)練集的數(shù)據(jù)完成對(duì)網(wǎng)絡(luò)參數(shù)的微調(diào),使得訓(xùn)練后的網(wǎng)絡(luò)能夠在與訓(xùn)練集同分布的數(shù)據(jù)上表現(xiàn)良好。適當(dāng)?shù)卦黾由窠?jīng)網(wǎng)絡(luò)的層數(shù)和神經(jīng)元個(gè)數(shù),網(wǎng)絡(luò)能夠?qū)W習(xí)訓(xùn)練數(shù)據(jù)更多的特征。然而,訓(xùn)練集只是所有真實(shí)數(shù)據(jù)集的子集,訓(xùn)練集的分布與真實(shí)分布不完全一致。若訓(xùn)練集數(shù)據(jù)量小卻盲目增加神經(jīng)網(wǎng)絡(luò)的層數(shù)和神經(jīng)元個(gè)數(shù),神經(jīng)網(wǎng)絡(luò)模型會(huì)過(guò)度學(xué)習(xí)僅能代表訓(xùn)練數(shù)據(jù)的特征,使得代表真實(shí)數(shù)據(jù)的共性特征被忽略。因此,一個(gè)良好的神經(jīng)網(wǎng)絡(luò)應(yīng)該具有恰當(dāng)?shù)木W(wǎng)絡(luò)結(jié)構(gòu)、網(wǎng)絡(luò)層數(shù)和隱藏層維度。
本文構(gòu)建了8個(gè)神經(jīng)網(wǎng)絡(luò)模型,其中各神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)及其超參數(shù)見(jiàn)表3。隱藏層維度是指嵌入層、GRU和BiGRU的最后1個(gè)維度。
表3 網(wǎng)絡(luò)的結(jié)構(gòu)及超參數(shù)
為了使得學(xué)生網(wǎng)絡(luò)具有較低的功率分解誤差,首先構(gòu)建一個(gè)具有盡可能低的功率分解誤差的模型作為教師網(wǎng)絡(luò)。通過(guò)逐步引入多種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),得到具有復(fù)雜結(jié)構(gòu)和大量神經(jīng)網(wǎng)絡(luò)參數(shù)的模型4,并將其作為教師網(wǎng)絡(luò)。選取模型1、2、3作為模型4的對(duì)比模型,以驗(yàn)證模型4作為教師模型的合理性。逐步簡(jiǎn)化模型4,得到了模型5、6,以驗(yàn)證簡(jiǎn)單地簡(jiǎn)化模型會(huì)使得誤差逐步上升。模型6、7、8具有相同的網(wǎng)絡(luò)結(jié)構(gòu),不同之處在于訓(xùn)練方式不同。選擇模型8作為本文學(xué)生網(wǎng)絡(luò),并將模型6、7作為其對(duì)比模型,能夠檢驗(yàn)一般知識(shí)蒸餾的作用,并驗(yàn)證本文結(jié)合知識(shí)蒸餾和半監(jiān)督訓(xùn)練方法的優(yōu)越性。
使用基于tensorflow后端的keras框架進(jìn)行訓(xùn)練。訓(xùn)練過(guò)程的批樣本數(shù)為32,訓(xùn)練優(yōu)化器使用ADAM優(yōu)化器,學(xué)習(xí)率為0.000 8。當(dāng)連續(xù)15次迭代沒(méi)有在驗(yàn)證集觀測(cè)到更優(yōu)的評(píng)價(jià)指標(biāo)值,則停止訓(xùn)練,保留歷史最好的模型。
在相同的測(cè)試集上使用真實(shí)標(biāo)簽對(duì)所有模型進(jìn)行評(píng)估。評(píng)價(jià)指標(biāo)的實(shí)驗(yàn)結(jié)果見(jiàn)表4。
表4 實(shí)驗(yàn)的評(píng)價(jià)指標(biāo)結(jié)果
3.5.1 教師網(wǎng)絡(luò)
與模型1相比,模型2的結(jié)果中各用電器分解功率的MAE均有顯著下降,其原因是BiGRU從前后2個(gè)方向輸入總功率序列,能夠綜合前后功率的變化來(lái)估算當(dāng)前時(shí)刻的分解功率。
與模型5相比,模型2的結(jié)果中洗衣機(jī)分解功率的MAE下降了31%,而其他用電器分解功率的MAE變化不大,其原因是模型2中的seq2seq結(jié)構(gòu)具有更多的參數(shù)和更大的容量,通過(guò)編碼器對(duì)總功率序列進(jìn)行編碼,通過(guò)解碼還原最可能的洗衣機(jī)功率序列,能更好地?cái)M合具有多狀態(tài)的洗衣機(jī)功率。
與模型2相比,模型3的結(jié)果中只有洗碗機(jī)模型的MAE下降24%,其他模型分解功率變化不大甚至誤差有所上升,其原因是自注意力機(jī)制通過(guò)計(jì)算序列獲取權(quán)重,再為序列自身加權(quán)。這個(gè)過(guò)程對(duì)序列中的部分信息進(jìn)行處理,而忽略剩下部分信息,作用是關(guān)注重要時(shí)刻的功率信息。對(duì)于額定功率高而功率曲線特征單一的洗碗機(jī),能夠降低模型分解功率誤差;但是對(duì)于具有復(fù)雜狀態(tài)的洗衣機(jī)而言,應(yīng)該計(jì)算整個(gè)序列的所有功率信息而不是只關(guān)注部分時(shí)刻的功率信息,此時(shí)自注意力機(jī)制反而使得洗衣機(jī)的分解功率誤差上升。
與模型3相比,模型4的結(jié)果中各用電器模型的功率分解誤差均有下降,其原因是殘差連接只需要擬合輸入與輸出的差異,降低了殘差部分的擬合難度。本文選擇模型4作為教師網(wǎng)絡(luò)。
綜上所述,從模型1—4的結(jié)果可以看出,結(jié)合了seq2seq、BiGRU、自注意力機(jī)制和殘差網(wǎng)絡(luò)的教師網(wǎng)絡(luò)(模型4)在各用電器測(cè)試集中均獲得了最低的MAE和SAE,驗(yàn)證了所提出的復(fù)雜神經(jīng)網(wǎng)絡(luò)的優(yōu)越性。
3.5.2 學(xué)生網(wǎng)絡(luò)
與模型4相比,模型5中洗衣機(jī)模型的MAE提高了67%,洗碗機(jī)模型的MAE提高了56%,表明小網(wǎng)絡(luò)的參數(shù)少,網(wǎng)絡(luò)容量低,難以在單獨(dú)訓(xùn)練的情況下捕捉到關(guān)鍵的功率特征。
與模型5相比,模型6中洗衣機(jī)模型的MAE提高了97%,洗碗機(jī)模型的MAE提高了67%,其他用電器模型的MAE也明顯上升,表明當(dāng)小網(wǎng)絡(luò)的參數(shù)進(jìn)一步縮小,網(wǎng)絡(luò)更難捕捉功率特征。
與模型6相比,模型7的洗衣機(jī)模型MAE下降了63%,洗碗機(jī)模型MAE下降了41%,微波爐模型MAE下降了25%,表明在教師網(wǎng)絡(luò)的指導(dǎo)下,與模型6具有相同結(jié)構(gòu)的模型7能夠有效學(xué)習(xí)用電器功率序列的特征。其原因是教師網(wǎng)絡(luò)輸出的結(jié)果并不是僅僅指向真實(shí)功率類(lèi)別的獨(dú)熱標(biāo)簽,而是包含所有功率類(lèi)別概率分布的偽標(biāo)簽。學(xué)生網(wǎng)絡(luò)通過(guò)信息豐富的偽標(biāo)簽訓(xùn)練,不容易過(guò)擬合。
與模型7相比,模型8的各用電器模型的MAE平均下降38%,其中洗衣機(jī)的MAE下降了69%,原因是洗衣機(jī)具有復(fù)雜的多狀態(tài),其功率序列難以僅僅通過(guò)教師網(wǎng)絡(luò)在少量樣本上進(jìn)行有監(jiān)督訓(xùn)練完成良好的知識(shí)遷移。模型8中的學(xué)生網(wǎng)絡(luò)充分地學(xué)習(xí)教師網(wǎng)絡(luò)在大量無(wú)標(biāo)簽數(shù)據(jù)下輸出的概率分布,教師網(wǎng)絡(luò)輸出的偶然性錯(cuò)誤標(biāo)簽?zāi)軌虮淮罅繕颖鞠♂專(zhuān)瑢W(xué)生網(wǎng)絡(luò)學(xué)習(xí)到的是用電器功率的共性特征,而不是少量樣本的非共性特征,因此更不容易過(guò)擬合,可獲得接近于教師網(wǎng)絡(luò)的效果。
綜上所述,從模型5—8的結(jié)果可以看出,基于模型蒸餾和半監(jiān)督學(xué)習(xí)訓(xùn)練的學(xué)生網(wǎng)絡(luò)(模型8)在這4個(gè)簡(jiǎn)單的BiGRU模型中具有最低的MAE和SAE,說(shuō)明了教師網(wǎng)絡(luò)能夠利用大量無(wú)標(biāo)簽數(shù)據(jù)指導(dǎo)學(xué)生網(wǎng)絡(luò)進(jìn)行訓(xùn)練,使得學(xué)生網(wǎng)絡(luò)獲得比單獨(dú)訓(xùn)練更高的功率分解精度。
3.5.3 綜合分析
各網(wǎng)絡(luò)的參數(shù)量見(jiàn)表4。教師網(wǎng)絡(luò)(模型4)獲得了最低12.49 W的各用電器MAE均值,但同時(shí)也包含了9.0×106個(gè)參數(shù);BiGRU-64(模型6)包含0.6×106個(gè)參數(shù),只有教師網(wǎng)絡(luò)參數(shù)量的6.7%,但是單獨(dú)訓(xùn)練僅僅獲得了27.22 W的各用電器MAE均值;與模型6具有相同結(jié)構(gòu)的基于一般知識(shí)蒸餾技術(shù)的學(xué)生網(wǎng)絡(luò)(模型7)獲得了21.19 W的各用電器MAE均值,誤差有所降低,但仍然較大;結(jié)合了知識(shí)蒸餾和半監(jiān)督學(xué)習(xí)技術(shù)的學(xué)生網(wǎng)絡(luò)(模型8),通過(guò)教師網(wǎng)絡(luò)在大量無(wú)標(biāo)簽數(shù)據(jù)輸出的偽標(biāo)簽訓(xùn)練,獲得了13.22 W的各用電器MAE均值。學(xué)生網(wǎng)絡(luò)(模型8)與模型1、2、3、5相比,具有更少的參數(shù)和更低的功率分解誤差,而與教師網(wǎng)絡(luò)相比,只用6.7%的參數(shù)量獲得了MAE僅上升5.8%的功率分解結(jié)果。因此,本文所提出的基于知識(shí)蒸餾和半監(jiān)督學(xué)習(xí)的訓(xùn)練框架能夠充分利用大量無(wú)標(biāo)簽的樣本,不僅能使模型獲得較低的誤差,同時(shí)能降低模型的計(jì)算量,降低模型的實(shí)際應(yīng)用落地門(mén)檻與成本。
選取背景功率較大且多用電器同時(shí)運(yùn)行的情景,總功率、各用電器真實(shí)功率、教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的分解功率如圖4所示。當(dāng)具有相似運(yùn)行功率的洗衣機(jī)和洗碗機(jī)同時(shí)運(yùn)行,教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)均給出非常準(zhǔn)確的分解功率,如圖4(a)和(b)所示。冰箱由于其額定功率較小,容易受背景功率噪音干擾,導(dǎo)致模型的分解誤差相較于其額定功率而言較大,如圖4(c)所示。當(dāng)微波爐在同一個(gè)序列內(nèi)多次運(yùn)行,教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)均準(zhǔn)確分解出微波爐加熱食物的高功率以及2次運(yùn)行之間的低功率,如圖4(d)所示。各用電器的教師網(wǎng)絡(luò)與學(xué)生網(wǎng)絡(luò)給出的功率分解序列非常相似,表明學(xué)生網(wǎng)絡(luò)在復(fù)雜情形下也能有與教師網(wǎng)絡(luò)相似的功率分解效果。
取圖4(d)中微波爐樣本,分析學(xué)生網(wǎng)絡(luò)分解功率的概率分布。每個(gè)時(shí)刻最高概率的5個(gè)分解結(jié)果見(jiàn)表5。取每個(gè)時(shí)刻的第1分解功率作為模型的功率分解值。可以看出,第1分解功率與微波爐真實(shí)功率較為接近,且真實(shí)功率均存在于5個(gè)分解功率分布的范圍內(nèi)。
表5 圖4(d)中學(xué)生網(wǎng)絡(luò)最高概率的5個(gè)分解結(jié)果
圖4 各用電器模型分解功率與真實(shí)功率
當(dāng)微波爐未開(kāi)啟時(shí),學(xué)生網(wǎng)絡(luò)能以超過(guò)95%的概率給出零功率類(lèi)別;當(dāng)微波爐關(guān)閉后,分解功率中的零功率概率也很快上升至90%,表明學(xué)生模型不需要額外引入二分類(lèi)的神經(jīng)網(wǎng)絡(luò)來(lái)降低用電器在不運(yùn)行狀態(tài)的功率分解誤差,這是因?yàn)橛糜谂袛嘤秒娖鲉⑼5亩诸?lèi)網(wǎng)絡(luò)已經(jīng)包含于對(duì)用電器功率類(lèi)別進(jìn)行多分類(lèi)的網(wǎng)絡(luò)中。
綜上所述,本文提出的教師網(wǎng)絡(luò)結(jié)合seq2seq、BiGRU、自注意力機(jī)制和殘差網(wǎng)絡(luò)的優(yōu)勢(shì),獲得了最低的功率分解誤差。為了降低參數(shù)量,定義了包含1層BiGRU的學(xué)生網(wǎng)絡(luò),并基于知識(shí)蒸餾和半監(jiān)督學(xué)習(xí)使用教師網(wǎng)絡(luò)輸出的功率概率分布指導(dǎo)學(xué)生網(wǎng)絡(luò)訓(xùn)練,充分利用了大量的無(wú)標(biāo)簽樣本,學(xué)習(xí)到了用電器功率序列的共性特征,以很少的參數(shù)量實(shí)現(xiàn)了與教師網(wǎng)絡(luò)相似的功率分解誤差。
本文提出了一種基于知識(shí)蒸餾技術(shù)和半監(jiān)督學(xué)習(xí)的非侵入式負(fù)荷分解算法。為了增強(qiáng)對(duì)有標(biāo)簽數(shù)據(jù)特征的學(xué)習(xí)能力,提出了結(jié)合seq2seq、BiGRU、自注意力機(jī)制和殘差網(wǎng)絡(luò)的大模型;通過(guò)BiGRU從前后2個(gè)方向輸入總功率序列;通過(guò)自注意力機(jī)制計(jì)算權(quán)重關(guān)注序列重要時(shí)刻;通過(guò)殘差網(wǎng)絡(luò)增強(qiáng)神經(jīng)網(wǎng)絡(luò)的擬合能力。為了充分利用無(wú)標(biāo)簽數(shù)據(jù),教師網(wǎng)絡(luò)輸入只有總功率信息的無(wú)標(biāo)簽數(shù)據(jù),學(xué)生網(wǎng)絡(luò)使用教師網(wǎng)絡(luò)輸出的功率概率分布進(jìn)行訓(xùn)練,學(xué)習(xí)了用電器功率序列的共性特征。
學(xué)生模型能夠在來(lái)自于新家庭的測(cè)試集上得到與教師網(wǎng)絡(luò)相近的功率分解誤差,并且在背景功率大且多用電器同時(shí)運(yùn)行的情況下也能具有與教師網(wǎng)絡(luò)相似的功率分解結(jié)果。
與教師網(wǎng)絡(luò)相比,學(xué)生網(wǎng)絡(luò)平均絕對(duì)誤差僅增加5.8%,但參數(shù)量減少了93.3%。與直接采用有標(biāo)簽數(shù)據(jù)進(jìn)行訓(xùn)練的相同結(jié)構(gòu)的小模型相比,學(xué)生網(wǎng)絡(luò)的功率分解誤差降低了51.4%。因此,本文所提出的算法能夠充分利用無(wú)標(biāo)簽數(shù)據(jù),在獲得精確的功率分解結(jié)果的同時(shí),縮小了神經(jīng)網(wǎng)絡(luò)的大小,減小了對(duì)計(jì)算性能的依賴(lài),降低了神經(jīng)網(wǎng)絡(luò)的落地成本,具有實(shí)際應(yīng)用價(jià)值。
在未來(lái)的研究中,如何從分解功率序列的概率分布中有效提取最可能的分解功率序列成為一個(gè)研究?jī)?nèi)容。