明彤彤,王凱,田冬冬,徐松,田浩含
(青島大學,山東 青島 266000)
據(jù)世界衛(wèi)生組織統(tǒng)計,每年有650萬人因空氣污染而過早死亡。2015年在氮氧化合物污染統(tǒng)計中,交通運輸業(yè)占其中50%,共排放氮氧化合物5.3×107t[1-3]。挪威等歐洲國家正考慮在2025年前禁止汽油和柴油動力汽車上路。鋰離子電池由于其較高的能量密度被廣泛應用在電動汽車領域,同時在無人駕駛汽車、無人機和智能電網(wǎng)領域的應用也在不斷增長[4]。
電池荷電狀態(tài)(state of charge,SOC)的精確估計是電力設備穩(wěn)定運行的關鍵,對于監(jiān)測車輛的剩余里程和電池均衡系統(tǒng)至關重要[5-7]。但電動汽車在行駛過程中反復變速給精確估計SOC帶來了挑戰(zhàn)。SOC是指電池的剩余電量除以其出廠容量,一般來說SOC是溫度、充放電電流倍率的非線性函數(shù)[8-10]。測量電池SOC的基本方法有開路電壓法、安時積分法和基于電池內(nèi)阻的預測方法。安時積分法通過測量電池電流再對電流進行積分來實現(xiàn)SOC預測,對電流精度要求較高[11-13];開路電壓法的缺點是預測前需要電池長時間靜置,不適合在線測量[14-16];基于電池內(nèi)阻的預測法受電池種類、數(shù)量和一致性的影響,很少在電動汽車上使用[17-20]。以上3種方法局限性較大,已被其他更為復雜的算法取代,如自適應觀測器、滑模觀測器和卡爾曼濾波,但這些算法一般計算復雜,通常需要額外的參數(shù)和不同的模型以適應不同情況下的SOC估計。
20世紀90年代,數(shù)據(jù)和硬件限制了機器學習的發(fā)展。2012年之后機器學習取得了巨大的進步[21],硬件的發(fā)展、數(shù)據(jù)的收集、算法的改進推動了機器學習的發(fā)展。從1990年到2010年,非定制中央處理器(central processing unit,CPU)的速度提高了5 000倍。2016年,Google在其年度I/O大會上展示了張量處理器(tensor processing units,TPU)項目,其開發(fā)目的完全是為了運行深度神經(jīng)網(wǎng)絡[22-24]?;ヂ?lián)網(wǎng)的高速發(fā)展,使得收集和分發(fā)超大型數(shù)據(jù)集變得可行。除了硬件和數(shù)據(jù)之外,算法的改進實現(xiàn)了更好的梯度傳播,使得深度學習發(fā)展迅速。
本文提出了一種基于長短期記憶(long short-term memory,LSTM)循環(huán)神經(jīng)網(wǎng)絡的鋰離子電池SOC估計方法。使用TR9600可編程直流電子負載對所選鋰離子電池進行多工況放電實驗,高精度地采集測試數(shù)據(jù)。使用Keras深度學習框架,將TensorFlow作為后端引擎,搭建前饋(back propagation,BP)神經(jīng)網(wǎng)絡、門控循環(huán)單元(gated recurrent unit,GRU)和LSTM神經(jīng)網(wǎng)絡進行性能對比。在模型的訓練過程中,將數(shù)據(jù)分為訓練集、驗證集和測試集,在訓練集上訓練模型,在驗證集上評估模型,并調(diào)整網(wǎng)絡最佳配置參數(shù),在測試集上進行性能測試。選用帶動量的隨機梯度下降(stochastic gradient descent,SGD)作為優(yōu)化器,以防止模型陷入局部最小點,增加模型的收斂速度。在LSTM循環(huán)神經(jīng)網(wǎng)絡基礎上加入Dropout正則化方法,以增強模型的泛化能力。
百度研發(fā)中心開發(fā)了一種基于循環(huán)神經(jīng)網(wǎng)絡(recurrent neural network,RNN)的深度學習語音識別系統(tǒng)——Deep Speech 2,其識別的準確度超過人類正常水平。BP神經(jīng)網(wǎng)絡和卷積神經(jīng)網(wǎng)絡(convolutional neural networks,CNN)的共同特點是沒有記憶前面輸出的狀態(tài)變量,單獨處理每個輸入,在輸入和上次輸出之間沒有任何聯(lián)系。對于BP神經(jīng)網(wǎng)絡和CNN,想要處理數(shù)據(jù)點或時間序列,需要向網(wǎng)絡同時展示整個序列,在現(xiàn)實的機器學習過程中往往難以實現(xiàn)。
BP神經(jīng)網(wǎng)絡和CNN假設所有輸入數(shù)據(jù)都是獨立的,這種假設對于序列化數(shù)據(jù)不成立。時間序列數(shù)據(jù)呈現(xiàn)出對前面數(shù)據(jù)的依賴,這被稱為長期趨勢。循環(huán)神經(jīng)網(wǎng)絡(recurrent neural network,RNN)用隱藏狀態(tài)或者記憶引入這種依賴,以保存當前的關鍵信息。任一時刻的隱藏狀態(tài)是前一時間步中隱藏狀態(tài)和當前時間步中輸入值的函數(shù),即
ht=φ(ht-1,xt).
(1)
式中:ht為時間步t的隱藏狀態(tài)(下標“t”代表時間步t,下同);xt為時間步t的輸入。RNN采用這種方式對任意長度的序列化數(shù)據(jù)進行編碼和合并信息。
RNN單元如圖1所示。圖1中:yt為時間步t的輸出;u、v、w分別為權重矩陣U、V、W的元素,分別對應輸入、輸出和隱藏狀態(tài)。輸出yt的一部分反饋給神經(jīng)單元,以在稍后的時間步t+1上使用。
圖1 RNN單元Fig.1 RNN Unit
與傳統(tǒng)的神經(jīng)網(wǎng)絡工作原理類似,訓練RNN涉及誤差的反向傳播,存在梯度消失和梯度爆炸問題。梯度消失的影響為相距較遠的時間步上的梯度對學習過程沒有任何用處,因此RNN不能進行大范圍依賴學習。有幾種方法可以最小化梯度消失問題,如W權重向量的適當初始化、使用ReLU替代tanh層、使用非監(jiān)督方法預訓練網(wǎng)絡等,最流行的方案是使用GRU或LSTM網(wǎng)絡架構,這些架構被設計成處理梯度消失問題。
LSTM循環(huán)神經(jīng)網(wǎng)絡是RNN的一個變體,適用于學習長期依賴。圖1演示RNN如何在tanh層使用前一時間步的狀態(tài)和當前輸入來實現(xiàn)遞歸。LSTM也以類似的方式實現(xiàn)了遞歸,但并不是1個單獨的tanh層,而是以特別方式交互的4個層。圖2展示了LSTM循環(huán)神經(jīng)網(wǎng)絡單元結構,其中,i為輸入門,o為輸出門,f為遺忘門,g為內(nèi)部隱藏狀態(tài),ct為時間步t的單元狀態(tài),方框內(nèi)為神經(jīng)網(wǎng)絡層。
圖2 LSTM 循環(huán)神經(jīng)網(wǎng)絡單元Fig.2 LSTM Unit
圖2上部的線是單元狀態(tài),i、f、o和g門是LSTM解決梯度消失問題的關鍵。在訓練過程中,LSTM為這些門進行參數(shù)學習。下列等式顯示了它是如何通過前一時間步的隱藏狀態(tài)ht-1來計算時間步t的隱藏狀態(tài)ht。
ft=σ(Wf·[ht-1,xt]+bf),
(2)
it=σ(Wi·[ht-1,xt]+bi),
(3)
gt= tanh(Wg·[ht-1,xt]+bg),
(4)
ot=σ(Wo·[ht-1,xt]+bo),
(5)
ct= (ct-1ft)?(gtit),
(6)
ht= tanh(ct)ot.
(7)
式中:W為各層神經(jīng)網(wǎng)絡權重矩陣;b為各層網(wǎng)絡的偏置矩陣;下標“i、f、o、g”分別對應i、f、o門和內(nèi)部隱藏狀態(tài);σ為sigmod函數(shù)。
遺忘門定義前一狀態(tài)ht-1的多少部分可以通過,而輸出門定義當前狀態(tài)的多少部分揭示給下一層,內(nèi)部隱藏狀態(tài)g基于當前輸入xt和前一狀態(tài)ht-1計算。給定i、f、o和g,根據(jù)時間步t-1上的狀態(tài)ct-1,乘以遺忘門,就能計算時間步t的單元狀態(tài)ct;乘以輸入門i,就能計算出狀態(tài)g。最后,時間步t的隱藏狀態(tài)ht通過將記憶ct和輸出門相乘來計算。
本實驗輸入向量由電壓、電流組成。搭建BP神經(jīng)網(wǎng)絡、GRU和LSTM神經(jīng)網(wǎng)絡進行性能對比。利用dSPACE可以高精度測量電流的特性,用安時積分法進行SOC的精確計算。在LSTM神經(jīng)網(wǎng)絡基礎上添加Dropout正則化,以增強模型的泛化能力。
本文所選取的實驗對象是博沃尼克公司生產(chǎn)的通用型鋰離子動力電池,其額定容量為1.5 Ah,額定電壓為3.7 V,充電截止電壓為4.2 V,充電截止電流為0.02 C(44 mA),放電截止電壓為2.75 V。
18650動力鋰離子電池的測試平臺由直流電子負載、dSPACE MicroLabBox實驗箱以及計算機組成,測試平臺如圖3所示。
圖3 鋰離子電池測試平臺Fig.3 Testplatform of Li-ion battery
所用電子負載為埃用儀器有限公司的TR9600可編程直流電子負載。數(shù)據(jù)由dSPACE MicroLabBox RTI1202進行高精度數(shù)據(jù)采集。使用Keras深度學習框架,將TensorFlow作為后端引擎,搭建BP神經(jīng)網(wǎng)絡、GRU和LSTM神經(jīng)網(wǎng)絡。圖4是實驗具體流程。
圖4 實驗流程Fig.4 Experiment flow chart
特征工程是指將數(shù)據(jù)輸入模型之前,利用關于數(shù)據(jù)和機器學習算法的知識對數(shù)據(jù)進行硬編碼變換,以改善模型的效果。大多數(shù)情況下機器學習模型無法從完全任意的數(shù)據(jù)中進行學習,呈現(xiàn)給模型的數(shù)據(jù)應該便于模型進行學習。特征工程的本質(zhì)是用更簡單的方式表述問題,從而使解決問題的方式變得簡單,良好的特征工程可以用更少的資源解決問題。如果樣本數(shù)量有限,特征信息就會變得至關重要。開路電壓法用電池電壓作為SOC預測的參數(shù),安時積分法利用放電電流進行SOC預測??紤]在實際工況以及SOC與電池電壓、放電電流的映射關系,本文選用電池電壓、放電電流作為特征參數(shù)。所用參數(shù)在電池使用過程中易于測量,可行性較高。
本實驗采用恒流放電和動態(tài)放電2種放電模式,實現(xiàn)不同工況下的數(shù)據(jù)采集。在恒流放電模式下,不論輸入電壓如何變化,電子負載始終消耗恒定的電流;在動態(tài)放電模式中,設定低電位電流和高電位電流,電子負載會連續(xù)在低位電流和高位電流之間來回切換電流值;在放電過程中,每隔1 s提取電池電壓、電流和SOC。實驗數(shù)據(jù)劃分見表1。
表1 實驗數(shù)據(jù)劃分Tab.1 Experimental data division
將實驗數(shù)據(jù)分為訓練集、驗證集、測試集。在訓練集上訓練模型,在驗證集上評估模型,并調(diào)整網(wǎng)絡最佳配置參數(shù),在測試集上進行測試。驗證集存在的原因在于調(diào)節(jié)模型配置,比如選擇層數(shù)或每層大小,調(diào)節(jié)過程需要使用模型在驗證數(shù)據(jù)上的性能作為反饋信號,調(diào)節(jié)的過程本質(zhì)上就是一種學習。但基于模型在驗證集上的性能調(diào)節(jié)模型配置,會導致模型在驗證集上過擬合。每次基于模型在驗證集上的性能來調(diào)節(jié)模型超參數(shù),會有一些關于驗證集的信息泄露到模型中,所以需要加入測試集,來驗證神經(jīng)網(wǎng)絡在新數(shù)據(jù)上的表現(xiàn)。
在訓練LSTM神經(jīng)網(wǎng)絡之前,需要將數(shù)據(jù)處理為神經(jīng)網(wǎng)絡可以處理的格式,數(shù)據(jù)是數(shù)值型的,但輸入向量數(shù)據(jù)中的每個量綱單位(電壓、電流)位于不同的取值范圍,需要對量綱進行標準化處理,讓不同輸入維度在相似的范圍內(nèi)取較小的值。一般來說,將取值較大的數(shù)據(jù)(如電壓數(shù)據(jù))輸入網(wǎng)絡是不安全的,這樣會導致較大的梯度更新,進而導致網(wǎng)絡無法收斂,為了讓網(wǎng)絡的學習變得容易,輸入數(shù)據(jù)應有以下特征:①取值較小,大部分值應在[0,1]范圍內(nèi);②具有同質(zhì)性,所有特征的取值都應在大致相同的范圍內(nèi)。
歸一化操作是深度學習模型訓練之前要進行一項重要的操作。本文采用的歸一化方法為Min-Max標準化,也稱離差標準化,是對原始數(shù)據(jù)的線性變化,將結果映射到[0,1]之間。其公式為
(8)
式中:Xnorm為歸一化后的值;X為歸一化前數(shù)據(jù)的值,Xmax、Xmin為其最大值和最小值。該方法把數(shù)據(jù)壓縮到[0,1]之間,是原始數(shù)據(jù)的等比壓縮。
確定了網(wǎng)絡架構,還需要選擇損失函數(shù),損失函數(shù)是衡量預測精度的具體表現(xiàn)。本實驗采用平均絕對誤差(mean absolute error,MAE)作為損失函數(shù),用其檢測預測值和真實值之間的偏差。具體公式為
(9)
式中:M為本實驗的平均絕對誤差;fi為預測值;yi為真實值;n為將要進行預測的數(shù)據(jù)量。改進神經(jīng)網(wǎng)絡,意味著通過改變權重減小損失函數(shù)值。
優(yōu)化器是使用損失值進行梯度更新的具體方式,本文選用帶動量的SGD作為優(yōu)化器,動量解決了SGD的2個問題:收斂速度和局部極小點。在損失函數(shù)某個參數(shù)值附近有一個局部極小點,在這個點附近,無論向哪個方向調(diào)整,都會導致?lián)p失值增大。如果使用小學習率的SGD進行優(yōu)化,優(yōu)化過程很可能會陷入局部極小點,導致無法找到全局最小點。
使用動量方法可以避免這樣的問題,這一方法將優(yōu)化過程想象成從損失函數(shù)曲線上滾下來的小球。如果小球的動量足夠大,那么它不會卡在局部最小點里,最終會達到全局最小點。動量方法的實現(xiàn)過程是每一步都移動小球,不僅要考慮當前的斜率值,還要考慮當前的速度。這在實踐中指的是更新權重不僅要考慮當前的梯度值,還要考慮上一次的參數(shù)更新。
為提高模型性能,應對模型超參數(shù)進行調(diào)整。使用的模型應該具有足夠大的容量,以防欠擬合,即模型應避免記憶資源不足,在容量過大和容量不足之間找到一個折中。
為測試模型超參數(shù)對性能的影響,在LSTM神經(jīng)網(wǎng)絡基礎上改變網(wǎng)絡層數(shù)和每層神經(jīng)元個數(shù)。圖5顯示了改變模型超參數(shù)后在測試集上的MAE,其中每層大小代表神經(jīng)元個數(shù)。從圖5可以看出:當模型為3或4層時, MAE數(shù)值較低,性能較為可靠;當模型層數(shù)超過4層時,MAE大幅提升,并且隨著每層神經(jīng)元個數(shù)的增加,模型性能下降明顯。
圖5 模型超參數(shù)對性能的影響Fig.5 Effect ofparameters on model performance
完成網(wǎng)絡架構調(diào)整后,在相同的實驗數(shù)據(jù)上訓練模型。圖6和圖7分別是BP神經(jīng)網(wǎng)絡、GRU和LSTM神經(jīng)網(wǎng)絡在恒流放電和動態(tài)放電情況下的絕對誤差(absolute error,AE)。表2和表3展示3個模型在測試集上的最大絕對誤差和MAE。3個模型均使用MAE作為損失函數(shù),評估數(shù)據(jù)和評估指標完全相同,可以直接比較3種方法的結果。實驗所用計算機CPU型號為i7-6700。在訓練周期為80次的情況下,BP神經(jīng)網(wǎng)絡、GRU、LSTM神經(jīng)網(wǎng)絡訓練耗時分別為189 s、598 s、895 s。
可以看出,在恒流放電模式下, LSTM神經(jīng)網(wǎng)絡和GRU性能較為理想,與BP神經(jīng)網(wǎng)絡相比預測更為準確。在動態(tài)放電情況下,LSTM神經(jīng)網(wǎng)絡的預測精度較BP神經(jīng)網(wǎng)絡、GRU提升明顯。從2種工況下的實驗結果可以看出,LSTM神經(jīng)網(wǎng)絡性能較為理想。
過擬合存在于所有機器學習的問題中,降低過擬合,提高網(wǎng)絡的泛化能力(即模型在前所未見的數(shù)據(jù)上的性能),是機器學習中至關重要的一步。為了防止模型從訓練數(shù)據(jù)中學到錯誤或無關緊要的模式,最優(yōu)解決辦法是獲取更多的訓練數(shù)據(jù),模型的訓練數(shù)據(jù)越多,泛化能力越強。如果無法獲取更多數(shù)據(jù),次優(yōu)解決方法是調(diào)節(jié)模型允許存儲的信息量,或?qū)δP驮试S存儲的信息加以約束,這種降低過擬合的方法稱為正則化。
圖6 BP、GRU、LSTM恒流放電預測絕對誤差Fig.6 Absolute errors of constant current discharge prediction of BP、GRU and LSTM
圖7 BP、GRU、LSTM動態(tài)放電預測絕對誤差Fig.7 Absolute errors of dynamic discharge prediction of BP、GRU and LSTM
表2 恒流放電情況下的表現(xiàn)Tab.2 Performance under constant current discharge
表3 動態(tài)放電情況下的表現(xiàn)Tab.3 Performance under dynamic discharge
Dropout是神經(jīng)網(wǎng)絡有效正則化的方法之一,它由多倫多大學的Geoffrey Hinton 和他的學生開發(fā)。對某一層使用Dropout,就是在訓練過程中隨機將該層的一些輸出特征舍棄(設置為0)。假設在訓練過程中,某一層對給定輸入樣本應該是向量(4.2,0.5,24),使用Dropout后,這個向量會有幾個隨機元素變成0,比如變?yōu)?4.2,0,24)。Dropout比率是被設為0的特征所占的比例,通常在0.2~0.5范圍內(nèi)。
本實驗對LSTM循環(huán)神經(jīng)網(wǎng)絡加入Dropout正則化方法,實驗結果如圖8所示。在實驗過程中發(fā)現(xiàn)將Dropout比率設為0.3時,訓練效果最為理想。添加Dropout正則化后最大絕對誤差為2.0%,MAE為1.05%,低于實際應用要求的5%,滿足實際應用要求,性能較為可靠。
圖8 動態(tài)放電加入Dropout后模型在測試集上的性能Fig.8 Performance of the model on the test setafter dynamic discharge adding Dropout
本文針對物理建模預測鋰離子電池SOC方法存在的不足,提出采用基于LSTM的鋰離子電池SOC估計方法?;诒疚膶嶒炁c討論結果可以得出以下結論:
a)本文提出的鋰電池SOC預測方法不涉及鋰電池的工作原理,克服了不同工況下建立不同模型的缺點,具有較好的適用性和推廣性;
b)在訓練過程中,采用帶動量的SGD作為優(yōu)化器,防止模型陷入局部最小點,增強了模型的收斂速度;
c)加入Dropout正則化方法,降低了網(wǎng)絡的過擬合現(xiàn)象,增強了模型的泛化能力,進一步提高了神經(jīng)網(wǎng)絡的預測性能;
d)與BP神經(jīng)網(wǎng)絡、GRU相比,本文所采用方法具有更好的預測精度,為準確估計不同工況下鋰離子電池SOC問題提供了研究基礎,在電動汽車領域具有很好的應用價值。