唐璐,顏鐘宗,溫和,唐立軍
(1. 湖南大學(xué)電氣與信息工程學(xué)院,長沙 410082;2. 云南電網(wǎng)有限責(zé)任公司電力科學(xué)研究院,昆明 650217)
負(fù)荷監(jiān)測分為侵入式負(fù)荷監(jiān)測和非侵入式負(fù)荷監(jiān)測兩種。侵入式負(fù)荷監(jiān)測需要在每個用電器前段接入電力采集部分,對每個用電器進行實時監(jiān)測與分析。但這種方法需要硬件多,工作量大,不適合家庭普及。而非侵入式負(fù)荷監(jiān)測只需在電表上增加模塊,利用電表采集的電力數(shù)據(jù)進行分析即可,其成本相對較低,可行性高。在非侵入式負(fù)荷監(jiān)測中利用非侵入式負(fù)荷識別得到對應(yīng)用電器的種類,通過進一步處理便可得到各用電器的用電情況。因此,非侵入式負(fù)荷識別可為電力的合理應(yīng)用提供有力依據(jù)。
國內(nèi)外學(xué)者對非侵入式負(fù)荷識別開展了研究工作,取得了進展和突破。文獻[1]對家用電器的穩(wěn)態(tài)特征和暫態(tài)特征進行了分析,提取了多種家用電器的特征參數(shù)。還提出了k-means聚類的改進算法用于家用空調(diào)負(fù)荷的非侵入式負(fù)荷分解。文獻[2]提出了采用神經(jīng)網(wǎng)絡(luò)的方法對負(fù)荷進行識別,其關(guān)鍵在于提取家用電器啟動時的特征。文中提出其算法可以監(jiān)測到家用電器的運行情況,并據(jù)此對電器的用電量進行分析。文獻[3]采用了深度學(xué)習(xí)的方法進行非侵入式負(fù)荷分解,對多種深度學(xué)習(xí)網(wǎng)絡(luò)進行了比較,提出了GRU網(wǎng)絡(luò)結(jié)構(gòu)具有最好的負(fù)荷分解性能。文獻[4]提出了基于聚類融合的負(fù)荷曲線聚類研究算法,并根據(jù)負(fù)荷曲線的不同建立了深度學(xué)習(xí)模型。最后指出深度學(xué)習(xí)的方法在非侵入式負(fù)荷識別上具有良好的性能。文獻[5]提出了電能質(zhì)量擾動識別的深度學(xué)習(xí)方法,對非侵入式負(fù)荷識別具有一定的借鑒意義。文獻[6]運用了決策樹、最近鄰方法進行負(fù)荷識別,在實驗中獲得了較理想的效果,在其后期工作中,還需要增加負(fù)荷的特征數(shù)據(jù)庫來對文獻中的算法進行優(yōu)化。文獻[7]提出改進最近鄰法與支持向量機相結(jié)合進行住宅的非侵入式負(fù)荷識別,研究了多種負(fù)荷同時運行情況下如何對負(fù)荷進行分類識別,取得了一定的研究成果。
近些年來,隨著深層網(wǎng)絡(luò)有效訓(xùn)練算法的提出,深度學(xué)習(xí)以其強大的表示學(xué)習(xí)能力在多個領(lǐng)域取得了成功。與傳統(tǒng)的機器學(xué)習(xí)方法相比,深度學(xué)習(xí)在復(fù)雜識別任務(wù)上識別準(zhǔn)確率更高,泛化性能更好。因此,深度學(xué)習(xí)具有解決非侵入式負(fù)荷識別任務(wù)的潛在優(yōu)勢。
本文提出基于卷積神經(jīng)網(wǎng)絡(luò)的非侵入式負(fù)荷識別方法。首先對電阻類負(fù)荷、電容類負(fù)荷、電感類負(fù)荷進行數(shù)學(xué)建模,并結(jié)合tracebase master數(shù)據(jù)集構(gòu)建樣本庫;然后建立卷積神經(jīng)網(wǎng)絡(luò)模型,損失函數(shù)為交叉熵函數(shù),優(yōu)化算法采用自適應(yīng)矩估計優(yōu)化算法;最后對網(wǎng)絡(luò)進行訓(xùn)練和測試。
非侵入式識別首先要進行的就是獲取數(shù)據(jù),根據(jù)一定的規(guī)則對數(shù)據(jù)進行處理,把數(shù)據(jù)分為訓(xùn)練集和測試集。然后搭建深度學(xué)習(xí)模型,決定模型的各個初始參數(shù)。之后用獲取的數(shù)據(jù)對深度學(xué)習(xí)模型進行訓(xùn)練。最后用訓(xùn)練好的模型對負(fù)荷進行識別。非侵入式負(fù)荷識別的基本思路如圖1所示。
圖1 非侵入式負(fù)荷識別的基本思路
電力負(fù)荷本身的參數(shù)影響因素眾多,數(shù)學(xué)模型的建立過于復(fù)雜,因此本文對電力負(fù)荷模型進行理想化和近似化,用電力擾動模型和電壓與電流之間的相位變化來代替電力負(fù)荷模型。通過對替代的模型的分類識別來達到對非侵入式負(fù)荷識別方法的研究的目的。
目前,本文采用了三個電力負(fù)荷模型,分別為電阻類負(fù)荷、電容類負(fù)荷、電感類負(fù)荷,其數(shù)學(xué)表達式見式(1)。
式 中,a=0.5,t1=0,t2=10,a3=a5=a7=0.1,θ 在0.01到1.57之間隨機變化,第一個正弦函數(shù)代表電壓值,最后的正弦函數(shù)代表電流值,θ代表相位的變化。p代表在某一時刻的瞬時功率,t取整數(shù),采樣頻率也就相當(dāng)于是波形頻率的2π倍。第一行公式表示理想電壓與同相位的理想電流相乘,第二行公式表示電壓暫降與同相位的理想電流相乘,代表電阻類負(fù)荷。第三行公式表示含有諧波的電壓與相位超前的理想電流相乘,第四行公式表示理想電壓與相位超前的理想電流相乘,代表電容類負(fù)荷。第五行公式表示電壓暫降與相位滯后的理想電流相乘,第六行公式表示含有諧波的電壓與相位滯后的理想電流相乘,代表電感類負(fù)荷。
為了使產(chǎn)生的數(shù)據(jù)具有多樣性,本文采用了加減隨機數(shù)的方法。通過加減隨機數(shù)產(chǎn)生足夠多的數(shù)據(jù)來進行訓(xùn)練和驗證。在產(chǎn)生數(shù)據(jù)的同時,給每個數(shù)據(jù)賦予類別標(biāo)記。然后把產(chǎn)生的數(shù)據(jù)分為訓(xùn)練集和驗證集。
圖2 臺式電腦公開數(shù)據(jù)集
此外,本文還采用了公開數(shù)據(jù)集tracebase master數(shù)據(jù)集,它通過插座采集插入電器的電壓電流參數(shù),并計算1s內(nèi)的平均功率和8s內(nèi)的平均功率,然后以CSV格式存儲采集的信息。假設(shè)在總線的每一時刻只有一個電器在工作或沒有電器在工作,那么在總線上采數(shù)據(jù)和在插座上采數(shù)據(jù)的結(jié)果是一樣的。圖2為臺式電腦公開數(shù)據(jù)集。
卷積神經(jīng)網(wǎng)絡(luò)模型由兩個卷積層,兩個池化層,一個密集連接層,一個Dropout層組成。第一個卷積層的卷積核為5*5大小的矩陣,共有32個卷積核,神經(jīng)元的激活函數(shù)為RELU函數(shù),后跟一個2*2大小的池化層。第二個卷積層的卷積核為5*5*32的矩陣,共有六十四個卷積核,神經(jīng)元的激活函數(shù)為RELU函數(shù),后跟一個2*2大小的池化層。池化層的目的是減少計算量。密集連接層有一百個神經(jīng)元,負(fù)責(zé)提取經(jīng)過卷積計算后的特征。Dropout層可使神經(jīng)元按比例失效,用來防止過擬合。輸出層的激活函數(shù)選擇softmax函數(shù)。卷積神經(jīng)網(wǎng)絡(luò)的損失函數(shù)也選為了“交叉熵”函數(shù),而優(yōu)化算法則選了自適應(yīng)矩估計優(yōu)化算法。卷積神經(jīng)網(wǎng)絡(luò)模型的結(jié)構(gòu)如圖3所示。
圖3 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模型
本文選擇Python語言里的TensorFlow深度學(xué)習(xí)框架作為卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)平臺。運用TensorFlow搭建深度學(xué)習(xí)的模型是十分方便的,整個過程體現(xiàn)了模塊化的思想。首先,進行搭建模型的前期準(zhǔn)備工作,如對數(shù)據(jù)進行必要的處理。利用Python的一些插件和自帶的庫函數(shù),可以很方便的對數(shù)據(jù)進行處理。然后對一些反復(fù)用到的參數(shù)賦初值,以便對其需要改動。然后定義輸入數(shù)據(jù)的形狀,一層一層的搭建深度學(xué)習(xí)模型的結(jié)構(gòu)。深度學(xué)習(xí)模型的區(qū)別主要體現(xiàn)在這一步,實驗人員可以決定搭建的層數(shù)和每層神經(jīng)元的個數(shù),之后修改時也十分方便,只需刪除相應(yīng)的層數(shù)和修改神經(jīng)元個數(shù)的值就可以。搭建好層數(shù)后整個模型的前向結(jié)構(gòu)就完成了。接下來就是和更改模型的訓(xùn)練參數(shù)有關(guān)的內(nèi)容了。如要定義損失函數(shù)的形式,根據(jù)訓(xùn)練深度學(xué)習(xí)網(wǎng)絡(luò)的目的可以確定自己所需要的損失函數(shù)。之后是優(yōu)化函數(shù)的選擇,非常方便的一點是TensorFlow已經(jīng)實現(xiàn)了絕大多數(shù)的優(yōu)化函數(shù),本文編程時只需要直接調(diào)用相應(yīng)的庫即可。確定好優(yōu)化函數(shù)后,就可以編寫能正確計算正確率的函數(shù),當(dāng)本文對模型進行評判時,它可以給評判結(jié)果一定的參考。至此,搭建模型的工作便已經(jīng)完成了。之后就可以選擇啟動TensorFlow的計算圖對模型進行訓(xùn)練,也可以選擇導(dǎo)入之前訓(xùn)練好的參數(shù)做一些其他的工作。導(dǎo)入或保存模型的參數(shù)在TensorFlow中也是十分方便的,只需調(diào)用類的方法即可。TensorFlow還支持?jǐn)?shù)據(jù)的可視化,通過TensorBoard工具觀察訓(xùn)練過程中數(shù)據(jù)的變化十分方便,同時模型的結(jié)構(gòu)也可以被顯示出來,這對調(diào)整模型的結(jié)構(gòu)非常有利。
在TensorFlow平臺上搭建好模型后,本文就需要用數(shù)據(jù)集對搭建的模型進行訓(xùn)練了。首先選用模擬數(shù)據(jù)集對深度學(xué)習(xí)模型進行訓(xùn)練。
模擬數(shù)據(jù)產(chǎn)生的數(shù)據(jù)集共有1200組數(shù)據(jù),每組數(shù)據(jù)包含144個點。其中600組為訓(xùn)練集,600組為驗證集。訓(xùn)練時采用批訓(xùn)練法,每次訓(xùn)練從訓(xùn)練集中隨機抓取100組數(shù)據(jù)。每訓(xùn)練100次輸出在驗證集和訓(xùn)練集上的正確率,以作比較。由于卷積神經(jīng)網(wǎng)絡(luò)模型要求輸入為二維矩陣的形式,因此在進行卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練時,需要把每組數(shù)據(jù)的144個點重整為12*12的矩陣。在進行循環(huán)神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練時,循環(huán)神經(jīng)網(wǎng)絡(luò)要求數(shù)據(jù)呈序列輸入,因此把每組數(shù)據(jù)的144個點重整為1*144的矩陣,其中1代表序列的長度,144代表序列中每個單位的特征數(shù)量。
每個模型都經(jīng)過了反復(fù)的訓(xùn)練,以用來確定最適合模型的訓(xùn)練步長和訓(xùn)練次數(shù),以下展示各個模型經(jīng)過調(diào)整后的訓(xùn)練過程。
卷積神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練步長為0.0001,訓(xùn)練次數(shù)為5000次。訓(xùn)練過程如圖4所示。從圖4中可以看出,正確率隨著訓(xùn)練的次數(shù)的增加總體也在增加,在訓(xùn)練的前半段,正確率的波動不大,在訓(xùn)練的后半段,正確率有較大的起伏,正確率最高達到了99.7%,最終正確率為99.3%。
本文采用循環(huán)神經(jīng)網(wǎng)絡(luò)模型作為對比,其訓(xùn)練步長為0.0001,訓(xùn)練次數(shù)為1000次。訓(xùn)練過程如圖4所示。從圖5中可以看出,正確率在整個訓(xùn)練過程中總趨勢基本不變,最高正確率不超過53.0%,整體正確率在33.3%附近擺動。
圖4 卷積神經(jīng)網(wǎng)絡(luò)模型識別結(jié)果
圖5 循環(huán)神經(jīng)網(wǎng)絡(luò)模型識別結(jié)果
針對非侵入式負(fù)荷識別中識別準(zhǔn)確率不高的問題,提出基于卷積神經(jīng)網(wǎng)絡(luò)的非侵入式負(fù)荷識別方法。與循環(huán)神經(jīng)網(wǎng)絡(luò)等方法相比,本文的方法能夠有效識別非侵入式負(fù)荷,并具有很好的抗噪性能,具有良好的應(yīng)用前景。