基于KAN神经网络的锂电池SOH估算模型(NASA数据集)
摘要:健康状态(State of Health,SOH)是锂电池全生命周期管理的核心指标。本文提出一种基于柯尔莫哥洛夫-阿诺德网络(Kolmogorov-Arnold Network,KAN)的锂电池SOH估算方法,以NASA电池老化数据集(B0005)为研究对象,通过多项式样条函数逼近非线性映射关系,结合L1/L2正则化与拟牛顿优化算法,实现对电池SOH的高精度估计。文章将从数据处理、网络架构到训练细节进行完整的代码级讲解。
目录
研究背景与意义
锂离子电池在新能源汽车、储能电站、消费电子等领域得到广泛应用。随着充放电循环次数增加,电池容量逐渐衰减,SOH(State of Health) 定义为:
现电池管理系统(BMS)精细化运营的前提,也是预测剩余寿命(RUL)的基础。
传统方法的局限性
方法类别代表算法主要缺点基于模型等效电路模型、电化学模型参数辨识困难,计算量大,泛化性弱基于滤波器EKF、UKF、PF依赖精确模型,噪声协方差难以标定传统机器学习SVM、GPR、RF特征工程依赖人工经验,难以捕捉长程时序依赖深度学习LSTM、CNN、TCN黑盒特性强,可解释性差,训练数据需求量大KAN本文方法可解释性强,参数效率高,非线性逼近能力突出
KAN网络作为2024年提出的新型神经网络架构,以其边上可学习激活函数的特性,在小样本科学计算场景中展现出优异性能,尤其适合电池SOH这类具有物理规律约束的回归任务。
KAN网络原理
柯尔莫哥洛夫-阿诺德表示定理
KAN的理论基础是柯尔莫哥洛夫-阿诺德(KA)
KAN与MLP的本质区别
对比维度MLP(传统神经网络)KAN激活函数位置节点上(固定函数)边上(可学习函数)权重角色线性变换系数无固定权重,函数本身即参数非线性来源固定的ReLU/Sigmoid可训练的样条/多项式函数可解释性低(权重无直观含义)高(每条边的函数可直接可视化)参数效率相对低相对高(对平滑函数逼近效率更优)
本文实现的简化KAN
考虑到MATLAB实现的工程可行性,本文采用多项式基函数替代标准KAN中的B样条,构建如下两层结构:
输入层 x ∈ R^{input_dim}
↓ φ_{q,p}(x_p):多项式逼近,阶数 poly_order=4
中间层 h ∈ R^{hidden_dim} (hidden_dim=8)
↓ Ψ_q(h_q):多项式逼近,阶数 poly_order=4
输出层 y ∈ R^1 (SOH预测值)
NASA电池数据集介绍
数据集来源
本文使用 NASA Ames Prognostics Center of Excellence(PCoE) 公开发布的电池老化实验数据集,文件名 HF_B0005.xlsx 对应 B0005号电池(额定容量2 Ah,18650型)。
实验条件
参数值电池型号18650锂离子电池额定容量2 Ah充电制度CC-CV(1.5A恒流充至4.2V,再恒压至20mA)放电制度2A恒流放电至2.7V实验温度室温(约24°C)循环次数约168次(至容量衰减至额定值的70%)
特征工程
数据文件中每一行代表一次充放电循环,特征列(前 input_dim 列)通常包含从充放电曲线中提取的健康特征因子(Health Indicators, HIs),最后一列为对应的 SOH 标签值。常见健康特征包括:
- 恒流充电阶段时长
- 恒压充电阶段电荷量
- 放电结束电压
- 充电初始电压
- 放电容量(直接指标)
- 充电电压曲线面积
数据预处理流程
顺序划分策略
与分类任务随机划分不同,电池SOH估算属于时序退化预测,必须保持时间顺序——前70%循环作训练集,后30%循环作测试集:
num_train = round(num_samples * 0.7); % 前70%
trainInd = 1:num_train; % 时序不可打乱!
testInd = (num_train + 1):num_samples;
⚠️ 为何不能随机划分? 若随机划分,测试集中的"未来"数据会在训练集中出现,导致数据泄露(Data Leakage),评估结果虚高,不具工程参考价值。
归一化处理
将输入特征和输出标签均归一化到 [0, 1] 区间(而非[-1,1]),更适合多项式基函数的数值稳定性:
[p_train, ps_input] = mapminmax(X_train, 0, 1);
[t_train, ps_output] = mapminmax(Y_train, 0, 1);
% 测试集严格复用训练集的归一化参数
p_test = mapminmax('apply', X_test, ps_input);
t_test = mapminmax('apply', Y_test, ps_output);
归一化后需将矩阵转置为 样本×特征 的行优先格式,以配合 forward_KAN 函数的输入约定:
p_train = p_train'; % [n_train × input_dim]
t_train = t_train'; % [n_train × 1]
KAN网络架构设计
参数规模计算
KAN模型的全部可学习参数被展平为一维向量 theta,其总长度为:
φ 参数量(第一层)= input_dim × hidden_dim × poly_order Ψ 参数量(第二层)= hidden_dim × poly_order total = phi_size + psi_size
以本文配置为例(input_dim 取决于数据,hidden_dim=8, poly_order=4):
参数初始化
theta = 0.01 * (2*rand(theta_len, 1) - 1); % 均匀分布在 [-0.01, 0.01]
采用小幅度随机初始化,防止多项式高阶项在初始阶段产生数值爆炸,是保证训练稳定的关键。
前向传播实现
第一层:φ 映射(输入→隐藏)
第二层:Ψ 映射(隐藏→输出)
结构与第一层完全对称,以中间层激活
损失函数与正则化
复合损失函数
本模型采用 MSE + L2 + L1 三项复合损失:
mse_loss = mean((predictions - Y).^2);
l2_reg = lambda * sum(theta.^2); % lambda = 1e-4
l1_reg = alpha * sum(abs(theta)); % alpha = 1e-2
loss = mse_loss + l2_reg + l1_reg;
两种正则化的作用对比
正则化类型系数数学形式主要作用对多项式系数的效果
L2(岭回归)防止参数过大,平滑模型所有系数均匀缩小,抑制振荡
L1产生稀疏解,自动特征选择低重要性边的系数趋于精确0
两者结合(类似Elastic Net)兼顾平滑性与稀疏性,对于电池SOH这种特征间存在物理相关性的场景尤为重要:L1会自动"剪枝"冗余的多项式边,而L2防止保留边的系数过度放大。
维度安全处理
损失函数中包含多处维度检查,解决MATLAB中行/列向量不一致的常见问题:
% 确保预测值与标签维度一致
if size(Y, 1) ~= size(forward_fn(theta, X), 1)
Y = Y';
end
if size(predictions, 2) > size(predictions, 1)
predictions = predictions';
end
模型训练策略
优化算法:拟牛顿法(L-BFGS)
选择 quasi-newton(即L-BFGS变体)而非梯度下降的原因:
对比项梯度下降(SGD/Adam)拟牛顿法(L-BFGS)收敛速度慢(一阶方法)快(近似二阶方法)超参数需调学习率无需学习率,自动线搜索内存占用低中等(存储Hessian近似)适用数据量大规模(数万样本以上)中小规模(电池数据典型场景)对损失面的要求宽松需损失函数较平滑
NASA B0005数据集样本量约168条,属于典型的小样本科学计算场景,拟牛顿法在此类问题上收敛速度远优于SGD类方法。
模型持久化
训练完成后保存模型参数,支持 TYPE=0 直接加载预训练模型进行推断,无需重新训练:
% 保存
save('KAN_model.mat', 'theta_opt', 'input_dim', 'hidden_dim', ...
'poly_order', 'ps_input', 'ps_output');
% 加载(TYPE=0时)
load('KAN_model.mat', 'theta_opt', ...);
工程实践提示:归一化参数(ps_input,ps_output)必须随模型权重一同保存,否则加载后预测时的反归一化将产生错误结果。
评价指标体系
模型从四个维度对预测结果进行定量评估:
指标定义
function [mae, mse, rmse, mape, R2] = calc_error(Y_real, Y_pred)
error = Y_real - Y_pred;
abs_error = abs(error);
rel_error = abs_error ./ abs(Y_real);
rel_error(~isfinite(rel_error)) = 0; % 防止零值除法
mae = mean(abs_error);
mse = mean(error.^2);
rmse = sqrt(mse);
mape = mean(rel_error) * 100;
SS_res = sum(error.^2);
SS_tot = sum((Y_real - mean(Y_real)).^2);
R2 = 1 - (SS_res / SS_tot);
end
各指标的解读方向
指标理想值特点在SOH估算中的意义MAE→ 0对异常值不敏感,反映平均偏差直接体现SOH估计误差的工程量级(如±1%)RMSE→ 0对大误差惩罚强,反映误差波动衡量最坏情况下的预测质量MAPE→ 0%相对误差,跨尺度可比评估SOH从高到低不同阶段的预测一致性R²→ 1衡量预测值对实际退化趋势的解释程度R²>0.99 才具备工程实用价值
可视化分析
代码生成四幅图形,从不同角度全面评估模型性能:
图1:预测结果对比曲线

