機(jī)器學(xué)習(xí)幫你預(yù)測(cè)電池壽命:精確了解電池還能充幾次
電池壽命的確定,是移動(dòng)硬件發(fā)展的重要一環(huán),但是由于電池電化學(xué)反應(yīng)的不確定性以及不同的使用環(huán)境和習(xí)慣,電池壽命變成了一門(mén)玄學(xué)。
不過(guò)柏林的三位小伙伴,利用Tensorflow,在原有的預(yù)測(cè)體系基礎(chǔ)上。更近一步,完成了電池的全壽命預(yù)測(cè)。
捋清數(shù)據(jù)
研究者在原始模型中,統(tǒng)計(jì)了124塊鋰電池的充放電循環(huán)次數(shù)中的數(shù)據(jù)作為壽命指標(biāo)。
簡(jiǎn)單來(lái)說(shuō),從完全充滿電到完全放光電是一個(gè)循環(huán),當(dāng)循環(huán)的次數(shù)多到鋰電池只能容納以前電量的80%時(shí),電池壽終正寢。
研究中統(tǒng)計(jì)的電池循環(huán)次數(shù)從150到2300,差異巨大。
但是這個(gè)過(guò)程中的數(shù)據(jù)不僅只是記數(shù),過(guò)程中輸入的連貫充電循環(huán)可以作為窗口,每個(gè)窗口有一個(gè)“當(dāng)前循環(huán)數(shù)”和“剩余循環(huán)次數(shù)”。除此之外,每個(gè)窗口有一個(gè)目標(biāo)值,這個(gè)目標(biāo)值以最后循環(huán)的特征值為準(zhǔn)。
在每個(gè)電池循環(huán)周期中,電池的電壓,電流,溫度,電荷的動(dòng)態(tài)變化也需要統(tǒng)計(jì)。并且還會(huì)出現(xiàn)像內(nèi)阻,電荷量,通電時(shí)間等定量數(shù)據(jù)。
之前說(shuō)過(guò),入選研究的電池,通電循環(huán)的次數(shù)各不相同。
有的循環(huán)多,有的循環(huán)少,那跟時(shí)間變化相關(guān)的數(shù)據(jù)就不好統(tǒng)一。畢竟循環(huán)了幾千次電池的電流,不能跟剛用兩三次就超齡報(bào)廢的電池電流做對(duì)比。
針對(duì)這個(gè)問(wèn)題,研究者首先以放電時(shí)電池的電壓變化范圍代替時(shí)間作為變化量的參考基準(zhǔn)。
因?yàn)殡姵氐碾妷悍秶际且粯拥?,這就有了同步的參考范圍。之后插補(bǔ)隨電壓變化的電荷量和溫度值,最后給以電壓為基準(zhǔn),劃分量程,就能進(jìn)行完整的數(shù)據(jù)參照了。
構(gòu)建模型
雖然數(shù)據(jù)詳細(xì)清晰,但是數(shù)組和標(biāo)量數(shù)據(jù)顯然不能簡(jiǎn)單塞進(jìn)一個(gè)模型里。
研究者利用Keras functional API作為構(gòu)建模型的工具,對(duì)數(shù)組數(shù)據(jù)和標(biāo)量數(shù)據(jù)分開(kāi)導(dǎo)入。
對(duì)于數(shù)組數(shù)據(jù),他們將其與窗口的特征數(shù)據(jù),例如窗口大小,長(zhǎng)度,特征值數(shù)量相結(jié)合,形成三維矩陣。
之后在保證窗口的連續(xù)性基礎(chǔ)上,利用Maxpooling處理,將矩陣分為三個(gè)Conv2D函數(shù)圖層。
通過(guò)這個(gè)方式便可以提取出有相關(guān)性的信息,之后再把上述數(shù)據(jù)降維成一維數(shù)組。在數(shù)據(jù)都享有同一個(gè)變化范圍,并且高度相關(guān)的前提下。
Conv2D扮演的角色,就像圖片中代表顏色通道的數(shù)字一樣,代表著數(shù)據(jù)的特征。
標(biāo)量數(shù)據(jù)的導(dǎo)入流程也與之類似,不過(guò)只需要從二維降到一維就可以了。
經(jīng)過(guò)處理后的兩個(gè)具有特征映射的平面數(shù)組,就像處理好的食材一樣,可以放心的做出模型需要的密集網(wǎng)絡(luò)這盤(pán)大菜了。
訓(xùn)練優(yōu)化
萬(wàn)事俱備,就差練手。
研究者撰寫(xiě)了一個(gè)指令集操作界面,從而方便進(jìn)行訓(xùn)練的相關(guān)操作。
- ./train.sh
如果需要調(diào)整訓(xùn)練的epoch和窗口中樣本的數(shù)量,只需要輸入這個(gè)指令:
- ./train.sh -e 70 -w 10
將訓(xùn)練值和驗(yàn)證值的數(shù)據(jù)趨勢(shì)對(duì)比可以看出,在平均絕對(duì)偏差方面,二者的差距在逐步縮小,曲線走勢(shì)也在逐步接近。
為了縮小模型與驗(yàn)證值的差距,研究者選擇加入Dropout工具進(jìn)行進(jìn)一步的擬合。
除此之外,研究者還需要對(duì)模型進(jìn)行超參數(shù)調(diào)優(yōu),因此研究者對(duì)不同設(shè)置采用了網(wǎng)格搜索。
那么如何跟蹤這些設(shè)置呢?這時(shí)候Tenserflow2.0的hparams module派上了用場(chǎng)。
經(jīng)過(guò)這一系列操作之后,研究者就可以比較出擬合過(guò)程中最關(guān)鍵的參數(shù)了。
由于準(zhǔn)確預(yù)測(cè)結(jié)果要求“當(dāng)前循環(huán)”和“剩余循環(huán)數(shù)”都要大于零。研究者使用了ReLU作為輸出層的啟動(dòng)機(jī)制,這可以降低訓(xùn)練過(guò)程中模型的搜索范圍,節(jié)約時(shí)間。
由于研究者的模型依賴CNN,所以他們嘗試了不同的核心大小,最后在兩種不同的學(xué)習(xí)速率前提下比較了不同設(shè)置下當(dāng)前循環(huán)和剩余循環(huán)的MAE值。
△誤差值對(duì)比
△當(dāng)前循環(huán)的MAE值對(duì)比

