蔡云芹,王非
(華中科技大學電信學院,湖北 武漢 430074)
隨著電力系統信息化程度的不斷提高[1],通過用電數據來判斷客戶是否有異常用電行為已成為常用的方法。計量裝置故障或用戶竊電行為,均會導致采集到的數據是人為構造的虛假數據,這些虛假數據被稱為異常用電數據。異常用電數據會對供電公司供電秩序造成嚴重干擾和影響,因此及時排查異常用電情況一直是電力公司關注的重點問題,異常用電的檢測方法也受到廣大學者關注。
目前學術界所研究的異常用電檢測方法可以大致分為3類:基于系統狀態的異常用電檢測[2—4],基于博弈論的異常用電檢測[5—7]和基于數據驅動的異常用電檢測[8]。其中,基于系統狀態方法的理論基礎為電網的物理本質決定了系統電壓、注入功率等物理量的量測結果應具有一致性[9]。該方法計算量大,所需數據多,且由于配電網的某些連接會發生變化,參數未必一成不變,存在收斂性問題。博弈論的方法是基于竊電用戶的決策集與正常用戶不同,最終影響雙方在電量分布上的不同。但博弈論的方法只經過了理論推導和仿真,尚未經過實證檢驗。
在當前海量數據環境下,基于數據驅動的異常用電檢測方法應用廣泛,該方法基本可分為3類:分類、回歸和聚類,其中分類方法應用最多。國內外學者廣泛使用了許多基于機器學習的分類算法,主主要包括決策樹[10]、支持向量機[11—13]、K近鄰[14]和人工神經網絡[15]等方法。文獻[2,5,16]分別提出了一些基于深度學習的異常用電檢測方法。這些研究成果的共同之處在于它們都是基于樣本的判決,單樣本覆蓋的時間周期較短。然而,要對一個用戶的用電行為是否存在異常進行判決,必須進行更長周期的分析。因此,上述方法面臨巨大的挑戰,要么由于時間周期過長,數據維度太大而無法完成分析,要么由于異常比例在用戶間參差不齊,難以完成判決。
針對此問題,文中提出一種針對用戶級別的基于強化學習的異常用電判決方法。文中專注于判決閾值與判決比例的設計,首先分析了基于分類器方法的用戶級別判決的難點,然后提出了一種基于強化學習的異常用電判決模型,最后闡明試驗結果與結論。
在實際工程應用中,用戶級別的異常用電檢測是非常重要的,而目前的研究往往都是在樣本級別上的判決。通常單樣本覆蓋的時間周期較短,如果想要對用戶的長周期數據進行判決,直接將長周期(一個月乃至一年)的用電數據輸入到分類器中是不合適的。因為在長期的用電數據中,正常用電的數據比例較多,其中少部分的異常用電數據相當于噪聲,會嚴重影響分類器輸出的分類結果。且長期的用電數據直接輸入到分類器中,意味著檢測周期長,判決用戶是否有異常用電行為的延遲長,不符合實際應用需求場景。
通常的方法是將長周期分成數個短周期,得到數個短周期的判決結果,再使用簡單投票法,得到用戶級別的判決結果。這種方法雖簡單直觀,卻也存在著許多問題。
(1)不同用戶的有效用電數據可能長度差別較大,其異常比例會有較大區別。
例如一個新用戶只有20 d的用電數據,而使用的投票閾值是針對老用戶100 d的用電數據,新用戶剛好這20 d數據出現了幾天的異常,其異常比例相對較高,就超過了投票閾值,被判決為異常。但實際上通過后續觀察發現,該用戶后期的用電數據都是正常數據,并不是異常用電用戶。這就是由于待測用戶用電數據的有效長度差異較大,而投票閾值固定所引起的誤判。
(2)不同地區甚至是不同時間段的用戶用電數據分布差別較大,異常比例在用戶間參差不齊,較難以單一的固定票數比例去完成所有用戶的判決。
例如用戶數據顯示,A地異常用戶的異常用電天數占總用電天數比例偏高,而B地異常用戶的異常用電天數占用電天數比例偏低,則適用于A地區的投票閾值直接套用在B地區上,會有大量的異常用電用戶檢測不出,引起較大的誤判。
為了解決簡單投票法存在的上述各種問題,文中提出用動態的判決閾值與判決比例去做用戶級別的異常用電判決。具體方法是建立一個基于深度遞歸Q網絡(deep recurrent Q network,DRQN)的判決閾值優化模型,來動態優化判決閾值與判決比例。
Q學習(Q-Learning)算法屬于強化學習算法中的基礎算法,深度Q網絡(deep Q network,DQN)算法則是基于Q-Learning的一種流行的神經網絡模型,DRQN算法則是在DQN算法上做了改進。
在傳統的Q-Learning算法中,智能體通過探索未知環境,得到每一個狀態s和在這個s下每個行為a所擁有的Q值。Q 值記錄了探索過程中連續動作的累積獎勵,將其儲存在 Q 表中,智能體依據 Q 表,選擇使下一個狀態 Q 值最大的動作采取行動。但在狀態空間無限的問題中,Q表根本無法在計算機中存儲。因此在這種情況下,Q表由Q值函數代替,而DQN正是用神經網絡來逼近Q值函數,DQN輸入當前的狀態值,輸出Q值最大的動作。
DRQN將DQN中的最后一層全連接層替換為長短期記憶(long short-term memory,LSTM)網絡,能夠輔助記憶更多的回合信息。DRQN的算法原理如圖1所示。

