徐 帅,刘雨辰, 周 飞
(南京航空航天大学直升机传动技术国家级重点实验室,江苏南京210016)
电池荷电状态(SOC)是电池管理系统中最重要的部分[1]。精确的SOC 估算可以及时更新电池的剩余容量,防止发生过充和过放电现象,并提高电池的充放电效率和延长其使用寿命。虽然目前SOC 估算方法众多,但是主流的方法主要包含以下四类:安时积分法[2]、开路电压法[3]、模型法[4-5]、机器学习法[6]。深度学习算法属于机器学习法。可循环神经网络(RNN)作为深度学习算法中的一种,是目前最流行的算法之一。RNN 是一类以序列数据为输入,在序列的演进方向进行递归且所有循环节点按链式连接的递归神经网络,但其在训练时,会出现“梯度消失”和“梯度爆炸”的现象。为了解决这两个问题,学者们开发了一些进阶版循环神经网络,比如长短期记忆神经网络(LSTM),门控循环单元神经网络(GRU)以及双向长短期记忆神经网络(BiLSTM)。这些由各种门结构组成的人工神经网络,拥有回忆过去信息的能力,这使得它们特别适用于解决较长时间序列的问题,例如电池SOC 估算。本文将估算电池SOC 的可循环神经网络算法根据其结构的不同分为三种:简单循环神经网络算法、深度循环神经网络算法、扩展循环神经网络算法。
1.1.1 长短期记忆神经网络
长短期记忆神经网络(LSTM)层结构如图1 所示。存储记忆单元Ck来存储并传输先前和当前状态的信息,以备将来使用;遗忘门fk负责控制Ck-1中应该传递多少先前信息到下一次;输入门ik负责调节应该将多少过去的信息传递到存储记忆单元Ck中;输出门ok负责控制将多少在存储记忆单元中计算出的信息传递到输出hk中。
图1 长短期记忆神经网络(LSTM)层结构
Bockrath 等[7]使用LSTM 建立电池测量信号(端电压,负载电流和电池温度)与电池SOC 之间非线性关系,并与扩展卡尔曼滤波算法(EKF)进行了对比。相较于EKF,LSTM 不需要建立复杂的电池模型,而且LSTM 的平均绝对误差(MAE)和均方根误差(RMSE)分别为4.1%和5.0%,也远低于EKF 的8.5%和9.5%。然而,这篇文章并没有采用标准的汽车工况数据,而是普通的充放电循环数据(CC),环境温度也只考虑了常温。在这种条件下对比LSTM 和EKF,显然没有很大的说服力。Li 等[8]同样应用了LSTM 模型,不过他使用多种汽车工况循环数据集(UDDS,US06,HWFET,LA92)作为测试文件,而且还考虑了多种环境温度(0、10 和25 ℃)。同时为了进一步提高估算精度,作者还对测试数据进行了归一化处理,将数据缩放在-1 到1 之间。不同温度下的MAE 均小于1.3%的估算结果证明了LSTM 优秀的鲁棒性。后来Zhang 等[9]考虑到电池老化对SOC 估算的影响,增加了电池剩余容量和电池内阻作为LSTM 的输入参数,使用不同电池健康状态(SOH)条件下的美国动态应力测试(DST)和中国电动汽车测试标准(QCT)工况循环数据来测试LSTM。SOC 估算平均误差均小于2%的估算结果证明了在不同的电池SOH 下,LSTM 也适用于估算SOC。以上文献中的LSTM 模型都是针对某一种类型的电池,然而现实生活中,电池的类型肯定不止一种。为了让LSTM 可以适用于不同类型的电池,Vidal 等[10]提出了基于迁移学习的LSTM 模型,首先使用其他类型电池的数据对LSTM 神经网络进行训练,然后使用来自目标电池类型的数据对神经网络进行二次训练,最后应用几种不同的实验来研究其潜力。从实验估算结果来看,使用迁移学习方法后,LSTM 估算SOC 的准确度提高了64%,训练时间从9 h 缩减到了1 h,这证明了迁移学习有提高SOC 估算精度并减少神经网络训练所需数据的潜力。这为实际中应用LSTM 去估算不同类型的电池提供了可能。虽然以上的作者们证明了LSTM在各种条件下都可以很好地估算电池SOC,但是估算结果的好坏主要是由他们所搭建LSTM 模型的超参数决定的,这些超参数包括但不局限于模型隐藏层数,模型隐藏层神经元数,模型优化器,训练批量数,模型输入时间步长。遗憾的是,他们只是介绍了他们选择的超参数,并没有过多地解释这么选的原因。
Chemali 等[11]提出了一个隐藏层神经元数为500 的单层LSTM 模型来估算电池SOC,并讨论了三种训练批量数对训练结果的影响。相同条件下,当训练批量数从250 增加到500时,平均误差下降了50%,而继续增加到1 000 时,平均误差只下降了15%。但是在SOC 初始值存在30%的误差时,训练批量数为1 000 的神经网络的收敛速率比500 的神经网络快了近50 s。虽然这篇文章只考虑了一种超参数对LSTM 网络估算结果的影响,但是也从侧面说明了,在用LSTM 对电池SOC进行估算时,超参数的选择是个非常重要的问题。Hong 等[12]综合考虑了四种超参数,讨论了不同的输入数据时间步长,输出数据时间步长,和训练样本总数以及训练批量数对估算结果的影响。首先固定训练样本总数以及训练批量数,对比了不同的输入数据时间步长,输出数据时间步长的估算误差。从表1 误差结果可以发现,随着输入数据时间步长和输出数据时间步长的增大,均方根误差也随之增大;然后选择最优的输入和输出数据时间步长,分析不同训练样本总数对估算结果的影响,对于LSTM 来说,输入数据当然是越多越好;最后分析了不同训练批量数的影响。从图2 来看,估算误差并没有随着训练批量数的增加而减少,当其值为16 时,误差最小。可惜的是现在没有成熟的算法来选择循环神经网络模型超参数,而它们又决定了模型的估算精度,研究者往往都是根据经验或通过枚举对比来确定它们,这不仅耗时,而且还不一定能找到最优值。
表1 不同时间步长的均方根误差[12]
图2 基于不同训练批量数的均方根误差[12]
1.1.2 门控循环单元神经网络
图3 GRU 层结构
另一种能够处理长期依赖关系的RNN 方法是门控循环单元神经网络(GRU),它也使用门结构来学习,记忆和确定过去和现在的哪些信息将用于生成其输出。它的层结构如图3所示,图中的zk和rk分别表示更新门和重置门。更新门用于控制前一时刻的状态信息hk-1被带入到当前状态hk中的程度,更新门的值越大说明前一时刻的状态信息被带入的越多,重置门控制前一状态有多少信息被写入到当前的候选集h͂k上,重置门越小,前一状态的信息被写入的越少。与LSTM 相比,GRU 使用单个门单元同时控制遗忘量和更新状态单元,所以GRU 的参数相对要少很多,训练时间相对较短,但可以达到与LSTM 相当的效果。
Li 等[13]首次提出使用GRU 来估算电池SOC,并使用了和文献[11]中相同的电池数据集,而且在25 ℃的LA92 工况下的估算误差MAE 为0.32%。由于本文中使用的GRU 的超参数与文献[11]中LSTM 的超参数不同,所以无法直接对比两种模型。不过这篇论文还是证明了GRU 是可以像LSTM 一样用于SOC 估算的。Yang 等[14]提出了GRU 模型来估算不同环境温度下NMC 和LFP 两种电池SOC。值得一提的是,他在模型中添加了一个参数为0.5 的dropout 层,可以在训练的时候随机丢弃50%的信息,从而避免过拟合现象。不过其缺点就是丢弃的信息也有可能是非常重要的,从而导致估算精度不高,可惜的是,文中没有更加深入地分析dropout 对估算结果的影响。和文献[12]一样,文中也分析了多种模型超参数对估算结果的影响,比如训练迭代次数,隐藏层数和隐藏层神经元数,并在训练中增加了验证集,使得对比结果更有说服力。其分析策略是先给超参数设定一个常见的初始值,然后固定其中两个参数,分析另一个参数的变化给估算结果带来的影响。从误差结果来看,在训练前期,随着迭代次数的增加,训练集和验证集误差RMSE 都开始急剧下降,当迭代次数超过1 500 后,误差开始逐渐稳定,并在2 000 时达到最小值。但是随着迭代次数进一步增加,验证集误差开始出现上升迹象,表明训练过程开始出现过拟合。综合考虑测试性能和与训练迭代次数呈线性关系的训练时间后,作者选择训练迭代次数为2 000。至于隐藏层数和隐藏层神经元数,其对估算结果的影响也是:当他们一定大的时候,训练集和测试集误差会非常小,但是进一步增大都会导致过拟合现象的发生,从而增大了验证集误差,导致模型的泛化能力变差。
为了提高GRU 估算电池SOC 的精度,Xiao 等[15]使用均方根误差(MSE)作为GRU 模型的训练损失误差,并使用集成优化器来优化它,即在训练迭代次数小于阈值p 时,用优化器Nadam 来优化模型,因为它具有收敛速度快的优点;当训练迭代次数超过p 后,改换优化器AdaMax 对模型进行微调,从而确定模型最终的训练权重和偏值。为了进一步突出GRU 模型在集成优化器下估算SOC 时的性能,文中还添加了LSTM模型作对比。测试数据使用的都是LFP 电池在DST,FUDS,US06 三种工况下的循环数据。从表2 误差结果来看,同种模型下,相比单个优化器,集成优化器可以显著地提高估算精度,而所花费的时间只是略微增加。另一方面,在同种优化器作用下,GRU 无论是在估计误差,还是训练时间,都比LSTM 的小,其中GRU 在集成优化器作用下的RMSE,MAE 和训练时间分别是1.13%、0.84%和2.97 h,与LSTM 在单个优化器下的相应值相比分别降低了46.7%、46.84%和17.96%。不过,由于不知道作者使用的LSTM 模型超参数是否与GRU 一样,所以这个对比结果仅供参考,并不能证明GRU 一定比LSTM 好。
表2 基于不同优化器下GRU 和LSTM 的估算误差[15]
除了门结构的循环神经网络外,也有学者提出使用非门结构的循环神经网络来估算电池SOC。非线性自回归与外来输入(NARX)神经网络是RNN 的子类,适用于预测非线性和时间序列问题。NARX 神经网络使用有限的反馈形成输出层而不是隐藏层,并将模型k-1 时刻的输出转化成k 时刻的输入,从而实现循环。在学习能力,收敛速度,泛化性能和高精度方面,NARXNN 比传统的RNN 表现更好。Chaoui 等[16]开发了基于非线性自回归与外来输入神经网络架构的动态驱动递归网络(DDRN)来估计两个锂离子化学电池的SOC。虽然与门结构循环神经网络相比,使用NARX 会给DDRN 带来一些限制,但是这也赋予了DDRN 关联储存功能,并且减少了模型训练所需的数据量。其结构如图4 所示,文中使用0、10、25 和40 ℃温度下包含电压Vk,电流Ik,环境温度Tk和来自先前的时间步的输出SOCk-1四种变量的数据集来训练和测试DDRN。从估算结果来看,与“非循环”神经网络相比,DRNN的训练时间减少了1 000 倍,均方根误差下降了78%。尽管用于测试模型的数据循环曲线是动态的,但由于在循环过程中没有再生制动充电脉冲,因此导致了单调的SOC 输出曲线。此类测试文件可能无法很好地应用在电动汽车领域。因此,这种方法的有效性需要进一步研究。
图4 DDRN-NARX 结构,输入变量端电压Vk,电流Ik和环境温度Tk都是由传感器测量得到,回归输入SOCk-1是上一时刻k-1的输出[16]
前面已经提到,门结构循环神经网络估算SOC 的精度由模型的超参数所决定,对于非门结构循环神经网络来说,亦是如此。而这些作者都是根据经验或者通过枚举对比的方法来确定这些超参数,步骤十分繁琐且低效。因此Lipu 等[17]提出了基于改进的非线性具有基于外源输入的自回归神经网络算法来估算电池SOC,并结合了线性搜索算法(LSA)来查找模型最优超参数:神经元数量,输入数据时间步长和输出数据时间步长的最佳组合,从而提高模型的估算精度。该模型使用了NCM 电池在0、10 和45 ℃三种温度下基于FUDS 和US06 两种工况的数据集作为训练集和测试集,并获得了均小于0.9%的MAE 和均小于1.3%的RMSE。文中还添加了与同样由LSA 优化的其他SOC 估计方法的比较,并证明了NARX和LSA 结合可以获得更高的精度。尽管使用LSA 和BSA 之类的优化算法可以帮助实现构建最佳神经网络结构的自动化,但是其他重要的超参数,例如训练批量大小,损失函数优化器的选择同样会对估算结果产生重大影响,而且作者没有给出使用LSA 算法来查找模型超参数的时间,如果这种算法需要耗费大量的时间,那么显然不适合实际应用。
与简单循环神经网络法相比,深度循环神经网络法使用多层LSTM,GRU 单元。循环神经网络能够以多种方式由单层加深至多层,其中最常见的策略是使用堆叠的循环单元。由于在序列演进方向已经存在复杂结构,因此不同于深度的前馈神经网络,深度循环神经网络在输入和输出间不会堆叠太多层次,一个3 层的深度循环神经网络已经具有很大规模。堆叠循环神经网络是在全连接的单层循环神经网络的基础上堆叠形成的深度算法。其内部循环单元的状态更新使用了其前一层相同时间步的状态和当前层前一时间步的状态。
Khalid 等[18]使用一个含两层LSTM 的神经网络(SLSTM)来估算电池SOC 并分析了两种优化器,RMSprop 和AdaGrad对估算结果的影响。从表3 估算误差来看,在不同的工况下,无论是训练还是测试,Adagrad 的误差均小于RMSprop。RMSprop 的RMSE 和MAE 分 别 是2.611% 和1.967%,而AdaGrad 的RMSE 和MAE 分别是1.527%和1.153%,比前者降低了约50%。LSTM 的优化器有很多种,比如NAdam,Adadelta,AdaGrad,RMSprop,Adamax,SGD。虽然本文只比较了其中两种,不过对比结果也说明了,在用LSTM 估算电池SOC 时,选择合适的优化器,可以得到更好的估算结果。
表3 不同优化器下的估算误差[18]
为了提高循环神经网络估算SOC 的精度,Yang 等[19]使用了一个堆叠了三层LSTM 的模型来估算SOC,其中每个LSTM 含有50 个神经元。堆叠的LSTM 层可以重组从先前层学到的表示形式,并在高度抽象的层次上创建新的表示形式。虽然该模型在三种工况FUDS,DST,US06 下,均获得了MAE 和RMSE 分别小于2.1%和1.4%的良好估算结果,但是由于没有添加单层LSTM 模型做对比,而且本文只考虑一种环境温度,所以无法证明多层LSTM 比单层LSTM 更好。
图5 双向循环神经网络展开图
双向循环神经网络是一种两层的深度循环神经网络。如图5 所示,其结构由两个分别向前和向后的单向循环层(LSTM,GRU)组成,其中,向前的循环层使用k-n 时刻到当前k 时刻的输入数据Ψ,即[Ψk-n→Ψk],而向后的循环层则使用相反顺序的输入数据[Ψk→Ψk-n],其中n 是时间步长的总数,y 是双向循环层的输出,而且这两个循环层是同时进行反馈的,并且每个参数都是独立更新的,但是它们的输出hk,会用一个函数(求和、求积、求商、求平均)结合起来。由于这种双向结构从数据的两个端捕获时间或上下文相关性,所以通常用于文本翻译中。Bian 等[20]提出使用堆叠式双向长短期记忆神经网络(SBLSTM)来估算电池SOC,并与使用了同样的测试数据的LSTM[11]和GRU[13]模型进行了对比。每个模型都被训练了五次,然后取这五次误差的平均值来比较。从结果来看,在基于0、10 和25 ℃三种环境温度的US06 和HWET 工况下,SBLSTM 估算精度是最高的,其中25 ℃下的MAE 只有0.46%。虽然这些模型使用了同样的测试数据,但是由于不知道文献[11]和文献[13]的作者是否也对他们的模型进行了重复训练。因此,不同论文中的模型交叉对比还是很困难的。本文同样比较了不同的隐藏层数和隐藏层神经元数对模型估算结果的影响,并最终确定最优的模型结构拥有两个各含有64 个神经元的BLSTM 层,相当于四个单向LSTM 堆叠层,并含有130 000 个可学习参数,即结构中所有权重和偏差的总和。过多的学习参数不仅会导致训练时间成倍的增加,还容易导致训练中出现过拟合现象,这极大限制了这种方法的实际应用。
为了进一步提高循环神经网络估算电池SOC 的精度,有学者提出了将循环神经网络算法与其他非循环神经网络算法结合的想法,使它们可以相互弥补,充分发挥自己的优点,从而提高估算精度。Song 等[21]提出了卷积神经网络(CNN)和LSTM 复合模型来估算SOC。这个复合模型综合了CNN 和LSTM 模型的优点,其中CNN 用于从输入数据中提取空间特征,而LSTM 用于提取时间特征。在环境温度0~50 ℃下基于FUDS、DST、US06 三种工况的LFP 电池数据被用来测试模型的性能和针对未知SOC 初始状态的鲁棒性。实验结果证明了CNN-LSTM 模型可以很好地捕捉电池SOC 和测量变量(电压,电流和温度)之间的非线性关系,并且比单一的LSTM和CNN 具有更优的追踪性能。在初始SOC 未知的情况下,CNN-LSTM 模型可以很快地收敛到SOC 真实值,然后保持平滑准确的估算结果,最大MAE 和RMSE 分别在1%和2%以下。此外,该复合方法在不同的环境温度下仍可以准确地估算电池SOC,最大MAE 在1.5%以内,最大RMSE 在2%以内。无独有偶,Huang 等[22]提出了CNN 和BGRU 复合模型。虽然在常温下,该模型的MAE 和RMSE 均小于2%,但是在0 ℃,MAE 和RMSE 分别是3.04%和4.36%。而且与其他循环神经网络一样,该模型也有需要确定的超参数。为了确定模型的最优结构,作者根据经验手动设定了几组不同神经元数组合并进行估算对比,但是这些超参数是否最优,仍值得商榷。
无迹卡尔曼滤波算法(UKF)是一种常用于去除数据流中的噪声的技术。与EKF 相比,UKF 在具有相同复杂度等级的非线性系统中表现出更好的性能,并且易于实现。Yang 等[23]提出LSTM 和UKF 结合的模型(LSTM-UKF)来估算电池SOC,整个算法的框架如图6 所示。它包括离线训练和在线测试两个过程:离线训练阶段,使用由0~50 ℃,间隔10 ℃的环境温度下DST、US06 两种工况循环数据来训练LSTM,输入变量有电压、电流和电池温度,输出变量则是SOC;在线测试阶段,UKF 被用来过滤掉训练好的LSTM 的输出噪声,从而提高SOC 估算精度,其中状态变量为由库仑公式得到的SOC,输出变量为LSTM 估算得到的SOC。由实验结果来看,在不同的环境温度下,相比单一的LSTM,LSTM-UKF 估算精度至少提高50%,MAE 和RMSE 均在1.1%以内。此外,作者还将其与其他机器学习法NN,SVM 和GPR,在常温下进行了对比,LSTM-UKF 在估算精度上完胜而且估算时间也只需1.20 s。除去EKF 和UKF 外,还有很多优秀的卡尔曼滤波算法的进阶版,比如容积卡尔曼滤波算法(CKF),相比前两者,它在高阶系统中的表现更加稳定和高效。Tian 等[24]提出了LSTM 和ACKF 结合的复合模型(LSTM-ACKF)。在这里,ACKF 与文献[23]中UKF 一样,也是用来优化LSTM 模型的估算结果。不过与后者不同的,ACKF 具有自适应功能,换言之就是,可以在优化过程中自动更新过程噪声方差Q 和测量误差方差R。首先,作者使用不同环境温度下US06 和FUDS两种工况数据来验证LSTM-ACKF 的估算精度并引入LSTM和LSTM-CKF 两种模型作对比。结果显示,LSTM 的估算误差RMSE 均大于2.8%,最大RMSE 达到了3.5%,LSTM-CKF的估算误差RMSE 均大于2.2%,最大RMSE 为3.2%,而LSTM-ACKF 的RMSE 均小于2.2%,最小RMSE 只有0.9%。然后,在10 ℃的FUDS 工况下,使用不同的Q 和R 初始值来验证LSTM-ACKF 的抗干扰性。结果显示,LSTM-CKF 的估算结果非常依赖Q 和R 的初始值,尤其是Q 很大且R 很小的时候,此时的误差非常大,反观LSTM-ACKF 的估算误差几乎不受Q 和R 的影响。最后,使用不同的SOC 初始值来验证LSTM-ACKF 的收敛性。结果显示,即使SOC 初始值误差达到40%,该模型也能在短短20 s 内,收敛到正确值。
图6 LSTM-UKF框架[23]
Caliwag 等[25]提出了时间序列模型(VARMA)和LSTM 结合的算法来预测电动摩托车的锂离子电池电压和SOC,其中输入由电动机速度,输入功率和扭矩以及电池评估电压,电流和温度组合而成。该复合模型估算电池SOC 的原理是:首先使用VARMA 预测电池输出电流的线性分量,然后用LSTM预测电池输出电流的非线性分量,最后将它们加起来就是预测的电池输出电流,将预测的输出电流代入到安时积分法中即可获得预测的SOC。作者仅使用韩国的驾驶循环CVS-40在0 和25 ℃下测试了该模型,用于训练模型的数据直接来自驾驶摩托车。文中没有提供电池的有关信息,LSTM 的结构也没有介绍,而且尚不清楚在有更大的数据集时是否有必要将VARMA 与LSTM 结合使用。
本节总结了本文中提到的估算电池SOC 的循环神经网络算法的输入变量、数据预处理、循环神经网络(LSTM,GRU,NARX)的层数及其神经元数、优化器、损失函数、测试文件、研究的温度、使用的电池类型以及估算误差,为读者未来使用循环神经网络方法估算电池SOC 提供理论指导。从表4、表5 和表6 中可以发现,大多数研究都使用了相同的模型输入变量,如电压、电流和电池温度,只有极少数使用了平均值或其他的计算值。训练前进行数据预处理的模型大概占了一半,从理论上讲,数据预处理可以提高模型估算电池SOC的精度,可惜暂时没有论文对此进行讨论。另外大多数模型都只使用了一层循环神经网络,可见在估算电池SOC 这个领域,使用多层循环神经网络并不一定能带来更好的结果,相反还会增加训练难度和时间,而且神经元数也不用太多。对于循环神经网络来说,优化器的选择有很多,比如RMSprop、LM、SGD、Adamax、Nadam 等。不过在估算电池SOC 方面,主流的优化器还是Adam。至于损失函数的选择,只有MAE、RMSE 和MSE 三种,其中MSE 应用的最多。对于测试数据的获取,绝大部分研究都选择了标准的汽车工况和可变的环境温度,其余的则选择了简单的恒流和脉冲电流循环或固定温度。一般来说,模型的测试数据越复杂,其呈现的估算精度可信度越高。从估算结果来看,基于RNN 的估算方法非常适合于电池SOC 估算领域。
表7 对比了方法之间的优缺点,并进行了详细的论述,为未来循环神经网络法估算SOC 的发展提供理论指导。
本文介绍了几种基于循环神经网络的锂离子电池SOC估算方法,并将它们分为简单循环神经网络算法、深度循环神经网络算法以及扩展循环神经网络算法。简单循环神经网络算法虽然在某种条件下也能获得较好的估算精度,不过容易受到模型超参数的影响,而目前并没有成熟的算法来确定超参数;深度循环神经网络算法通过增加模型中循环神经层数来提高估算精度,不过模型的学习参数(权重和偏值)数量也随之增多,从而增大了模型过拟合的风险。因此,为了让循环神经网络可以在各种条件下都能很精确地估算电池SOC,除了需要开发一种成熟的算法来确定循环神经网络的超参数之外,还需要研究将循环神经网络法和其他算法结合起来,取长补短,实现锂离子电池SOC 在不同条件下的快速、准确的估计。为此,研究人员仍需要不断地探索和实践。
表4 简单循环神经网络模型超参数比较
表5 深度循环神经网络模型超参数比较
表6 扩展循环神经网络模型超参数比较
表7 基于RNN 的锂离子电池SOC 估算方法优缺点