MPED数据集 双曲空间对比学习算法源码
1. 方法概述
本方法提出了一种基于双曲空间对比学习的跨被试 EEG 情感识别框架。整体流程采用"预训练—特征提取—后处理—分类"四阶段管线设计,核心创新在于将对比学习从传统的欧几里得空间迁移至庞加莱球(Poincaré Ball)双曲流形,利用双曲空间天然的层次结构建模能力来捕获 EEG 信号中情感状态的层次化语义关系。
整体流程:
原始EEG信号 → CNN特征编码器 → 双曲空间对比预训练 → DE特征提取
→ Running Normalization → LDS平滑 → MLP分类器 → 情感类别
2. 数据集:MPED
2.1 数据集概况
本实验采用 MPED(Multi-modal Physiological Emotion Database) 数据集。MPED 是一个多模态生理信号情感数据库,旨在通过多种生理信号(EEG、GSR、RSP、ECG)研究人类情感状态的客观生理表征。本项目仅使用其中的 EEG(脑电) 模态。
| 属性 | 说明 |
|---|---|
| 被试数量 | 23 人 |
| EEG 通道数 | 62 通道(国际 10-20 系统扩展) |
| 原始采样率 | 1000 Hz |
| 实际使用采样率 | 200 Hz(降采样后) |
| 情感刺激 | 34 段情感诱导视频片段 |
| 情感类别 | 9 类 |
| 数据总量 | 原始约 35 GB,降采样后约 7 GB |
2.2 情感类别
MPED 数据集涵盖 9 种离散情感类别,涵盖了积极、消极和中性三大情感维度:
| 类别编号 | 情感类别 | 英文 | 情感效价 |
|---|---|---|---|
| 0 | 高兴 | Joy | 积极 |
| 1 | 滑稽 | Funny | 积极 |
| 2 | 愤怒 | Anger | 消极 |
| 3 | 恐惧 | Fear | 消极 |
| 4 | 厌恶 | Disgust | 消极 |
| 5 | 悲伤 | Sadness | 消极 |
| 6 | 中性 | Neutrality | 中性 |
| 7 | 惊讶 | Surprise | 中性/积极 |
| 8 | 温柔 | Tenderness | 积极 |
34 段视频按以下顺序对应各情感标签:
视频序号: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
情感标签: 0 2 1 4 3 5 6 7 8 1 2 3 8 6 7 4 5 0 1 5 6 2 2 1 8 7 6 4 4 3 5 3 7 8
2.3 数据采集与预处理
采集设备:使用 62 通道 EEG 采集系统(符合国际 10-20 扩展标准),原始采样率 1000 Hz。每位被试观看全部 34 段情感诱导视频,各视频时长不等(数十秒至数分钟)。
预处理流程:
原始 .mat 文件 (1000Hz, 67通道)
│
├─ concate.py: 提取前62个EEG通道, 按视频顺序拼接
│ → final_concatenated_MPED.npy (23×62×N, 约35GB)
│
└─ downsample.py: 逐被试抗混叠降采样 (scipy.signal.decimate)
1000Hz → 200Hz (5倍)
→ final_concatenated_MPED_200Hz.npy (23×62×N/5, 约7GB)
2.4 数据集特点与挑战
- 细粒度多类别:9 类情感区分度差异大,相近情感(如 joy/funny、fear/disgust)在 EEG 层面难以区分
- 跨被试差异显著:不同个体的 EEG 信号存在巨大的个体差异(幅值、频谱特征、空间分布均不同),是跨被试泛化的核心难点
- 类别不均衡:34 个视频在 9 类情感中的分布并不完全均匀
- 时序依赖:情感状态具有时间连续性,相邻时间片段的情感标签高度相关
3. 网络架构
3.1 CNN 特征编码器(ConvNet_baseNonlinearHead)
特征编码器采用定制化的多层卷积神经网络,专为 EEG 信号的时空特性设计,通过空间-时间分离卷积策略有效解耦通道间的空间关系和时间域的动态模式。网络结构如下:
| 层 | 操作 | 输入维度 | 输出维度 | 说明 |
|---|---|---|---|---|
| 1 | Stratified LayerNorm | (B, 1, 62, T) | (B, 1, 62, T) | 跨被试分层归一化 |
| 2 | Spatial Conv2d | (B, 1, 62, T) | (B, 16, 1, T) | 核:(62, 1),学习空间滤波器 |
| 3 | Temporal Conv2d | (B, 1, 16, T) | (B, 16, 16, T) | 核:(1, 60),300ms时间窗 |
| 4 | ELU + AvgPool | (B, 16, 16, T) | (B, 16, 16, T/30) | 平均池化,降低时间分辨率 |
| 5 | Stratified LayerNorm | — | — | 中间层归一化 |
| 6 | Depthwise Spatial Conv2d | (B, 16, 16, T/30) | (B, 32, 1, T/30) | 分组卷积,核:(16, 1) |
| 7 | Depthwise Temporal Conv2d | (B, 32, 1, T/30) | (B, 64, 1, T/180) | 分组卷积,核:(1, 6) |
| 8 | Stratified LayerNorm | — | — | 深层归一化 |
| 9 | Flatten + Linear Classifier | (B, D) | (B, 9) | 256→ReLU→9,联合训练 |
关键设计:
-
空间-时间分离卷积:第一层空间卷积(核大小 62×1)跨越全部 EEG 通道进行空间滤波,等价于学习一组自适应的空间滤波器;随后的时间卷积(核大小 1×60,对应 200Hz 下的 300ms 时间窗)在空间滤波后的特征上捕获时间域动态模式。这种分离设计大幅减少了参数量,同时避免了时空特征的相互干扰。
-
深度可分离卷积:第二组空间-时间卷积采用 groups 参数实现深度可分离卷积(Depthwise Separable Convolution),每个通道独立进行卷积操作后再跨通道融合。
spatialConv2(groups=16)和timeConv2(groups=32)通过因子multiFact=2逐层扩展通道数(16→32→64),在控制参数量的同时逐步增强特征表达能力。 -
ELU 激活函数:相比 ReLU,ELU(Exponential Linear Unit)在负值区域具有非零梯度,能够有效缓解"神经元死亡"问题,对 EEG 这类信号幅值可能为负的数据尤为适用。
3.2 分层归一化策略(Stratified Layer Normalization)
这是本方法的核心创新之一。传统 Batch Normalization 使用全局统计量进行归一化,在跨被试场景下,由于不同被试的 EEG 信号分布差异显著,全局统计量会模糊个体差异。
分层归一化的核心思想是:在每个 mini-batch 中,按被试分组进行独立归一化。
x ^ s = x s − μ s σ s + ϵ , μ s = 1 N s ∑ i ∈ S x i , σ s = 1 N s ∑ i ∈ S ( x i − μ s ) 2 \hat{x}_{s} = \frac{x_s - \mu_s}{\sigma_s + \epsilon}, \quad \mu_s = \frac{1}{N_s}\sum_{i \in S} x_i, \quad \sigma_s = \sqrt{\frac{1}{N_s}\sum_{i \in S}(x_i - \mu_s)^2} x^s=σs+ϵxs−μs,μs=Ns1i∈S∑xi,σs=Ns1i∈S∑(xi−μs)2
其中 (S) 表示属于同一被试的样本集合。该策略在网络的三个关键位置部署:
- 输入层(initial):消除原始 EEG 信号的被试间幅值差异
- 第一组卷积后(middle1):对齐中间特征的分布
- 第二组卷积后(middle2):确保高层语义特征的被试无关性
这种多层级的分层归一化形成了一个渐进式的跨被试域对齐机制,从浅层的信号级对齐逐步过渡到深层的语义级对齐。
3.3 双曲空间对比学习
3.3.1 跨被试对比采样策略
对比学习的关键在于正负样本对的构造。本方法提出了跨被试对比采样策略(Cross-Subject Contrastive Sampling):
- 正样本对:选取两个不同被试观看同一视频(同一情感刺激)时的 EEG 片段
- 负样本对:同一 batch 中不满足正样本条件的所有其他样本对
这种采样策略的动机在于:相同情感刺激下,不同被试应产生相似的情感状态表征,因此将跨被试同视频的样本拉近,不同视频的样本推远,能够迫使编码器学习到被试无关的情感语义特征。
每个 batch 从34个视频中各采样若干时间片段(默认 batch_size=28),并为所有被试对((\binom{N_{train}}{2}) 组合)生成对比样本。
3.3.2 庞加莱球嵌入与双曲距离
本方法将对比学习从欧几里得空间扩展至庞加莱球模型(Poincaré Ball Model),这是整个框架的核心创新。
动机:情感状态天然具有层次结构(如"积极-消极"的二元划分可进一步细分为"快乐"、"惊喜"等具体情感),双曲空间的体积随半径呈指数增长,天然适合表示这种树形/层次结构,而欧几里得空间的体积仅呈多项式增长。
具体实现:
- L2 归一化:将 CNN 编码器的输出特征 (z) 进行 L2 归一化
- 指数映射(Exponential Map):将归一化后的特征从欧几里得切空间映射到庞加莱球:
exp 0 c ( v ) = tanh ( c ⋅ ∥ v ∥ ) v c ⋅ ∥ v ∥ \text{exp}_0^c(v) = \tanh\left(\sqrt{c} \cdot \|v\|\right) \frac{v}{\sqrt{c} \cdot \|v\|} exp0c(v)=tanh(c⋅∥v∥)c⋅∥v∥v
其中 (c) 是庞加莱球的曲率参数(默认 (c=0.1))。
-
双曲距离:在庞加莱球中计算样本对的距离:
d B c n ( x , y ) = 1 c arcosh ( 1 + 2 c ∥ x − y ∥ 2 ( 1 − c ∥ x ∥ 2 ) ( 1 − c ∥ y ∥ 2 ) ) d_{\mathbb{B}^n_c}(x, y) = \frac{1}{\sqrt{c}} \text{arcosh}\left(1 + \frac{2c\|x - y\|^2}{(1 - c\|x\|^2)(1 - c\|y\|^2)}\right) dBcn(x,y)=c1arcosh(1+(1−c∥x∥2)(1−c∥y∥2)2c∥x−y∥2) -
InfoNCE 损失:基于双曲距离构造对比损失:
L c s = − log exp ( − d ( z i , z j + ) / τ ) ∑ k ≠ i exp ( − d ( z i , z k ) / τ ) \mathcal{L}_{cs} = -\log \frac{\exp(-d(z_i, z_j^+) / \tau)}{\sum_{k \neq i} \exp(-d(z_i, z_k) / \tau)} Lcs=−log∑k=iexp(−d(zi,zk)/τ)exp(−d(zi,zj+)/τ)
其中 (\tau = 0.07) 为温度参数。负距离越大意味着相似度越高。
3.3.3 联合训练损失
预训练阶段采用对比损失与分类损失的联合优化:
L = L c s + λ ⋅ L c e \mathcal{L} = \mathcal{L}_{cs} + \lambda \cdot \mathcal{L}_{ce} L=Lcs+λ⋅Lce
其中 (\mathcal{L}{cs}) 为双曲空间 InfoNCE 对比损失,(\mathcal{L}{ce}) 为交叉熵分类损失,(\lambda = 0.1) 为平衡系数。分类损失通过 CNN 末端的线性分类头(256→ReLU→9)计算,引导编码器在学习被试无关表征的同时保持情感判别能力。
优化策略:采用 Adam 优化器(lr=0.0007, weight_decay=0.015),配合 CosineAnnealingWarmRestarts 学习率调度器(T₀=26, 对应 80 epochs / 3 次重启),训练 80 个 epoch,早停容忍度为 30 个 epoch。
3.4 微分熵(DE)特征提取
预训练完成后,利用 CNN 编码器的中间层输出(第一组时间卷积后的特征图,形状为 16×16×T’)计算微分熵特征:
DE = 1 2 log ( 2 π e ⋅ σ 2 ) \text{DE} = \frac{1}{2} \log(2\pi e \cdot \sigma^2) DE=21log(2πe⋅σ2)
其中 (\sigma^2) 为特征图沿时间维度的方差。每个时间段得到 16×16 = 256 维的 DE 特征向量。
DE 特征相比原始 CNN 输出具有以下优势:
- 物理可解释性:DE 与 EEG 频段的功率谱密度直接相关,已被广泛证明是情感识别的有效特征
- 降维效果:将高维时间序列压缩为紧凑的统计量
- 鲁棒性:基于方差的统计量对瞬时噪声具有天然的抗干扰能力
3.5 Running Normalization
提取的 DE 特征在不同被试和不同时间段之间仍存在分布偏移。本方法提出了预加权 Running Normalization 策略进行自适应域对齐:
μ ^ t = α t ⋅ μ t r a i n + ( 1 − α t ) ⋅ x ˉ t , α t = α 0 ⋅ r t \hat{\mu}_t = \alpha_t \cdot \mu_{train} + (1 - \alpha_t) \cdot \bar{x}_t, \quad \alpha_t = \alpha_0 \cdot r^t μ^t=αt⋅μtrain+(1−αt)⋅xˉt,αt=α0⋅rt
其中 (\mu_{train}) 为训练集统计量,(\bar{x}_t) 为实时运行均值,(\alpha_0 = 1.0),衰减率 (r = 0.990)。
该策略的核心思想是:在数据序列的初始阶段,更多依赖训练集的先验统计量;随着观测数据的积累,逐步过渡到实时统计量。这模拟了一个从"先验知识"到"在线自适应"的渐进过程,有效缓解了跨被试的协变量偏移问题。
3.6 LDS(线性动态系统)平滑
Running Normalization 后的特征通过卡尔曼滤波器进行时间维度平滑,消除噪声和瞬时波动:
P t = A ⋅ V t − 1 ⋅ A + T K t = P t ⋅ C C ⋅ P t ⋅ C + σ u t = A ⋅ u t − 1 + K t ⋅ ( x t − C ⋅ A ⋅ u t − 1 ) V t = ( 1 − K t ⋅ C ) ⋅ P t \begin{aligned} P_{t} &= A \cdot V_{t-1} \cdot A + T \\ K_t &= \frac{P_t \cdot C}{C \cdot P_t \cdot C + \sigma} \\ u_t &= A \cdot u_{t-1} + K_t \cdot (x_t - C \cdot A \cdot u_{t-1}) \\ V_t &= (1 - K_t \cdot C) \cdot P_t \end{aligned} PtKtutVt=A⋅Vt−1⋅A+T=C⋅Pt⋅C+σPt⋅C=A⋅ut−1+Kt⋅(xt−C⋅A⋅ut−1)=(1−Kt⋅C)⋅Pt
其中 (A=1, C=1, T=0.0001, \sigma=1) 为系统参数。LDS 平滑后的特征 (u_t) 保留了时间趋势信息,同时滤除了高频噪声。
3.7 MLP 分类器(simpleNN4)
最终分类采用带有 BatchNorm 和 Dropout 的四层 MLP:
输入 (256) → Linear(256, 30) → BatchNorm1d → ReLU → Dropout(0.2)
→ Linear(30, 30) → BatchNorm1d → ReLU → Dropout(0.2)
→ Linear(30, 9) → Softmax → 9类情感标签
分类器采用 LOSO(Leave-One-Subject-Out)评估协议,每次以一个被试作为验证集,其余被试作为训练集,共进行 23 折交叉验证。训练使用 Adam 优化器(lr=0.0005, weight_decay=0.025),StepLR 学习率调度,最多 100 个 epoch,早停容忍度 30。
4. 创新点总结
| 创新点 | 描述 | 效果 |
|---|---|---|
| 双曲空间对比学习 | 将对比学习从欧几里得空间迁移至庞加莱球双曲流形 | 利用双曲空间的层次建模能力捕获情感状态的语义层次结构 |
| 跨被试对比采样 | 以"不同被试-同一视频"构造正样本对 | 迫使编码器学习被试无关的情感表征 |
| 分层归一化(SLN) | 在网络三个关键位置按被试分组归一化 | 形成渐进式的跨被试域对齐机制,从信号级到语义级逐步消除个体差异 |
| 联合训练损失 | 对比损失 + 分类损失联合优化 | 在学习通用表征的同时保持任务判别性 |
| 预加权 Running Normalization | 指数衰减融合先验统计量与在线统计量 | 实现从先验知识到在线自适应的平滑过渡 |
| CNN-DE 特征管线 | CNN 中间层提取 DE 特征 + LDS 平滑 | 兼具深度学习的表达能力和传统 DE 特征的物理可解释性 |
5. 实验结果
5.1 实验设置
| 项目 | 配置 |
|---|---|
| 数据集 | MPED(Multi-modal Physiological Emotion Database) |
| 被试数 | 23 |
| EEG 通道数 | 62 |
| 采样率 | 200 Hz(从 1000 Hz 降采样) |
| 情感类别 | 9 类(joy, funny, anger, fear, disgust, sadness, neutrality, surprise, tenderness) |
| 视频刺激 | 34 个情感诱导视频片段 |
| 评估协议 | LOSO(Leave-One-Subject-Out),23 折交叉验证 |
| 预训练 | 4-fold CV,每折 80 epochs |
| 分类训练 | 每折最多 100 epochs,早停容忍度 30 |
| 曲率参数 | (c = 0.1) |
5.2 LOSO 9 分类结果
| 指标 | 数值 |
|---|---|
| 平均验证准确率 | 39.395% ± 6.898% |
| 平均验证损失 | 2.076 ± 0.653 |
| 随机基线 | 11.11%(1/9) |
| 相对随机基线提升 | +254.6% |
5.3 结果分析
-
显著超越随机基线:9 分类任务下,模型准确率(39.4%)约为随机猜测水平(11.1%)的 3.5 倍,表明模型成功学习到了具有判别性的跨被试情感表征。
-
任务难度考量:9 类细粒度情感识别是极具挑战性的任务。相邻情感类别(如 joy 与 funny、fear 与 disgust)在 EEG 层面的区分度有限,混淆在所难免。模型在此高难度任务上的表现验证了双曲空间对比学习在 EEG 情感识别领域的有效性。
- 该方法具有良好的鲁棒性和泛化能力
- 双曲空间对比学习确实能有效捕获细粒度的情感区分信息
- 分层归一化策略在被试数量变化时仍能保持稳定的跨域对齐效果
5.4 方法优势
- 端到端学习:从原始 EEG 信号到情感类别的完整管线,无需手工设计频域滤波器
- 跨被试泛化:LOSO 评估下的稳定表现证明了模型的跨被试泛化能力
- 双曲空间的优势:相比欧几里得空间,庞加莱球嵌入在低维空间中能更好地保持层次结构信息,这对具有层次语义关系的情感分类尤为关键
- 轻量级分类器:最终分类器仅为三层 MLP(总参数量极少),表明预训练阶段已提取了高质量的情感表征
- 极低的硬件门槛:整个模型极其轻量(详见下文),普通笔记本电脑即可完成全流程训练与推理,无需高端 GPU 集群
- 完备的中文代码注释:全部核心代码(模型定义、对比学习、数据加载、特征提取、归一化、平滑、分类等 10 个关键文件)均配有详细的中文注释,涵盖模块功能说明、算法原理阐述、数学公式对应、关键设计意图解释等,显著降低了代码阅读和二次开发的门槛,便于中文科研社区快速理解与复现
5.5 轻量化特性与硬件需求
本方法的一个显著实用优势是极低的计算资源需求,使其具备在普通消费级硬件上完整运行的能力。
模型轻量化体现:
| 指标 | 本方法 | 典型视觉模型 (参考) |
|---|---|---|
| CNN 编码器参数量 | ≈ 2.6M | ResNet-50: 25.6M |
| MLP 分类器参数量 | ≈ 10K | — |
| 单样本输入大小 | 1×62×1000 (≈0.24MB) | 3×224×224 (≈0.59MB) |
| 训练显存占用 | ≈ 1 GB | 8–16 GB |
| GPU 利用率 | ≈ 40% | 90%+ |
低资源需求的根本原因:
- 一维信号处理:EEG 本质是一维时间序列(62 通道×时间),数据维度远低于图像(H×W×3)或视频,卷积运算量天然较小
- 深度可分离卷积:
groups参数将卷积分解为逐通道独立操作,参数量和 FLOPs 均大幅降低(相比标准卷积减少约 n_filters 倍) - 小批量对比学习:跨被试采样策略每次仅需 2×28=56 个样本,无需大 batch 即可构造有效的正负样本对
- 两阶段设计:重型 CNN 仅在预训练阶段使用,分类阶段的 MLP 仅有约 10K 参数,推理几乎无开销
实测硬件需求:
| 硬件配置 | 可行性 |
|---|---|
| 具有独立 GPU 的笔记本(≥2GB 显存) | 可完整训练,预训练约数小时 |
| 仅 CPU 的笔记本(≥16GB 内存) | 可运行但较慢,预训练约需 1–2 天 |
| 高端 GPU 工作站 | 全流程约 1–2 小时 |
这一特性使得本方法特别适合:
- 资源受限的科研实验室快速验证想法
- 教学场景中学生在个人电脑上复现实验
- 边缘设备上的在线情感识别应用探索
6. 模型参数量
| 模块 | 参数量估算 |
|---|---|
| Spatial Conv (1→16, 62×1) | 992 + 16 = 1,008 |
| Temporal Conv (1→16, 1×60) | 960 + 16 = 976 |
| Depthwise Spatial Conv (16→32, 16×1, groups=16) | 512 + 32 = 544 |
| Depthwise Temporal Conv (32→64, 1×6, groups=32) | 192 + 64 = 256 |
| Classifier (D→256→9) | ≈ 2.6M + 2,313 |
| CNN 编码器总计 | ≈ 2.6M |
| MLP 分类器 (256→30→30→9) | 7,680 + 930 + 900 + 270 + 30 + 30 + 9 = ≈ 10K |
7. 源码截图

更多推荐
所有评论(0)