之前連載的負荷預測,都是使用傳統(tǒng)機器學習的方法,這一期我們將使用工業(yè)領域中大放異彩的循環(huán)神經(jīng)網(wǎng)絡:長短期記憶網(wǎng)絡(LSTM)。 LSTM是一種時間遞歸神經(jīng)網(wǎng)絡,適用于處理和預測時間序列,基于LSTM的系統(tǒng)可以進行機器翻譯,語音識別,文本識別,詩歌合成,自動駕駛等任務。電量的負荷值也是一個時間序列,使用LSTM的預測效果如何?今天小編帶大家來看一下。 LSTM模型介紹相對RNN,LSTM的結(jié)構更復雜。如圖一所示:LSTM由三個門組成:遺忘門,輸入門和輸出門。遺忘門決定有多少信息被忘記,輸入門決定保留哪些信息,輸出門輸出結(jié)果。LSTM就是在RNN的基礎上,增加了對過去狀態(tài)的過濾,從而可以選擇哪些狀態(tài)對當前更有影響,而不是簡單的選擇最近的狀態(tài)。 在訓練的過程中,RNN的訓練特別困難,因為RNN梯度被表示為連成積的形式,導致梯度消失。而LSTM則很好的解決了這個問題:如圖二公式展示的那樣,最終的細胞狀態(tài)是由遺忘門和輸入門的計算結(jié)果求和得到的,這樣的梯度表示為累加的形式,避免了梯度消失。 圖一: RNN和LSTM結(jié)構圖 圖二: 細胞狀態(tài)更新 除了上圖展示的LSTM以外,還出現(xiàn)了一些LSTM的變體。 如圖三所示:單向LSTM和反向的LSTM結(jié)合成雙向BiLSTM(雙向LSTM)。單向LSTM關注的是過去對未來的影響,而反向LSTM關注的是未來對過去的影響,兩個方向的網(wǎng)絡結(jié)合到一起就能關聯(lián)歷史與未來。 舉個例子:我明天去___一天。假如有2個選擇項:喝水,上班。如果是單向的LSTM,只考慮前面的詞,兩個選項都滿足條件,但是從后面的詞看,"喝水一天"顯然不合常規(guī),而反向的LSTM就可以考慮后面語句對前面選項的影響。 圖三: BiLSTM結(jié)構圖 LSTM 是我們在 RNN 中獲得的重要成功。很自然地,我們也會考慮:哪里會有更加重大的突破呢?——那就是注意力模型。注意力模型借鑒了人類的注意力機制,人的大腦在掃描全局圖像時,獲得需要關注的目標區(qū)域,然后把焦點投入到目標區(qū)域,以獲取更多的目標區(qū)域的信息,同時抑制其他目標區(qū)域的信息。 如圖四所示:在LSTM的輸入層前加入AM(注意力模型),對歷史的輸入序列進行篩選,計算所有歷史輸入序列的權重, 權重高的信息會被關注,權重低的信息會被抑制,然后將歷史輸入序列的加權結(jié)果輸入到LSTM模型中。 圖四: LSTM with AM 梯度消失和梯度爆炸梯度消失和梯度爆炸是神經(jīng)網(wǎng)絡模型的通病。LSTM模型本身克服了梯度消失的問題,對于梯度爆炸,有以下兩種做法: 在損失函數(shù)中加入正則項:把模型參數(shù)的范數(shù)作為損失函數(shù)的一部分,會使梯度更新時減小模型參數(shù)的大小,有效避免參數(shù)過大。 正則項實現(xiàn)方式: 梯度裁剪:梯度更新過程中,把梯度的大小限制在一個范圍內(nèi),當梯度超出限制時,將梯度更新為范圍內(nèi)的最大值或最小值。 梯度裁剪實現(xiàn)方式: 過擬合和欠擬合對于任何神經(jīng)網(wǎng)絡模型,都需要避免過擬合和欠擬合。從模型本身的結(jié)構考慮,可以通過增加正則項和dropout避免過擬合。 dropout實現(xiàn)方式: 除此之外,對訓練過程的控制也會對過擬合和欠擬合產(chǎn)生影響??梢酝ㄟ^對學習率的調(diào)整和設置恰當?shù)挠柧毥Y(jié)束時機來控制訓練過程。 如圖五所示:當學習率過高時,損失值快速變小,然后很快停止變小,甚至變大;當學習率過低,損失值緩慢減小,訓練的非常慢;而好的學習率會使損失值先快速減小然后緩慢減小。根據(jù)訓練過程損失值的變化規(guī)律,可以先設置一個較大的學習率,讓損失值快速減小,然后隨著epoch增大,不斷減小學習率的大小,使損失值不斷收斂到最小值。 圖五: 學習率對訓練效果的影響 學習率設置的實現(xiàn)方式 隨著epoch的增加,訓練集的準確率會不斷增加,測試集的準確率先增加后減小,這時候模型會出現(xiàn)過擬合的情況。當epoch=N的時候,模型已經(jīng)訓練好了。所以可以設置一下,當模型的測試集的準確率不再連續(xù)增加或損失值不再連續(xù)減小時,停止訓練,保存模型。 圖六: epoch對訓練效果的影響 訓練停止設置的實現(xiàn)方式 負荷預測結(jié)果分析這一期我們選擇了化學制品行業(yè),使用該行業(yè)下所有用戶2018年4月開始的電力負荷數(shù)據(jù),對2019年1月10號到2019年1月17號連續(xù)8天的逐時負荷值進行預測。 圖七是待測時間段的真實值負荷曲線,可以看到數(shù)據(jù)相對平穩(wěn),但是沒有明顯的周期性規(guī)律,并且在某些時間點上負荷會出現(xiàn)驟降。 圖七: 待測時間段的真實值負荷曲線 為了對比神經(jīng)網(wǎng)絡與傳統(tǒng)機器學習方式的優(yōu)劣,我們選擇了三個傳統(tǒng)的機器學習算法,作為神經(jīng)網(wǎng)絡的對比組。選取了十組與負荷相關性大的特征作為輸入,可以看到三組算法的平均準確率相差不大,逐日的準確率基本都在百分之九十以上,唯有17號的準確率較低,因為這一天的真實負荷值相對歷史負荷值出現(xiàn)驟降。 圖八: 傳統(tǒng)機器學習預測曲線 圖九: 傳統(tǒng)機器學習準確率 我們分別構建LSTM,BiLSTM,AttLSTM三種模型進行負荷預測,使用和上面的傳統(tǒng)機器學習算法相同的特征作為輸入??梢钥吹?,三種模型的平均預測準確率也都達到百分之90以上。 其中,LSTM和BiLSTM的預測平均準確率相差很少,而AttLSTM模型的準確率會高一些。這說明對于該組數(shù)據(jù),負荷值并不受未來的影響,而對于歷史數(shù)據(jù)的篩選有助于預測準確率的提高。 圖十: 神經(jīng)網(wǎng)絡模型預測曲線 圖十一: 神經(jīng)網(wǎng)絡模型準確率 通過本次實驗,我們看到在NLP領域大放異彩的LSTM,相對傳統(tǒng)機器學習算法在時間序列的預測上并沒有很明顯的提高,但是對特征的挖掘能力,決不亞于傳統(tǒng)機器學習算法,所以在時間序列的預測上,也能夠獲得比較好的結(jié)果。 當然,這是在該行業(yè)數(shù)據(jù)下的結(jié)果,后續(xù)我們會依托匯電的大數(shù)據(jù)平臺和自身豐富的算法庫對更多的行業(yè)做測試,敬請關注。 本文版權歸“匯電云聯(lián)”所有,轉(zhuǎn)載請聯(lián)系作者。 |
|
來自: 匯電云聯(lián) > 《用電節(jié)能》