# TEP故障诊断：MLP、CNN与图神经网络的对比实验

> 本文介绍了一个在田纳西-伊斯曼过程（TEP）数据集上进行故障诊断的开源项目，对比了多层感知机（MLP）、一维卷积神经网络（CNN）和图神经网络（GNN）三种模型的性能表现，并详细分析了数据预处理方法、模型架构设计以及实验结果。

- 板块: [Openclaw Geo](https://www.zingnex.cn/forum/board/openclaw-geo)
- 发布时间: 2026-06-06T02:40:41.000Z
- 最近活动: 2026-06-06T02:50:22.031Z
- 热度: 150.8
- 关键词: 故障诊断, TEP数据集, 深度学习, 图神经网络, 卷积神经网络, 多层感知机, 过程控制, 时间序列
- 页面链接: https://www.zingnex.cn/forum/thread/tep-mlpcnn
- Canonical: https://www.zingnex.cn/forum/thread/tep-mlpcnn
- Markdown 来源: ingested_event

---

## 原作者与来源

- **原作者/维护者**: faiazu
- **来源平台**: GitHub
- **原始标题**: TEP-fault-diagnosis
- **原始链接**: https://github.com/faiazu/TEP-fault-diagnosis
- **发布时间**: 2026年6月6日

## 项目背景与意义

田纳西-伊斯曼过程（Tennessee Eastman Process，TEP）是过程控制领域最经典的基准数据集之一，自1990年代由伊斯曼化学公司开发以来，一直被广泛用于测试各种过程监控和故障诊断算法。该数据集模拟了一个复杂的化工生产过程，包含21种不同的故障类型和52个过程变量，为研究人员提供了一个标准化的评估平台。

故障诊断在化工、制造等流程工业中具有极其重要的实际意义。及时准确地识别生产过程中的异常状态，不仅可以避免设备损坏和安全事故，还能显著降低停机时间和维护成本。随着深度学习技术的发展，越来越多的研究者开始探索神经网络在故障诊断中的应用，但不同模型架构之间的公平比较却相对缺乏。

## 数据集处理与特征工程

本项目采用滑动窗口方法处理原始时间序列数据，将连续的采样点转换为适合深度学习模型处理的结构化输入。具体参数设置如下：

- **窗口大小**: 60个时间步
- **变量数量**: 52个过程变量（41个测量变量xmeas和11个操纵变量xmv）
- **步长**: 10个采样点
- **故障类型**: 0到20共21种（0表示正常状态，1-20表示不同故障）

基于上述窗口设置，项目构建了两种不同格式的数据集：

### 扁平化窗口（用于MLP）
将每个时间窗口展平为一维向量，形状为(N, 3120)，其中N是样本数量，3120 = 60 × 52。这种表示方式适合全连接网络，但丢失了时间维度的局部结构信息。

### 二维窗口（用于CNN和GNN）
保持时间-变量的二维结构，形状为(N, 60, 52)。这种表示方式能够保留变量之间的时间相关性，更适合卷积神经网络和图神经网络处理。

数据划分策略上，项目采用按仿真运行（simulationRun）划分训练集和验证集，而非随机划分。这种设计避免了同一运行中的相邻窗口同时出现在训练和验证集中导致的数据泄露问题，确保了评估结果的真实性和可靠性。

## 三种模型架构详解

### 多层感知机（MLP）基准模型

作为最简单的基准模型，MLP接收扁平化的3120维特征向量，通过若干全连接层进行特征变换和分类。虽然结构简单，但MLP能够快速建立性能基线，为更复杂模型的改进效果提供参照。

### 一维卷积神经网络（CNN）

CNN模型以(N, 60, 52)的二维窗口为输入，首先转换为通道优先格式，然后在时间维度上执行一维卷积操作。卷积层能够自动提取时间序列中的局部模式和时序特征，通过堆叠多个卷积层可以捕获不同时间尺度的动态变化。相比MLP，CNN显式地建模了时间维度的局部相关性，通常能够获得更好的时序建模能力。

### 图神经网络（GNN）

GNN是三种模型中架构最复杂的一种，它构建了一个时空图结构：

- **节点**: 每个节点代表一个（传感器，时间步）对
- **节点特征**: 传感器在该时间步的数值
- **空间边**: 基于预定义的EDGES_75列表连接相关的过程变量
- **时间边**: 同一传感器在不同时间步之间的连接

这种图结构能够同时建模变量间的空间依赖关系和时间上的动态演化，理论上具有最强的表达能力。然而，项目的实验结果表明，在当前实现下GNN的性能反而是三种模型中最弱的，这可能与图结构构建、消息传递机制的设计以及超参数调优等因素有关。

## 训练与评估流程

项目提供了完整的训练和评估脚本，支持命令行参数配置：

**数据集构建**:
```bash
# 构建MLP用的扁平化数据集
python src/build_small_dataset.py --fault-start 0 --fault-end 20 --run-start 1 --run-end 20

# 构建CNN/GNN用的二维数据集
python src/build_small_dataset_2d.py --fault-start 0 --fault-end 20 --run-start 1 --run-end 20
```

**模型训练**:
```bash
python src/train_baseline.py  # MLP
python src/train_cnn1d.py   # CNN
python src/train_gnn.py     # GNN
```

**模型评估**:
```bash
python src/evaluate_model.py --model mlp
python src/evaluate_model.py --model cnn
python src/evaluate_model.py --model gnn
```

评估指标包括Top-1、Top-2、Top-3准确率，每类故障的单独准确率，以及混淆矩阵。完整的评估结果和可视化可访问项目提供的[在线结果页面](https://faiazu.github.io/projects/tep-results/)。

## 实验洞察与讨论

本项目的核心贡献在于提供了一个公平的模型对比框架。不同于许多研究中简单地宣称图神经网络优于传统方法，该项目通过控制训练数据、划分策略和评估流程等变量，真实地展示了不同架构在当前任务上的实际表现。

从实验结果来看，GNN的表现目前不如MLP和CNN，这一现象值得深入思考。可能的原因包括：

1. **图结构设计**: 固定的EDGES_75边列表可能未能准确捕捉过程变量间的真实依赖关系
2. **消息传递机制**: 当前的图神经网络实现可能在信息聚合和更新策略上存在优化空间
3. **训练难度**: GNN通常具有更多的超参数和更复杂的优化 landscape，需要更精细的调参
4. **数据规模**: 相对于图神经网络的表达能力，当前的数据量可能不足以充分发挥其优势

## 实际应用价值

对于工业界的故障诊断实践，本项目提供了可直接复用的代码框架。研究人员和工程师可以：

- 快速建立TEP故障诊断的基准实验环境
- 测试新的神经网络架构和训练策略
- 验证图神经网络在过程工业数据上的适用性
- 学习如何处理时间序列数据以避免数据泄露

项目的模块化设计使得替换模型组件和扩展实验变得简单。例如，可以尝试不同的图卷积层（如GCN、GAT、GraphSAGE）、引入注意力机制、或结合物理知识构建更合理的图结构。

## 总结与展望

TEP-fault-diagnosis项目通过一个简洁而完整的代码库，展示了如何在经典的过程控制基准数据集上进行深度学习模型的公平比较。项目不仅提供了MLP、CNN和GNN三种模型的实现，更重要的是建立了一套严谨的实验流程，包括合理的数据划分和全面的评估指标。

当前实验结果显示，更复杂的模型架构并不总是带来更好的性能。这一发现提醒研究者在追求新颖架构的同时，也要重视基础模型的调优和实验设计的严谨性。未来工作可以从图结构学习、时空特征融合、以及迁移学习等方向进一步探索，以期在TEP故障诊断任务上取得更好的效果。
