蔡云芹,王非
(華中科技大學電信學院,湖北 武漢 430074)
隨著電力系統(tǒng)信息化程度的不斷提高[1],通過用電數(shù)據(jù)來判斷客戶是否有異常用電行為已成為常用的方法。計量裝置故障或用戶竊電行為,均會導致采集到的數(shù)據(jù)是人為構(gòu)造的虛假數(shù)據(jù),這些虛假數(shù)據(jù)被稱為異常用電數(shù)據(jù)。異常用電數(shù)據(jù)會對供電公司供電秩序造成嚴重干擾和影響,因此及時排查異常用電情況一直是電力公司關(guān)注的重點問題,異常用電的檢測方法也受到廣大學者關(guān)注。
目前學術(shù)界所研究的異常用電檢測方法可以大致分為3類:基于系統(tǒng)狀態(tài)的異常用電檢測[2—4],基于博弈論的異常用電檢測[5—7]和基于數(shù)據(jù)驅(qū)動的異常用電檢測[8]。其中,基于系統(tǒng)狀態(tài)方法的理論基礎為電網(wǎng)的物理本質(zhì)決定了系統(tǒng)電壓、注入功率等物理量的量測結(jié)果應具有一致性[9]。該方法計算量大,所需數(shù)據(jù)多,且由于配電網(wǎng)的某些連接會發(fā)生變化,參數(shù)未必一成不變,存在收斂性問題。博弈論的方法是基于竊電用戶的決策集與正常用戶不同,最終影響雙方在電量分布上的不同。但博弈論的方法只經(jīng)過了理論推導和仿真,尚未經(jīng)過實證檢驗。
在當前海量數(shù)據(jù)環(huán)境下,基于數(shù)據(jù)驅(qū)動的異常用電檢測方法應用廣泛,該方法基本可分為3類:分類、回歸和聚類,其中分類方法應用最多。國內(nèi)外學者廣泛使用了許多基于機器學習的分類算法,主主要包括決策樹[10]、支持向量機[11—13]、K近鄰[14]和人工神經(jīng)網(wǎng)絡[15]等方法。文獻[2,5,16]分別提出了一些基于深度學習的異常用電檢測方法。這些研究成果的共同之處在于它們都是基于樣本的判決,單樣本覆蓋的時間周期較短。然而,要對一個用戶的用電行為是否存在異常進行判決,必須進行更長周期的分析。因此,上述方法面臨巨大的挑戰(zhàn),要么由于時間周期過長,數(shù)據(jù)維度太大而無法完成分析,要么由于異常比例在用戶間參差不齊,難以完成判決。
針對此問題,文中提出一種針對用戶級別的基于強化學習的異常用電判決方法。文中專注于判決閾值與判決比例的設計,首先分析了基于分類器方法的用戶級別判決的難點,然后提出了一種基于強化學習的異常用電判決模型,最后闡明試驗結(jié)果與結(jié)論。
在實際工程應用中,用戶級別的異常用電檢測是非常重要的,而目前的研究往往都是在樣本級別上的判決。通常單樣本覆蓋的時間周期較短,如果想要對用戶的長周期數(shù)據(jù)進行判決,直接將長周期(一個月乃至一年)的用電數(shù)據(jù)輸入到分類器中是不合適的。因為在長期的用電數(shù)據(jù)中,正常用電的數(shù)據(jù)比例較多,其中少部分的異常用電數(shù)據(jù)相當于噪聲,會嚴重影響分類器輸出的分類結(jié)果。且長期的用電數(shù)據(jù)直接輸入到分類器中,意味著檢測周期長,判決用戶是否有異常用電行為的延遲長,不符合實際應用需求場景。
通常的方法是將長周期分成數(shù)個短周期,得到數(shù)個短周期的判決結(jié)果,再使用簡單投票法,得到用戶級別的判決結(jié)果。這種方法雖簡單直觀,卻也存在著許多問題。
(1)不同用戶的有效用電數(shù)據(jù)可能長度差別較大,其異常比例會有較大區(qū)別。
例如一個新用戶只有20 d的用電數(shù)據(jù),而使用的投票閾值是針對老用戶100 d的用電數(shù)據(jù),新用戶剛好這20 d數(shù)據(jù)出現(xiàn)了幾天的異常,其異常比例相對較高,就超過了投票閾值,被判決為異常。但實際上通過后續(xù)觀察發(fā)現(xiàn),該用戶后期的用電數(shù)據(jù)都是正常數(shù)據(jù),并不是異常用電用戶。這就是由于待測用戶用電數(shù)據(jù)的有效長度差異較大,而投票閾值固定所引起的誤判。
(2)不同地區(qū)甚至是不同時間段的用戶用電數(shù)據(jù)分布差別較大,異常比例在用戶間參差不齊,較難以單一的固定票數(shù)比例去完成所有用戶的判決。
例如用戶數(shù)據(jù)顯示,A地異常用戶的異常用電天數(shù)占總用電天數(shù)比例偏高,而B地異常用戶的異常用電天數(shù)占用電天數(shù)比例偏低,則適用于A地區(qū)的投票閾值直接套用在B地區(qū)上,會有大量的異常用電用戶檢測不出,引起較大的誤判。
為了解決簡單投票法存在的上述各種問題,文中提出用動態(tài)的判決閾值與判決比例去做用戶級別的異常用電判決。具體方法是建立一個基于深度遞歸Q網(wǎng)絡(deep recurrent Q network,DRQN)的判決閾值優(yōu)化模型,來動態(tài)優(yōu)化判決閾值與判決比例。
Q學習(Q-Learning)算法屬于強化學習算法中的基礎算法,深度Q網(wǎng)絡(deep Q network,DQN)算法則是基于Q-Learning的一種流行的神經(jīng)網(wǎng)絡模型,DRQN算法則是在DQN算法上做了改進。
在傳統(tǒng)的Q-Learning算法中,智能體通過探索未知環(huán)境,得到每一個狀態(tài)s和在這個s下每個行為a所擁有的Q值。Q 值記錄了探索過程中連續(xù)動作的累積獎勵,將其儲存在 Q 表中,智能體依據(jù) Q 表,選擇使下一個狀態(tài) Q 值最大的動作采取行動。但在狀態(tài)空間無限的問題中,Q表根本無法在計算機中存儲。因此在這種情況下,Q表由Q值函數(shù)代替,而DQN正是用神經(jīng)網(wǎng)絡來逼近Q值函數(shù),DQN輸入當前的狀態(tài)值,輸出Q值最大的動作。
DRQN將DQN中的最后一層全連接層替換為長短期記憶(long short-term memory,LSTM)網(wǎng)絡,能夠輔助記憶更多的回合信息。DRQN的算法原理如圖1所示。
圖1 DRQN算法原理Fig.1 DRQN algorithm principle
在DRQN模型中,測試時由環(huán)境輸入當前狀態(tài)值s到Q網(wǎng)絡,Q網(wǎng)絡的輸出作為a,即所有動作的權(quán)值,對a進行argmax操作,得到所有動作的概率,然后按貪婪策略選擇動作輸入到環(huán)境函數(shù)中,得到下一步狀態(tài)值s′,完成一個回合中一步的探索,循環(huán)多步,完成智能體一個回合的探索。
在訓練DRQN的過程中,智能體首先需要探索一些回合,得到一些經(jīng)驗,存儲在記憶庫里,訓練時只從記憶庫中隨機采樣,s輸入到Q網(wǎng)絡中得到Q估計值Qeval,用這個估計值來逼近Q值,s′輸入到目標Q網(wǎng)絡中,得到Q目標值Qtarget,計算損失時用Qtarget加上獎懲值r,再減去Qeval。
環(huán)境函數(shù)由狀態(tài)與動作組成,輸入當前狀態(tài)值與選擇的動作值,輸出下一步的狀態(tài)值。在文中的方法中,狀態(tài)就是由判決閾值與判決比例組成的五維數(shù)組:
s=(x1,x2,x3,x4,x5)
(1)
式中:x1∈(0,Emax)為判決閾值1,Emax為用戶用電數(shù)據(jù)理論上的最大值;x2∈(0,Emax)為判決閾值2;x3∈(0,1)為超過判決閾值1的天數(shù)比例;x4∈(0,1)為超過判決閾值2的天數(shù)比例。將待測用戶數(shù)據(jù)超過閾值1的天數(shù)比例是否大于x3記為O1,超過閾值2的天數(shù)比例是否大于x4記為O2,x5決定O1和O2之間取與操作還是或操作。也就是說,s包含2個獨立的判決閾值,2個對應判決閾值的判決比例和最后2個結(jié)果O1,O2之間是取與還是或,由DRQN模型生成。為在下文中方便解釋,將判決閾值和判決天數(shù)比例合稱為判決閾值。在DRQN模型中,首先要初始化狀態(tài)即判決閾值,在網(wǎng)絡迭代后會輸出優(yōu)化后的判決閾值,作為本次用來判斷用戶是否屬于異常用電用戶的指標。
動作a是指對狀態(tài)s的五維數(shù)組分別進行加減,具體來說前四維分別是對應s的前四維進行加減固定值的操作,第五維則是選擇s的第五維是與操作還是或操作。
獎懲函數(shù)是由狀態(tài)s得到的獎懲值,s為當前狀態(tài),即網(wǎng)絡目前輸出的判決閾值,將此閾值與所有的用戶概率序列進行對比得到每個用戶的判決結(jié)果,在與正確用戶標簽進行比對后,得到當前閾值判決用戶異常用電與否的正確率,根據(jù)該正確率輸出獎懲值。
記憶庫在每個回合結(jié)束后,記錄下每步的當前狀態(tài)s,選擇動作值a,獎懲值r和下一步狀態(tài)s′,組成四元組(s,a,r,s′),存入記憶庫。當記憶庫容量開始溢出時,刪除最開始記錄的部分四元組數(shù)據(jù)。
DRQN包括2個結(jié)構(gòu)一樣的網(wǎng)絡:Q網(wǎng)絡和目標Q網(wǎng)絡。Q網(wǎng)絡由兩層全連接網(wǎng)絡和一層LSTM網(wǎng)絡組成,第一層全連接網(wǎng)絡的神經(jīng)元數(shù)量為10,第二層為50,LSTM網(wǎng)絡層的神經(jīng)元數(shù)量為64,輸入為s,輸出為Qeval,對Qeval進行argmax操作,得到概率值最大的動作。Q網(wǎng)絡的結(jié)構(gòu)如圖2所示。
圖2 Q網(wǎng)絡結(jié)構(gòu)Fig.2 Q network structure
目標Q網(wǎng)絡與Q網(wǎng)絡結(jié)構(gòu)完全一致,但是在訓練時凍結(jié)網(wǎng)絡參數(shù),只有Q網(wǎng)絡的網(wǎng)絡參數(shù)在進行學習,每隔固定步數(shù)k,目標Q網(wǎng)絡的網(wǎng)絡參數(shù)與Q網(wǎng)絡同步一次。
損失l由Q網(wǎng)絡的輸出Qeval,目標Q網(wǎng)絡的輸出Qtarget和r計算得到:
l=[Qtarget-(r+γQeval)]2
(2)
式中:γ為衰減系數(shù),屬于超參數(shù)。
在文中的模型中,智能體探索的一個回合,即是判決閾值尋優(yōu)完成的一個回合?;睾祥_始時狀態(tài)初始化,智能體選擇動作,得到下一步狀態(tài)值,如此循環(huán)探索完固定步數(shù)后,智能體探索的一個回合結(jié)束,之后再開始新的探索回合。
DRQN的訓練是穿插在智能體的探索中的,具體來說,智能體每在環(huán)境里探索若干步,得到若干步的狀態(tài)值與動作值,DRQN就訓練一次,并把這次探索的經(jīng)驗記錄下來,訓練流程如圖3所示。
圖3 DRQN訓練流程Fig.3 DRQN training process
(1)初始化Q網(wǎng)絡、目標Q網(wǎng)絡的模型參數(shù),清零記憶庫;
(2)初始化狀態(tài),將當前狀態(tài)值置為一個初始狀態(tài)值;
(3)將當前狀態(tài)輸入到Q網(wǎng)絡中,Q網(wǎng)絡輸出所選擇的動作,將動作輸入到環(huán)境函數(shù),得到下一步的狀態(tài)值,完成智能體的一步探索,并將當前的經(jīng)驗數(shù)據(jù)即四元組(s,a,r,s′)存入記憶庫;
(4)將(3)中的下一步狀態(tài)值s′作為當前步的狀態(tài)值,重復(3)若干步;
(5)智能體每探索ns步,判斷一次當前記憶庫所存儲的數(shù)據(jù)量是否滿足采樣訓練的要求,若不滿足則到(4)繼續(xù)累積經(jīng)驗數(shù)據(jù),若滿足則到(6)開始訓練;
(6)從記憶庫中采樣若干步的經(jīng)驗數(shù)據(jù),Q網(wǎng)絡開始學習,目標Q網(wǎng)絡參數(shù)凍結(jié),狀態(tài)值輸入到Q網(wǎng)絡,下一步狀態(tài)值輸入到目標Q網(wǎng)絡,計算出損失,進行反向傳播;
(7)判斷當前回合是否結(jié)束,若未結(jié)束,則繼續(xù)探索,一個回合智能體固定探索m步;
(8)判斷記憶庫的容量是否已滿,若已滿則刪除最先存儲的經(jīng)驗數(shù)據(jù),繼續(xù)添加當前經(jīng)驗數(shù)據(jù);
(9)判斷Q網(wǎng)絡的訓練回合數(shù)是否可以整除k,若是,則目標Q網(wǎng)絡拷貝一次Q網(wǎng)絡的網(wǎng)絡參數(shù),否則目標Q網(wǎng)絡的網(wǎng)絡參數(shù)固定不變;
(10)判斷智能體是否已經(jīng)完成了h個回合的探索,若是,則整個訓練流程結(jié)束,否則回到(2)重新開始新的回合的智能體探索。
文中提出的基于DRQN的判決模型能夠動態(tài)地對判決閾值進行優(yōu)化,在現(xiàn)場測試中的具體判決流程如圖4所示。
圖4 判決流程Fig.4 Judgment process
(1)將待測的長周期用戶數(shù)據(jù)分為多個短周期數(shù)據(jù),輸入到分類器中,輸出多個短周期對應的異常用電概率,組成概率序列;
(2)訓練好的DRQN模型輸出得到判決閾值;
(3)將(2)中的判決閾值和(1)中的概率序列進行比較,得出用戶異常與否的判決結(jié)果;
(4)工作人員依據(jù)判決結(jié)果去現(xiàn)場勘查一部分用戶,得到真實的用戶標簽,即反饋;
(5)將這部分反饋輸入到DRQN模型中,即將反饋得到的真實用戶標簽和用戶數(shù)據(jù)用來更新獎懲函數(shù),并重新將待測數(shù)據(jù)輸入到DRQN中,用新的獎懲函數(shù)進行迭代,將迭代結(jié)果存入到記憶庫;
(6)將(2)中得到的判決閾值作為初始狀態(tài)進行一次迭代,輸出得到新的判決閾值,閾值以此得到更新,因此稱為動態(tài)閾值;
(7)再將新的判決閾值用以測試后一批的待測數(shù)據(jù),若之后的測試數(shù)據(jù)得到反饋,可以重復(5)、(6),使模型更加適用于新待測數(shù)據(jù)分布。
所有訓練和測試數(shù)據(jù)均為電力公司提供的真實案例數(shù)據(jù),包含331戶用戶。其中205戶來自同一個地區(qū)A,每個用戶的時間跨度為1~300 d不等,但大多都在300 d左右,這205戶中又有160戶是三相四線的數(shù)據(jù),另外45戶是三相三線的數(shù)據(jù);另外126戶來自另一個地區(qū)B,時間跨度為8~30 d不等。每小時采樣一次用戶數(shù)據(jù),將一天的24個用電數(shù)據(jù)作為分類器的樣本,輸入到分類器中,得到該樣本的異常概率。一個用戶有nd天的用電數(shù)據(jù)(nd個分類器樣本),則分類器輸出長度為nd的概率序列,該序列用于文中試驗,序列中每個數(shù)字表示該用戶在某天的用電數(shù)據(jù)為異常的概率。
將來自A地的160名三相四線用戶的數(shù)據(jù)作為訓練集,45名三相三線用戶數(shù)據(jù)作為測試集1,用來測試模型面對不同種類數(shù)據(jù)的泛化能力,將來自B地的126名用戶的數(shù)據(jù)作為測試集2,用來測試模型面對不同地區(qū)、不同序列長度數(shù)據(jù)的泛化能力。數(shù)據(jù)集的概況如表1所示。
表1 數(shù)據(jù)集概況Table 1 Overview of data set
文中試驗所使用的分類器來自文獻[17],該分類器基于知識嵌入和殘差網(wǎng)絡,在文中數(shù)據(jù)集的樣本級上有較好的表現(xiàn),將一天24個用電數(shù)據(jù)作為一個樣本輸入到分類器中,F(xiàn)1分數(shù)最高能達0.73,受試者工作特征曲線的曲線下方面積(area under curve,AUC)分數(shù)最高能達0.95。
文中選擇通用的查全率R、查準率P作為評估指標,具體定義如下:
(3)
(4)
式中:NTP(真陽性)為正確檢測到的異常用電用戶數(shù);NFP(假陽性)為被歸類為正常的異常用電用戶數(shù);NFN(假陰性)為被歸類為異常用電用戶的正常用電用戶數(shù)。
文中的試驗分為2組,一組為基準測試,即簡單投票法,作為對比基準,沒有測試結(jié)果的反饋;一組為動態(tài)測試,將測試集的數(shù)據(jù)分批輸入進行測試,除了第一批次測試,后面每次測試都會將前一批次的試驗數(shù)據(jù)的真實標簽反饋給網(wǎng)絡。
5.3.1 靜態(tài)測試
基準測試為簡單投票法,將模型在訓練集上得到的閾值作為簡單投票法的投票閾值,與用戶的概率序列比較得到判決結(jié)果。在基準測試中,無論是對用電數(shù)據(jù)類型不同的測試集1,還是對地域不同的測試集2,都采用了固定的判決閾值與投票比例。
5.3.2 動態(tài)測試
動態(tài)測試是將待測數(shù)據(jù)分成nb批,第一次測試用最初的靜態(tài)閾值t1測試全部數(shù)據(jù),得到第一次測試的各項評估指標r1;然后得到第一批測試數(shù)據(jù)的測試反饋,即第一批數(shù)據(jù)的真實標簽,再將第一批數(shù)據(jù)及標簽輸入到DRQN中,開始新的探索回合,取回合最后一步的輸出作為動態(tài)閾值t2,用來測試除第一批以外的測試數(shù)據(jù),得到第二次測試的各項評估指標r2;再得到第二批測試數(shù)據(jù)的測試反饋,將第二批數(shù)據(jù)及標簽輸入到DRQN中,開始新的探索回合,得到動態(tài)閾值t3,用來測試除第一、二批以外的測試數(shù)據(jù),得到第三次測試的各項評估指標r3;以此類推,一直到得到倒數(shù)第二批的測試反饋,測試最后一批測試數(shù)據(jù),整個動態(tài)測試完成。
DRQN模型輸出閾值,動態(tài)測試每批次測試完畢,都會得到不同的判決閾值,故而輸出的閾值稱為動態(tài)閾值,因為閾值會根據(jù)上一批次測試反饋的結(jié)果而改變。
這樣設計動態(tài)試驗是為了展現(xiàn)模型的學習能力。在持續(xù)得到所測試數(shù)據(jù)結(jié)果反饋的情況下,DRQN的記憶庫與狀態(tài)空間會發(fā)生改變。試驗并非是對樣本級別的判決,而是對用戶級別的判決,在用戶的用電數(shù)據(jù)發(fā)生變化時(無論是因為時間還是地域不同而引起的變化),模型輸出的判決閾值隨用戶數(shù)據(jù)分布的改變而改變,從而能夠提升模型在不同數(shù)據(jù)分布下的泛化能力。
5.3.3 模型實現(xiàn)與參數(shù)設置
Tensorflow是由谷歌人工智能團隊開發(fā)的開源軟件庫,通常應用于各種機器學習算法的實現(xiàn),功能強大且在被廣泛應用在各種工程中。因此,文中的網(wǎng)絡模型是基于Tensorflow實現(xiàn)的。
文中的試驗設置為nd=20,m=400,k=300,h=1 000。優(yōu)化器選擇為RMSPropOptimizer,網(wǎng)絡模型包含兩層全連接網(wǎng)絡和一層LSTM網(wǎng)絡,神經(jīng)元數(shù)量如圖2所示。
5.4.1 基準測試結(jié)果
基準測試為一次性測試所有測試數(shù)據(jù),直接把判決閾值與待測數(shù)據(jù)作比較,試驗結(jié)果數(shù)據(jù)見表2。
表2 基準測試試驗結(jié)果Table 2 Benchmark experiment results %
基準測試在2個測試集上的混淆矩陣見表3。
表3 基準測試在各個測試集上的混淆矩陣Table 3 Confusion matrix of the benchmark on each test set
可以看出,模型得到的閾值在訓練集上效果良好,在測試集1上表現(xiàn)也尚可,在數(shù)據(jù)分布差異較大的測試集2上則效果較差。
5.4.2 動態(tài)測試結(jié)果
文中將測試集1的45份待測試數(shù)據(jù)分為3份,每份15個待測序列數(shù)據(jù);將測試集2的126份待測試數(shù)據(jù)分為6份,每份21個待測序列數(shù)據(jù)。在每個測試集上進行3次完整的動態(tài)測試,再將測試得到的評價指標結(jié)果進行平均,繪制成曲線圖,比較每次反饋后,相應的評價指標是否有所提升。動態(tài)試驗曲線如圖5、圖6所示。
圖5 測試集1上評價指標隨動態(tài)測試批數(shù)的變化Fig.5 Variation of evaluation index on test set 1 with the number of dynamic test batches
圖6 測試集2上評價指標隨動態(tài)測試批數(shù)的變化Fig.6 Variation of evaluation index on test set 2 with the number of dynamic test batches
將每次動態(tài)測試的混淆矩陣疊加在一起,與基準測試的混淆矩陣進行對比,3次動態(tài)測試各個批次在測試集上的混淆矩陣疊加后如表4所示。
表4 動態(tài)測試在各個測試集上的混淆矩陣Table 4 Confusion matrix of the dynamic test on each test set
由動態(tài)測試的結(jié)果可知,一旦引入被測數(shù)據(jù)的反饋,模型在新數(shù)據(jù)域上的適應能力會得到大幅度提升;而隨著引入的被測數(shù)據(jù)反饋增加,模型在各項指標上都有所提升。具體表現(xiàn)在測試集1查準率上升趨勢明顯,查全率稍有波動,但整體還是上升趨勢;在測試集2上,查全率的上升趨勢明顯,查準率則有一點波動,但最后還是呈現(xiàn)上升趨勢。
因此可以說明文中的模型在引入待測數(shù)據(jù)的反饋后,有較強的學習能力,能夠適應不同數(shù)據(jù)分布的待測數(shù)據(jù),在實際工程應用中有較強的靈活性。
針對異常用電長周期檢測所需的判決閾值問題,文中提出了一種新穎的基于強化學習的異常用電判決方法。試驗結(jié)果說明,在基于分類器的異常用電檢測中,通過強化學習生成的判決閾值可以有效提升用戶級別的判決準確率。其次,通過對比傳統(tǒng)投票法和文中方法在2個測試集上的表現(xiàn),得出文中方法表現(xiàn)均更加良好。
由此可以看出,文中模型能夠解決傳統(tǒng)投票法存在的一些問題,即不同用戶的有效用電數(shù)據(jù)可能長度差別較大,不同地區(qū)甚至是不同時間段的用戶用電數(shù)據(jù)分布差別較大,異常比例在用戶間參差不齊,難以以單一固定的票數(shù)比例去完成所有用戶的判決的問題。
文中提出的DRQN模型可以通過輸入待測數(shù)據(jù)的測試反饋來提升模型的泛化能力,在工程應用上更加靈活有效,異常用電檢測性能更加穩(wěn)定、可靠,可有效支撐實際環(huán)境中的異常用電識別。