圖1 DRQN算法原理Fig.1 DRQN algorithm principle
在DRQN模型中,測試時由環境輸入當前狀態值s到Q網絡,Q網絡的輸出作為a,即所有動作的權值,對a進行argmax操作,得到所有動作的概率,然后按貪婪策略選擇動作輸入到環境函數中,得到下一步狀態值s′,完成一個回合中一步的探索,循環多步,完成智能體一個回合的探索。
在訓練DRQN的過程中,智能體首先需要探索一些回合,得到一些經驗,存儲在記憶庫里,訓練時只從記憶庫中隨機采樣,s輸入到Q網絡中得到Q估計值Qeval,用這個估計值來逼近Q值,s′輸入到目標Q網絡中,得到Q目標值Qtarget,計算損失時用Qtarget加上獎懲值r,再減去Qeval。
環境函數由狀態與動作組成,輸入當前狀態值與選擇的動作值,輸出下一步的狀態值。在文中的方法中,狀態就是由判決閾值與判決比例組成的五維數組:
s=(x1,x2,x3,x4,x5)
(1)
式中:x1∈(0,Emax)為判決閾值1,Emax為用戶用電數據理論上的最大值;x2∈(0,Emax)為判決閾值2;x3∈(0,1)為超過判決閾值1的天數比例;x4∈(0,1)為超過判決閾值2的天數比例。將待測用戶數據超過閾值1的天數比例是否大于x3記為O1,超過閾值2的天數比例是否大于x4記為O2,x5決定O1和O2之間取與操作還是或操作。也就是說,s包含2個獨立的判決閾值,2個對應判決閾值的判決比例和最后2個結果O1,O2之間是取與還是或,由DRQN模型生成。為在下文中方便解釋,將判決閾值和判決天數比例合稱為判決閾值。在DRQN模型中,首先要初始化狀態即判決閾值,在網絡迭代后會輸出優化后的判決閾值,作為本次用來判斷用戶是否屬于異常用電用戶的指標。
動作a是指對狀態s的五維數組分別進行加減,具體來說前四維分別是對應s的前四維進行加減固定值的操作,第五維則是選擇s的第五維是與操作還是或操作。
獎懲函數是由狀態s得到的獎懲值,s為當前狀態,即網絡目前輸出的判決閾值,將此閾值與所有的用戶概率序列進行對比得到每個用戶的判決結果,在與正確用戶標簽進行比對后,得到當前閾值判決用戶異常用電與否的正確率,根據該正確率輸出獎懲值。
記憶庫在每個回合結束后,記錄下每步的當前狀態s,選擇動作值a,獎懲值r和下一步狀態s′,組成四元組(s,a,r,s′),存入記憶庫。當記憶庫容量開始溢出時,刪除最開始記錄的部分四元組數據。
DRQN包括2個結構一樣的網絡:Q網絡和目標Q網絡。Q網絡由兩層全連接網絡和一層LSTM網絡組成,第一層全連接網絡的神經元數量為10,第二層為50,LSTM網絡層的神經元數量為64,輸入為s,輸出為Qeval,對Qeval進行argmax操作,得到概率值最大的動作。Q網絡的結構如圖2所示。

