当前位置: 首页 > news >正文

脑电分析——ICA原理、ICALabel成分与伪迹之间一对多的关系

ICA原理、ICALabel成分与伪迹之间一对多的关系

  • 一、ICA原理
    • 1. ICA的基本概念
    • 2. ICA的数学原理
  • 二、ICA与ICALabel分别在做什么
    • 1. ICA: 统计分解层(“把混合信号拆开”)
    • 2. ICALabel:语义标注层(“给每个IC贴标签”)
  • 三、为什么会出现“一对多”:同一类伪迹会对应多个IC
    • 1. 主要原因:
    • 2. 总结
  • 四、同理也可能出现“多对一”:一个IC混合多类特征
  • 五、论文复现
    • 1. 论文核心内容
    • 2. 实现内容
  • 六、感受

一、ICA原理

1. ICA的基本概念

基本概念
独立成分分析(ICA)是一种盲源分离技术,旨在从观测数据中提取相互独立的信号源。ICA主要用于信号处理、语音分离、图像分析等领域。

ICA的理想假设
① 各源信号统计独立(有效地分离)
② 至少有一个(通常大多数)源呈非高斯分布(中心极限定理)
③ 通道数 ≥ 主要源数(满足线性方程求逆的基本可解性)

ICA与PCA的区别

  • PCA关注方差最大化,假设不同主成分之间是正交的、不相关的
  • ICA关注信号的统计独立性,假设信号是非高斯的

ICA试图找到一个变换,使得投影后的数据尽可能独立,而不是仅仅去除相关性。

什么是非高斯信号?

  • 非高斯信号是指其统计特性偏离高斯分布。

为什么要研究高斯信号

  • 中心极限定理:多个独立信号的线性混合会趋向高斯分布(混合信号比单一源信号更“高斯”)。
  • 推论:若分离后的信号越非高斯,越接近真实的源信号。
  • ICA的策略:通过最大化分离信号的非高斯性来逼近源信号。

2. ICA的数学原理

假设现有 nnn 个源信号 S=(s1,s2,⋯,sn)TS = \left ( s_{1} ,s_{2} , \cdots , s_{n} \right )^{T}S=(s1,s2,,sn)T,它们通过一个未知的混合矩阵 AAA 线性混合后,形成观测信号 XXX
X=ASX=AS X=AS

其中:

  • X=(x1,x2,⋯,xn)TX = \left ( x_{1} ,x_{2} , \cdots , x_{n} \right )^{T}X=(x1,x2,,xn)T 是观测到的数据
  • s=(s1,s2,⋯,sn)Ts = \left ( s_{1} ,s_{2} , \cdots , s_{n} \right )^{T}s=(s1,s2,,sn)T 是源信号,它们是相互独立的
  • AAA 是未知的混合矩阵

ICA的目标 是找到了一个逆矩阵 WWW ,使得:S=WXS=WXS=WX

  • 其中 WWW 是分离矩阵,使得 SSS 尽可能独立。

二、ICA与ICALabel分别在做什么

1. ICA: 统计分解层(“把混合信号拆开”)

  • 模型:观测 EEG X(t)X(t)X(t) 是若干潜在源 S(t)S(t)S(t)线性混合
    X(t)=AS(t)X(t)=AS(t) X(t)=AS(t)

  • 目标: 求解解混矩阵 WWW ,得到 IC (独立成分)。

  • 关键假设:源之间统计独立、至少一部分源 非高斯

  • 输出含义:每个IC是一个 统计上 尽量独立的时序分量及其空间投影(拓扑/头皮图)。

注意:ICA的“独立”是统计独立的,通常通过非高斯最大化来实现。(也就是说,得到的 IC 之间在统计特征上 [ 分布、联合概率 ] 没有依赖关系 )

2. ICALabel:语义标注层(“给每个IC贴标签”)

  • 输入:ICA 得到的每个 IC(其波形、功率谱、头皮拓扑等特征)
  • 本质:一个监督学习分类器,输出7类概率分布。(Brain/Eye/Muscle/Heart/Line/Channel/Other)
  • 输出解释:对每个IC 给出 “属于各类别的概率” 而不是单一确定标签。(例如:Eye=0.86, Muscle=0.07……)
  • 作用:把 统计分解出的IC 映射到人可理解的 伪迹/脑源类别

ICA负责“拆”ICALabel负责“认”。即先用ICA的独立成分,再用ICALabel给每个成分判别语义类别。

三、为什么会出现“一对多”:同一类伪迹会对应多个IC

独立(统计)” 与 “类别(语义)不是一一对应的

1. 主要原因:

(1)生理源本身是多维的

  • 眼动:垂直 EOG(眨眼/眼动)VS 水平 EOG(扫视),它们在头皮上的投影不同,ICA 会分别抓住它们。
  • 肌电:不同肌群(额肌、颞肌、颊肌等)→ 各有独立的电活动模式,可能分成多个 IC。

(2)信号具有时变/非平稳性

  • 眨眼:短时、低频成分;
  • 眼位偏移(眼睛保持在某个偏移方向):更慢的漂移;
  • 扫视:快速瞬态。

ICA 倾向于把不同时间/频率特征的活动拆分到不同的 IC 。

(3)噪声与通道数限制

  • 电极少 → 无法完整分离全部源 → 伪迹可能被拆到多个方向
  • ICA 的前提之一是:通道数 ≥ 源信号数

  • 如果电极数量太少(比如只用 8 通道EEG),但脑电源+伪迹源(眼动、肌电、心电等)数量比通道数多,那么ICA 无法完全一一分离

  • 结果就是:

    • 一个伪迹信号(比如眼动)可能 “溢出” 到多个 IC ;
    • ICA 会尽量在有限的维度里找到近似独立的方向 → 可能把同一个伪迹拆散。
  • 信噪比低 → ICA 会把“伪迹主轴”分裂成多个独立成分,以适应数据的波动
  • 如果 EEG 信号被噪声淹没(比如电极接触不好、肌电干扰很强),ICA 在分离时就会收到影响:

    • 它会把原本应该属于 “一个独立成分” 的信号分裂开;
    • 这样得到的 IC 可能不是一个干净的伪迹,而是几个波动不完全独立的小块
  • 等于说:ICA 为了满足 “统计独立”,不得不把同一个伪迹分配到多个成分上。

