超高创新模型!TF-SAX-Llama 轴承故障诊断

近年来,大语言模型火得一塌糊涂,写文案、敲代码、做图样样都行。于是很多人开始琢磨:能不能把大模型用在工业故障诊断上?

国内外研究团队已在该方向取得诸多进展:

西南交通大学团队提出的 DiagLLM 发表于《中国科学:信息科学》(SCI 一区);北京科技大学的 KG-SR-LLM 发表于 SCI 期刊《Sensors》;清华大学团队研发的 MaintAGT 在通用测试集上达到 ISO 三级振动分析师水平;华南理工大学的 FaultGPT、中国矿业大学的 FD-LLM 等工作也相继发表。相关成果覆盖中文核心、EI、SCI 等多个层级,呈现出蓬勃发展的态势。

然而,在实际落地中一个核心问题始终绕不开:

振动信号不是自然语言,而且用上亿参数的大模型训练开销太大!

直接将连续振动数值序列输入大模型,既不符合其预训练阶段的文本输入范式,也会面临序列过长、噪声干扰严重、物理语义不明确等诸多挑战。

具体而言:

  • 序列长度问题:一段 1 秒的振动信号通常包含上万个采样点,直接输入大模型会导致序列长度急剧膨胀,计算开销巨大且关键特征被稀释。

  • 噪声干扰问题:工业现场采集的振动信号往往夹杂大量环境噪声,原始数据中有效故障特征与干扰信息混叠,大模型难以直接区分。

针对这一痛点,本项目提出了一种更契合机械信号特性的技术路线:先将连续振动信号编码为紧凑的故障符号语言,再通过轻量级 Llama 模型学习符号模式与故障类别之间的映射关系,从而实现大模型在工业故障诊断场景下的高效适配。

项目名称:

TF-SAX-Llama

全称可以理解为:

Time-Frequency SAX enhanced Lightweight LLM for Bearing Fault Diagnosis

核心思想一句话概括:

连续机械振动信号 → 时频双域 SAX 符号语言 → 物理特征符号 → Llama-1B + LoRA → 轴承故障分类


一、为什么这个思路值得做?

传统轴承故障诊断方法里,常见做法包括:

  • 直接用 1D-CNN 读取原始振动;

  • 把信号转换成时频图,再用 2D-CNN 或 ViT;

  • 提取人工特征,再接 SVM、MLP、随机森林等分类器;

  • 用 Transformer、Mamba 等模型直接建模序列。

这些方法都能做,但它们通常存在一个问题:

模型读到的是数值,而不是一种更高层次的“故障语言”。

而 TF-SAX-Llama 的出发点是:

机械振动信号虽然是连续数值,但故障模式本身往往具有结构性,例如周期冲击、幅值突变、包络谱峰值变化、冲击强度增强等。

如果我们能把这些结构压缩成一组离散符号,再交给大语言模型,那么模型学习的就不再是原始波形点,而是:

TIME SAX 符号模式
FREQ SAX 符号模式
RMS / Kurtosis / Crest 等物理状态符号

这就让轴承诊断任务更接近一种“故障符号阅读理解”。


二、整体框架

整个方法流程如下:

原始振动信号
    ├── 时域分支:Raw waveform → Z-normalization → PAA → SAX
    ├── 频域分支:Hilbert envelope → Envelope spectrum → SAX
    └── 物理分支:RMS / Kurtosis / Crest → 等级符号化

最终组合成 Fault Symbolic Prompt
    ↓
本地 Llama-1B
    ↓
LoRA 参数高效微调
    ↓
故障分类结果

【图 1 整体方法框架图】

图片


三、创新点 1:不是让 Llama 直接读原始振动s数据,而是读“故障符号语言”

本项目没有把 Llama 当成普通的数值序列模型使用。原始窗口长度经过SAX后,得到分支SAX符号,再加上少量 Prompt 标签和物理状态描述,实际 Llama tokenizer 后平均长度约为:

数据集

TIME SAX

FREQ SAX

总 SAX 符号

平均 Token 长度