圖2 Q網絡結構Fig.2 Q network structure
目標Q網絡與Q網絡結構完全一致,但是在訓練時凍結網絡參數,只有Q網絡的網絡參數在進行學習,每隔固定步數k,目標Q網絡的網絡參數與Q網絡同步一次。
損失l由Q網絡的輸出Qeval,目標Q網絡的輸出Qtarget和r計算得到:
l=[Qtarget-(r+γQeval)]2
(2)
式中:γ為衰減系數,屬于超參數。
在文中的模型中,智能體探索的一個回合,即是判決閾值尋優完成的一個回合。回合開始時狀態初始化,智能體選擇動作,得到下一步狀態值,如此循環探索完固定步數后,智能體探索的一個回合結束,之后再開始新的探索回合。
DRQN的訓練是穿插在智能體的探索中的,具體來說,智能體每在環境里探索若干步,得到若干步的狀態值與動作值,DRQN就訓練一次,并把這次探索的經驗記錄下來,訓練流程如圖3所示。

圖3 DRQN訓練流程Fig.3 DRQN training process
(1)初始化Q網絡、目標Q網絡的模型參數,清零記憶庫;
(2)初始化狀態,將當前狀態值置為一個初始狀態值;
(3)將當前狀態輸入到Q網絡中,Q網絡輸出所選擇的動作,將動作輸入到環境函數,得到下一步的狀態值,完成智能體的一步探索,并將當前的經驗數據即四元組(s,a,r,s′)存入記憶庫;
(4)將(3)中的下一步狀態值s′作為當前步的狀態值,重復(3)若干步;
(5)智能體每探索ns步,判斷一次當前記憶庫所存儲的數據量是否滿足采樣訓練的要求,若不滿足則到(4)繼續累積經驗數據,若滿足則到(6)開始訓練;
(6)從記憶庫中采樣若干步的經驗數據,Q網絡開始學習,目標Q網絡參數凍結,狀態值輸入到Q網絡,下一步狀態值輸入到目標Q網絡,計算出損失,進行反向傳播;
(7)判斷當前回合是否結束,若未結束,則繼續探索,一個回合智能體固定探索m步;
(8)判斷記憶庫的容量是否已滿,若已滿則刪除最先存儲的經驗數據,繼續添加當前經驗數據;
(9)判斷Q網絡的訓練回合數是否可以整除k,若是,則目標Q網絡拷貝一次Q網絡的網絡參數,否則目標Q網絡的網絡參數固定不變;
(10)判斷智能體是否已經完成了h個回合的探索,若是,則整個訓練流程結束,否則回到(2)重新開始新的回合的智能體探索。
文中提出的基于DRQN的判決模型能夠動態地對判決閾值進行優化,在現場測試中的具體判決流程如圖4所示。