(4)理论层面

  • ICA 只要求 IC 之间统计独立
  • 类别是人为语义,可以重复。独立≠唯一

例子:

  • 你可能得到 Eye-IC_V(垂直眼动,前额对称、大振幅、低频、眨眼主轴)和 Eye-IC_H(水平眼动,左右偏置,水平扫视主轴);
  • 二者都被 ICALabel 标为 Eye,这是同一类伪迹的一对多

2. 总结

一个生理伪迹(如眼动/肌电)在空间、时间、频率上可能有多个独立成分,所以 ICA 会给出多个 IC ,它们在标注时被归为同一类伪迹,这就是 “一对多” 。

四、同理也可能出现“多对一”:一个IC混合多类特征

  • 因为真实数据不完全满足 ICA 的理想假设(源之间统计独立),或某些源本身就有耦合
  • ICALabel 会给出混合概率(如 Brain 0.55、 Muscle 0.35…)

五、论文复现

我这周主要是粗略地了解了 EEGANet_Removal_of_Ocular_Artifacts_From_the_EEG_Signal_Using_Generative_Adversarial_Networks(EEGANet:使用生成对抗网络从脑电图信号中去除眼部伪影)这篇论文,然后根据它的开源代码地址https://github.com/IoBTVISTEC/EEGANet进行复现。

1. 论文核心内容

EEGANet 是一种基于 生成对抗网络GAN)的脑电信号眼动伪迹去除方法。主要的贡献和特点:

(1)问题背景:

  • EEG 数据中,眼动伪迹严重影响信号分析,尤其是用于脑机接口应用时。
  • 传统的方法需要 EOG 信号眼动检测算法 ,增加实现复杂性。

(2)方法创新

  • EEGANet 使用 GAN 来学习去除眼动伪迹的映射,无需依赖 EOG 或眼动检测。

(3)模型能力

  • 能生成多通道 EEG 信号。
  • 在眼动伪迹去除上,与依赖 EOG 的传统方法性能接近。
  • EEGANet 处理后的信号分类性能与传统方法相当,即使没有 EOG 信号。

2. 实现内容

复现的流程是:
① 将我们自己的数据集从 .edf 转化为 .npy(符合模型的输入格式)
② 使用训练好的 EEGANet 模型,将自己的训练集进行去伪迹

输出前10个样本(从自己的EEG数据集中选取了前10段EEG信号样本),将原始信号和模型输出信号进行绘图对比,每个样本里包含多个通道(绿色:原始EEG,红色:去伪迹EEG

下图为输出结果的一部分内容:
在这里插入图片描述
每个子图代表一个 EEG 通道
(1)横坐标是时间点(0~256,对应256个采样点),纵坐标是幅值(经过标准化)
(2)绿色曲线:原始 EEG 信号(含眼动伪迹)
(3)红色曲线:EEGANet 输出信号(模型去伪迹后的结果)

六、感受

这周我主要学习了 ICA 与 ICALabel 的原理和区别,理解了 ICA 负责 “分解信号” 、ICALabel 负责 “给成分贴标签” ,以及为什么会出现 “一对多” 或 “多对一” 的情况;同时,我粗略阅读并复现了 EEGANet 去除眼动伪迹的论文与代码,把自己的 EEG 数据集转化为模型可用格式并进行了实验,输出前 10 个样本的多通道对比图,直观看到模型在抑制伪迹和保留脑电趋势方面的效果。

http://www.dtcms.com/a/340104.html

相关文章:

  • 从合规到主动免疫:大模型内容风控的创新与实践
  • 【PyTorch】单对象分割项目
  • Seata笔记
  • Day22 顺序表与链表的实现及应用(含字典功能与操作对比)
  • 不同语言的并发模型对比:Go、Java与Python
  • Python脚本每天爬取微博热搜-终版
  • 重塑酒店投屏体验:私密投屏技术的革新应用
  • GStreamer无线图传:从树莓派到计算机的实现方案
  • 20250819 强连通分量,边双总结
  • 嵌入式-SPI的IO引脚初始化、模块初始化、数据的收发-Day16
  • Codeforces 盒装苹果
  • vLLM加载lora
  • CF266E More Queries to Array... Solution
  • GPFS不同存储方式的优劣
  • 2943. 最大化网格图中正方形空洞的面积
  • Manus AI 与多语言手写识别技术深度剖析
  • 不同的 Text2sql 方式优缺点探究
  • 智慧校园中IPTV融合对讲:构建高效沟通新生态
  • Unity常用工具及默认快捷键
  • PowerBI登录出错解决过程
  • YOLO多模态改进系列 | YOLOFuse:多模态融合的 Slim-Neck 改进
  • java面试——多线程
  • C++高频知识点(二十九)
  • HarmonyOS 中的 泛型类和泛型接口
  • 51单片机拼接板(开发板积木)
  • 爬小红书搜索详情软件:根据关键词采集笔记详情,包含正文内容、发布时间、转评赞藏等
  • C++开发基础之:队列用法与生产者消费者模型实战和可直接复用的线程安全的队列
  • 疏老师-python训练营-Day50预训练模型+CBAM注意力
  • 会话技术之<Cookie>和<Session>的区别联系
  • “数据权限”的道和术