基于KAN神经网络的锂电池SOH估算模型(NASA数据集)

作品简介

基于KAN神经网络的锂电池SOH估算模型(NASA数据集)

摘要:健康状态(State of Health,SOH)是锂电池全生命周期管理的核心指标。本文提出一种基于柯尔莫哥洛夫-阿诺德网络(Kolmogorov-Arnold Network,KAN)的锂电池SOH估算方法,以NASA电池老化数据集(B0005)为研究对象,通过多项式样条函数逼近非线性映射关系,结合L1/L2正则化与拟牛顿优化算法,实现对电池SOH的高精度估计。文章将从数据处理、网络架构到训练细节进行完整的代码级讲解。

目录

  1. 研究背景与意义
  2. KAN网络原理
  3. NASA电池数据集介绍
  4. 数据预处理流程
  5. KAN网络架构设计
  6. 前向传播实现
  7. 损失函数与正则化
  8. 模型训练策略
  9. 评价指标体系
  10. 可视化分析
  11. 完整参数配置总览
  12. 总结与展望

研究背景与意义

锂离子电池在新能源汽车、储能电站、消费电子等领域得到广泛应用。随着充放电循环次数增加,电池容量逐渐衰减,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=8poly_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_inputps_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-8lambda      = 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估算流程:


  1. 数据层:时序顺序划分(70/30),[0,1] 归一化,防止数据泄露
  2. 模型层:两层多项式KAN,参数向量化存储,支持保存/加载
  3. 训练层:MSE + L1 + L2复合损失,拟牛顿法优化,max_iter=100
  4. 评估层: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 算法在旧版本中行为有差异)


创作时间: