基于对抗学习(域适应)的脑电信号SEEG/EEG分类算法

2024-04-17 13:58

本文主要是介绍基于对抗学习(域适应)的脑电信号SEEG/EEG分类算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

很久没有更新博客了,手头上有一些工作,发论文不是很顺利(论文已经中了,虽然是水刊,但还是很高兴),但是还是想通过博客的方式分享处理。

对抗学习(Adversarial Learning)的思想最早可以追溯到博弈论里面优化问题。GAN(Generative Adversarial Networks)网络是一种典型的基于对抗学习的神经网络。GAN的基本原理其实非常简单,这里以生成图片为例进行说明。假设我们有两个网络,G(Generator)和D(Discriminator)。G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。

这其实对于信号处理的工作是具有启发意义的。特别是对于脑电信号的处理,由于每个人的脑电信号受到个体因素的影响,信号中带有明显的个体特征。这些个体特征会影响到分类器的分类效果和模型的泛化能力。通俗来说,模型可能没有学会有意义的目标特征,而是学会了无关的信息导致模型在新人上的迁移能力较弱。
基于对抗学习脑电分类模型
于是我们设计了上面的一个基于对抗学习的脑电分类模型。
域对抗分类模型(Epilepsy Domain Adversarial Neural Network,EDANN)主要包含三个模块:编码模块,域判别模块,类判别模块。编码模块可以提取脑电信号的特征,域鉴别器主要用于确定是否一对SEEG片段来至于同一位患者,可以通过梯度逆转层(Gradient Reversal Layer,GRL)模块以对抗性方式对域鉴别器进行优化。 它确保了网络无法基于领域知识进行分类,并减少了SEEG数据由于个体差异而对模型的干扰;类判别器是对目标SEEG数据进行分类。我们可以将编码器表示为 f e ( X ; θ e ) f_{e}(X;\theta_{e}) fe(X;θe), 编码器用于提取多信道的脑电特征并降低原始脑电数据纬度。 θ e \theta_{e} θe表示的是编码器学习到的参数。
类别判别器可以表示为 f l ( f e ; θ l ) f_{l}(f_{e};\theta_{l}) fl(fe;θl),类判别器可以给出输入数据 X X X的预测标签, θ l \theta_{l} θl表示的是类别判别器学习到的参数。
域判别器可可以表示为 f d ( f e ; θ d ) f_{d}(f_{e};\theta_{d}) fd(fe;θd),域判别器是判别一对输入 X 1 X_{1} X1 X 2 X_{2} X2是否来至于同一个病人。其中 X 2 X_{2} X2来至于数据的随机采样。最后的损失函数来至于两个部分,一个是来至于类别预测的损失函数 L l ( f l ( f e ; θ l ) ) \mathcal{L}_{l}(f_{l}(f_{e};\theta_{l})) Ll(fl(fe;θl)), 另外一部分的损失函数来至于域判别器的损失函数 L d ( f d ( f e ; θ d ) ) \mathcal{L}_{d}\left(f_{d}\left(f_{e} ; \theta_{d}\right)\right) Ld(fd(fe;θd))。对于一对输入 X 1 X_{1} X1 X 2 X_{2} X2损失函数可以定义为:

L ( X 1 , X 2 ; θ e , θ l , θ d ) = L l ( f l ( f e ( X 1 ; θ e ) ; θ l ) ) − γ L d ( f d ( f e ( X 1 ; θ e ) ; θ d ) , f d ( f e ( X 2 ; θ e ) ; θ d ) ) \mathcal{L}\left(X_{1}, X_{2} ; \theta_{e}, \theta_{l}, \theta_{d}\right) = \mathcal{L}_{l}\left(f_{l}\left(f_{e}\left(X_{1} ; \theta_{e}\right) ; \theta_{l}\right)\right) -\gamma \mathcal{L}_{d}\left(f_{d}\left(f_{e}\left(X_{1} ; \theta_{e}\right) ; \theta_{d}\right), f_{d}\left(f_{e}\left(X_{2} ; \theta_{e}\right) ; \theta_{d}\right)\right) L(X1,X2;θe,θl,θd)=Ll(fl(fe(X1;θe);θl))γLd(fd(fe(X1;θe);θd),fd(fe(X2;θe);θd))
其中 γ \gamma γ是超参。为了方便起见,我们用 Z 1 Z_{1} Z1 Z 2 Z_{2} Z2表示为输入数据 X 1 X_{1} X1 X 2 X_{2} X2经过编码器 f e ( X ; θ e ) f_{e}(X;\theta_{e}) fe(X;θe)的输出。对于类别判别器的损失函数可以定义为二元交叉熵:
L l ( f l ( Z 1 ; θ l ) ) = − [ y 1 log ⁡ f l ( Z 1 ) + ( 1 − y 1 ) log ⁡ ( 1 − f l ( Z 1 ) ) ] \mathcal{L}_{l}\left(f_{l}\left(Z_{1} ; \theta_{l}\right)\right)=-\left[y_{1} \log f_{l}\left(Z_{1}\right)+\left(1-y_{1}\right) \log \left(1-f_{l}\left(Z_{1}\right)\right)\right] Ll(fl(Z1;θl))=[y1logfl(Z1)+(1y1)log(1fl(Z1))]
其中 y 1 y_{1} y1表示的是输入数据 X 1 X_{1} X1的标签; f l ( Z 1 ) f_{l}(Z_{1}) fl(Z1)表示的是类别分类器给出的预测值。对于域判别器的损失函数 L d ( f d ( Z 1 ; θ d ) , f d ( Z 2 ; θ d ) ) \mathcal{L}_{d}\left(f_{d}\left(Z_{1} ; \theta_{d}\right), f_{d}\left(Z_{2} ; \theta_{d}\right)\right) Ld(fd(Z1;θd),fd(Z2;θd))可以定义如下:
L d ( f d ( Z 1 ; θ d ) , f d ( Z 2 ; θ d ) ) = 1 2 D ( f d ( Z 1 ) , f d ( Z 2 ) ) 2 I + 1 2 ( max ⁡ { 0 , m − D ( f d ( Z 1 ) , f d ( Z 2 ) ) } ) 2 ( 1 − I ) \mathcal{L}_{d}\left(f_{d}\left(Z_{1} ; \theta_{d}\right), f_{d}\left(Z_{2} ; \theta_{d}\right)\right) =\frac{1}{2} D\left(f_{d}\left(Z_{1}\right), f_{d}\left(Z_{2}\right)\right)^{2} I +\frac{1}{2}\left(\max \left\{0, m-D\left(f_{d}\left(Z_{1}\right), f_{d}\left(Z_{2}\right)\right)\right\}\right)^{2}(1-I) Ld(fd(Z1;θd),fd(Z2;θd))=21D(fd(Z1),fd(Z2))2I+21(max{0,mD(fd(Z1),fd(Z2))})2(1I)
其中 I I I表示的是指示函数,它的取值范围为{0,1}; I = 1 I=1 I=1时表示两个样本 X 1 X_{1} X1 X 2 X_{2} X2来至于同一个病人,相反, I = 0 I=0 I=0 D ( ⋅ ) D(\cdot) D()是欧式距离函数, m m m是给定的数据的取值上界。对于所有的样本的损失函数 L t \mathcal{L}_{t} Lt定义如下:
L t = ∑ i , j N α L ( X i , X j ; θ e , θ l , θ d ) \mathcal{L}_{t}=\sum_{i, j}^{N} \alpha \mathcal{L}\left(X_{i}, X_{j} ; \theta_{e}, \theta_{l}, \theta_{d}\right) Lt=i,jNαL(Xi,Xj;θe,θl,θd)
其中 N N N表示的数据对的个数, X i X_{i} Xi X j X_{j} Xj表示的是输入的数据对; θ e \theta_{e} θe θ l \theta_{l} θl θ d \theta_{d} θd分别表示的是编码器,类别判别器和域判别器的参数, α \alpha α表示的是学习率。

EDANN模型的域分类器是Bilstm模型。Bilstm的工作原理是首先通过卷积神经网络提取窗口SEEG信号空间(窗口大小=1s)的局部特征.CNN模型编码每个SEEG片段每个窗口的16维表示,因此原始 SEEG段可以表示为矩阵大小为 n × 15 n\times15 n×15的矩阵,其中N表示SEEG段的长度(n秒,n ∈ \in [2, 15])。 然后利用BiLstm捕获两个方向表示之间的关系,然后及时学习SEEG信号的全局特性。根据全局特征,可以判断两个SEEG段是否来自同一域(两个SEEG段来自同一患者)。EDANN的类别分类器为Lstm或Transformer模型,根据选择的不同模型,可以将EDANN模型进行划分EDANN-Lstm和EDANN-Transformer,标签分类器可以根据编码器学习到的表示对目标SEEG片段进行分类。

数据集,我们从华山医院采集到了几位病人的数据:
在这里插入图片描述

将其进行随机切位不等的片段如下:
在这里插入图片描述
用留一法在不同病人的实验结果如下:
在这里插入图片描述
在这里插入图片描述
可以看到我们的模型取得最好的结果。
同时我们研究了信道排序和不排序的实验结果,这表明我们的数据预处理是合理的。
在这里插入图片描述
另外,我同时研究了窗口大小对于模型准确率的影响;
在这里插入图片描述
和超参对于模型的影响
在这里插入图片描述
最后做了消融实验
在这里插入图片描述
以上是我的实验,如果想看细节,可以看我的论文:Epilepsy SEEG Data Classification Based On Domain Adversarial Learning

这篇关于基于对抗学习(域适应)的脑电信号SEEG/EEG分类算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/911989

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