关注点:预测曲线是否紧密跟随实际SOH退化趋势;在容量突降(“拐点”)附近的跟踪能力。
图2:逐样本预测误差

关注点:误差是否随循环次数增加呈现系统性漂移(趋势性误差暗示模型在测试集末段外推能力不足)。
图3:残差分布直方图

关注点:残差是否近似正态分布且均值为0(符合无偏估计假设);是否存在重尾(偶发大误差)。
图4:预测值与实际值回归图

关注点:散点是否紧密分布在对角线(y=x)附近;偏离方向可判断模型是否系统性高估或低估SOH。
完整参数配置总览
%% ====== 超参数配置汇总 ======
TYPE = 1; % 1=重新训练,0=加载预训练
train_ratio = 0.70; % 训练集比例(前70%循环)
test_ratio = 0.30; % 测试集比例(后30%循环)
hidden_dim = 8; % KAN隐藏单元数(H)
poly_order = 4; % 多项式阶数(K,范围2-8)
lambda = 1e-4; % L2正则化系数
alpha = 1e-3; % L1正则化系数
max_iter = 100; % 最大迭代次数
超参数敏感性分析
超参数增大的影响减小的影响建议范围hidden_dim表达能力增强,训练变慢,过拟合风险增加欠拟合,模型简单4 ~ 16poly_order逼近复杂函数能力增强,数值不稳定风险增加仅能拟合低阶关系2 ~ 6lambda(L2)模型更平滑,可能欠拟合过拟合风险增加1e-5 ~ 1e-3alpha(L1)模型更稀疏,自动剪枝保留更多边1e-3 ~ 1e-1max_iter拟合更充分,训练时间增加可能训练不充分50 ~ 500
总结与展望
本文小结
本文实现了一套完整的基于KAN的锂电池SOH估算流程:
- 数据层:时序顺序划分(70/30),[0,1] 归一化,防止数据泄露
- 模型层:两层多项式KAN,参数向量化存储,支持保存/加载
- 训练层:MSE + L1 + L2复合损失,拟牛顿法优化,
max_iter=100 - 评估层:MAE / RMSE / MAPE / R² 四维指标,四类可视化图表
与主流方法的对比优势
对比维度LSTMCNN-LSTMKAN(本文)可解释性低低高(每条边可视化)小样本性能一般(需大量数据)一般优(参数效率高)训练收敛速度慢(需大量epoch)中等快(拟牛顿二阶收敛)特征选择能力无局部感受野自动(L1稀疏化边)
潜在改进方向
方向说明B样条替代多项式将多项式基函数替换为标准KAN的B样条,提升对局部非线性的逼近精度多电池迁移学习在B0005基础上预训练,迁移到B0006/B0007,验证跨电池泛化能力时序特征融合引入滑动窗口,将历史多步SOH序列作为额外输入特征不确定性量化结合MC Dropout或Ensemble方法,输出SOH估计的置信区间在线更新机制设计增量学习策略,随电池服役过程中持续更新模型参数
📌 运行说明:
- 数据文件
HF_B0005.xlsx需与脚本置于同一目录下,最后一列为SOH标签,其余列为健康特征 - 首次运行设置
TYPE=1训练并保存模型;后续推断设置TYPE=0直接加载KAN_model.mat - MATLAB版本建议 R2021b 及以上(
fminunc的quasi-newton算法在旧版本中行为有差异)