最大 Token 长度

CWRU 西储大学

64

64

128

约 166.50

168

江南大学

64

64

128

约 166.51

168

这比直接输入 2048 个连续数值更紧凑,也更符合 Llama 对离散符号序列的建模习惯。

【图 2 :原始振动 + PAA + SAX 符号化示意图】

图片


四、创新点 2:时域 SAX + 包络频谱 SAX,兼顾冲击形态与故障频率信息

只看原始时域波形,能够捕捉冲击和波形形态,但轴承故障诊断中,频率结构同样重要。

因此本项目设计了双分支 SAX:

1. Time-SAX

2. Freq-SAX

这样可以把包络频谱的形态也转换成符号序列,让 Llama 同时看到:

  • 时域冲击模式;

  • 频域包络结构;

  • 不同故障类型对应的符号组合。

【图 3 :包络频谱图】

图片

【图 4 预留:TIME SAX 与 FREQ SAX 符号序列图】

当前项目已生成示例图:

图片


五、创新点 3:加入物理特征符号,补偿 SAX 标准化后的幅值信息损失

标准 SAX 在处理时通常会进行 Z-normalization。

这一步有利于消除量纲差异,但也可能削弱振动幅值、冲击强度等物理信息。

所以项目额外从未经 Z-score 标准化的原始窗口中提取:

  • RMS:反映整体能量;

  • Kurtosis:反映冲击性;

  • Crest Factor:反映峰值冲击强度。

但这些物理特征并不直接以小数形式输入 Llama,而是离散成等级符号:

LOW
MEDIUM
HIGH
VERY_HIGH

最终 Prompt 中会出现类似:

<RMS> HIGH
<KURTOSIS> VERY_HIGH
<CREST> HIGH

这种设计有两个好处:

  1. 保留机械诊断里非常重要的幅值和冲击信息;

  2. 让输入形式保持“符号语言”,不破坏 Llama 的文本建模习惯。


六、最终输入给 Llama 的 Prompt 长什么样?

本项目默认使用紧凑 Prompt,避免大量无关自然语言占据上下文。

示例:

Bearing vibration diagnosis.
<TIME>
D E D E E D E D E D E D D E ...
<FREQ>
H H H H H H H H G F F E E F ...
<RMS> MEDIUM
<KURTOSIS> LOW
<CREST> LOW
Classify the fault.

注意,这里不会在 Prompt 中泄露真实标签。

标签只作为分类目标参与训练。

在我的代码中,会直接将提示词生成一个表格,方便查阅:

图片


七、模型训练方式:Llama-1B + LoRA,不做全参数微调

本项目使用本地 Llama-1B 作为主干模型,并通过 LoRA 做参数高效微调。

  • Llama-1B 是 Meta Llama 系列中的轻量级大语言模型,参数规模约为 10 亿级别。相比 7B、13B 等更大的模型,1B 模型对显存和算力要求更低,更适合在个人 GPU 或普通实验环境中进行 LoRA 微调。本项目使用的是 Llama-3.2-1B-Instruct,它是指令微调版本,适合处理结构化文本 Prompt。在本项目中,Llama-1B 并不是直接读取原始振动数值,而是读取由 Time-SAX、Freq-SAX 和物理特征符号共同构成的故障诊断 Prompt。Llama-1B模型在本地大约只有4个G左右的空间,训练需要英伟达显卡,并不会要求过多算力。我的电脑是4060ti,8G显卡,运行此模型非常快,毫无压力!关于此模型的下载方式,我放在代码介绍里了。

实际训练中,模型参数统计如下:

数据集

总参数量

可训练参数量

可训练比例

CWRU 10 分类

1,236,707,328

872,448

0.0705%

江南大学 4 分类

1,236,682,752

860,160

0.0696%

可以看到,虽然底座是 1B 级别的大语言模型,但真正参与更新的参数不到 0.1%。

这也是 LoRA 的意义:

保留大模型的符号建模能力
同时大幅减少训练参数量与模型保存体积


八、实验设置

本项目当前包含两个数据集实验。

