运动想象 (MI) 迁移学习系列 (3) : MSFT

运动想象迁移学习系列:MSFT

  • 0. 引言
  • 1. 主要贡献
  • 2. 数据增强方法
  • 3. 基于度量的空间滤波转换器
    • 3.1 空间过滤
    • 3.2 脑电图ViT
      • 3.2.1 变压器编码器层
      • 3.2.2 基于度量的损失函数
  • 4. 实验结果
    • 4.1 消融实验
    • 4.2 基线任务对比
    • 4.3 跨主题
  • 5. 总结
  • 欢迎来稿

论文地址:https://www.sciencedirect.com/science/article/abs/pii/S1746809422005249#aep-article-footnote-id1
论文题目:Excellent fine-tuning: From specific-subject classification to cross-task classification for motor imagery
论文代码:暂未找到

0. 引言

随着深度学习的普及,基于特征提取器和分类器的运动意象脑电图(MI-EEG)识别表现良好。然而,大多数模型提取的特征没有足够的区分性仅限于特定主题分类。我们提出了一种新的模型,基于度量的空间滤波变压器(MSFT),该模型利用加性角裕量损失来强制实施深度模型,以提高类间可分离性,同时增强类内的紧凑性。此外,在模型中应用了一种称为脑电图金字塔的数据增强方法

1. 主要贡献

  1. 基于微调的算法具有加性角裕度损失,可以解耦特征提取器分类器的训练,以提取更具通用性辨别性的特征。
  2. 提出了一种新的数据增强方法,即脑电图金字塔,它可以从脑电图中的多个时间窗口探索局部信息
  3. 该方法不仅在特定主题分类方面优于近年来许多流行的算法,而且无缝地适应跨主题甚至跨任务的分类

2. 数据增强方法

本文提出了一种数据增强方法:脑电图金字塔。脑电图金字塔结构的主要操作流程如下图所示:
在这里插入图片描述
主要包含以下操作步骤:

  1. 记原始脑电信号为 ( S , T ) (S, T) S,T。 其中, S S S 表示脑电通道数 T T T 表示脑电信号采集时间(数据点个数)
  2. 将原始信号记为第0层,依次对下一层信号进行上采样。上采样率为: 1 + l ( m − 1 ) c − 1 1+\frac{l(m-1)}{c-1} 1+c1l(m1)。其中, m m m表示上采样率, c c c表示金字塔层数。使用SciPysignal.resample 来实现上采样。
  3. 用连续的 T T T数据点随机截取每层的脑电样本。
  4. 将截获的所有层的脑电图堆叠在新的第三维空间(空间维度为c)中,作为脑电图金字塔样本。
  5. 由于截取的随机性,试验脑电图数据可以生成多个不同的脑电图金字塔样本。我们将此样本增强参数标记为 M。

3. 基于度量的空间滤波转换器

通过空间滤波将脑电图原始数据转化为中间时空表示,然后通过脑电图金字塔作为ViT输入,转化为时空金字塔样本。作为特征提取器,ViT 输出一组高级判别特征,这些特征通过加性角裕量损失进行优化。训练特征提取器后,继续训练多层感知器 (MLP) 作为分类器。完整的 MSFT 过程图 2 所示。
在这里插入图片描述
(a) 空间滤波将脑电图原始数据转换为时空金字塔样本。
(b) 基于度量的脑电图ViT包括特征提取器和分类器。
(c)ArcFace损失提高了类间的可分离性,有利于提高分类精度。

3.1 空间过滤

按照论文内容的意思:这里的空间滤波就是一个OVR-CSP结构,就不再展开说了。

3.2 脑电图ViT

深度模型EEG ViT由三部分组成:段嵌入层变压器编码器层分类头层。输入通过线段嵌入层转换为具有特定形状的嵌入(存在困惑,不知道为啥非要这样做?)。然后,通过变压器编码器层提取隐藏特征,通过平均得到e区分特征;同时,存在基于指标的损失,以增强类内紧密性和类间差异。训练完两层后,我们冻结两层的参数,继续训练分类头层。

3.2.1 变压器编码器层

变压器编码器层结构如下所示:
在这里插入图片描述

3.2.2 基于度量的损失函数

基于指标的损失函数 ArcFace 损失派生自 Softmax lossSoftmax loss表示如下:
在这里插入图片描述
传统的 Softmax loss 在应用于分类时,并没有明确优化深度特征,以加强类内相似性类间差异。而ArcFace损失的计算公示如下所示:
在这里插入图片描述
softmax 损失在嵌入决策边界的可分离特征上产生明显的模糊性,而 ArcFace 损失显然可以在最接近的类之间强制执行更明显的间隙,如图 4 所示。
在这里插入图片描述

4. 实验结果

4.1 消融实验

消融实验结果如下表所示:
在这里插入图片描述

  1. 无空间滤波:我们直接将脑电图原始数据发送到脑电图金字塔后给脑电图ViT,后续过程保持不变。
  2. ResNet18 特征提取器:如果直接省略 EEG ViT 的处理,则无法提取深层特征。因此,我们使用另一个高效的主干网 ResNet 来提取特征。基于 ResNet 庞大的参数和较长的训练时间,最轻量级的 ResNet18 有足够的深度信息挖掘能力。
  3. 变压器编码器编号(r = 1 和 r = 5):变压器编码器的数量表示网络深度。我们探讨了变压器编码器模块的深度对结果的影响。
  4. 无 ArcFace 损失:我们移除了 ArcFace 损失模块,这样提取的特征就不需要等待训练完成才发送到分类器。换句话说,特征提取器和分类器处于同一训练阶段。

结果表明,空间滤波对解码确实有很大的正向作用,其空间增强有助于特征更具判别性。此外,在我们的方法中,EEG ViT作为特征提取器是比ResNet更好的骨干。 变压器中的注意力机制更适合解码脑电图等时间序列数据。变压器的深度对解码性能有轻微影响。但是,这并不意味着网络越深,分类精度就越高。ArcFace损失对结果的明显影响表明,它促进了深层特征的类内聚类和类间差异

4.2 基线任务对比

为了突出我们方法的有效性,在IV-2a和IV-2b数据集上与一些特定受试者的基准方法进行了比较,如表2所示。
在这里插入图片描述

4.3 跨主题

跨主题训练包含两个训练步骤训练特征提取器是第一个训练阶段,微调分类头是第二个训练阶段。我们使用一个受试者的数据进行第一阶段的训练,然后分别使用其他受试者的数据完成第二阶段的训练。在IV-2a数据集上获得的结果如图6所示。
在这里插入图片描述
从结果可以看出,除了平均准确率为56.88%的跨受试者4外,其他跨受试者结果均超过60%

5. 总结

到此,使用 MSFT已经介绍完毕了!!! 如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。

如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。

欢迎来稿

欢迎投稿合作,投稿请遵循科学严谨、内容清晰明了的原则!!!! 有意者可以后台私信!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/444335.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入浅出计算机网络 day.1 概论② 因特网概述

当你回头看的时候,你会发现自己走了一段,自己都没想到的路 —— 24.3.9 内容概述 01.网络、互连(联)网与因特网的区别与联系 02.因特网简介 一、网络、互连(联)网与因特网的区别与联系 1.若干节点和链路互连…

Java 客户端向服务端上传文件(TCP通信)

一、实验内容 编写一个客户端向服务端上传文件的程序,要求使用TCP通信的的知识,完成将本地机器输入的路径下的文件上传到D盘中名称为upload的文件夹中。并把客户端的IP地址加上count标识作为上传后文件的文件名,即IP(count&#…

excel统计分析——嵌套设计

参考资料:生物统计学,巢式嵌套设计的方差分析 嵌套设计(nested design)也称为系统分组设计或巢式设计,是把试验空间逐级向低层次划分的试验设计方法。与裂区设计相似,先按一级因素设计试验,然后…

Linux网络套接字之预备知识

(。・∀・)ノ゙嗨!你好这里是ky233的主页:这里是ky233的主页,欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 一、预备知识 1.理解源IP地址和目的IP地址 …

真实案例分享:MOS管电源开关电路,遇到上电冲击电流超标

做硬件,堆经验。 分享一个案例:MOS管电源开关电路,遇到上电冲击电流超标,怎么解决的呢? 下面是正文部分。 —— 正文 —— 最近有一颗用了挺久的MOSFET发了停产通知,供应链部门找到我们研发部门&#xff0c…

RabbitMQ发布确认高级版

1.前言 在生产环境中由于一些不明原因,导致 RabbitMQ 重启,在 RabbitMQ 重启期间生产者消息投递失败, 导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢&…

C++——string模拟实现

前言:上篇文章我们对string类及其常用的接口方法的使用进行了分享,这篇文章将着重进行对这些常用的接口方法的内部细节进行分享和模拟实现。 目录 一.基础框架 二.遍历字符串 1.[]运算符重载 2.迭代器 3.范围for 三.常用方法 1.增加 2.删除 3.调…

spring boot 2.4.x 之前版本(对应spring-cloud-openfeign 3.0.0之前版本)feign请求异常逻辑

目录 feign SynchronousMethodHandler 第一部分 第二部分 第三部分 spring-cloud-openfeign LoadBalancerFeignClient ribbon AbstractLoadBalancerAwareClient 在之前写的文章配置基础上 https://blog.csdn.net/zlpzlpzyd/article/details/136060312 因为从 spring …

Excel F4键的作用

目录 一. 单元格相对/绝对引用转换二. 重复上一步操作 一. 单元格相对/绝对引用转换 ⏹ 使用F4键 如下图所示,B1单元格引用了A1单元格的内容。此时是使用相对引用,可以按下键盘上的F4键进行相对引用和绝对引用的转换。 二. 重复上一步操作 ⏹添加或删除…

【Python】装饰器函数

专栏文章索引:Python 原文章:装饰器函数基础_装饰函数-CSDN博客 目录 1. 学习装饰器的基础 2.最简单的装饰器 3.闭包函数装饰器 4.装饰器将传入的函数中的值大写 5. 装饰器的好处 6. 多个装饰器的执行顺序 7. 装饰器传递参数 8. 结语 1. 学习装饰…

c++中string的模拟实现(超详细!!!)

1.string的成员变量、(拷贝)构造、析构函数 1.1.成员变量 private:char* _str;size_t _size; //string中有效字符个数size_t _capacity; //string中能存储有效字符个数的大小 1.2(拷贝)构造函数 //构造函数string(const char* …

Chain of Verification(验证链、CoVe)—理解与实现

原文地址:Chain of Verification (CoVe) — Understanding & Implementation 2023 年 10 月 9 日 GitHub 存储库 介绍 在处理大型语言模型(LLM)时,一个重大挑战,特别是在事实问答中,是幻觉问题。当答案…

React-路由导航

1.声明式路由导航 1.1概念 说明&#xff1a;声明式导航是指通过在模版中通过<Link/>组件描述出要跳转到哪里去&#xff0c;比如后台管理系统的左侧菜单通常使用这种方式进行。 import {Link} from "react-router-dom" const Login()>{return (<div>…

资源哟正版无授权模版源码(含搭建教程)

资源哟 v1.3 – 新增两种首页布局 – 新增幻灯片插件 – 优化深色模式颜色效果 – 优化导航页面左侧栏目跳转效果 – 优化后台辅助插件当前页面打开 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88898100 更多资源下载&#xff1a;关注我。

Linux多线程之线程控制

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 一、pthread_crate 二、pthread_join 三、p…

RAG、数据隐私、攻击方法和安全提示

原文地址&#xff1a;RAG, Data Privacy, Attack Methods & Safe-Prompts 最近的一项研究探讨了 RAG 安全漏洞以及通过检索数据集访问私有数据的方式。还讨论了防御和安全提示工程示例。 介绍 RAG 在构建生成式 AI 应用程序中非常受欢迎。RAG 在生成式 AI 应用中采用的原因…

Elasticsearch架构原理

一. Elasticsearch架构原理 1、Elasticsearch的节点类型 在Elasticsearch主要分成两类节点&#xff0c;一类是Master&#xff0c;一类是DataNode。 1.1 Master节点 在Elasticsearch启动时&#xff0c;会选举出来一个Master节点。当某个节点启动后&#xff0c;然后使用Zen D…

指针数组和数组指针(详细解释)

指针数组 指针数组的作用 指针数组和数组指针是C语言中常用的概念&#xff0c;它们分别有不同的作用和用法。 指针数组&#xff1a; 指针数组是一个数组&#xff0c;其中的每个元素都是指针类型。它可以用来存储多个指针&#xff0c;每个指针可以指向不同的数据类型或者相同…

Pytorch学习 day08(最大池化层、非线性激活层、正则化层、循环层、Transformer层、线性层、Dropout层)

最大池化层 最大池化&#xff0c;也叫上采样&#xff0c;是池化核在输入图像上不断移动&#xff0c;并取对应区域中的最大值&#xff0c;目的是&#xff1a;在保留输入特征的同时&#xff0c;减小输入数据量&#xff0c;加快训练。参数设置如下&#xff1a; kernel_size&#…

类与对象-对象特性

师从黑马程序员 对象的初始化和清理 构造函数和析构函数 用于完成对象的初始化和清理工作 如果我们不提供构造和析构&#xff0c;编译器会提供编译器提供的构造函数和析构函数是空实现 构造函数&#xff1a;主要用于创建对象时为对象的成员属性赋值&#xff0c;构造函数由编…