△剩余循環(huán)的MAE值對(duì)比
經(jīng)過(guò)超參數(shù)調(diào)優(yōu)后的最佳配置模型,在訓(xùn)練epoch上千的基礎(chǔ)上,當(dāng)前循環(huán)MAE為90.剩余循環(huán)MAE為115。雖說(shuō)不算完美,不過(guò)對(duì)于研究者的應(yīng)用方面預(yù)期來(lái)說(shuō),這個(gè)結(jié)果很不錯(cuò)。
預(yù)測(cè)上線
實(shí)際上曲線上可以看出。模型預(yù)測(cè)差距最小的位置,并不是訓(xùn)練終點(diǎn),而是訓(xùn)練大概四分之三的時(shí)候。所以在研究者在這個(gè)分界點(diǎn)加入了檢查點(diǎn),從而重置模型來(lái)避免多次訓(xùn)練帶來(lái)的偏差。
模型已經(jīng)大功告成了,現(xiàn)在就可以嘗試把結(jié)果轉(zhuǎn)換成曲線,之后就可以上線應(yīng)用了。
目前包括當(dāng)前循環(huán)和剩余循環(huán)的輸出曲線大概是這樣的。
雖說(shuō)對(duì)電池來(lái)說(shuō)這有點(diǎn)“大限將至”的味道,但是對(duì)于用戶而言,這確實(shí)是一個(gè)不錯(cuò)的進(jìn)步。
現(xiàn)實(shí)的電池壽命預(yù)測(cè),只是在原有電池容量的基礎(chǔ)上對(duì)電池容量的變化進(jìn)行大致參考。這樣的評(píng)估模式,并沒(méi)有考慮到不同的使用環(huán)境以及用戶的使用習(xí)慣。
因?yàn)閺牡蜏氐礁邷厥褂铆h(huán)境,從24小時(shí)插充電線到三天不開(kāi)屏幕鎖,電池的循環(huán)次數(shù)必然會(huì)產(chǎn)生差異,這還沒(méi)有考慮不同批次電池的制造差異。因此這種模糊的估測(cè)并不能準(zhǔn)確的表達(dá)電池的真正壽命。
而這個(gè)電池壽命預(yù)測(cè)模型,隨著不同環(huán)境下電池壽命相關(guān)數(shù)據(jù)的豐富,可以為用戶提供一個(gè)更為精準(zhǔn)的使用參考。
至少它能提醒你,啥時(shí)候該換手機(jī)了。