圖4 判決流程Fig.4 Judgment process
(1)將待測的長周期用戶數據分為多個短周期數據,輸入到分類器中,輸出多個短周期對應的異常用電概率,組成概率序列;
(2)訓練好的DRQN模型輸出得到判決閾值;
(3)將(2)中的判決閾值和(1)中的概率序列進行比較,得出用戶異常與否的判決結果;
(4)工作人員依據判決結果去現場勘查一部分用戶,得到真實的用戶標簽,即反饋;
(5)將這部分反饋輸入到DRQN模型中,即將反饋得到的真實用戶標簽和用戶數據用來更新獎懲函數,并重新將待測數據輸入到DRQN中,用新的獎懲函數進行迭代,將迭代結果存入到記憶庫;
(6)將(2)中得到的判決閾值作為初始狀態進行一次迭代,輸出得到新的判決閾值,閾值以此得到更新,因此稱為動態閾值;
(7)再將新的判決閾值用以測試后一批的待測數據,若之后的測試數據得到反饋,可以重復(5)、(6),使模型更加適用于新待測數據分布。
所有訓練和測試數據均為電力公司提供的真實案例數據,包含331戶用戶。其中205戶來自同一個地區A,每個用戶的時間跨度為1~300 d不等,但大多都在300 d左右,這205戶中又有160戶是三相四線的數據,另外45戶是三相三線的數據;另外126戶來自另一個地區B,時間跨度為8~30 d不等。每小時采樣一次用戶數據,將一天的24個用電數據作為分類器的樣本,輸入到分類器中,得到該樣本的異常概率。一個用戶有nd天的用電數據(nd個分類器樣本),則分類器輸出長度為nd的概率序列,該序列用于文中試驗,序列中每個數字表示該用戶在某天的用電數據為異常的概率。
將來自A地的160名三相四線用戶的數據作為訓練集,45名三相三線用戶數據作為測試集1,用來測試模型面對不同種類數據的泛化能力,將來自B地的126名用戶的數據作為測試集2,用來測試模型面對不同地區、不同序列長度數據的泛化能力。數據集的概況如表1所示。

表1 數據集概況Table 1 Overview of data set
文中試驗所使用的分類器來自文獻[17],該分類器基于知識嵌入和殘差網絡,在文中數據集的樣本級上有較好的表現,將一天24個用電數據作為一個樣本輸入到分類器中,F1分數最高能達0.73,受試者工作特征曲線的曲線下方面積(area under curve,AUC)分數最高能達0.95。
文中選擇通用的查全率R、查準率P作為評估指標,具體定義如下:
(3)
(4)
式中:NTP(真陽性)為正確檢測到的異常用電用戶數;NFP(假陽性)為被歸類為正常的異常用電用戶數;NFN(假陰性)為被歸類為異常用電用戶的正常用電用戶數。
文中的試驗分為2組,一組為基準測試,即簡單投票法,作為對比基準,沒有測試結果的反饋;一組為動態測試,將測試集的數據分批輸入進行測試,除了第一批次測試,后面每次測試都會將前一批次的試驗數據的真實標簽反饋給網絡。
5.3.1 靜態測試
基準測試為簡單投票法,將模型在訓練集上得到的閾值作為簡單投票法的投票閾值,與用戶的概率序列比較得到判決結果。在基準測試中,無論是對用電數據類型不同的測試集1,還是對地域不同的測試集2,都采用了固定的判決閾值與投票比例。
5.3.2 動態測試
動態測試是將待測數據分成nb批,第一次測試用最初的靜態閾值t1測試全部數據,得到第一次測試的各項評估指標r1;然后得到第一批測試數據的測試反饋,即第一批數據的真實標簽,再將第一批數據及標簽輸入到DRQN中,開始新的探索回合,取回合最后一步的輸出作為動態閾值t2,用來測試除第一批以外的測試數據,得到第二次測試的各項評估指標r2;再得到第二批測試數據的測試反饋,將第二批數據及標簽輸入到DRQN中,開始新的探索回合,得到動態閾值t3,用來測試除第一、二批以外的測試數據,得到第三次測試的各項評估指標r3;以此類推,一直到得到倒數第二批的測試反饋,測試最后一批測試數據,整個動態測試完成。
DRQN模型輸出閾值,動態測試每批次測試完畢,都會得到不同的判決閾值,故而輸出的閾值稱為動態閾值,因為閾值會根據上一批次測試反饋的結果而改變。
這樣設計動態試驗是為了展現模型的學習能力。在持續得到所測試數據結果反饋的情況下,DRQN的記憶庫與狀態空間會發生改變。試驗并非是對樣本級別的判決,而是對用戶級別的判決,在用戶的用電數據發生變化時(無論是因為時間還是地域不同而引起的變化),模型輸出的判決閾值隨用戶數據分布的改變而改變,從而能夠提升模型在不同數據分布下的泛化能力。
5.3.3 模型實現與參數設置
Tensorflow是由谷歌人工智能團隊開發的開源軟件庫,通常應用于各種機器學習算法的實現,功能強大且在被廣泛應用在各種工程中。因此,文中的網絡模型是基于Tensorflow實現的。
文中的試驗設置為nd=20,m=400,k=300,h=1 000。優化器選擇為RMSPropOptimizer,網絡模型包含兩層全連接網絡和一層LSTM網絡,神經元數量如圖2所示。
5.4.1 基準測試結果
基準測試為一次性測試所有測試數據,直接把判決閾值與待測數據作比較,試驗結果數據見表2。