1. CWRU 西储大学轴承数据集

采用 DE 端信号。

当前设置为 10 分类任务,每类 400 个窗口样本,总计 4000 个样本。

类别包括:

  • Normal

  • Ball_007_1797

  • Ball_014_1797

  • Ball_021_1797

  • IR_007_1797

  • IR_014_1797

  • IR_021_1797

  • OR_007_1797

  • OR_014_1797

  • OR_021_1797

数据划分:

每类 train: 280
每类 val: 60
每类 test: 60

2. 江南大学轴承数据集

当前实验设置只使用 600 转工况。

设置为 4 分类任务,每类 400 个窗口样本,总计 1600 个样本。

类别包括:

  • Normal

  • Ball

  • Inner

  • Outer

数据划分:

每类 train: 280
每类 val: 60
每类 test: 60

3. 防止数据泄漏

项目中特别注意了一个轴承故障诊断里很容易被忽略的问题:

不能先切窗口再随机划分训练集和测试集。

因为同一条长振动记录中相邻窗口非常相似,如果随机打散,会造成严重的数据泄漏。

本项目采用:

原始记录 / 连续记录块
→ 先做 group split
→ 再分别滑窗

训练集、验证集、测试集之间的 group 没有交集。这个设计让实验结果更可信。


九、实验结果展示

下面结果为当前项目在本地配置下得到的参考结果。

1. CWRU 10 分类结果

CWRU 10 分类任务中,模型在测试集上取得了非常高的识别效果。

测试集指标如下:

指标

结果

Accuracy

100.00%

Macro Precision

100.00%

Macro Recall

100.00%

Macro-F1

100.00%

Weighted-F1

100.00%

这说明 TF-SAX-Llama 对 CWRU 中不同故障直径、不同故障部位的符号模式具有较强区分能力。从结果上看,时频双域 SAX 符号能够较好地保留不同故障严重程度对应的模式差异。

【图 5 :CWRU 混淆矩阵】

图片

【图 6 :CWRU 训练损失曲线】

图片

【图 7 :CWRU 验证准确率 / Macro-F1 曲线】

图片

图片


2. 江南大学 600 转数据结果

江南大学这个数据的难度比较高,因此本项目采用这个数据来验证一下TF-SAX-Llama 模型的效果。江南大学数据集只选用 600 转工况,进行 4 分类实验。

测试集指标如下:

指标

结果

Accuracy

92.92%

Macro Precision

93.18%

Macro Recall

92.92%

Macro-F1

92.83%

Weighted-F1

92.83%

分类报告中可以看到:

  • Normal 类识别效果较好,F1 约为 95.73%;

  • Inner 类和 Outer 类整体表现稳定;

  • Ball 类相对更难,说明滚动体类在该数据设置下与其他类别存在一定符号模式交叠;

  • 即便如此,整体 Macro-F1 仍能达到 92% 以上。

这组结果说明,该方法并不是只在 CWRU 这类常用公开数据上有效,在另一套轴承数据上同样能够得到较好的分类表现。

【图 8 :江南大学轴承数据混淆矩阵】

图片

【图 9 预留:江南大学训练损失曲线】

图片

【图 10 预留:江南大学验证准确率 / Macro-F1 曲线】

图片

图片


十、代码截图

这份代码不仅包含模型训练,还包含完整实验流程。

图片

主要功能包括:

  • CWRU 数据自动读取;

  • 江南大学数据自动读取;

  • MATLAB .mat 文件扫描;

  • CWRU DE 端信号选择;

  • 江南大学 600 转工况筛选;

  • 严格 group split,避免窗口泄漏;

  • Time-SAX 自实现;

  • Envelope Spectrum + Freq-SAX;

  • RMS / Kurtosis / Crest 物理特征符号化;

  • Fault Symbolic Prompt 自动构建;

  • 本地 Llama-1B 加载;

  • LoRA 参数高效微调;

  • 训练日志保存;

  • 测试指标输出;

  • 混淆矩阵绘制;

  • 训练曲线绘制;

  • SAX 可视化;

  • 单样本预测;

  • 消融实验入口;

  • SAX 参数敏感性实验入口;

  • Symbol Masking Importance 可解释性分析。


