本节摘要:卷积神经网络(CNN)虽出身图像处理,但卷积核在时间轴上的滑动天然适配时序局部模式提取。本节讲清 CNN 的三层结构(卷积、池化、全连接)与时序适配逻辑,展开三种检测路线:序列转图像再分类(格拉姆角场/马尔可夫转换场)、CNN 编码器-解码器重构、CNN 特征提取+传统检测器。客观评估 CNN 的优势(局部特征、并行、鲁棒)与局限(信息损失、长依赖短板),并给出架构设计与训练要点。
阅读完本节,你应当能够:
心电图监护仪上,一段波形是不是"心肌缺血",医生靠的是辨认局部的形态特征——ST 段抬高、T 波倒置,这些都是一两个心跳宽度内(约 1 秒)的局部形状。如果让模型来判断,它最需要的不是"整段序列的长期趋势",而是**"某个短窗口里的局部形态是不是正常"**。
这正是 CNN 的天然强项。CNN 的核心操作是卷积:一个小窗口(卷积核)在数据上滑动,逐段提取局部特征。 它的祖先在图像里提取"边缘、纹理、局部形状",搬到一维时序上,提取的就是"尖峰、凹陷、局部震荡模式"——心电图里的 ST 段抬高,本质上就是一个"局部形态异常"。
CNN 的另一个工程优势是并行计算:卷积核可以同时在不同位置滑动,不像 RNN 必须一步步串行。这让 CNN 在训练和推理速度上远胜 RNN。
但 CNN 也有它的短板:卷积核看的是局部,天然不擅长捕捉跨很远的依赖。一维 CNN 的感受野要靠堆叠层数或大卷积核来扩大,代价是层数深、参数多。所以工程上的常见姿态是:CNN 抓局部形态,和擅长长依赖的 RNN/Transformer 配合使用,而不是让它单打独斗。
卷积层:一维卷积核(比如长度 7)在序列上滑动,每个位置算一次"窗口与核的点积",输出一张特征图。每个核学到一种局部模式——有的核认尖峰,有的核认平滑段,有的核认规律震荡。堆多个核,就得到多种"形态视角"。
池化层:对特征图做下采样(最大值池化取窗口内最大、平均池化取平均)。作用有二:降低计算量、压缩特征;让模型对小幅位移不那么敏感——峰稍微偏两个点,池化后特征基本不变。
全连接层:把池化后的特征展平,映射到最终输出(分类概率或重构结果)。
把一维序列转成二维图像,再用图像 CNN 分类。两个经典转换:
转图像的好处是能复用成熟的图像 CNN 架构;代价是转换过程有信息损失(量化、舍去幅度信息),且"转图"本身是个需要调的超参数步骤。
和自编码器(第 6.3 节)同构,只是编码器/解码器用卷积实现:卷积编码器把序列压缩成低维表示,转置卷积/上采样解码器还原。只用正常数据训练,异常的重构误差大。
这条路线的好处:不需要标签、能端到端自动学特征。缺点:重构误差可能被噪声干扰,且对"幅值异常"敏感而对"形态异常"钝感。
把 CNN 当作"特征提取器":用训练好的 CNN(或预训练模型)把序列段编码成特征向量,再用传统检测器(One-Class SVM、Isolation Forest,见第 5 章)对这些特征做检测。
这条路线最务实——CNN 负责"看懂形态"(把原始序列变成有判别力的特征),传统检测器负责"定义正常边界"。两者各干所长,工程上可解释性也更好:至少能说"模型先提取了形态特征,再判断是否正常"。
| 路线 | 核心逻辑 | 标签需求 | 优势 | 代价 |
|---|---|---|---|---|
| 转图像+分类 | 形态转图像,CNN 分类 | 需标签 | 复用成熟架构 | 转换有信息损失 |
| CNN 重构 | 重构误差判异常 | 只需正常 | 端到端无监督 | 对幅值敏感、形态钝感 |
| 特征+传统检测 | CNN 提特征、传统判边界 | 只需正常 | 可解释、务实 | 两段流程较繁 |
时序数据默认用一维卷积(沿时间轴滑动),不是图像用的二维。一维卷积核覆盖的是"时间跨度",语义是"这 K 个时间步的联合形态"。 把维度搞混(拿二维核去扫一维序列)是新手常犯的错。
CNN 很少是时序检测的"最终答案",更多是**"特征工程自动化器"**:它把"人怎么从波形里看出异常"这件难事,变成"让卷积核自己学局部形态"。在混合架构里,CNN 常与 RNN/Transformer 串联——CNN 先抓局部形态,RNN/Transformer 再管长程依赖,各司其职。
⚠️ 常见坑:指望纯 CNN 抓跨很远的依赖。 卷积感受野有限,一条几小时长的序列,除非堆很深,否则开头的信息到结尾早就"看不见"了。长依赖明显的任务,CNN 要配 RNN/Transformer,或者用扩张卷积、注意力机制扩大感受野。
💡 关键直觉:CNN 检测的本质是"形态识别的自动化"。 人眼能看出"这个波形 ST 段不对",CNN 就是把这种"局部形态判别"学成参数。所以 CNN 最擅长的异常,是有稳定局部形态特征的那类——尖峰、脉冲、局部形变;而不是"整段行为模式变了"那类。
数据量要求:CNN 的参数比传统模型多,训练数据太少容易过拟合——数据量不足时,优先走"CNN 特征+传统检测"或干脆用传统方法。输入标准化必做;训练集务必只含干净的正常样本。
以心电图异常检测为例,走一遍 CNN 的完整落地流程(概念层面):
这个流程的亮点:只用正常数据训练(心电异常样本极少)、自动学"正常心跳长什么样"、重构误差天然可解释(画出来对比原始和重构,医生能直观看到"哪里对不上")。
坑一:核大小与模式宽度不匹配。 核太小抓不到完整形态,核太大模糊了局部——核要匹配你关心的局部模式的持续时间。坑二:忽视感受野。 感受野不够时模型"看不到"足够长的上下文,长依赖任务要加深层或扩大核。坑三:把一维数据当二维处理。 时序默认一维卷积,拿二维核去扫一维序列是新手常错。坑四:数据增强过度。 对时序做时间扭曲、幅度缩放增强时要小心别把异常形态"增强"成正常——增强的边界要守住。
一维 CNN 的卷积核沿时间轴滑动,直接处理原始序列,语义是"这 K 个时间步的联合形态";二维 CNN 需要先把序列转成图像(格拉姆角场等),才能用图像模型。一维更直接、信息损失少,是时序默认选择。
会。转换过程涉及归一化、角度量化,原始幅度信息会损失。但形态信息(波形形状)保留得不错——对"形态异常"(ST 段抬高、波形变形)够用;对"幅度异常"(信号突然变弱)则可能不敏感。
多数时候是配角。CNN 适合做"局部形态特征提取器",长依赖交给 RNN/Transformer,最终判定交给传统检测器。混合架构(CNN+RNN、CNN+注意力)才是它发挥最大价值的方式。
全卷积网络训练一般要数万片段起。数据不足时走"CNN 特征+传统检测"——用预训练或小规模训练的 CNN 提特征,再喂 One-Class SVM/Isolation Forest,对数据量的要求低得多。另一个务实替代是先在相近任务上预训练 CNN(如把正常片段分类任务作为前置),再做特征迁移——迁移学习能让小数据的 CNN 路线也站得住脚。如果连预训练条件都不具备,就干脆回到树模型或统计方法,别在数据不足时硬上深度网络。核心纪律一句话:数据量决定模型复杂度,模型复杂度永远要低于数据能支撑的上限。
下一节进入重构误差检测的"完全体"——自编码器。编码-解码的压缩与还原,让模型学会"正常数据长什么样",重构失败的地方就是异常。