表2 基準測試試驗結果Table 2 Benchmark experiment results %
基準測試在2個測試集上的混淆矩陣見表3。

表3 基準測試在各個測試集上的混淆矩陣Table 3 Confusion matrix of the benchmark on each test set
可以看出,模型得到的閾值在訓練集上效果良好,在測試集1上表現也尚可,在數據分布差異較大的測試集2上則效果較差。
5.4.2 動態測試結果
文中將測試集1的45份待測試數據分為3份,每份15個待測序列數據;將測試集2的126份待測試數據分為6份,每份21個待測序列數據。在每個測試集上進行3次完整的動態測試,再將測試得到的評價指標結果進行平均,繪制成曲線圖,比較每次反饋后,相應的評價指標是否有所提升。動態試驗曲線如圖5、圖6所示。

圖5 測試集1上評價指標隨動態測試批數的變化Fig.5 Variation of evaluation index on test set 1 with the number of dynamic test batches

圖6 測試集2上評價指標隨動態測試批數的變化Fig.6 Variation of evaluation index on test set 2 with the number of dynamic test batches
將每次動態測試的混淆矩陣疊加在一起,與基準測試的混淆矩陣進行對比,3次動態測試各個批次在測試集上的混淆矩陣疊加后如表4所示。

表4 動態測試在各個測試集上的混淆矩陣Table 4 Confusion matrix of the dynamic test on each test set
由動態測試的結果可知,一旦引入被測數據的反饋,模型在新數據域上的適應能力會得到大幅度提升;而隨著引入的被測數據反饋增加,模型在各項指標上都有所提升。具體表現在測試集1查準率上升趨勢明顯,查全率稍有波動,但整體還是上升趨勢;在測試集2上,查全率的上升趨勢明顯,查準率則有一點波動,但最后還是呈現上升趨勢。
因此可以說明文中的模型在引入待測數據的反饋后,有較強的學習能力,能夠適應不同數據分布的待測數據,在實際工程應用中有較強的靈活性。
針對異常用電長周期檢測所需的判決閾值問題,文中提出了一種新穎的基于強化學習的異常用電判決方法。試驗結果說明,在基于分類器的異常用電檢測中,通過強化學習生成的判決閾值可以有效提升用戶級別的判決準確率。其次,通過對比傳統投票法和文中方法在2個測試集上的表現,得出文中方法表現均更加良好。
由此可以看出,文中模型能夠解決傳統投票法存在的一些問題,即不同用戶的有效用電數據可能長度差別較大,不同地區甚至是不同時間段的用戶用電數據分布差別較大,異常比例在用戶間參差不齊,難以以單一固定的票數比例去完成所有用戶的判決的問題。
文中提出的DRQN模型可以通過輸入待測數據的測試反饋來提升模型的泛化能力,在工程應用上更加靈活有效,異常用電檢測性能更加穩定、可靠,可有效支撐實際環境中的異常用電識別。