十一、项目核心点总结

一句话总结:

这不是一个简单把 Llama 套到轴承数据上的项目,而是把机械振动信号先转换成时频双域符号语言,再利用 Llama 学习故障符号组合规律。

核心点包括:

  • 方法新:SAX 符号化 + Llama 故障诊断;

  • 结构清晰:Time-SAX、Freq-SAX、Physical Symbols 三分支;

  • 实验完整:CWRU 与江南大学两个数据集;

  • 结果直观:自动输出混淆矩阵、训练曲线、分类报告;

  • 训练轻量:LoRA 微调,训练参数不到 0.1%;

  • 可解释:支持 Symbol Masking Importance;

  • 工程完整:配置化、脚本化、可直接运行。

代码获取!

代码环境配置起来并不复杂,实在配不好的可以后台私信,免费帮你远程配置!

获取此代码方式:关注 :g~z~h~  《淘个代码》

内容概要:本文系统研究了Picard迭代法在非线性常微分方程参数估计中的应用,深入阐述了该方法的数学原理及其在参数辨识中的收敛性与稳定性优势。通过构建最小化误差的目标函数,并结合数值积分技术,采用迭代方式逐步逼近系统的真实参数值,有效解决了非线性动态系统中因缺乏解析解而难以进行精确建模的问题。文中提供了完整的Matlab代码实现,涵盖模型定义、迭代求解、参数更新与结果可视化等关键环节,增强了方法的可操作性与工程实用性。研究通过典型非线性系统案例验证了算法的有效性,展示了其在科学计算与工程建模中的良好适应性与推广潜力。; 适合人群:具备常微分方程理论、数值分析基础及Matlab编程能力,从事系统建模、参数辨识、动力学仿真等相关方向的研究生、科研人员和工程技术开发者。; 使用场景及目标:①解决实际工程中非线性微分方程模型的未知参数估计问题;②深入理解Picard迭代法在科学计算中的实现机制与数值特性;③为学术论文复现、科研项目开发或课程设计提供可运行、易调试的技术方案与代码参考。; 阅读建议:建议读者结合文中的数学推导与Matlab代码逐行分析,重点关注迭代流程、目标函数构造与数值积分的耦合实现,通过修改模型结构或噪声条件进行扩展实验,以深化对算法鲁棒性与适用边界的理解。配套资源可通过指定公众号和网盘链接获取,推荐同步学习以加速科研进程。
内容概要:本文详细介绍了一种基于多尺度集成极限学习机(Extreme Learning Machine, ELM)的回归方法,并提供了完整的Matlab代码实现。该方法通过构建多尺度特征表示与集成学习机制,有效提升了ELM在处理非线性、高维复杂数据时的预测精度与模型鲁棒性,特别适用于时间序列回归任务。文档不仅阐述了算法的核心原理与技术流程,还系统展示了其在风电功率预测等工程场景中的应用潜力。同时,文中附带了丰富的科研仿真案例集合,涵盖智能优化算法、深度学习、信号处理、电力系统调度等多个前沿方向,体现了多学科交叉融合的技术优势与实践价值。; 适合人群:具备一定Matlab编程能力,从事科学研究或工程应用的研究生、科研人员及工程技术开发者,尤其适合专注于机器学习、智能算法优化、新能源预测与电力系统建模等相关领域的专业人员。; 使用场景及目标:①用于风电、光伏、负荷等时间序列数据的高精度回归预测任务;②为科研工作者提供可复现的多尺度集成ELM模型代码框架,支持快速算法验证与二次开发;③满足实际工程项目中对高效建模、实时预测与智能决策的技术需求。; 阅读建议:建议读者结合所提供的Matlab代码进行动手实践,深入理解多尺度特征构造与集成策略的设计思想,同时可参考文档中其他相关算法案例进行横向比较与综合应用,以提升整体科研创新能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淘个代码_

不想刀我的可以选择爱我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值