制與小樣本深度遷移學(xué)習(xí)的鋰電池SOH在線估計(jì))
1. 鋰電池SOH在線估計(jì)的核心問(wèn)題拆解1.1 為什么SOH在線估計(jì)這么難做鋰電池的SOHState of Health健康狀態(tài)在線估計(jì)說(shuō)白了就是在電池還在車(chē)上跑、還在儲(chǔ)能柜里充放電的時(shí)候?qū)崟r(shí)告訴你還剩多少“命”。這個(gè)“命”通常用容量保持率或者內(nèi)阻增長(zhǎng)率來(lái)衡量行業(yè)里最常用的定義是當(dāng)前最大可用容量與額定容量的比值。比如一塊標(biāo)稱(chēng)50Ah的三元鋰電池用了兩年之后滿充只能放出43Ah那它的SOH就是86%。聽(tīng)起來(lái)簡(jiǎn)單做起來(lái)要命。難點(diǎn)集中在三個(gè)地方第一電池內(nèi)部狀態(tài)不可直接測(cè)量你只能看到端電壓、電流、溫度這些外部信號(hào)容量和內(nèi)阻都是“隱變量”第二工況千變?nèi)f化有人天天快充、有人長(zhǎng)期慢充、有人經(jīng)常大倍率放電不同使用習(xí)慣導(dǎo)致的衰減路徑完全不同第三在線估計(jì)要求算法在嵌入式BMS電池管理系統(tǒng)上跑得動(dòng)算力有限、存儲(chǔ)有限不能動(dòng)不動(dòng)就上幾百萬(wàn)參數(shù)的大模型。傳統(tǒng)方法大致分兩類(lèi)。一類(lèi)是基于模型的方法比如等效電路模型配合卡爾曼濾波系列算法通過(guò)辨識(shí)歐姆內(nèi)阻、極化內(nèi)阻等參數(shù)來(lái)間接推斷SOH。這類(lèi)方法在實(shí)驗(yàn)室條件下精度不錯(cuò)但實(shí)際工況下模型參數(shù)會(huì)隨溫度和老化漂移標(biāo)定工作量巨大。另一類(lèi)是數(shù)據(jù)驅(qū)動(dòng)方法直接用機(jī)器學(xué)習(xí)從歷史充放電數(shù)據(jù)里學(xué)映射關(guān)系。早期用SVM、隨機(jī)森林做后來(lái)深度學(xué)習(xí)興起LSTM、GRU、CNN都有人試。但數(shù)據(jù)驅(qū)動(dòng)方法有個(gè)致命問(wèn)題訓(xùn)練集和測(cè)試集的分布必須接近。實(shí)驗(yàn)室用標(biāo)準(zhǔn)充放電循環(huán)采的數(shù)據(jù)跟實(shí)車(chē)上那種忽快忽慢、時(shí)充時(shí)放的工況數(shù)據(jù)分布差異極大模型一上線就“翻車(chē)”。這就引出了當(dāng)前最有希望的一條路自注意力機(jī)制 小樣本深度遷移學(xué)習(xí)。自注意力擅長(zhǎng)從長(zhǎng)序列里抓關(guān)鍵退化信息遷移學(xué)習(xí)負(fù)責(zé)把實(shí)驗(yàn)室學(xué)到的知識(shí)搬到實(shí)際工況小樣本則解決實(shí)車(chē)標(biāo)注數(shù)據(jù)稀缺的問(wèn)題。三者結(jié)合才有可能做出真正能落地的在線SOH估計(jì)方案。1.2 自注意力機(jī)制到底在電池?cái)?shù)據(jù)里抓什么多頭自注意力機(jī)制的原理網(wǎng)上講Transformer的文章已經(jīng)鋪天蓋地但放到電池SOH估計(jì)這個(gè)場(chǎng)景里它到底在“注意”什么很多人其實(shí)沒(méi)想明白。電池的充放電曲線是一段典型的時(shí)間序列。以恒流充電階段為例電壓從3.0V升到4.2V的過(guò)程中不同老化程度的電池表現(xiàn)出不同的電壓上升速率和拐點(diǎn)位置。早期電池在3.7V附近有一段明顯的電壓平臺(tái)老化后這個(gè)平臺(tái)會(huì)縮短甚至消失。自注意力機(jī)制的核心能力是對(duì)序列中任意兩個(gè)時(shí)間步計(jì)算相關(guān)性權(quán)重然后加權(quán)聚合信息。這意味著模型可以自動(dòng)學(xué)到“3.7V平臺(tái)段的持續(xù)時(shí)間”與“當(dāng)前SOH”之間的強(qiáng)關(guān)聯(lián)而不需要人工設(shè)計(jì)特征。更具體地說(shuō)假設(shè)輸入序列長(zhǎng)度為L(zhǎng)每個(gè)時(shí)間步的特征維度為d包括電壓、電流、溫度、累計(jì)安時(shí)數(shù)等自注意力會(huì)生成Query、Key、Value三個(gè)矩陣通過(guò)QK^T計(jì)算注意力分?jǐn)?shù)再經(jīng)過(guò)softmax歸一化得到權(quán)重最后對(duì)Value加權(quán)求和。這個(gè)過(guò)程允許模型在計(jì)算某個(gè)時(shí)間步的表示時(shí)直接“看到”序列中所有其他時(shí)間步的信息。對(duì)于電池退化這種緩慢累積的過(guò)程這種全局視野非常關(guān)鍵——因?yàn)镾OH的變化往往體現(xiàn)在整段充電曲線的形態(tài)變化上而不是某一個(gè)點(diǎn)的數(shù)值。多頭機(jī)制則進(jìn)一步增強(qiáng)了表達(dá)能力。不同的注意力頭可以關(guān)注不同的模式一個(gè)頭可能盯著充電初期的電壓斜率另一個(gè)頭關(guān)注中段平臺(tái)長(zhǎng)度還有一個(gè)頭可能捕捉充電末端的截止電流行為。最后把多個(gè)頭的輸出拼接再線性變換得到綜合表示。實(shí)測(cè)下來(lái)4到8個(gè)頭在電池SOH任務(wù)上表現(xiàn)比較均衡頭數(shù)太少抓不全模式太多則容易過(guò)擬合且增加計(jì)算量。注意自注意力對(duì)輸入序列長(zhǎng)度敏感。電池充電數(shù)據(jù)如果按1Hz采樣一次完整充電可能產(chǎn)生上萬(wàn)條記錄直接輸入會(huì)導(dǎo)致計(jì)算量爆炸。常見(jiàn)做法是按固定電壓間隔重采樣比如每10mV取一個(gè)點(diǎn)把序列壓縮到幾百個(gè)時(shí)間步既保留曲線形態(tài)又控制計(jì)算量。1.3 小樣本深度遷移學(xué)習(xí)為什么是破局關(guān)鍵實(shí)車(chē)電池?cái)?shù)據(jù)有個(gè)特點(diǎn)量大但標(biāo)注少。你很容易拿到幾百萬(wàn)條充放電記錄但“這條記錄對(duì)應(yīng)的SOH是多少”這個(gè)標(biāo)簽需要做完整的容量標(biāo)定測(cè)試才能獲得成本極高。實(shí)驗(yàn)室里可以精心做幾百個(gè)循環(huán)、每個(gè)循環(huán)都標(biāo)定容量但實(shí)車(chē)不可能這么干。這就形成了小樣本困境源域?qū)嶒?yàn)室有標(biāo)注但數(shù)據(jù)分布單一目標(biāo)域?qū)嵻?chē)數(shù)據(jù)豐富但幾乎沒(méi)標(biāo)簽。深度遷移學(xué)習(xí)的思路是先在源域上預(yù)訓(xùn)練一個(gè)自注意力網(wǎng)絡(luò)讓它學(xué)會(huì)從充放電曲線中提取退化特征的一般能力然后把這個(gè)網(wǎng)絡(luò)遷移到目標(biāo)域只用少量標(biāo)注數(shù)據(jù)做微調(diào)。微調(diào)的策略有幾種一種是凍結(jié)底層參數(shù)、只訓(xùn)練最后幾層適合源域和目標(biāo)域差異較小的情況另一種是全網(wǎng)絡(luò)微調(diào)但用很小的學(xué)習(xí)率適合差異較大的場(chǎng)景還有一種是加一個(gè)域適應(yīng)模塊在特征層面對(duì)齊源域和目標(biāo)域的分布。實(shí)際項(xiàng)目中我傾向于采用“預(yù)訓(xùn)練域?qū)剐颖疚⒄{(diào)”的三段式方案。域?qū)沟暮诵乃枷胧窃谔卣魈崛∑骱竺娼右粋€(gè)域判別器判別器試圖區(qū)分特征來(lái)自源域還是目標(biāo)域而特征提取器則試圖騙過(guò)判別器。這樣訓(xùn)練下來(lái)特征提取器學(xué)到的表示就具有域不變性源域和目標(biāo)域的數(shù)據(jù)在特征空間里分布接近后續(xù)微調(diào)只需要很少的標(biāo)簽就能收斂。小樣本微調(diào)階段通常每個(gè)SOH區(qū)間比如90%-100%、80%-90%、70%-80%只需要5到10個(gè)標(biāo)注樣本就能把估計(jì)誤差控制在3%以內(nèi)。這個(gè)精度對(duì)于BMS做健康管理已經(jīng)夠用了——畢竟SOH估計(jì)的主要目的是判斷電池是否該退役、是否該降功率使用而不是做精確的容量計(jì)量。2. 從原始數(shù)據(jù)到模型輸入的完整處理鏈路2.1 數(shù)據(jù)采集與預(yù)處理的關(guān)鍵細(xì)節(jié)電池?cái)?shù)據(jù)采集看似簡(jiǎn)單實(shí)則坑很多。先說(shuō)采樣頻率。BMS通常以1Hz到10Hz的頻率記錄電壓、電流、溫度但不同廠商的BMS采樣精度和同步性差異很大。我遇到過(guò)電壓和電流時(shí)間戳對(duì)不齊的情況導(dǎo)致安時(shí)積分計(jì)算出來(lái)的容量偏差超過(guò)5%。所以第一步必須做時(shí)間對(duì)齊通常用線性插值把不同信號(hào)統(tǒng)一到相同時(shí)間軸上。然后是充電段提取。SOH估計(jì)最常用的數(shù)據(jù)段是恒流充電段因?yàn)檫@段電流穩(wěn)定、電壓變化規(guī)律性強(qiáng)。但實(shí)車(chē)充電往往不是標(biāo)準(zhǔn)恒流可能是多階段恒流、恒功率、甚至脈沖充電。這時(shí)候需要做工況分割把充電過(guò)程切成若干穩(wěn)定片段只保留電流波動(dòng)小于5%的片段用于SOH估計(jì)。放電段也可以用但放電工況更復(fù)雜負(fù)載變化大信噪比不如充電段。溫度補(bǔ)償是另一個(gè)容易被忽視的環(huán)節(jié)。鋰電池的電壓曲線對(duì)溫度非常敏感零下10度和25度下的充電曲線形態(tài)完全不同。如果訓(xùn)練集里只有25度的數(shù)據(jù)模型到冬天就會(huì)嚴(yán)重失準(zhǔn)。解決辦法有兩個(gè)一是采集多溫度數(shù)據(jù)做訓(xùn)練二是把電壓信號(hào)歸一化到參考溫度。工程上常用后者用溫度系數(shù)做線性修正雖然精度有限但計(jì)算量小適合嵌入式部署。實(shí)操心得數(shù)據(jù)預(yù)處理階段一定要做異常值剔除。我見(jiàn)過(guò)因?yàn)锽MS通信丟包導(dǎo)致某段時(shí)間電壓恒為0的情況這種數(shù)據(jù)如果不剔除訓(xùn)練出來(lái)的模型會(huì)學(xué)到完全錯(cuò)誤的模式。簡(jiǎn)單做法是設(shè)定電壓變化率閾值超過(guò)閾值的點(diǎn)直接標(biāo)記為無(wú)效。2.2 特征工程與序列構(gòu)建原始信號(hào)只有電壓、電流、溫度三個(gè)通道直接輸入自注意力網(wǎng)絡(luò)也能跑但效果不如手工特征原始信號(hào)混合輸入。手工特征的作用是給模型提供先驗(yàn)知識(shí)降低學(xué)習(xí)難度。常用的手工特征包括充電起始電壓、充電截止電壓、恒流段持續(xù)時(shí)間、恒流段電壓上升斜率、充電末段電流衰減時(shí)間常數(shù)、累計(jì)充入安時(shí)數(shù)、平均溫度、溫度變化率等。這些特征從不同側(cè)面反映電池老化狀態(tài)。比如恒流段持續(xù)時(shí)間隨SOH下降而縮短因?yàn)槔匣姵貎?nèi)阻增大達(dá)到截止電壓更快充電末段電流衰減時(shí)間常數(shù)則與鋰離子擴(kuò)散系數(shù)相關(guān)老化后擴(kuò)散變慢時(shí)間常數(shù)增大。序列構(gòu)建方式有兩種一種是單周期序列即每次充電作為一個(gè)獨(dú)立樣本輸入是這次充電的完整曲線另一種是多周期序列把連續(xù)多次充電拼在一起讓模型捕捉退化趨勢(shì)。單周期樣本量大、訓(xùn)練穩(wěn)定但丟失了歷史信息多周期能捕捉退化速率但樣本數(shù)量少、對(duì)齊困難。實(shí)際項(xiàng)目中我通常先用單周期預(yù)訓(xùn)練再用多周期做微調(diào)兼顧兩者優(yōu)勢(shì)。序列長(zhǎng)度需要權(quán)衡。按10mV間隔重采樣從3.0V到4.2V共120個(gè)點(diǎn)加上電流和溫度通道輸入維度是120×3。這個(gè)長(zhǎng)度對(duì)自注意力來(lái)說(shuō)計(jì)算量適中在嵌入式NPU上也能跑到實(shí)時(shí)。如果按5mV間隔序列長(zhǎng)度翻倍到240精度提升有限但計(jì)算量增加明顯性價(jià)比不高。2.3 源域與目標(biāo)域的劃分策略遷移學(xué)習(xí)的效果很大程度上取決于源域和目標(biāo)域的劃分是否合理。源域通常是實(shí)驗(yàn)室標(biāo)準(zhǔn)循環(huán)數(shù)據(jù)比如在25度下以0.5C恒流充放電循環(huán)500次每50次做一次容量標(biāo)定。這種數(shù)據(jù)標(biāo)注準(zhǔn)確、工況標(biāo)準(zhǔn)但分布單一。目標(biāo)域是實(shí)車(chē)數(shù)據(jù)工況復(fù)雜但標(biāo)簽稀缺。劃分目標(biāo)域時(shí)要注意不能把所有實(shí)車(chē)數(shù)據(jù)混在一起當(dāng)目標(biāo)域因?yàn)椴煌?chē)輛、不同電池包、不同使用地區(qū)的分布差異可能比源域和目標(biāo)域的差異還大。合理做法是按車(chē)輛或按電池包劃分每個(gè)目標(biāo)域只包含同一批次、同一使用場(chǎng)景的數(shù)據(jù)。比如“北方冬季網(wǎng)約車(chē)”和“南方夏季私家車(chē)”應(yīng)該作為兩個(gè)獨(dú)立的目標(biāo)域分別做遷移。如果目標(biāo)域之間差異過(guò)大可以考慮多源域遷移。即用多個(gè)實(shí)驗(yàn)室數(shù)據(jù)集不同溫度、不同倍率、不同電池類(lèi)型作為多個(gè)源域分別預(yù)訓(xùn)練多個(gè)模型然后對(duì)目標(biāo)域做模型融合。這種做法精度更高但工程復(fù)雜度也更高適合對(duì)精度要求極高的場(chǎng)景比如電池梯次利用分選。3. 自注意力SOH估計(jì)網(wǎng)絡(luò)的搭建與訓(xùn)練3.1 網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)與參數(shù)選擇整個(gè)網(wǎng)絡(luò)可以分成三個(gè)模塊特征提取模塊、自注意力編碼模塊、回歸輸出模塊。特征提取模塊負(fù)責(zé)把原始序列映射到高維表示??梢杂靡痪S卷積做局部特征提取卷積核大小取3到5步長(zhǎng)1輸出通道數(shù)32到64。卷積層的作用是捕捉局部波形特征比如電壓曲線的拐點(diǎn)、平臺(tái)邊緣等。然后接一個(gè)位置編碼層因?yàn)樽宰⒁饬Ρ旧聿话恢眯畔⑿枰@式注入。位置編碼用正弦函數(shù)或者可學(xué)習(xí)參數(shù)都可以實(shí)測(cè)差異不大。自注意力編碼模塊是核心。標(biāo)準(zhǔn)Transformer編碼層包括多頭自注意力、前饋網(wǎng)絡(luò)、殘差連接和層歸一化。對(duì)于電池SOH任務(wù)我建議用2到4層編碼層每層4到8個(gè)注意力頭隱藏維度64到128。層數(shù)太多容易過(guò)擬合因?yàn)殡姵赝嘶卣飨鄬?duì)簡(jiǎn)單不需要太深的網(wǎng)絡(luò)。前饋網(wǎng)絡(luò)的隱藏維度通常是注意力的2到4倍用GELU激活函數(shù)。回歸輸出模塊把編碼后的序列表示映射到SOH值。有兩種做法一種是取序列最后一個(gè)時(shí)間步的輸出接全連接層回歸另一種是對(duì)所有時(shí)間步做平均池化再回歸。我傾向于后者因?yàn)镾OH是全局屬性平均池化能聚合整段曲線的信息更魯棒。輸出層用Sigmoid激活把SOH限制在0到1之間再乘以100得到百分比。損失函數(shù)用MSE為主可以加一個(gè)單調(diào)性約束項(xiàng)。因?yàn)殡姵豐OH隨循環(huán)次數(shù)增加單調(diào)下降如果模型預(yù)測(cè)出SOH反彈說(shuō)明學(xué)錯(cuò)了。單調(diào)性約束的實(shí)現(xiàn)方式是對(duì)同一電池的連續(xù)兩個(gè)循環(huán)如果后一個(gè)循環(huán)的預(yù)測(cè)SOH大于前一個(gè)則施加懲罰。這個(gè)約束在微調(diào)階段特別有用能顯著提升小樣本下的泛化能力。3.2 預(yù)訓(xùn)練階段的訓(xùn)練技巧預(yù)訓(xùn)練在源域上進(jìn)行目標(biāo)是讓網(wǎng)絡(luò)學(xué)會(huì)從充放電曲線提取退化特征。源域數(shù)據(jù)量通常有幾千到幾萬(wàn)條足夠訓(xùn)練一個(gè)中等規(guī)模的網(wǎng)絡(luò)。優(yōu)化器用AdamW學(xué)習(xí)率設(shè)1e-3到1e-4權(quán)重衰減1e-4到1e-5。學(xué)習(xí)率調(diào)度用余弦退火從初始值降到1e-6。Batch size取32到64太小訓(xùn)練不穩(wěn)定太大泛化差。訓(xùn)練輪數(shù)看收斂情況通常100到200輪足夠。數(shù)據(jù)增強(qiáng)在預(yù)訓(xùn)練階段很重要。電池?cái)?shù)據(jù)增強(qiáng)的手段包括時(shí)間縮放把充電曲線在時(shí)間軸上拉伸或壓縮5%到10%、幅值擾動(dòng)電壓加高斯噪聲信噪比控制在30dB以上、片段裁剪隨機(jī)截取充電曲線的80%作為輸入。這些增強(qiáng)模擬了實(shí)際工況中的各種變化能提升模型的魯棒性。注意數(shù)據(jù)增強(qiáng)不能改變SOH標(biāo)簽。時(shí)間縮放和幅值擾動(dòng)不改變?nèi)萘勘3致仕詷?biāo)簽不變。但片段裁剪要小心如果裁掉的是充電末段而末段信息對(duì)SOH估計(jì)很關(guān)鍵標(biāo)簽就不準(zhǔn)了。建議裁剪時(shí)保留首尾各20%的片段只裁中間部分。預(yù)訓(xùn)練完成后在源域的驗(yàn)證集上評(píng)估。如果MSE小于0.5%對(duì)應(yīng)SOH誤差約2.2%說(shuō)明預(yù)訓(xùn)練效果合格可以進(jìn)入遷移階段。如果誤差偏大檢查數(shù)據(jù)預(yù)處理是否有問(wèn)題或者增加網(wǎng)絡(luò)容量。3.3 遷移階段的域適應(yīng)與微調(diào)遷移階段是決定最終精度的關(guān)鍵。我采用的流程是先凍結(jié)預(yù)訓(xùn)練網(wǎng)絡(luò)的前兩層只訓(xùn)練后兩層和輸出層用目標(biāo)域的少量標(biāo)注數(shù)據(jù)做初步適配然后解凍所有層用更小的學(xué)習(xí)率做全局微調(diào)。域?qū)鼓K在初步適配階段加入。具體做法是在特征提取模塊后面接一個(gè)梯度反轉(zhuǎn)層再接一個(gè)域判別器通常是兩層全連接。域判別器試圖區(qū)分特征來(lái)自源域還是目標(biāo)域梯度反轉(zhuǎn)層在反向傳播時(shí)把梯度取反讓特征提取器朝著“騙過(guò)判別器”的方向更新。域?qū)沟臋?quán)重需要調(diào)太大容易導(dǎo)致特征退化太小起不到域適應(yīng)效果。經(jīng)驗(yàn)值取0.1到0.5之間根據(jù)源域和目標(biāo)域的分布差異調(diào)整。微調(diào)階段的學(xué)習(xí)率要比預(yù)訓(xùn)練小一個(gè)數(shù)量級(jí)比如預(yù)訓(xùn)練用1e-3微調(diào)用1e-4。這是因?yàn)轭A(yù)訓(xùn)練權(quán)重已經(jīng)包含有用信息大學(xué)習(xí)率會(huì)破壞這些信息。微調(diào)輪數(shù)控制在20到50輪早停策略用目標(biāo)域驗(yàn)證集的MSE連續(xù)5輪不下降就停止。小樣本條件下正則化很重要。除了權(quán)重衰減還可以用Dropout率取0.1到0.3和標(biāo)簽平滑把硬標(biāo)簽變成軟標(biāo)簽比如SOH85%變成83%到87%的均勻分布。標(biāo)簽平滑能防止模型對(duì)少量樣本過(guò)擬合實(shí)測(cè)能降低微調(diào)后的驗(yàn)證誤差約0.3%。4. 在線估計(jì)的工程化部署與優(yōu)化4.1 模型壓縮與嵌入式適配訓(xùn)練好的模型要部署到BMS的嵌入式芯片上算力和存儲(chǔ)都是硬約束。典型的BMS主控芯片算力在100DMIPS到500DMIPS之間RAM在64KB到256KB之間根本跑不動(dòng)原始的自注意力網(wǎng)絡(luò)。模型壓縮的第一步是量化。把32位浮點(diǎn)權(quán)重和激活值量化到8位整數(shù)模型大小直接縮小4倍計(jì)算速度提升2到3倍。量化方式有訓(xùn)練后量化和量化感知訓(xùn)練兩種。訓(xùn)練后量化簡(jiǎn)單但精度損失可能較大量化感知訓(xùn)練在訓(xùn)練時(shí)就模擬量化誤差精度保持更好。對(duì)于SOH估計(jì)這種回歸任務(wù)量化感知訓(xùn)練能把精度損失控制在0.2%以內(nèi)。第二步是剪枝。自注意力網(wǎng)絡(luò)里有很多冗余的注意力頭剪掉對(duì)輸出影響小的頭能減少計(jì)算量。剪枝策略有基于權(quán)重大小的、基于注意力分?jǐn)?shù)熵的、基于梯度敏感度的。我常用基于注意力分?jǐn)?shù)熵的剪枝計(jì)算每個(gè)頭在驗(yàn)證集上的注意力分布熵熵越大的頭說(shuō)明注意力越分散、越不重要優(yōu)先剪掉。剪掉一半的頭精度損失通常不到0.1%。第三步是知識(shí)蒸餾。用一個(gè)大的教師網(wǎng)絡(luò)預(yù)訓(xùn)練微調(diào)后的完整模型指導(dǎo)一個(gè)小學(xué)生網(wǎng)絡(luò)層數(shù)更少、隱藏維度更小訓(xùn)練。學(xué)生網(wǎng)絡(luò)的輸出要同時(shí)擬合真實(shí)標(biāo)簽和教師網(wǎng)絡(luò)的軟輸出。蒸餾溫度取2到5軟輸出損失權(quán)重取0.5到0.7。蒸餾后的小網(wǎng)絡(luò)參數(shù)量可以降到原來(lái)的十分之一精度損失控制在0.5%以內(nèi)。4.2 在線推理流程與實(shí)時(shí)性保障在線推理的流程是BMS實(shí)時(shí)采集電壓、電流、溫度信號(hào)緩存最近一次完整充電段的數(shù)據(jù)當(dāng)檢測(cè)到充電結(jié)束或達(dá)到預(yù)設(shè)觸發(fā)條件時(shí)啟動(dòng)SOH估計(jì)流程預(yù)處理模塊做時(shí)間對(duì)齊、重采樣、溫度補(bǔ)償然后送入量化后的自注意力網(wǎng)絡(luò)做前向推理輸出SOH值并更新到BMS的健康狀態(tài)寄存器。實(shí)時(shí)性方面一次完整推理需要在100ms內(nèi)完成否則會(huì)影響B(tài)MS的其他任務(wù)調(diào)度。量化后的網(wǎng)絡(luò)在100MHz主頻的MCU上120個(gè)時(shí)間步、4層編碼、4個(gè)注意力頭的配置推理時(shí)間大約在30到50ms滿足要求。如果時(shí)間步增加到240推理時(shí)間會(huì)翻倍到60到100ms接近上限。所以序列長(zhǎng)度不能無(wú)限增加需要在精度和實(shí)時(shí)性之間找平衡。觸發(fā)策略也很關(guān)鍵。如果每次充電都做SOH估計(jì)計(jì)算資源浪費(fèi)嚴(yán)重因?yàn)殡姵赝嘶蔷徛^(guò)程一天內(nèi)SOH變化微乎其微。合理做法是每隔一定循環(huán)次數(shù)比如50次或者每隔一定時(shí)間比如一周觸發(fā)一次估計(jì)。觸發(fā)條件可以結(jié)合充電深度只有充電深度超過(guò)80%的完整充電才觸發(fā)因?yàn)椴糠殖潆姷那€不完整估計(jì)精度差。實(shí)操心得在線部署時(shí)一定要加置信度輸出。模型除了輸出SOH值還輸出一個(gè)置信度分?jǐn)?shù)可以用預(yù)測(cè)方差或者注意力熵來(lái)衡量。當(dāng)置信度低于閾值時(shí)BMS應(yīng)該標(biāo)記該次估計(jì)為“低可信”并繼續(xù)使用上一次的高可信估計(jì)值。這樣能避免偶發(fā)的異常輸入導(dǎo)致SOH跳變。4.3 模型更新與持續(xù)學(xué)習(xí)機(jī)制電池老化是一個(gè)持續(xù)過(guò)程模型上線后需要定期更新才能保持精度。但實(shí)車(chē)數(shù)據(jù)沒(méi)有標(biāo)簽不能直接做監(jiān)督學(xué)習(xí)。持續(xù)學(xué)習(xí)機(jī)制需要解決兩個(gè)問(wèn)題一是如何從無(wú)標(biāo)簽數(shù)據(jù)中獲取監(jiān)督信號(hào)二是如何在不遺忘舊知識(shí)的前提下更新模型。對(duì)于第一個(gè)問(wèn)題可以用自監(jiān)督學(xué)習(xí)。比如用對(duì)比學(xué)習(xí)同一電池的相鄰兩次充電曲線作為正樣本對(duì)不同電池的充電曲線作為負(fù)樣本對(duì)訓(xùn)練模型讓正樣本對(duì)的特征表示接近、負(fù)樣本對(duì)的特征表示遠(yuǎn)離。這樣模型能持續(xù)從無(wú)標(biāo)簽數(shù)據(jù)中學(xué)習(xí)退化特征而不需要SOH標(biāo)簽。對(duì)于第二個(gè)問(wèn)題可以用彈性權(quán)重鞏固EWC或者記憶回放。EWC的核心思想是在更新模型參數(shù)時(shí)對(duì)重要參數(shù)施加約束防止它們被大幅修改。重要程度用Fisher信息矩陣衡量Fisher信息大的參數(shù)說(shuō)明對(duì)舊任務(wù)重要更新時(shí)懲罰大。記憶回放則是保留一小部分舊數(shù)據(jù)每次更新時(shí)混合新舊數(shù)據(jù)一起訓(xùn)練防止災(zāi)難性遺忘。實(shí)際工程中模型更新頻率不需要太高。每季度或每半年更新一次即可因?yàn)殡姵赝嘶锹^(guò)程模型精度下降也是漸進(jìn)的。更新時(shí)在云端完成訓(xùn)練然后把新模型參數(shù)下發(fā)到BMS。下發(fā)過(guò)程要注意版本管理和回滾機(jī)制新模型上線后如果精度下降要能快速回退到舊版本。5. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄5.1 估計(jì)精度突然變差的排查思路SOH估計(jì)精度突然變差最常見(jiàn)的原因是數(shù)據(jù)分布漂移。比如車(chē)輛從南方開(kāi)到北方環(huán)境溫度從25度降到零下10度電壓曲線形態(tài)變化巨大模型如果沒(méi)在低溫?cái)?shù)據(jù)上訓(xùn)練過(guò)精度會(huì)斷崖式下降。排查方法是檢查最近一段時(shí)間的數(shù)據(jù)溫度分布跟訓(xùn)練集的溫度分布做對(duì)比如果差異超過(guò)10度基本可以確定是溫度漂移問(wèn)題。解決辦法是加入溫度自適應(yīng)層或者用少量低溫標(biāo)注數(shù)據(jù)做快速微調(diào)。第二個(gè)常見(jiàn)原因是傳感器故障。電壓傳感器漂移會(huì)導(dǎo)致整段充電曲線偏移電流傳感器漂移會(huì)導(dǎo)致安時(shí)積分錯(cuò)誤。排查方法是對(duì)比BMS采集的電壓和外部萬(wàn)用表測(cè)量的電壓如果偏差超過(guò)50mV說(shuō)明傳感器有問(wèn)題。電流傳感器可以用標(biāo)準(zhǔn)電阻做校準(zhǔn)檢查。傳感器故障不解決再好的算法也沒(méi)用。第三個(gè)原因是充電工況變化。比如車(chē)輛原來(lái)用慢充最近改用快充充電曲線從恒流轉(zhuǎn)為多階段恒流模型沒(méi)見(jiàn)過(guò)這種模式精度自然下降。排查方法是統(tǒng)計(jì)最近充電段的電流波形跟訓(xùn)練集的電流波形做相似度對(duì)比。如果相似度低說(shuō)明工況漂移需要采集新工況數(shù)據(jù)做微調(diào)。5.2 遷移學(xué)習(xí)不收斂的典型場(chǎng)景遷移學(xué)習(xí)不收斂表現(xiàn)是微調(diào)階段損失震蕩或者持續(xù)上升。最常見(jiàn)的原因是源域和目標(biāo)域差異過(guò)大域?qū)鼓K無(wú)法對(duì)齊分布。比如源域是磷酸鐵鋰電池?cái)?shù)據(jù)目標(biāo)域是三元鋰電池?cái)?shù)據(jù)兩者的電壓平臺(tái)和退化模式完全不同強(qiáng)行遷移會(huì)適得其反。解決辦法是換用更接近的源域或者用多源域遷移把磷酸鐵鋰和三元鋰分別作為獨(dú)立源域目標(biāo)域根據(jù)電池類(lèi)型選擇對(duì)應(yīng)的源域。第二個(gè)原因是學(xué)習(xí)率設(shè)置不當(dāng)。微調(diào)階段學(xué)習(xí)率太大會(huì)破壞預(yù)訓(xùn)練權(quán)重太小則收斂太慢。排查方法是畫(huà)學(xué)習(xí)率掃描曲線從1e-5到1e-3取若干值看哪個(gè)學(xué)習(xí)率下驗(yàn)證損失最低。通常1e-4附近是比較安全的起點(diǎn)。第三個(gè)原因是小樣本數(shù)量太少。如果每個(gè)SOH區(qū)間只有1到2個(gè)標(biāo)注樣本模型很難學(xué)到有效的微調(diào)方向。解決辦法是增加標(biāo)注樣本或者用數(shù)據(jù)增強(qiáng)擴(kuò)充樣本量。對(duì)于SOH估計(jì)時(shí)間縮放和幅值擾動(dòng)是有效的增強(qiáng)手段能把1個(gè)樣本擴(kuò)充到10個(gè)以上。5.3 嵌入式部署中的內(nèi)存與算力瓶頸嵌入式部署最常見(jiàn)的問(wèn)題是內(nèi)存溢出。自注意力網(wǎng)絡(luò)的中間激活值占用大量RAM如果序列長(zhǎng)度是240、隱藏維度是128、4層編碼中間激活值可能超過(guò)100KB超過(guò)很多MCU的RAM容量。解決辦法是用梯度檢查點(diǎn)技術(shù)在推理時(shí)只保留必要的中間結(jié)果其余重新計(jì)算。梯度檢查點(diǎn)會(huì)增加計(jì)算量約30%但能把內(nèi)存占用降低60%以上。算力瓶頸的表現(xiàn)是推理超時(shí)。如果推理時(shí)間超過(guò)BMS的任務(wù)周期會(huì)導(dǎo)致其他任務(wù)被延遲。解決辦法除了模型壓縮還可以用算子融合。把卷積、批歸一化、激活函數(shù)融合成一個(gè)算子減少內(nèi)存訪問(wèn)次數(shù)能提升推理速度20%到30%。另外用定點(diǎn)運(yùn)算代替浮點(diǎn)運(yùn)算也能提速但要注意定點(diǎn)位寬的選擇位寬太低會(huì)導(dǎo)致精度損失。注意嵌入式部署前一定要做充分的壓力測(cè)試。模擬各種極端輸入全零輸入、滿量程輸入、隨機(jī)噪聲輸入確保模型不會(huì)崩潰或輸出異常值。我見(jiàn)過(guò)因?yàn)檩斎肴銓?dǎo)致softmax除零的情況雖然概率低但一旦發(fā)生就是嚴(yán)重故障。5.4 常見(jiàn)問(wèn)題速查表問(wèn)題現(xiàn)象可能原因排查方法解決措施SOH估計(jì)值跳變輸入數(shù)據(jù)異常檢查電壓電流是否有丟包或尖峰加異常值過(guò)濾用上次有效值填充低溫下精度差溫度分布漂移對(duì)比訓(xùn)練集和當(dāng)前數(shù)據(jù)溫度分布加溫度自適應(yīng)層或低溫?cái)?shù)據(jù)微調(diào)遷移后不收斂源域目標(biāo)域差異大可視化特征分布計(jì)算MMD距離換源域或多源域遷移推理超時(shí)模型太大或序列太長(zhǎng)測(cè)量單次推理耗時(shí)量化剪枝蒸餾縮短序列長(zhǎng)度內(nèi)存溢出中間激活值占用大查看編譯后的RAM占用梯度檢查點(diǎn)算子融合置信度低輸入工況罕見(jiàn)檢查充電曲線是否完整跳過(guò)本次估計(jì)用歷史值6. 實(shí)際項(xiàng)目中的經(jīng)驗(yàn)沉淀與擴(kuò)展方向6.1 從實(shí)驗(yàn)室到實(shí)車(chē)的落地教訓(xùn)實(shí)驗(yàn)室里跑通算法只是第一步實(shí)車(chē)落地才是真正的考驗(yàn)。我踩過(guò)最大的坑是數(shù)據(jù)對(duì)齊問(wèn)題。實(shí)驗(yàn)室數(shù)據(jù)是同一臺(tái)設(shè)備采集的時(shí)間戳天然對(duì)齊實(shí)車(chē)數(shù)據(jù)來(lái)自不同ECU電壓、電流、溫度的時(shí)間戳可能相差幾百毫秒。如果不做對(duì)齊安時(shí)積分誤差能到10%以上SOH估計(jì)完全失準(zhǔn)。后來(lái)我們統(tǒng)一用CAN總線的時(shí)間戳做基準(zhǔn)所有信號(hào)按最近鄰插值對(duì)齊到同一時(shí)間軸問(wèn)題才解決。第二個(gè)坑是充電段提取的魯棒性。實(shí)驗(yàn)室數(shù)據(jù)充電段很干凈實(shí)車(chē)數(shù)據(jù)里混著空調(diào)、DC-DC等各種負(fù)載的干擾充電電流經(jīng)常波動(dòng)。我們最初用固定閾值判斷充電段結(jié)果把很多帶負(fù)載的片段誤判為充電段。后來(lái)改用滑動(dòng)窗口方差檢測(cè)窗口內(nèi)電流方差小于閾值才認(rèn)為是穩(wěn)定充電段準(zhǔn)確率大幅提升。第三個(gè)坑是模型版本管理。實(shí)車(chē)部署后模型更新了好幾個(gè)版本但不同車(chē)輛更新的時(shí)間不同導(dǎo)致路上跑著好幾個(gè)版本的模型。后來(lái)我們建了一套版本管理系統(tǒng)每輛車(chē)的模型版本、更新日志、精度指標(biāo)都記錄在云端方便追溯和回滾。6.2 多任務(wù)聯(lián)合估計(jì)的擴(kuò)展思路SOH估計(jì)不是孤立的它跟SOC荷電狀態(tài)、RUL剩余壽命估計(jì)密切相關(guān)。實(shí)際項(xiàng)目中我們嘗試過(guò)把SOH、SOC、RUL三個(gè)任務(wù)聯(lián)合訓(xùn)練共享特征提取模塊各自接不同的輸出頭。聯(lián)合訓(xùn)練的好處是三個(gè)任務(wù)互相正則化SOH估計(jì)精度提升了約0.5%RUL估計(jì)精度提升了約2%。原因是SOC估計(jì)需要精確的容量信息而容量正是SOH的定義基礎(chǔ)RUL估計(jì)需要退化速率信息而SOH序列的斜率就是退化速率。聯(lián)合訓(xùn)練的難點(diǎn)是標(biāo)簽對(duì)齊。SOC標(biāo)簽容易獲取充放電過(guò)程中安時(shí)積分即可SOH標(biāo)簽需要容量標(biāo)定RUL標(biāo)簽需要全生命周期數(shù)據(jù)。實(shí)際做法是先用SOC標(biāo)簽預(yù)訓(xùn)練特征提取模塊再用SOH標(biāo)簽微調(diào)最后用RUL標(biāo)簽做多任務(wù)聯(lián)合微調(diào)。這樣每個(gè)階段都有足夠的監(jiān)督信號(hào)訓(xùn)練穩(wěn)定。6.3 不同電池體系的適配策略三元鋰電池和磷酸鐵鋰電池的退化模式差異很大不能用一個(gè)模型通吃。三元鋰的電壓平臺(tái)傾斜充電曲線形態(tài)隨老化變化明顯自注意力容易抓到特征磷酸鐵鋰的電壓平臺(tái)平坦充電曲線中段幾乎水平老化信息更多體現(xiàn)在平臺(tái)長(zhǎng)度和末端上升速率上需要更精細(xì)的特征提取。我們的做法是為每種電池體系單獨(dú)預(yù)訓(xùn)練一個(gè)模型然后在遷移階段做跨體系知識(shí)共享。具體來(lái)說(shuō)底層卷積層可以共享因?yàn)榫植坎ㄐ翁卣髟诓煌w系間有共性自注意力層和輸出層各自獨(dú)立因?yàn)槿滞嘶J讲町惔?。這種部分共享的遷移策略比完全獨(dú)立訓(xùn)練精度高約1%比完全共享精度高約3%。磷酸鐵鋰還有個(gè)特殊問(wèn)題電壓平臺(tái)太平電壓傳感器的小漂移會(huì)導(dǎo)致SOH估計(jì)大誤差。解決辦法是引入增量容量分析ICA把電壓曲線轉(zhuǎn)換成dQ/dV曲線平臺(tái)區(qū)的微小變化在ICA曲線上會(huì)放大成明顯的峰。自注意力網(wǎng)絡(luò)輸入ICA曲線而不是原始電壓曲線精度能提升約2%。6.4 后續(xù)可以深入的方向第一個(gè)方向是引入物理信息神經(jīng)網(wǎng)絡(luò)。純數(shù)據(jù)驅(qū)動(dòng)模型缺乏物理可解釋性預(yù)測(cè)結(jié)果可能違反熱力學(xué)規(guī)律。把電池的等效電路方程、 Arrhenius溫度關(guān)系等物理約束嵌入損失函數(shù)能讓模型預(yù)測(cè)更合理小樣本下泛化更好。第二個(gè)方向是在線自適應(yīng)。當(dāng)前方案是定期離線更新模型未來(lái)可以做到在線自適應(yīng)模型在BMS上持續(xù)學(xué)習(xí)每次充電后根據(jù)自監(jiān)督信號(hào)微調(diào)參數(shù)。這需要解決嵌入式端的訓(xùn)練算力問(wèn)題目前看用輕量級(jí)適配器Adapter模塊比較可行只訓(xùn)練少量新增參數(shù)不動(dòng)主干網(wǎng)絡(luò)。第三個(gè)方向是聯(lián)邦學(xué)習(xí)。不同車(chē)輛的數(shù)據(jù)分散在各自BMS里出于隱私考慮不能上傳云端。聯(lián)邦學(xué)習(xí)允許多個(gè)車(chē)輛協(xié)同訓(xùn)練全局模型每輛車(chē)只上傳梯度或模型更新不上傳原始數(shù)據(jù)。這樣既能利用海量實(shí)車(chē)數(shù)據(jù)又能保護(hù)隱私。挑戰(zhàn)在于車(chē)輛通信帶寬有限、訓(xùn)練同步困難需要設(shè)計(jì)高效的通信協(xié)議和異步聚合算法。我個(gè)人在實(shí)際操作中的體會(huì)是鋰電池SOH估計(jì)沒(méi)有“一招鮮”的方案必須根據(jù)具體應(yīng)用場(chǎng)景做取舍。實(shí)驗(yàn)室追求極致精度可以用大模型、多源域、復(fù)雜融合實(shí)車(chē)部署必須考慮算力、內(nèi)存、實(shí)時(shí)性往往要在精度和效率之間妥協(xié)。最關(guān)鍵的是把數(shù)據(jù)鏈路做扎實(shí)數(shù)據(jù)質(zhì)量不行再先進(jìn)的算法也是空中樓閣。