共计 1761 个字符,预计需要花费 5 分钟才能阅读完成。
引言:心电图分类的 1D CNN 优势
心电图(ECG)信号是典型的 1 维时序数据,传统方法需要手工提取特征。使用 1D CNN 可自动学习以下特征:

- 局部波形模式(如 P 波、QRS 波群)
- 节律异常(通过滑动窗口捕获)
- 振幅变化(通过多个滤波器响应)
对比 FFT 等频域方法,1D CNN 的时域局部感知特性更适合检测瞬时异常。MIT-BIH 心律失常数据库上的实验表明,3 层 1D CNN 即可达到 94% 的准确率,而相同参数量全连接网络仅有 82%。
数学原理:向量内积的本质
1D 卷积运算本质是局部窗口内的向量内积。给定输入序列 $\mathbf{x} \in \mathbb{R}^L$ 和卷积核 $\mathbf{w} \in \mathbb{R}^k$,第 $i$ 个位置的输出为:
$$
y_i = \sum_{j=0}^{k-1} w_j \cdot x_{i+j}
$$
与 2D CNN 的矩阵乘法不同,1D 卷积具有:
- 平移不变性:相同模式在不同位置触发相同响应
- 参数共享:一个卷积核检测所有位置的特定模式
- 层级表征:浅层捕获局部特征,深层组合为高级特征
PyTorch 实现详解
输入张量规范
import torch
import torch.nn as nn
# 输入形状:(batch_size, channels, sequence_length)
x = torch.randn(32, 1, 1000) # 32 个样本,单通道,1000 时间步
三层网络架构
class ECGClassifier(nn.Module):
def __init__(self):
super().__init__()
# 卷积层:kernel_size=7, stride=2, padding=3
self.conv1 = nn.Conv1d(1, 16, 7, 2, 3) # 输出形状:(32,16,500)
# 池化层:降采样因子 2
self.pool = nn.MaxPool1d(2) # 输出形状:(32,16,250)
# 全连接层
self.fc = nn.Linear(16*250, 5) # 5 分类任务
def forward(self, x):
x = torch.relu(self.conv1(x))
x = self.pool(x)
x = x.view(x.size(0), -1) # 展平
return self.fc(x)
关键参数说明
- Shape 变化 :
- 卷积层:$L_{out} = \lfloor (L_{in} + 2\times padding – dilation\times(kernel_size-1)-1)/stride + 1 \rfloor$
-
池化层:$L_{out} = L_{in} // kernel_size$
-
参数量计算 :
- 卷积层:$C_{in} \times C_{out} \times kernel_size + C_{out}$(偏置)
- 示例:16×1×7 + 16 = 128 参数
性能优化策略
Padding 策略对比
| 类型 | 公式 | 边缘信息保留 | 输出长度 |
|---|---|---|---|
| Valid | 无填充 | 差 | $L_{in}-k+1$ |
| Same | $pad=\lfloor k/2 \rfloor$ | 最优 | $\lceil L_{in}/s \rceil$ |
| Causal | 仅左填充 | 时序因果性 | $L_{in}$ |
Depthwise Separable 卷积
将标准卷积分解为两步:
1. 逐通道卷积:每组输入通道独立处理
2. 点卷积:1×1 卷积合并通道
参数量从 $C_{in}\times C_{out}\times k$ 降至 $C_{in}\times k + C_{in}\times C_{out}$
避坑指南
批量归一化位置
推荐顺序:
1. 卷积层
2. BN 层
3. ReLU 激活
4. 池化层
错误放置会导致梯度不稳定或收敛缓慢。
学习率调整原则
- 大卷积核(>15):需降低学习率(~1e-4)
- 小卷积核(<5):可适当增大(~1e-3)
- 混合尺寸:采用分层学习率策略
思考题
- 变长序列处理 :
- 动态 padding 至批次最大长度
- 使用 masking 跳过无效区域
-
全局平均池化替代展平操作
-
大卷积核问题 :
- 当 $k > L$ 时,实际有效参数仅为 $L$
- 等价于全连接层,丧失局部性优势
- 解决方案:限制 $k \leq L/3$
完整案例:MIT-BIH 分类
数据预处理流程:
1. 重采样至 125Hz
2. 分割为 5 秒片段
3. 标准化至零均值单位方差
模型性能对比:
| 模型 | 参数量 | 准确率 |
|---|---|---|
| 1D CNN | 28K | 94.2% |
| LSTM | 35K | 91.7% |
| Transformer | 42K | 93.5% |
代码仓库见 GitHub 链接(模拟)。
正文完
发表至: 未分类
近两天内
